Skip to main content
A tour is the top-level container in Daysync — it holds days, schedule items, venues, accommodation, guest lists, and bulletins. Tours are identified by a UUID string. All endpoints require the standard authentication headers.

List tours

GET /v1/tours?org_id={orgId}
Returns every tour in an organization that the authenticated user can see. Scope: tours.read Query parameters
NameTypeRequiredDescription
org_idstring (UUID)YesThe organization to list tours for.
Example
curl "$BASE/v1/tours?org_id=2f1c…" \
  -H "x-api-key: $KEY" -H "x-api-secret: $SECRET" -H "Authorization: Bearer $TOKEN"
Response data — array of tour memberships:
{
  "status": true,
  "message": "Success",
  "data": [
    {
      "role": "ADMIN",
      "member_count": 8,
      "tour": {
        "id": "2f1c…",
        "name": "Spring Tour 2026",
        "image": "https://…",
        "fileName": "cover.jpg",
        "start_date": "2026-06-01T00:00:00Z",
        "end_date": "2026-06-30T00:00:00Z",
        "is_archived": false,
        "is_deleted": false,
        "tourDays": [
          { "id": 1843, "day": { "id": 1843, "name": "Day 1", "date": "2026-06-01T00:00:00Z", "time_zone": "Australia/Sydney" } }
        ],
        "created_by": { "id": "…", "firstname": "Jane", "lastname": "Doe", "email": "jane@…", "image": "https://…" }
      }
    }
  ]
}
  • role — the authenticated user’s role on the tour.
  • member_count — number of members on the tour.
  • tour.tourDays — the tour’s days; each day id is used as dayId in schedule and guest-list routes.

Create a tour

POST /v1/tours
Scope: tours.write Body
FieldTypeRequiredDescription
namestringYesTour name (1–500 characters).
org_idstring (UUID)YesOrganization the tour belongs to.
start_dateISO 8601 datetimeYesTour start.
end_dateISO 8601 datetimeYesTour end. Must be ≥ start_date.
timeZonestring (IANA)Yese.g. Australia/Sydney.
daysarray<Day>YesOne or more days (see below). Must be non-empty.
imagestringNoCover image URL.
fileNamestringNoCover image file name.
avatarColorstringNoAvatar colour.
avatarColorIdnumberNoAvatar colour ID — valid values.
is_demobooleanNoMarks the tour as demo data.
Day object (days[])
FieldTypeRequiredDescription
day_type_idnumberYesDay type — see List Day Types for valid values.
namestringYesDay name.
formatted_addressstringYesDisplay address for the day.
dateISO 8601 datetimeYesThe day’s date.
place_idstringNoMaps place ID.
timeZonestring (IANA)NoDay time zone.
viewportViewportNo{ northeast: {lat,lng}, southwest: {lat,lng} }.
Example
curl -X POST "$BASE/v1/tours" \
  -H "x-api-key: $KEY" -H "x-api-secret: $SECRET" -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Spring Tour 2026",
    "org_id": "2f1c…",
    "start_date": "2026-06-01T00:00:00Z",
    "end_date": "2026-06-30T00:00:00Z",
    "timeZone": "Australia/Sydney",
    "days": [
      { "day_type_id": 1, "name": "Day 1", "formatted_address": "Sydney NSW", "date": "2026-06-01T00:00:00Z" }
    ]
  }'
Response data: { "id": "2f1c…" } — the new tour’s ID.
Tour creation is subject to the subscription requirement (402) for non-exempt organizations, and to the validation rules in Errors.

Edit a tour

PUT /v1/tours/{tourId}
Scope: tours.write Path parameters
NameTypeDescription
tourIdstring (UUID)Tour to edit.
Body — all fields optional; send only what you want to change.
FieldTypeDescription
namestringTour name (1–500 chars when provided).
start_dateISO 8601 datetimeNew start.
end_dateISO 8601 datetimeNew end (must be ≥ start_date).
timeZonestring (IANA)New time zone.
imagestringCover image URL.
fileNamestringCover image file name.
avatarColorIdnumberAvatar colour ID — valid values.
day_listarray<EditTourDay>Declarative full list of the tour’s days — see the warning below. Each entry may include day_id, day_type_id, name, formatted_address, place_id, date, timeZone, viewport. Entries with a day_id update that day; entries without one create a new day.
day_list replaces the tour’s day set — omitted days are permanently deleted, including everything on them.When you send day_list, any existing day whose day_id is not in the list is hard-deleted (not soft-deleted), and the deletion cascades to all content on that day — schedule items, guest list entries, and day-scoped links are destroyed and cannot be recovered through the API.To safely update one day:
  1. GET /v1/tours?org_id=… and collect every day.id from the tour’s tourDays.
  2. Send day_list containing all existing days (just { "day_id": … } is enough to preserve one unchanged), with your modifications on the day you’re editing.
If you only want to change tour-level fields (name, dates, timeZone, …), omit day_list entirely — days are untouched when the field is absent.
Response data: none (status + message only).

Delete a tour

DELETE /v1/tours/{tourId}
Soft-deletes the tour. After deletion, any request referencing the tour returns 404 TOUR_NOT_FOUND. Scope: tours.write Path parameters
NameTypeDescription
tourIdstring (UUID)Tour to delete.
Response data: none.

List tour members

GET /v1/tours/{tourId}/users
Returns the tour’s members and any pending invites. Scope: users.read Path parameters
NameTypeDescription
tourIdstring (UUID)Tour to list members for.
Response data
{
  "tour_users": [
    {
      "id": "…",
      "user": { "id": "…", "firstname": "Jane", "lastname": "Doe", "email": "jane@…", "phone_number": "+61…", "image": "https://…" },
      "user_role_type": { "id": 1, "name": "Admin", "description": "Full access" }
    }
  ],
  "pending_invites": [ { "id": "…", "email": "newuser@…" } ]
}

List Day Types

GET /v1/day-types
Returns the valid day_type_id values used in the days array when creating or editing a tour. Scope: tours.read No parameters. Day types are global — the same list applies to every organization and tour. Example
curl "$BASE/v1/day-types" \
  -H "x-api-key: $KEY" -H "x-api-secret: $SECRET" -H "Authorization: Bearer $TOKEN"
Response data — array of day types:
{
  "status": true,
  "message": "Success",
  "data": [
    { "id": 1, "type": "…", "description": "…" }
  ]
}
FieldTypeDescription
idnumberUse as day_type_id when creating/editing tours.
typestringDisplay name of the day type.
descriptionstringLonger description.
Call this once and cache the result — day types change rarely. Fetch the live list rather than hardcoding IDs.

See also: Schedule, Venues, Accommodation, Guest List, Bulletins.