API ReferenceView as MarkdownOpenAPI

Services

View as Markdown

Services are what clients book: an appointment with a duration, price, staff members who perform it and the hours it is available. Creating a service makes it bookable on the site; each booking of it is a Booking.

Endpoints that need a token: the site owner creates it in their admin (Developers > API reference). AI assistants: how to ask the user for one.

24 endpoints in 3 parts: Service, User Locked Hours, AI builder.

Retrieve the locations map

Returns the locations map.

User with access

Needs a signed-in user whose plan grants access.

Status codes

200 401 402 500

GET/locations-map
curl -X GET 'http://fiorelina.com/locations-map?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Update the service allowed range

Changes the fields sent; the others stay as they are.

User token

Needs the token of a signed-in user.

Parameters
servicesstring

The service allowed range's services.

Status codes

200 400 401 500

PATCH/service-allowed-ranges
curl -X PATCH 'http://fiorelina.com/service-allowed-ranges?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "services": "..." }'

Like or unlike a service

Like or unlike a service.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the service.

Returns

Returns the Service object.

Status codes

200 400 401 404 500

PATCH/service-likes/:id
curl -X PATCH 'http://fiorelina.com/service-likes/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "title": "Example",
  "url": "example-item",
  "static_url": "example-item",
  "header": "example",
  "description": "Text shown on the site.",
  "bookable": true,
  "expirable": false,
  "confirm_bookings": false,
  "show_notes": false,
  "minutes_delete_bookings": 1,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "thumbnail": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "collection_id": "6543210fedcba98765432100",
  "price": 49.9,
  "online_payment": false,
  "book_by_date": false,
  "book_date_range": false,
  "start_date": "2026-11-04T12:00:00.000Z",
  "end_date": "2026-11-04T12:00:00.000Z",
  "day_offset": 0,
  "is_recurring": false,
  "max_participants": 1,
  "session_duration": 1,
  "time_between_sessions": 0,
  "discount": [
    {
      "days": 1,
      "per_total_price": 49.9,
      "fixed_price": 49.9,
      "per_day": 1,
      "_id": "6543210fedcba98765432100"
    }
  ],
  "monday": {
    "active": false,
    "hours": "example"
  },
  "tuesday": {
    "active": false,
    "hours": "example"
  },
  "wednesday": {
    "active": false,
    "hours": "example"
  },
  "thursday": {
    "active": false,
    "hours": "example"
  },
  "friday": {
    "active": false,
    "hours": "example"
  },
  "saturday": {
    "active": false
  }
}

Find a service by its address

Find a service by its address.

Optional user

Works without a token; with a user token the answer is personal.

Path parameters
urlstringRequired

The service's URL slug, as in its address on the site.

Status codes

200 500

GET/service-redirect/:url
curl -X GET 'http://fiorelina.com/service-redirect/{url}?ionic=true'
Response
{
  "zip_code": "example",
  "city": "example",
  "address": "example",
  "contact": "example",
  "email": "jane@example.com",
  "google_app": "example",
  "workhours": "example",
  "logo": "6543210fedcba98765432100",
  "site_name": "Example",
  "domain": "example",
  "stock_domain": "example",
  "isMarket": false,
  "forbidden_collections": [
    {
      "collection_id": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "isInit": false,
  "template": "0000",
  "lang": "en",
  "favicon": "6543210fedcba98765432100",
  "cacheEnabled": false,
  "has_completed_startup_prompt": true,
  "gmb_location": "example",
  "ga_property": "example",
  "site_generated_at": "2026-11-04T12:00:00.000Z",
  "admin_first_opened_at": "2026-11-04T12:00:00.000Z",
  "admin_last_opened_at": "2026-11-04T12:00:00.000Z",
  "allowedComponents": {
    "services": false,
    "products": false,
    "blogposts": false,
    "programs": false
  }
}

Save or unsave a service

Save or unsave a service.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the service.

Returns

Returns the Service object.

Status codes

200 400 401 404 500

PATCH/service-saves/:id
curl -X PATCH 'http://fiorelina.com/service-saves/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "title": "Example",
  "url": "example-item",
  "static_url": "example-item",
  "header": "example",
  "description": "Text shown on the site.",
  "bookable": true,
  "expirable": false,
  "confirm_bookings": false,
  "show_notes": false,
  "minutes_delete_bookings": 1,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "thumbnail": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "collection_id": "6543210fedcba98765432100",
  "price": 49.9,
  "online_payment": false,
  "book_by_date": false,
  "book_date_range": false,
  "start_date": "2026-11-04T12:00:00.000Z",
  "end_date": "2026-11-04T12:00:00.000Z",
  "day_offset": 0,
  "is_recurring": false,
  "max_participants": 1,
  "session_duration": 1,
  "time_between_sessions": 0,
  "discount": [
    {
      "days": 1,
      "per_total_price": 49.9,
      "fixed_price": 49.9,
      "per_day": 1,
      "_id": "6543210fedcba98765432100"
    }
  ],
  "monday": {
    "active": false,
    "hours": "example"
  },
  "tuesday": {
    "active": false,
    "hours": "example"
  },
  "wednesday": {
    "active": false,
    "hours": "example"
  },
  "thursday": {
    "active": false,
    "hours": "example"
  },
  "friday": {
    "active": false,
    "hours": "example"
  },
  "saturday": {
    "active": false
  }
}

List all services

Returns the site's services, newest first unless a sort is given.

User with accessOptional user

Needs a signed-in user whose plan grants access.

Query parameters
publishedstring

Only services with this published.

completedstring

Only services with this completed.

sortBystring

The order of the results.

collectionstring

Only results in this collection.

origin_addressstring

Only services with this origin address.

skipstring

How many results to skip - for paging.

wherestring

Only services with this where.

selectedDatestring

Only services with this selected date.

Returns

Returns a list of Service objects.

Status codes

200 401 402 404 500

GET/services
curl -X GET 'http://fiorelina.com/services?ionic=true&published=...&completed=...&sortBy=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "title": "Example",
    "url": "example-item",
    "static_url": "example-item",
    "header": "example",
    "description": "Text shown on the site.",
    "bookable": true,
    "expirable": false,
    "confirm_bookings": false,
    "show_notes": false,
    "minutes_delete_bookings": 1,
    "medias": [
      {
        "media": "6543210fedcba98765432100",
        "gcs_url": "example-item",
        "gcs_480_30_url": "example-item",
        "gcs_720_30_url": "example-item",
        "gcs_1080_30_url": "example-item",
        "duration": 1,
        "vimeo_uri": "example",
        "vimeo_picture": "example",
        "vimeo_url": "example-item",
        "youtube_url": "example-item",
        "youtube_picture": "example",
        "thumbnail": "example",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "collection_id": "6543210fedcba98765432100",
    "price": 49.9,
    "online_payment": false,
    "book_by_date": false,
    "book_date_range": false,
    "start_date": "2026-11-04T12:00:00.000Z",
    "end_date": "2026-11-04T12:00:00.000Z",
    "day_offset": 0,
    "is_recurring": false,
    "max_participants": 1,
    "session_duration": 1,
    "time_between_sessions": 0,
    "discount": [
      {
        "days": 1,
        "per_total_price": 49.9,
        "fixed_price": 49.9,
        "per_day": 1,
        "_id": "6543210fedcba98765432100"
      }
    ],
    "monday": {
      "active": false,
      "hours": "example"
    },
    "tuesday": {
      "active": false,
      "hours": "example"
    },
    "wednesday": {
      "active": false,
      "hours": "example"
    },
    "thursday": {
      "active": false,
      "hours": "example"
    },
    "friday": {
      "active": false,
      "hours": "example"
    },
    "saturday": {
      "active": false
    }
  }
]

Create a service

Create new service.

Optional userUser token

Works without a token; with a user token the answer is personal.

Parameters
titlestring

The service's title.

on_behalf_ofstring

The service's on behalf of.

addressstring

Where is the service performed.

Returns

Returns the Service object.

Status codes

201 400 401 403 500

POST/services
curl -X POST 'http://fiorelina.com/services?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "title": "...", "on_behalf_of": "...", "address": "..." }'
Response
{
  "title": "Example",
  "url": "example-item",
  "static_url": "example-item",
  "header": "example",
  "description": "Text shown on the site.",
  "bookable": true,
  "expirable": false,
  "confirm_bookings": false,
  "show_notes": false,
  "minutes_delete_bookings": 1,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "thumbnail": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "collection_id": "6543210fedcba98765432100",
  "price": 49.9,
  "online_payment": false,
  "book_by_date": false,
  "book_date_range": false,
  "start_date": "2026-11-04T12:00:00.000Z",
  "end_date": "2026-11-04T12:00:00.000Z",
  "day_offset": 0,
  "is_recurring": false,
  "max_participants": 1,
  "session_duration": 1,
  "time_between_sessions": 0,
  "discount": [
    {
      "days": 1,
      "per_total_price": 49.9,
      "fixed_price": 49.9,
      "per_day": 1,
      "_id": "6543210fedcba98765432100"
    }
  ],
  "monday": {
    "active": false,
    "hours": "example"
  },
  "tuesday": {
    "active": false,
    "hours": "example"
  },
  "wednesday": {
    "active": false,
    "hours": "example"
  },
  "thursday": {
    "active": false,
    "hours": "example"
  },
  "friday": {
    "active": false,
    "hours": "example"
  },
  "saturday": {
    "active": false
  }
}

Delete multiple services

Deletes the service. This cannot be undone.

User token

Needs the token of a signed-in user.

Path parameters
delete_idsstringRequired

The service's delete ids.

Returns

Returns an empty answer on success.

Status codes

200 401 500

DELETE/services-multiple/:delete_ids
curl -X DELETE 'http://fiorelina.com/services-multiple/{delete_ids}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Update multiple services

Changes the fields sent; the others stay as they are.

User token

Needs the token of a signed-in user.

Path parameters
patch_idsstringRequired

The service's patch ids.

Parameters
collection_idobjectid

Reference to the Collection model, it is the store where service is grouped.

updatesstring

The service's updates.

Returns

Returns the Service object.

Status codes

200 400 401 500

PATCH/services-multiple/:patch_ids
curl -X PATCH 'http://fiorelina.com/services-multiple/{patch_ids}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "collection_id": "...", "updates": "..." }'
Response
{
  "title": "Example",
  "url": "example-item",
  "static_url": "example-item",
  "header": "example",
  "description": "Text shown on the site.",
  "bookable": true,
  "expirable": false,
  "confirm_bookings": false,
  "show_notes": false,
  "minutes_delete_bookings": 1,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "thumbnail": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "collection_id": "6543210fedcba98765432100",
  "price": 49.9,
  "online_payment": false,
  "book_by_date": false,
  "book_date_range": false,
  "start_date": "2026-11-04T12:00:00.000Z",
  "end_date": "2026-11-04T12:00:00.000Z",
  "day_offset": 0,
  "is_recurring": false,
  "max_participants": 1,
  "session_duration": 1,
  "time_between_sessions": 0,
  "discount": [
    {
      "days": 1,
      "per_total_price": 49.9,
      "fixed_price": 49.9,
      "per_day": 1,
      "_id": "6543210fedcba98765432100"
    }
  ],
  "monday": {
    "active": false,
    "hours": "example"
  },
  "tuesday": {
    "active": false,
    "hours": "example"
  },
  "wednesday": {
    "active": false,
    "hours": "example"
  },
  "thursday": {
    "active": false,
    "hours": "example"
  },
  "friday": {
    "active": false,
    "hours": "example"
  },
  "saturday": {
    "active": false
  }
}

Update a service

Update Service by id.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the service.

Parameters
_idobjectid

The ID of the service.

convertedPricestring

The service's converted price.

locked_hoursdate[]

The service's locked hours.

locked_rangesobject[]

The service's locked ranges.

attached_dynamic_modelsstring

The service's attached dynamic models.

mediasobject[]

The service's medias.

addressstring

Where is the service performed.

Returns

Returns the Service object.

Status codes

200 400 401 403 404 500

PATCH/services/:id
curl -X PATCH 'http://fiorelina.com/services/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "_id": "...", "convertedPrice": "...", "locked_hours": "...", "locked_ranges": "...", "attached_dynamic_models": "..." }'
Response
{
  "title": "Example",
  "url": "example-item",
  "static_url": "example-item",
  "header": "example",
  "description": "Text shown on the site.",
  "bookable": true,
  "expirable": false,
  "confirm_bookings": false,
  "show_notes": false,
  "minutes_delete_bookings": 1,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "thumbnail": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "collection_id": "6543210fedcba98765432100",
  "price": 49.9,
  "online_payment": false,
  "book_by_date": false,
  "book_date_range": false,
  "start_date": "2026-11-04T12:00:00.000Z",
  "end_date": "2026-11-04T12:00:00.000Z",
  "day_offset": 0,
  "is_recurring": false,
  "max_participants": 1,
  "session_duration": 1,
  "time_between_sessions": 0,
  "discount": [
    {
      "days": 1,
      "per_total_price": 49.9,
      "fixed_price": 49.9,
      "per_day": 1,
      "_id": "6543210fedcba98765432100"
    }
  ],
  "monday": {
    "active": false,
    "hours": "example"
  },
  "tuesday": {
    "active": false,
    "hours": "example"
  },
  "wednesday": {
    "active": false,
    "hours": "example"
  },
  "thursday": {
    "active": false,
    "hours": "example"
  },
  "friday": {
    "active": false,
    "hours": "example"
  },
  "saturday": {
    "active": false
  }
}

Delete a service

Delete Service record by id.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the service.

Returns

Returns an empty answer on success.

Status codes

200 401 403 404 500

DELETE/services/:id
curl -X DELETE 'http://fiorelina.com/services/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve a service

Returns one service, found by its ID.

Public

Public - no token needed.

Path parameters
idstringRequired

The ID of the service.

Returns

Returns the Service object.

Status codes

200 404 500

GET/services/:id/media
curl -X GET 'http://fiorelina.com/services/{id}/media?ionic=true'
Response
{
  "title": "Example",
  "url": "example-item",
  "static_url": "example-item",
  "header": "example",
  "description": "Text shown on the site.",
  "bookable": true,
  "expirable": false,
  "confirm_bookings": false,
  "show_notes": false,
  "minutes_delete_bookings": 1,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "thumbnail": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "collection_id": "6543210fedcba98765432100",
  "price": 49.9,
  "online_payment": false,
  "book_by_date": false,
  "book_date_range": false,
  "start_date": "2026-11-04T12:00:00.000Z",
  "end_date": "2026-11-04T12:00:00.000Z",
  "day_offset": 0,
  "is_recurring": false,
  "max_participants": 1,
  "session_duration": 1,
  "time_between_sessions": 0,
  "discount": [
    {
      "days": 1,
      "per_total_price": 49.9,
      "fixed_price": 49.9,
      "per_day": 1,
      "_id": "6543210fedcba98765432100"
    }
  ],
  "monday": {
    "active": false,
    "hours": "example"
  },
  "tuesday": {
    "active": false,
    "hours": "example"
  },
  "wednesday": {
    "active": false,
    "hours": "example"
  },
  "thursday": {
    "active": false,
    "hours": "example"
  },
  "friday": {
    "active": false,
    "hours": "example"
  },
  "saturday": {
    "active": false
  }
}

Create a service

Creates a service from the fields sent.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the service.

Status codes

200 400 401

POST/services/:id/media
curl -X POST 'http://fiorelina.com/services/{id}/media?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Delete a service

Deletes the service. This cannot be undone.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the service.

Returns

Returns an empty answer on success.

Status codes

200 401

DELETE/services/:id/media/delete_last
curl -X DELETE 'http://fiorelina.com/services/{id}/media/delete_last?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve a service

Returns one service, found by its URL slug.

Page accessOptional user

Pages limited to some users check the token when one is sent.

Path parameters
urlstringRequired

The service's URL slug, as in its address on the site.

Returns

Returns the Service object.

Status codes

200 401 402 404 500

GET/services/:url
curl -X GET 'http://fiorelina.com/services/{url}?ionic=true'
Response
{
  "title": "Example",
  "url": "example-item",
  "static_url": "example-item",
  "header": "example",
  "description": "Text shown on the site.",
  "bookable": true,
  "expirable": false,
  "confirm_bookings": false,
  "show_notes": false,
  "minutes_delete_bookings": 1,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "thumbnail": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "collection_id": "6543210fedcba98765432100",
  "price": 49.9,
  "online_payment": false,
  "book_by_date": false,
  "book_date_range": false,
  "start_date": "2026-11-04T12:00:00.000Z",
  "end_date": "2026-11-04T12:00:00.000Z",
  "day_offset": 0,
  "is_recurring": false,
  "max_participants": 1,
  "session_duration": 1,
  "time_between_sessions": 0,
  "discount": [
    {
      "days": 1,
      "per_total_price": 49.9,
      "fixed_price": 49.9,
      "per_day": 1,
      "_id": "6543210fedcba98765432100"
    }
  ],
  "monday": {
    "active": false,
    "hours": "example"
  },
  "tuesday": {
    "active": false,
    "hours": "example"
  },
  "wednesday": {
    "active": false,
    "hours": "example"
  },
  "thursday": {
    "active": false,
    "hours": "example"
  },
  "friday": {
    "active": false,
    "hours": "example"
  },
  "saturday": {
    "active": false
  }
}

List all user has services

Returns the site's user has services, newest first unless a sort is given.

User token

Needs the token of a signed-in user.

Returns

Returns a list of Service objects.

Status codes

200 401 500

GET/user-has-services
curl -X GET 'http://fiorelina.com/user-has-services?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "title": "Example",
    "url": "example-item",
    "static_url": "example-item",
    "header": "example",
    "description": "Text shown on the site.",
    "bookable": true,
    "expirable": false,
    "confirm_bookings": false,
    "show_notes": false,
    "minutes_delete_bookings": 1,
    "medias": [
      {
        "media": "6543210fedcba98765432100",
        "gcs_url": "example-item",
        "gcs_480_30_url": "example-item",
        "gcs_720_30_url": "example-item",
        "gcs_1080_30_url": "example-item",
        "duration": 1,
        "vimeo_uri": "example",
        "vimeo_picture": "example",
        "vimeo_url": "example-item",
        "youtube_url": "example-item",
        "youtube_picture": "example",
        "thumbnail": "example",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "collection_id": "6543210fedcba98765432100",
    "price": 49.9,
    "online_payment": false,
    "book_by_date": false,
    "book_date_range": false,
    "start_date": "2026-11-04T12:00:00.000Z",
    "end_date": "2026-11-04T12:00:00.000Z",
    "day_offset": 0,
    "is_recurring": false,
    "max_participants": 1,
    "session_duration": 1,
    "time_between_sessions": 0,
    "discount": [
      {
        "days": 1,
        "per_total_price": 49.9,
        "fixed_price": 49.9,
        "per_day": 1,
        "_id": "6543210fedcba98765432100"
      }
    ],
    "monday": {
      "active": false,
      "hours": "example"
    },
    "tuesday": {
      "active": false,
      "hours": "example"
    },
    "wednesday": {
      "active": false,
      "hours": "example"
    },
    "thursday": {
      "active": false,
      "hours": "example"
    },
    "friday": {
      "active": false,
      "hours": "example"
    },
    "saturday": {
      "active": false
    }
  }
]

Update the single user locked hour

Changes the fields sent; the others stay as they are.

User token

Needs the token of a signed-in user.

Query parameters
on_behalf_ofstring

Only single user locked hours with this on behalf of.

Parameters
locked_rangestring

The single user locked hour's locked range.

Status codes

200 400 401 403 500

PATCH/single-user-locked-hour
curl -X PATCH 'http://fiorelina.com/single-user-locked-hour?ionic=true&on_behalf_of=...' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "locked_range": "..." }'
Response
{
  "user": "6543210fedcba98765432100",
  "locked_ranges": [
    {
      "start": "2026-11-04T12:00:00.000Z",
      "end": "2026-11-04T12:00:00.000Z",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

List all user locked hours

Returns the site's user locked hours, newest first unless a sort is given.

User token

Needs the token of a signed-in user.

Returns

Returns a list of UserLockedHours objects.

Status codes

200 401 500

GET/user-locked-hours
curl -X GET 'http://fiorelina.com/user-locked-hours?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "user": "6543210fedcba98765432100",
    "locked_ranges": [
      {
        "start": "2026-11-04T12:00:00.000Z",
        "end": "2026-11-04T12:00:00.000Z",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "_id": "6543210fedcba98765432100",
    "updatedAt": "2026-11-04T12:00:00.000Z",
    "createdAt": "2026-11-04T12:00:00.000Z"
  }
]

Create a user locked hour

Creates a user locked hour from the fields sent.

User token

Needs the token of a signed-in user.

Parameters
locked_rangesobject[]

The user locked hour's locked ranges.

Returns

Returns the UserLockedHours object.

Status codes

200 401 500

POST/user-locked-hours
curl -X POST 'http://fiorelina.com/user-locked-hours?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "locked_ranges": "..." }'
Response
{
  "user": "6543210fedcba98765432100",
  "locked_ranges": [
    {
      "start": "2026-11-04T12:00:00.000Z",
      "end": "2026-11-04T12:00:00.000Z",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Update the user locked hour

Changes the fields sent; the others stay as they are.

User token

Needs the token of a signed-in user.

Query parameters
on_behalf_ofstring

Only user locked hours with this on behalf of.

Parameters
locked_rangesobject[]

The user locked hour's locked ranges.

Returns

Returns the UserLockedHours object.

Status codes

200 400 401 403 404 500

PATCH/user-locked-hours
curl -X PATCH 'http://fiorelina.com/user-locked-hours?ionic=true&on_behalf_of=...' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "locked_ranges": "..." }'
Response
{
  "user": "6543210fedcba98765432100",
  "locked_ranges": [
    {
      "start": "2026-11-04T12:00:00.000Z",
      "end": "2026-11-04T12:00:00.000Z",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Create a service with AI

Create a service from a prompt, written by the AI builder.

Admin token

Needs a site admin token.

Parameters
promptstring

What the AI should do with the service, in plain words - any language.

chatIdstring

The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.

aiVersionstring

Which version of the AI builder to use; leave it out for the current one.

item_idstring

The ID of the service to change.

Status codes

200 401 500

POST/create-new-service
curl -X POST 'http://fiorelina.com/create-new-service?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "prompt": "...", "chatId": "...", "aiVersion": "...", "item_id": "..." }'
Response
{
  "chat_id": "6543210fedcba98765432100",
  "role": "user",
  "text": "Text shown on the site.",
  "target_url": "example-item",
  "action": "RESPONSE",
  "options": [
    "example"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gemini_uri": "example",
      "gemini_interaction_id": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "products": [
    "6543210fedcba98765432101"
  ],
  "services": [
    "6543210fedcba98765432101"
  ],
  "blogposts": [
    "6543210fedcba98765432101"
  ],
  "programs": [
    "6543210fedcba98765432101"
  ],
  "suggestions": [
    {
      "text": "Text shown on the site.",
      "route": "example",
      "item_id": "6543210fedcba98765432100",
      "medias": [],
      "picture": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "is_system": false,
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z",
  "data": {
    "object": "example",
    "object_type": "example",
    "edit_summary": "example",
    "edit_diff": "example",
    "undo_record": "example",
    "hero_animation_offer": "example",
    "preview_state": "example",
    "pending_credit_cost": 0,
    "target_restore": "example",
    "media_request": "example",
    "item_request": "example",
    "reference_request": "example"
  }
}

Generate a service with AI

Use it to create a new appointment booking service.

Admin token

Needs a site admin token.

Parameters
promptstring

What the AI should do with the service, in plain words - any language.

chatIdstring

The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.

Status codes

200 401 500

POST/generate-service
curl -X POST 'http://fiorelina.com/generate-service?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "prompt": "...", "chatId": "..." }'

Modify a service with AI

Use it to edit or update existing appointment booking service or add a filter to the service.

Admin token

Needs a site admin token.

Parameters
promptstring

What the AI should do with the service, in plain words - any language.

item_datastring

The current service, as JSON - the AI changes it and returns the result.

chatIdstring

The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.

item_idstring

The ID of the service to change.

item_idsstring

The service's item ids.

Status codes

200 401 500

POST/modify-service
curl -X POST 'http://fiorelina.com/modify-service?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "prompt": "...", "item_data": "...", "chatId": "...", "item_id": "...", "item_ids": "..." }'
↑↓ Navigate↵ GoEsc Close