API ReferenceView as MarkdownOpenAPI

Users & staff

View as Markdown

Users are the people with an account on the site: customers, staff members who take bookings, and admins. A user signs in with an email and password and gets a token for the API.

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.

100 endpoints in 6 parts: Professional Account, User, User Engagement Notification, User Privilege, User Report, AI builder.

Endpoints
POST/professional-accountGET/professional-account-pages/:modelGET/professional-account-preview/:userPATCH/professional-account/:idDELETE/professional-account/:idGET/professional-account/:userGET/account-confirmationPATCH/block-user/:idGET/blocked-usersGET/booking-schedule-full-month/:dateGET/booking-schedule-month/:dateGET/booking-schedule-week/:date&:directionPATCH/disable-userGET/followers-emailGET/generate-2auth-tokenGET/new-user-bookingsGET/password-resetGET/reset-password/:email&:validation_codeGET/signupPATCH/staff/:idGET/u/:handleDELETE/user-address/:indexGET/user-adsGET/user-attributionsGET/user-attributions/:daysGET/user-blogpostGET/user-bookingGET/user-bookings-search/:argsGET/user-bookings/:skipPATCH/user-churned-bookingPATCH/user-confirm-bookingGET/user-confirmation-mailGET/user-confirmed-bookings-search/:argsGET/user-confirmed-bookings/:skipGET/user-current-bookingsPATCH/user-did-not-answer-bookingGET/user-dynamic-modelsGET/user-dynamic-models/:idGET/user-followers/:id&:skipGET/user-following/:id&:skipGET/user-handle/:handleGET/user-inboxGET/user-invoicesGET/user-lead-from-bookingGET/user-mention/:handleGET/user-orderGET/user-payment-method/:payment_methodGET/user-paymentsGET/user-price-plan/GET/user-productGET/user-productsGET/user-programGET/user-serviceGET/user-servicesGET/user-shippingGET/user-staffPATCH/user-tokens/:idGET/user/add_staff/:owner_id&:validation_codePATCH/user/me/passwordDELETE/user/remove_admin/:idDELETE/user/remove_staff/:idPOST/user/send_staff_emailPOST/usersPOST/users-adminPATCH/users/:idGET/users/confirm/:email&:validation_codeGET/users/is-loggedPOST/users/loginPOST/users/logoutGET/users/mePATCH/users/meDELETE/users/meGET/users/me/avatarPOST/users/me/avatarDELETE/users/me/avatarGET/users/me/deleteGET/users/me/transactionsGET/users/on-behalf-ofGET/users/send-password-reset/:emailPATCH/verify-tokenGET/latest-user-engagement-notifications/:usersGET/new-user-engagement-notificationsPATCH/seen-my-message-notificationPATCH/seen-my-notificationsGET/system-user-engagement-notificationsGET/user-engagement-notificationsGET/user-engagement-notifications/:skip&:usersGET/user-privilegesPOST/user-privilegesGET/user-privileges/:idPATCH/user-privileges/:idDELETE/user-privileges/:idGET/mini-app-reports/:skipPOST/user-reportPATCH/user-report/:idGET/user-reports/:skip&:limitPOST/create-staff-memberPOST/create-staff-schedulePOST/generate-staffPOST/generate-staff-schedule

Create a professional account

Asks for a professional account for the signed-in user. Answers 201; it waits for review. 403 when the site puts professional pages behind a plan the user lacks; 402 when the user already has one.

User token

Needs the token of a signed-in user.

Returns

Returns the ProfessionalAccount object.

Status codes

201 400 401 402 403 500

POST/professional-account
curl -X POST 'http://hristovtintdetailng.com/professional-account?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "user": "6543210fedcba98765432100",
  "reviewed": false,
  "approved": false,
  "cover": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z",
  "show": {
    "services": false,
    "staff_members": false,
    "blogposts": false,
    "programs": false,
    "products": false,
    "events": false,
    "price_plans": false,
    "posts": false
  }
}

List all professional account pages

Professional accounts that offer a kind of item, with their ratings. Answers { users, filters, advanced_filters, originAddresses }.

Optional user

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

Path parameters
modelstringRequired

The professional account page's model.

Query parameters
collectionstring

Only results in this collection.

origin_addressstring

Only professional account pages with this origin address.

Status codes

200 404 500

GET/professional-account-pages/:model
curl -X GET 'http://hristovtintdetailng.com/professional-account-pages/{model}?ionic=true&collection=...&origin_address=...'
Response
{
  "has_cash": false,
  "cash_locale": "Pay by cash",
  "cash_instructions": "example",
  "cash_increase": 0,
  "has_card": false,
  "card_locale": "Pay with credit card",
  "email": "jane@example.com",
  "country": "example",
  "has_invoicing": false,
  "invoice_locale": "Pay via invoice",
  "invoicing_instructions": "example",
  "currency": "EUR",
  "agreedToTerms": false,
  "agreedToTermsAt": "example",
  "merchant_id": "example",
  "has_paypal": false,
  "paypal_increase": 0,
  "paypal_id": "example",
  "lock_currency": false,
  "commission_percentage": 4.4,
  "two_currencies": false,
  "second_currency": "EUR",
  "calculate_rate": false,
  "currency_rate": 1
}

List all professional accounts

A professional account's shareable page. Server-rendered with meta tags, for link previews. Cached for an hour.

Public

Public - no token needed.

Path parameters
userstringRequired

Id of user, who has created the account.

Returns

Returns a list of ProfessionalAccount objects.

Status codes

200 403 404 500

GET/professional-account-preview/:user
curl -X GET 'http://hristovtintdetailng.com/professional-account-preview/{user}?ionic=true'
Response
[
  {
    "user": "6543210fedcba98765432100",
    "reviewed": false,
    "approved": false,
    "cover": "6543210fedcba98765432100",
    "_id": "6543210fedcba98765432100",
    "updatedAt": "2026-11-04T12:00:00.000Z",
    "createdAt": "2026-11-04T12:00:00.000Z",
    "show": {
      "services": false,
      "staff_members": false,
      "blogposts": false,
      "programs": false,
      "products": false,
      "events": false,
      "price_plans": false,
      "posts": false
    }
  }
]

Update a professional account

Updates a professional account. Fields outside the allowed list are silently ignored. Answers the updated record, or 404.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the professional account.

Returns

Returns the ProfessionalAccount object.

Status codes

200 400 401 403 404 500

PATCH/professional-account/:id
curl -X PATCH 'http://hristovtintdetailng.com/professional-account/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "user": "6543210fedcba98765432100",
  "reviewed": false,
  "approved": false,
  "cover": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z",
  "show": {
    "services": false,
    "staff_members": false,
    "blogposts": false,
    "programs": false,
    "products": false,
    "events": false,
    "price_plans": false,
    "posts": false
  }
}

Delete a professional account

Deletes a professional account. 403 when it is another user's. Answers 201.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the professional account.

Returns

Returns an empty answer on success.

Status codes

201 401 403 404 500

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

List all professional accounts

A user's professional account with its services, staff and ratings. 404 when there is none; 403 when it is not approved or the user is disabled.

Optional user

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

Path parameters
userstringRequired

Id of user, who has created the account.

Returns

Returns a list of ProfessionalAccount objects.

Status codes

200 403 404 500

GET/professional-account/:user
curl -X GET 'http://hristovtintdetailng.com/professional-account/{user}?ionic=true'
Response
[
  {
    "user": "6543210fedcba98765432100",
    "reviewed": false,
    "approved": false,
    "cover": "6543210fedcba98765432100",
    "_id": "6543210fedcba98765432100",
    "updatedAt": "2026-11-04T12:00:00.000Z",
    "createdAt": "2026-11-04T12:00:00.000Z",
    "show": {
      "services": false,
      "staff_members": false,
      "blogposts": false,
      "programs": false,
      "products": false,
      "events": false,
      "price_plans": false,
      "posts": false
    }
  }
]

Retrieve the account confirmation

The page that asks the user to confirm their email. Shown after signing up on the website.

Optional user

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

Status codes

200

GET/account-confirmation
curl -X GET 'http://hristovtintdetailng.com/account-confirmation?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
  }
}

Block a block user

Blocks or unblocks a user for the signed-in user. Calling it again unblocks. Blocking also removes the follows between the two users, both ways. Answers 201.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the block user.

Returns

Returns the User object.

Status codes

201 400 401 404 500

PATCH/block-user/:id
curl -X PATCH 'http://hristovtintdetailng.com/block-user/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "email": "jane@example.com",
  "avatar": "6543210fedcba98765432100",
  "social_avatar": "example",
  "isAdmin": false,
  "isStaff": false,
  "owner_id": "6543210fedcba98765432100",
  "organization_name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "isConfirmed": false,
  "number_of_sales": 0,
  "stripe_id": "example",
  "paypal_id": "example",
  "access_level": 1,
  "validation_code": "example",
  "can_edit": {
    "site": false,
    "crm": false,
    "store": false,
    "payments": false,
    "staff": false
  },
  "ip_location": {
    "city": "example",
    "continent_name": "Example",
    "country_name": "Example",
    "country_subdivision": "example",
    "location_latitude": 0,
    "location_longitude": 0,
    "last_updated": "example"
  }
}

List all blocked users

Users the signed-in user blocked. Each with name, handle, avatar and whether verified.

User token

Needs the token of a signed-in user.

Returns

Returns a list of User objects.

Status codes

200 401 500

GET/blocked-users
curl -X GET 'http://hristovtintdetailng.com/blocked-users?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "name": "Example",
    "email": "jane@example.com",
    "avatar": "6543210fedcba98765432100",
    "social_avatar": "example",
    "isAdmin": false,
    "isStaff": false,
    "owner_id": "6543210fedcba98765432100",
    "organization_name": "Example",
    "firstname": "Example",
    "lastname": "Example",
    "phone_number": "+359 888 123 456",
    "address": "example",
    "city": "example",
    "state": "example",
    "country": "example",
    "zip_code": "example",
    "tax_identification_number": "example",
    "notes": "Text shown on the site.",
    "isConfirmed": false,
    "number_of_sales": 0,
    "stripe_id": "example",
    "paypal_id": "example",
    "access_level": 1,
    "validation_code": "example",
    "can_edit": {
      "site": false,
      "crm": false,
      "store": false,
      "payments": false,
      "staff": false
    },
    "ip_location": {
      "city": "example",
      "continent_name": "Example",
      "country_name": "Example",
      "country_subdivision": "example",
      "location_latitude": 0,
      "location_longitude": 0,
      "last_updated": "example"
    }
  }
]

List all booking schedule full months

Every booking of the user's services in the month of a date. Bookings are matched by the date format they are stored in (e.g. 2026-8-4).

Optional userUser token

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

Path parameters
datestringRequired

A date (YYYY-MM-DD).

Status codes

200 401 500

GET/booking-schedule-full-month/:date
curl -X GET 'http://hristovtintdetailng.com/booking-schedule-full-month/{date}?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 booking schedule months

The user's booking schedule for the month of a date: bookings and locked hours per day. One entry per day of the month, with that day's bookings and the hours that cannot be booked, for the calendar view.

Optional userUser token

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

Path parameters
datestringRequired

A date (YYYY-MM-DD).

Status codes

200 401 500

GET/booking-schedule-month/:date
curl -X GET 'http://hristovtintdetailng.com/booking-schedule-month/{date}?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 booking schedule weeks

The user's booking schedule for the week of a date, or the week before or after (direction). Weeks run Sunday to Saturday.

Optional userUser token

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

Path parameters
datestringRequired

A date (YYYY-MM-DD).

directionstringRequired

The booking schedule week's direction.

Status codes

200 401 500

GET/booking-schedule-week/:date&:direction
curl -X GET 'http://hristovtintdetailng.com/booking-schedule-week/{date}&{direction}?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 disable user

Disables the signed-in user's account; it is deleted after 90 days. Signs the user out everywhere, hides the account and sets it to be deleted 90 days later (delete_date).

User token

Needs the token of a signed-in user.

Status codes

200 401 500

PATCH/disable-user
curl -X PATCH 'http://hristovtintdetailng.com/disable-user?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve the followers email

Emails of the signed-in user's followers. Only the emails.

User token

Needs the token of a signed-in user.

Status codes

200 401 500

GET/followers-email
curl -X GET 'http://hristovtintdetailng.com/followers-email?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "email": "jane@example.com",
  "avatar": "6543210fedcba98765432100",
  "social_avatar": "example",
  "isAdmin": false,
  "isStaff": false,
  "owner_id": "6543210fedcba98765432100",
  "organization_name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "isConfirmed": false,
  "number_of_sales": 0,
  "stripe_id": "example",
  "paypal_id": "example",
  "access_level": 1,
  "validation_code": "example",
  "can_edit": {
    "site": false,
    "crm": false,
    "store": false,
    "payments": false,
    "staff": false
  },
  "ip_location": {
    "city": "example",
    "continent_name": "Example",
    "country_name": "Example",
    "country_subdivision": "example",
    "location_latitude": 0,
    "location_longitude": 0,
    "last_updated": "example"
  }
}

Generate a 2auth token with AI

Makes a two-factor secret for the signed-in user and answers its QR code. Answers 201 { dataUrl, outpauth_url }: the QR code to scan into an authenticator app. Two-factor stays off until PATCH /verify-token accepts a code.

User token

Needs the token of a signed-in user.

Status codes

201 400 401 500

GET/generate-2auth-token
curl -X GET 'http://hristovtintdetailng.com/generate-2auth-token?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
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
  }
}

List all user bookings

Bookings of the user's services made after ?newer_than. Polled by the admin to show new bookings as they come in.

Optional userUser token

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

Query parameters
newer_thanstring

Only user bookings with this newer than.

Returns

Returns a list of Booking objects.

Status codes

200 401 500

GET/new-user-bookings
curl -X GET 'http://hristovtintdetailng.com/new-user-bookings?ionic=true&newer_than=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "date": "example",
    "date_iso": "2026-11-04T12:00:00.000Z",
    "depart_date": "example",
    "depart_date_iso": "2026-11-04T12:00:00.000Z",
    "price": 49.9,
    "time": "example",
    "local_time": "example",
    "isLastHour": false,
    "organization_name": "Example",
    "name": "Example",
    "firstname": "Example",
    "lastname": "Example",
    "email": "jane@example.com",
    "phone_number": "+359 888 123 456",
    "address": "example",
    "city": "example",
    "state": "example",
    "country": "example",
    "zip_code": "example",
    "tax_identification_number": "example",
    "notes": "Text shown on the site.",
    "service_id": "6543210fedcba98765432100",
    "staff_member": "6543210fedcba98765432100",
    "coupon": "6543210fedcba98765432100"
  }
]

Retrieve the password reset

The page to ask for a password reset. Renders the form; it calls GET /users/send-password-reset/:email.

Optional user

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

Status codes

200

GET/password-reset
curl -X GET 'http://hristovtintdetailng.com/password-reset?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
  }
}

Reset a reset password

The page that sets a new password from a reset link. Redirects to the not-found page when the code does not match the email.

Optional user

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

Path parameters
emailstringRequired

An email address.

validation_codestringRequired

The reset password's validation code.

Status codes

200 400 500

GET/reset-password/:email&:validation_code
curl -X GET 'http://hristovtintdetailng.com/reset-password/{email}&{validation_code}?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
  }
}

Retrieve the signup

The sign-up page. Renders the form; it posts to POST /users.

Optional user

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

Status codes

200

GET/signup
curl -X GET 'http://hristovtintdetailng.com/signup?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
  }
}

Update a staff

Updates a staff member. Answers the updated staff member, or 404. Fields outside the allowed list are ignored.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the staff.

Status codes

200 400 401 404 500

PATCH/staff/:id
curl -X PATCH 'http://hristovtintdetailng.com/staff/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "email": "jane@example.com",
  "avatar": "6543210fedcba98765432100",
  "social_avatar": "example",
  "isAdmin": false,
  "isStaff": false,
  "owner_id": "6543210fedcba98765432100",
  "organization_name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "isConfirmed": false,
  "number_of_sales": 0,
  "stripe_id": "example",
  "paypal_id": "example",
  "access_level": 1,
  "validation_code": "example",
  "can_edit": {
    "site": false,
    "crm": false,
    "store": false,
    "payments": false,
    "staff": false
  },
  "ip_location": {
    "city": "example",
    "continent_name": "Example",
    "country_name": "Example",
    "country_subdivision": "example",
    "location_latitude": 0,
    "location_longitude": 0,
    "last_updated": "example"
  }
}

Retrieve an u

A user's public profile page; with /:id, a conversation with them. Redirects to the profile in the app; the website has no profile page of its own.

Optional user

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

Path parameters
handlestringRequired

The u's handle.

Status codes

200 500

GET/u/:handle
curl -X GET 'http://hristovtintdetailng.com/u/{handle}?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
  }
}

Delete user addresses

Removes one of the signed-in user's saved addresses. index is the address's position in other_address, from 0.

User token

Needs the token of a signed-in user.

Path parameters
indexstringRequired

The user address's index.

Returns

Returns an empty answer on success.

Status codes

200 401 500

DELETE/user-address/:index
curl -X DELETE 'http://hristovtintdetailng.com/user-address/{index}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

List all user ads

Ads to show a user (?handle or ?user): products and services of other users, in social mode. Products and services of other users who boosted them, skipping users the viewer blocked. Each ad shown is counted and its owner may be notified.

Optional user

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

Query parameters
handlestring

Only user ads with this handle.

userstring

Only user ads with this user.

Status codes

200 404 500

GET/user-ads
curl -X GET 'http://hristovtintdetailng.com/user-ads?ionic=true&handle=...&user=...'
Response
{
  "name": "Example",
  "email": "jane@example.com",
  "avatar": "6543210fedcba98765432100",
  "social_avatar": "example",
  "isAdmin": false,
  "isStaff": false,
  "owner_id": "6543210fedcba98765432100",
  "organization_name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "isConfirmed": false,
  "number_of_sales": 0,
  "stripe_id": "example",
  "paypal_id": "example",
  "access_level": 1,
  "validation_code": "example",
  "can_edit": {
    "site": false,
    "crm": false,
    "store": false,
    "payments": false,
    "staff": false
  },
  "ip_location": {
    "city": "example",
    "continent_name": "Example",
    "country_name": "Example",
    "country_subdivision": "example",
    "location_latitude": 0,
    "location_longitude": 0,
    "last_updated": "example"
  }
}

List all user attributions

Revenue attributed to the signed-in user, in total and by month. Answers { total_revenue } rounded to 2 decimals.

User token

Needs the token of a signed-in user.

Status codes

200 401 500

GET/user-attributions
curl -X GET 'http://hristovtintdetailng.com/user-attributions?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "value": 49.9,
  "owner_id": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

List all user attributions

Revenue attributed to the signed-in user over the last days. Answers { current_period_revenue } rounded to 2 decimals.

User token

Needs the token of a signed-in user.

Path parameters
daysstringRequired

The user attribution's days.

Status codes

200 401 500

GET/user-attributions/:days
curl -X GET 'http://hristovtintdetailng.com/user-attributions/{days}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "value": 49.9,
  "owner_id": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Retrieve the user blog post

One of the user's own blog posts for its editor (?id), in social mode. Answers the post with the categories its editor needs.

Optional userUser token

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

Query parameters
idstring

The ID of the user blog post.

Returns

Returns the BlogPost object.

Status codes

200 401

GET/user-blogpost
curl -X GET 'http://hristovtintdetailng.com/user-blogpost?ionic=true&id=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "title": "Example",
  "url": "example-item",
  "static_url": "example-item",
  "header": "example",
  "description": "Text shown on the site.",
  "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,
      "thumbnail": "example",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "published": true,
  "owner_id": "6543210fedcba98765432100",
  "connected_account_owner_id": "6543210fedcba98765432100",
  "collection_id": "6543210fedcba98765432100",
  "selected": false,
  "custom_1": "example",
  "custom_2": "example",
  "custom_3": "example",
  "about_page": "6543210fedcba98765432100",
  "suitability_price_plans": [
    "6543210fedcba98765432101"
  ],
  "isSuitable": false,
  "reference_id": "example",
  "wildcard_url": {},
  "likes": [
    "6543210fedcba98765432101"
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "total_views": 0,
  "saves": [
    "6543210fedcba98765432101"
  ],
  "times_showed": 0
}

Retrieve the user booking

One booking of the user's services (?id) with its customer and attached records. 403 when the booking is not for one of the user's services.

Optional userUser token

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

Query parameters
idstring

The ID of the user booking.

Returns

Returns the Booking object.

Status codes

200 401 403 500

GET/user-booking
curl -X GET 'http://hristovtintdetailng.com/user-booking?ionic=true&id=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "date": "example",
  "date_iso": "2026-11-04T12:00:00.000Z",
  "depart_date": "example",
  "depart_date_iso": "2026-11-04T12:00:00.000Z",
  "price": 49.9,
  "time": "example",
  "local_time": "example",
  "isLastHour": false,
  "organization_name": "Example",
  "name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "email": "jane@example.com",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "service_id": "6543210fedcba98765432100",
  "staff_member": "6543210fedcba98765432100",
  "coupon": "6543210fedcba98765432100"
}

Search user bookings

Bookings of the user's services matching a search. Matches the customer's name, phone number or email (any case), newest first, with each booking's service.

User token

Needs the token of a signed-in user.

Path parameters
argsstringRequired

The user booking's args.

Returns

Returns a list of Booking objects.

Status codes

200 401 500

GET/user-bookings-search/:args
curl -X GET 'http://hristovtintdetailng.com/user-bookings-search/{args}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "date": "example",
    "date_iso": "2026-11-04T12:00:00.000Z",
    "depart_date": "example",
    "depart_date_iso": "2026-11-04T12:00:00.000Z",
    "price": 49.9,
    "time": "example",
    "local_time": "example",
    "isLastHour": false,
    "organization_name": "Example",
    "name": "Example",
    "firstname": "Example",
    "lastname": "Example",
    "email": "jane@example.com",
    "phone_number": "+359 888 123 456",
    "address": "example",
    "city": "example",
    "state": "example",
    "country": "example",
    "zip_code": "example",
    "tax_identification_number": "example",
    "notes": "Text shown on the site.",
    "service_id": "6543210fedcba98765432100",
    "staff_member": "6543210fedcba98765432100",
    "coupon": "6543210fedcba98765432100"
  }
]

List all user bookings

Bookings of the user's services, a page at a time, sorted by ?sortBy and ?sortOrder. Ten at a time. Each booking comes with its service.

Optional userUser token

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

Path parameters
skipstringRequired

How many results to skip - for paging.

Query parameters
sortBystring

The order of the results.

sortOrderstring

Only user bookings with this sort order.

Returns

Returns a list of Booking objects.

Status codes

200 401 500

GET/user-bookings/:skip
curl -X GET 'http://hristovtintdetailng.com/user-bookings/{skip}?ionic=true&sortBy=...&sortOrder=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "date": "example",
    "date_iso": "2026-11-04T12:00:00.000Z",
    "depart_date": "example",
    "depart_date_iso": "2026-11-04T12:00:00.000Z",
    "price": 49.9,
    "time": "example",
    "local_time": "example",
    "isLastHour": false,
    "organization_name": "Example",
    "name": "Example",
    "firstname": "Example",
    "lastname": "Example",
    "email": "jane@example.com",
    "phone_number": "+359 888 123 456",
    "address": "example",
    "city": "example",
    "state": "example",
    "country": "example",
    "zip_code": "example",
    "tax_identification_number": "example",
    "notes": "Text shown on the site.",
    "service_id": "6543210fedcba98765432100",
    "staff_member": "6543210fedcba98765432100",
    "coupon": "6543210fedcba98765432100"
  }
]

Update the user churned booking

Marks a booking's customer as churned (?booking_id). Used by the follow-up flow after a booking. 403 when the booking is not for one of the user's services.

Optional userUser token

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

Query parameters
booking_idstring

Only user churned bookings with this booking id.

Returns

Returns the Booking object.

Status codes

200 401 403 500

PATCH/user-churned-booking
curl -X PATCH 'http://hristovtintdetailng.com/user-churned-booking?ionic=true&booking_id=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "date": "example",
  "date_iso": "2026-11-04T12:00:00.000Z",
  "depart_date": "example",
  "depart_date_iso": "2026-11-04T12:00:00.000Z",
  "price": 49.9,
  "time": "example",
  "local_time": "example",
  "isLastHour": false,
  "organization_name": "Example",
  "name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "email": "jane@example.com",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "service_id": "6543210fedcba98765432100",
  "staff_member": "6543210fedcba98765432100",
  "coupon": "6543210fedcba98765432100"
}

Confirm a user booking

Confirms a booking (?booking_id). Answers the booking with its service and staff member. 403 when the booking is not for one of the user's services.

Optional userUser token

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

Query parameters
booking_idstring

Only user bookings with this booking id.

Returns

Returns the Booking object.

Status codes

200 401 403 500

PATCH/user-confirm-booking
curl -X PATCH 'http://hristovtintdetailng.com/user-confirm-booking?ionic=true&booking_id=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "date": "example",
  "date_iso": "2026-11-04T12:00:00.000Z",
  "depart_date": "example",
  "depart_date_iso": "2026-11-04T12:00:00.000Z",
  "price": 49.9,
  "time": "example",
  "local_time": "example",
  "isLastHour": false,
  "organization_name": "Example",
  "name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "email": "jane@example.com",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "service_id": "6543210fedcba98765432100",
  "staff_member": "6543210fedcba98765432100",
  "coupon": "6543210fedcba98765432100"
}

Retrieve the user confirmation mail

Sends the signed-in user the email confirmation again. Answers with no body.

User token

Needs the token of a signed-in user.

Status codes

200 401 500

GET/user-confirmation-mail
curl -X GET 'http://hristovtintdetailng.com/user-confirmation-mail?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Search user confirmed bookings

Confirmed bookings matching a search. Matches the customer's name, phone number or email, newest first.

User token

Needs the token of a signed-in user.

Path parameters
argsstringRequired

The user confirmed booking's args.

Returns

Returns a list of Booking objects.

Status codes

200 401 500

GET/user-confirmed-bookings-search/:args
curl -X GET 'http://hristovtintdetailng.com/user-confirmed-bookings-search/{args}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "date": "example",
    "date_iso": "2026-11-04T12:00:00.000Z",
    "depart_date": "example",
    "depart_date_iso": "2026-11-04T12:00:00.000Z",
    "price": 49.9,
    "time": "example",
    "local_time": "example",
    "isLastHour": false,
    "organization_name": "Example",
    "name": "Example",
    "firstname": "Example",
    "lastname": "Example",
    "email": "jane@example.com",
    "phone_number": "+359 888 123 456",
    "address": "example",
    "city": "example",
    "state": "example",
    "country": "example",
    "zip_code": "example",
    "tax_identification_number": "example",
    "notes": "Text shown on the site.",
    "service_id": "6543210fedcba98765432100",
    "staff_member": "6543210fedcba98765432100",
    "coupon": "6543210fedcba98765432100"
  }
]

List all user confirmed bookings

Confirmed bookings of the user's services, a page at a time. Ten at a time, sorted by ?sortBy and ?sortOrder.

Optional userUser token

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

Path parameters
skipstringRequired

How many results to skip - for paging.

Query parameters
sortBystring

The order of the results.

sortOrderstring

Only user confirmed bookings with this sort order.

Returns

Returns a list of Booking objects.

Status codes

200 401 500

GET/user-confirmed-bookings/:skip
curl -X GET 'http://hristovtintdetailng.com/user-confirmed-bookings/{skip}?ionic=true&sortBy=...&sortOrder=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "date": "example",
    "date_iso": "2026-11-04T12:00:00.000Z",
    "depart_date": "example",
    "depart_date_iso": "2026-11-04T12:00:00.000Z",
    "price": 49.9,
    "time": "example",
    "local_time": "example",
    "isLastHour": false,
    "organization_name": "Example",
    "name": "Example",
    "firstname": "Example",
    "lastname": "Example",
    "email": "jane@example.com",
    "phone_number": "+359 888 123 456",
    "address": "example",
    "city": "example",
    "state": "example",
    "country": "example",
    "zip_code": "example",
    "tax_identification_number": "example",
    "notes": "Text shown on the site.",
    "service_id": "6543210fedcba98765432100",
    "staff_member": "6543210fedcba98765432100",
    "coupon": "6543210fedcba98765432100"
  }
]

List all user current bookings

Today's and upcoming bookings of the user's services. At most 100.

Optional userUser token

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

Query parameters
sortBystring

The order of the results.

sortOrderstring

Only user current bookings with this sort order.

Returns

Returns a list of Booking objects.

Status codes

200 401 500

GET/user-current-bookings
curl -X GET 'http://hristovtintdetailng.com/user-current-bookings?ionic=true&sortBy=...&sortOrder=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "date": "example",
    "date_iso": "2026-11-04T12:00:00.000Z",
    "depart_date": "example",
    "depart_date_iso": "2026-11-04T12:00:00.000Z",
    "price": 49.9,
    "time": "example",
    "local_time": "example",
    "isLastHour": false,
    "organization_name": "Example",
    "name": "Example",
    "firstname": "Example",
    "lastname": "Example",
    "email": "jane@example.com",
    "phone_number": "+359 888 123 456",
    "address": "example",
    "city": "example",
    "state": "example",
    "country": "example",
    "zip_code": "example",
    "tax_identification_number": "example",
    "notes": "Text shown on the site.",
    "service_id": "6543210fedcba98765432100",
    "staff_member": "6543210fedcba98765432100",
    "coupon": "6543210fedcba98765432100"
  }
]

Update the user did not answer booking

Records that the booking's customer did not answer the call (?booking_id). Counts the attempt on the booking (call_attempts, last_call_attempt). 403 when the booking is not for one of the user's services.

Optional userUser token

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

Query parameters
booking_idstring

Only user did not answer bookings with this booking id.

Returns

Returns the Booking object.

Status codes

200 401 403 500

PATCH/user-did-not-answer-booking
curl -X PATCH 'http://hristovtintdetailng.com/user-did-not-answer-booking?ionic=true&booking_id=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "date": "example",
  "date_iso": "2026-11-04T12:00:00.000Z",
  "depart_date": "example",
  "depart_date_iso": "2026-11-04T12:00:00.000Z",
  "price": 49.9,
  "time": "example",
  "local_time": "example",
  "isLastHour": false,
  "organization_name": "Example",
  "name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "email": "jane@example.com",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "service_id": "6543210fedcba98765432100",
  "staff_member": "6543210fedcba98765432100",
  "coupon": "6543210fedcba98765432100"
}

List all user dynamic models

Custom models the signed-in user can use, with their records. Answers { dynamic_models, user_input_models }.

User token

Needs the token of a signed-in user.

Returns

Returns a list of DynamicModel objects.

Status codes

200 401 500

GET/user-dynamic-models
curl -X GET 'http://hristovtintdetailng.com/user-dynamic-models?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "name": "Example",
    "fields": [
      {
        "name": "Example",
        "type": "example",
        "required": false,
        "default": {},
        "patchable": true,
        "ref": "example",
        "ref_value_field": "_id",
        "ref_text_field": "_id",
        "depends_on": "example",
        "populate": false,
        "wysiwyg": false,
        "fields": [],
        "show_field_in_cms_table": true,
        "enumerator_values": [],
        "_id": "6543210fedcba98765432100",
        "validations": {
          "minLength": "example",
          "maxLength": "example"
        }
      }
    ],
    "attach_in": [
      {
        "ref": "example",
        "ref_value_field": "_id",
        "ref_text_field": "_id",
        "user_input": false,
        "_id": "6543210fedcba98765432100"
      }
    ],
    "_id": "6543210fedcba98765432100",
    "updatedAt": "2026-11-04T12:00:00.000Z",
    "createdAt": "2026-11-04T12:00:00.000Z",
    "auth": {
      "create": false,
      "read": false,
      "update": false,
      "delete": false
    },
    "ownership_settings": {
      "enable_ownership_identification": false,
      "ownership_based_auth": "example",
      "profile_use": false
    }
  }
]

Retrieve a user dynamic model

One custom model. Only its name and fields. 404 when there is no such model.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the user dynamic model.

Returns

Returns the DynamicModel object.

Status codes

200 401 404 500

GET/user-dynamic-models/:id
curl -X GET 'http://hristovtintdetailng.com/user-dynamic-models/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "fields": [
    {
      "name": "Example",
      "type": "example",
      "required": false,
      "default": {},
      "patchable": true,
      "ref": "example",
      "ref_value_field": "_id",
      "ref_text_field": "_id",
      "depends_on": "example",
      "populate": false,
      "wysiwyg": false,
      "fields": [],
      "show_field_in_cms_table": true,
      "enumerator_values": [],
      "_id": "6543210fedcba98765432100",
      "validations": {
        "minLength": "example",
        "maxLength": "example"
      }
    }
  ],
  "attach_in": [
    {
      "ref": "example",
      "ref_value_field": "_id",
      "ref_text_field": "_id",
      "user_input": false,
      "_id": "6543210fedcba98765432100"
    }
  ],
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z",
  "auth": {
    "create": false,
    "read": false,
    "update": false,
    "delete": false
  },
  "ownership_settings": {
    "enable_ownership_identification": false,
    "ownership_based_auth": "example",
    "profile_use": false
  }
}

Retrieve a user follower

A user's followers, a page at a time. Answers { users, count }.

Public

Public - no token needed.

Path parameters
idstringRequired

The ID of the user follower.

skipstringRequired

How many results to skip - for paging.

Status codes

200 500

GET/user-followers/:id&:skip
curl -X GET 'http://hristovtintdetailng.com/user-followers/{id}&{skip}?ionic=true'
Response
{
  "name": "Example",
  "email": "jane@example.com",
  "avatar": "6543210fedcba98765432100",
  "social_avatar": "example",
  "isAdmin": false,
  "isStaff": false,
  "owner_id": "6543210fedcba98765432100",
  "organization_name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "isConfirmed": false,
  "number_of_sales": 0,
  "stripe_id": "example",
  "paypal_id": "example",
  "access_level": 1,
  "validation_code": "example",
  "can_edit": {
    "site": false,
    "crm": false,
    "store": false,
    "payments": false,
    "staff": false
  },
  "ip_location": {
    "city": "example",
    "continent_name": "Example",
    "country_name": "Example",
    "country_subdivision": "example",
    "location_latitude": 0,
    "location_longitude": 0,
    "last_updated": "example"
  }
}

Retrieve a user following

Who a user follows, a page at a time. Answers { users, count }.

Public

Public - no token needed.

Path parameters
idstringRequired

The ID of the user following.

skipstringRequired

How many results to skip - for paging.

Status codes

200 500

GET/user-following/:id&:skip
curl -X GET 'http://hristovtintdetailng.com/user-following/{id}&{skip}?ionic=true'
Response
{
  "name": "Example",
  "email": "jane@example.com",
  "avatar": "6543210fedcba98765432100",
  "social_avatar": "example",
  "isAdmin": false,
  "isStaff": false,
  "owner_id": "6543210fedcba98765432100",
  "organization_name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "isConfirmed": false,
  "number_of_sales": 0,
  "stripe_id": "example",
  "paypal_id": "example",
  "access_level": 1,
  "validation_code": "example",
  "can_edit": {
    "site": false,
    "crm": false,
    "store": false,
    "payments": false,
    "staff": false
  },
  "ip_location": {
    "city": "example",
    "continent_name": "Example",
    "country_name": "Example",
    "country_subdivision": "example",
    "location_latitude": 0,
    "location_longitude": 0,
    "last_updated": "example"
  }
}

Retrieve a user handle

The user with a handle, or 404 when it is free. Answers { _id } of the user who has the handle, or null when it is free: used to check a handle before saving it.

Public

Public - no token needed.

Path parameters
handlestringRequired

The user handle's handle.

Status codes

200 500

GET/user-handle/:handle
curl -X GET 'http://hristovtintdetailng.com/user-handle/{handle}?ionic=true'
Response
{
  "name": "Example",
  "email": "jane@example.com",
  "avatar": "6543210fedcba98765432100",
  "social_avatar": "example",
  "isAdmin": false,
  "isStaff": false,
  "owner_id": "6543210fedcba98765432100",
  "organization_name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "isConfirmed": false,
  "number_of_sales": 0,
  "stripe_id": "example",
  "paypal_id": "example",
  "access_level": 1,
  "validation_code": "example",
  "can_edit": {
    "site": false,
    "crm": false,
    "store": false,
    "payments": false,
    "staff": false
  },
  "ip_location": {
    "city": "example",
    "continent_name": "Example",
    "country_name": "Example",
    "country_subdivision": "example",
    "location_latitude": 0,
    "location_longitude": 0,
    "last_updated": "example"
  }
}

Retrieve the user inbox

The signed-in user's conversations, newest first, or those of an account they manage (?on_behalf_of). Each conversation with its other members and the record it is about. 403 for an account the user may not message for.

User token

Needs the token of a signed-in user.

Query parameters
on_behalf_ofstring

Only user inboxes with this on behalf of.

Status codes

200 401 403 404 500

GET/user-inbox
curl -X GET 'http://hristovtintdetailng.com/user-inbox?ionic=true&on_behalf_of=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "on_behalf_of": "6543210fedcba98765432100",
  "user_account": "6543210fedcba98765432100",
  "status": "pending",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z",
  "is_authorized_to": {
    "create_posts": false,
    "send_messages": false,
    "answer_delete_comments": false,
    "access_engagements": false,
    "access_boosted_posts": false,
    "access_analytics": false,
    "alter_profile_settings": false
  }
}

List all user invoices

The signed-in user's Stripe invoices. Read from Stripe and formatted for display.

User token

Needs the token of a signed-in user.

Status codes

200 401 500

GET/user-invoices
curl -X GET 'http://hristovtintdetailng.com/user-invoices?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve the user lead from booking

The customer of a booking (?id) with their orders and other bookings. With the customer's orders, newest first, and their bookings with each service.

Optional userUser token

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

Query parameters
idstring

The ID of the user lead from booking.

Returns

Returns the Booking object.

Status codes

200 401 500

GET/user-lead-from-booking
curl -X GET 'http://hristovtintdetailng.com/user-lead-from-booking?ionic=true&id=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "date": "example",
  "date_iso": "2026-11-04T12:00:00.000Z",
  "depart_date": "example",
  "depart_date_iso": "2026-11-04T12:00:00.000Z",
  "price": 49.9,
  "time": "example",
  "local_time": "example",
  "isLastHour": false,
  "organization_name": "Example",
  "name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "email": "jane@example.com",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "service_id": "6543210fedcba98765432100",
  "staff_member": "6543210fedcba98765432100",
  "coupon": "6543210fedcba98765432100"
}

Retrieve a user mention

Users whose handle starts with the text, for @mentions. An empty list for an empty search.

User token

Needs the token of a signed-in user.

Path parameters
handlestringRequired

The user mention's handle.

Status codes

200 401 500

GET/user-mention/:handle
curl -X GET 'http://hristovtintdetailng.com/user-mention/{handle}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "email": "jane@example.com",
  "avatar": "6543210fedcba98765432100",
  "social_avatar": "example",
  "isAdmin": false,
  "isStaff": false,
  "owner_id": "6543210fedcba98765432100",
  "organization_name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "isConfirmed": false,
  "number_of_sales": 0,
  "stripe_id": "example",
  "paypal_id": "example",
  "access_level": 1,
  "validation_code": "example",
  "can_edit": {
    "site": false,
    "crm": false,
    "store": false,
    "payments": false,
    "staff": false
  },
  "ip_location": {
    "city": "example",
    "continent_name": "Example",
    "country_name": "Example",
    "country_subdivision": "example",
    "location_latitude": 0,
    "location_longitude": 0,
    "last_updated": "example"
  }
}

Retrieve the user order

One order of the user's own store (?id), in social mode. Only orders of the signed-in user's own store. Answers the order with its customer and their earlier orders.

Optional userUser token

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

Query parameters
idstring

The ID of the user order.

Returns

Returns the Order object.

Status codes

200 401 500

GET/user-order
curl -X GET 'http://hristovtintdetailng.com/user-order?ionic=true&id=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "organization_name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "email": "jane@example.com",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "products": [
    "example"
  ],
  "products_obj": [
    {
      "product_id": "6543210fedcba98765432100",
      "name": "Example",
      "options": "example",
      "price": 49.9,
      "quantity": 1,
      "_id": "6543210fedcba98765432100"
    }
  ],
  "programs": [
    "example"
  ],
  "programs_obj": [
    {
      "program_id": "6543210fedcba98765432100",
      "title": "Example",
      "price": 49.9,
      "_id": "6543210fedcba98765432100"
    }
  ],
  "tickets": [
    "6543210fedcba98765432101"
  ],
  "donations": [
    "6543210fedcba98765432101"
  ],
  "donations_obj": [
    {
      "donation_id": "6543210fedcba98765432100",
      "name": "Example",
      "options": "example",
      "price": 49.9,
      "quantity": 1,
      "_id": "6543210fedcba98765432100"
    }
  ],
  "value": 49.9,
  "finalized": false,
  "fulfilled": false,
  "paid": false,
  "delivery_method": "example"
}

List all user payment methods

One of the user's saved Stripe payment methods. Read from Stripe. 404 when Stripe has no such method.

Optional userUser token

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

Path parameters
payment_methodstringRequired

The user payment method's payment method.

Status codes

200 401 404 500

GET/user-payment-method/:payment_method
curl -X GET 'http://hristovtintdetailng.com/user-payment-method/{payment_method}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

List all user payments

The signed-in user's payment settings and the site's payment terms, with the Stripe account's capabilities. With the Stripe account's status when card payment is set up, and the merchant agreement page when there is none yet.

User token

Needs the token of a signed-in user.

Status codes

200 401 500

GET/user-payments
curl -X GET 'http://hristovtintdetailng.com/user-payments?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "has_card": false,
  "card_locale": "Pay with credit card",
  "email": "jane@example.com",
  "country": "example",
  "agreedToTerms": false,
  "agreedToTermsAt": "example",
  "merchant_id": "example",
  "has_paypal": false,
  "paypal_increase": 0,
  "paypal_id": "example",
  "owner_id": "6543210fedcba98765432100",
  "number": 1,
  "price_quote_number": "example",
  "bic": "example",
  "swift": "example",
  "tax_id": "example",
  "vat_id": "example",
  "logo": "6543210fedcba98765432100",
  "business_name": "Example",
  "business_name_translated": "Example",
  "responsible_official": "example",
  "responsible_official_translated": "example",
  "business_email": "jane@example.com",
  "company_id": "example"
}

Retrieve the user price plan

The signed-in user's price plans. The plans the user subscribes to.

User token

Needs the token of a signed-in user.

Returns

Returns the PricePlan object.

Status codes

200 401 500

GET/user-price-plan/
curl -X GET 'http://hristovtintdetailng.com/user-price-plan/?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "description": "Text shown on the site.",
  "statement_descriptor": "example",
  "plan_features": [
    {
      "feature_type": "example",
      "feature_name": "Example",
      "feature_value": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "price": 49.9,
  "link": "example-item",
  "image": "6543210fedcba98765432100",
  "price_id": "example",
  "payment_link_id": "example-item",
  "free_trial_days": 0,
  "billing_address_collection": "auto",
  "owner_id": "6543210fedcba98765432100",
  "times_showed": 0,
  "views": [
    "6543210fedcba98765432101"
  ],
  "total_views": 0,
  "disabled": false,
  "ribbon": "example",
  "linked_plans": [
    "6543210fedcba98765432101"
  ],
  "is_hidden": false,
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z",
  "recurring_options": {
    "interval": "example",
    "interval_count": 0
  }
}

Retrieve the user product

One of the user's own products for its editor (?id), in social mode. Answers the product with the categories and origin addresses its editor needs, for the app with ?ionic.

Optional userUser token

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

Query parameters
idstring

The ID of the user product.

Returns

Returns the Product object.

Status codes

200 401 500

GET/user-product
curl -X GET 'http://hristovtintdetailng.com/user-product?ionic=true&id=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "url": "example-item",
  "static_url": "example-item",
  "ribbon": "example",
  "striked": "example",
  "price": 49.9,
  "description": "Text shown on the site.",
  "product_informations": [
    {
      "name": "Example",
      "description": "Text shown on the site.",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "product_options": [
    {
      "name": "Example",
      "options": [],
      "informations": [],
      "_id": "6543210fedcba98765432100"
    }
  ],
  "published": true,
  "available_for_purchase": true,
  "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",
  "grouping": [
    {
      "collection_id": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "owner_id": "6543210fedcba98765432100",
  "connected_account_owner_id": "6543210fedcba98765432100",
  "qty": 1,
  "origin_address": "example",
  "selected": false,
  "custom_1": "example",
  "custom_2": "example",
  "custom_3": "example",
  "about_page": "6543210fedcba98765432100",
  "is_digital": false,
  "secondary_cta": {
    "show": false,
    "title": "Example",
    "webUrl": "example",
    "appUrl": "example"
  },
  "attached_priceplans": {
    "name": "Example",
    "priceplans": "example"
  }
}

List all user products

A user's products page (?user), in social mode. Rendered with the seller's products.

Optional user

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

Query parameters
userstring

Only user products with this user.

Returns

Returns a list of Product objects.

Status codes

200 500

GET/user-products
curl -X GET 'http://hristovtintdetailng.com/user-products?ionic=true&user=...'
Response
[
  {
    "name": "Example",
    "url": "example-item",
    "static_url": "example-item",
    "ribbon": "example",
    "striked": "example",
    "price": 49.9,
    "description": "Text shown on the site.",
    "product_informations": [
      {
        "name": "Example",
        "description": "Text shown on the site.",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "product_options": [
      {
        "name": "Example",
        "options": [],
        "informations": [],
        "_id": "6543210fedcba98765432100"
      }
    ],
    "published": true,
    "available_for_purchase": true,
    "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",
    "grouping": [
      {
        "collection_id": "6543210fedcba98765432100",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "owner_id": "6543210fedcba98765432100",
    "connected_account_owner_id": "6543210fedcba98765432100",
    "qty": 1,
    "origin_address": "example",
    "selected": false,
    "custom_1": "example",
    "custom_2": "example",
    "custom_3": "example",
    "about_page": "6543210fedcba98765432100",
    "is_digital": false,
    "secondary_cta": {
      "show": false,
      "title": "Example",
      "webUrl": "example",
      "appUrl": "example"
    },
    "attached_priceplans": {
      "name": "Example",
      "priceplans": "example"
    }
  }
]

Retrieve the user program

One of the user's own programs for its editor (?id), in social mode. Answers { program, categories, topics }.

Optional userUser token

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

Query parameters
idstring

The ID of the user program.

Returns

Returns the Program object.

Status codes

200 401 500

GET/user-program
curl -X GET 'http://hristovtintdetailng.com/user-program?ionic=true&id=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "title": "Example",
  "url": "example-item",
  "static_url": "example-item",
  "header": "example",
  "body": "Text shown on the site.",
  "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"
    }
  ],
  "video": "6543210fedcba98765432100",
  "about_page": "6543210fedcba98765432100",
  "weeks": [
    {
      "isCompleted": {},
      "progress": {},
      "title": "Example",
      "days": [],
      "_id": "6543210fedcba98765432100"
    }
  ],
  "suitability_price_plans": [
    "6543210fedcba98765432101"
  ],
  "isSuitable": false,
  "price": 0,
  "collection_id": "6543210fedcba98765432100",
  "topics": [
    {
      "collection_id": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "owner_id": "6543210fedcba98765432100",
  "connected_account_owner_id": "6543210fedcba98765432100",
  "ribbon": "example",
  "striked": "example",
  "isConsistent": false,
  "isAcademic": true,
  "wildcard_url": {},
  "reviewed": false,
  "approved": false,
  "likes": [
    "6543210fedcba98765432101"
  ],
  "popup": {
    "title": "Example",
    "points": "example"
  }
}

Retrieve the user service

One of the user's own services for its editor (?id), in social mode. Answers the service with the staff, categories and origin addresses its editor needs. 403 when it is not the user's, or an account they manage.

Optional userUser token

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

Query parameters
idstring

The ID of the user service.

on_behalf_ofstring

Only user services with this on behalf of.

Returns

Returns the Service object.

Status codes

200 401 403

GET/user-service
curl -X GET 'http://hristovtintdetailng.com/user-service?ionic=true&id=...&on_behalf_of=...' \
  -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 user services

The signed-in user's services. Services the user is a staff member of.

User token

Needs the token of a signed-in user.

Returns

Returns a list of Service objects.

Status codes

200 401 500

GET/user-services
curl -X GET 'http://hristovtintdetailng.com/user-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
    }
  }
]

Retrieve the user shipping

One of the user's own delivery settings (?id), in social mode. 404 when it is not the user's.

Optional userUser token

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

Query parameters
idstring

The ID of the user shipping.

Returns

Returns the Shipping object.

Status codes

200 401 500

GET/user-shipping
curl -X GET 'http://hristovtintdetailng.com/user-shipping?ionic=true&id=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "region": "example",
  "has_store_pickup": false,
  "pickup_title": "Example",
  "pickup_address": "example",
  "pickup_available": "example",
  "pickup_instructions": "example",
  "delivery": [
    {
      "name": "Example",
      "estimated_delivery_time": "example",
      "fixed_rate": 1,
      "rate_per_total": 49.9,
      "rate_per_unit": 1,
      "has_free_delivery": false,
      "free_delivery_requirement": 0,
      "delivery_days": 3,
      "hasIntegration": true,
      "has_time_window": false,
      "available_from": "example",
      "available_to": "example",
      "timezone": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "owner_id": "6543210fedcba98765432100",
  "connected_account_owner_id": "6543210fedcba98765432100",
  "min_order_value": 0,
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Retrieve the user staff

The page of the user's own staff, in social mode. The page; it loads the staff itself.

Optional userUser token

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

Status codes

200 401

GET/user-staff
curl -X GET 'http://hristovtintdetailng.com/user-staff?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Update a user token

Signs a restricted user out everywhere (clears their tokens). Does nothing unless the user is restricted.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the user token.

Status codes

200 400 401 404 500

PATCH/user-tokens/:id
curl -X PATCH 'http://hristovtintdetailng.com/user-tokens/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "email": "jane@example.com",
  "avatar": "6543210fedcba98765432100",
  "social_avatar": "example",
  "isAdmin": false,
  "isStaff": false,
  "owner_id": "6543210fedcba98765432100",
  "organization_name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "isConfirmed": false,
  "number_of_sales": 0,
  "stripe_id": "example",
  "paypal_id": "example",
  "access_level": 1,
  "validation_code": "example",
  "can_edit": {
    "site": false,
    "crm": false,
    "store": false,
    "payments": false,
    "staff": false
  },
  "ip_location": {
    "city": "example",
    "continent_name": "Example",
    "country_name": "Example",
    "country_subdivision": "example",
    "location_latitude": 0,
    "location_longitude": 0,
    "last_updated": "example"
  }
}

Retrieve a user

Accepts a staff invitation and adds the signed-in user to the owner's staff. Opened from the invitation email; a wrong code goes to the not-found page.

User token

Needs the token of a signed-in user.

Path parameters
owner_idstringRequired

User.id of the admin who added this user.

validation_codestringRequired

Code sent to confirm the email.

Returns

Returns the User object.

Status codes

200 401 500

GET/user/add_staff/:owner_id&:validation_code
curl -X GET 'http://hristovtintdetailng.com/user/add_staff/{owner_id}&{validation_code}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "email": "jane@example.com",
  "avatar": "6543210fedcba98765432100",
  "social_avatar": "example",
  "isAdmin": false,
  "isStaff": false,
  "owner_id": "6543210fedcba98765432100",
  "organization_name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "isConfirmed": false,
  "number_of_sales": 0,
  "stripe_id": "example",
  "paypal_id": "example",
  "access_level": 1,
  "validation_code": "example",
  "can_edit": {
    "site": false,
    "crm": false,
    "store": false,
    "payments": false,
    "staff": false
  },
  "ip_location": {
    "city": "example",
    "continent_name": "Example",
    "country_name": "Example",
    "country_subdivision": "example",
    "location_latitude": 0,
    "location_longitude": 0,
    "last_updated": "example"
  }
}

Update your user

Changes the signed-in user's password, checking the current one. Send password (the current one) and new_password. 401 "Password not valid" when the current one is wrong.

User token

Needs the token of a signed-in user.

Status codes

200 401 500

PATCH/user/me/password
curl -X PATCH 'http://hristovtintdetailng.com/user/me/password?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Delete a user

Removes an administrator; ?deleteQuery=0 also deletes everything they made. Without deleteQuery=0 the admin's products, services, media and bookings stay. 403 for removing yourself. Answers 204.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the user.

Query parameters
deleteQuerystring

Only users with this delete query.

Returns

Returns an empty answer on success.

Status codes

204 401 403 500

DELETE/user/remove_admin/:id
curl -X DELETE 'http://hristovtintdetailng.com/user/remove_admin/{id}?ionic=true&deleteQuery=...' \
  -H 'Authorization: Bearer <TOKEN>'

Delete a user

Removes a staff member of the user's account; ?deleteQuery=0 also deletes everything they made. Without deleteQuery=0 the staff member's products, services, media and bookings stay with the account. 403 for removing yourself or an admin. Answers 204.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the user.

Query parameters
deleteQuerystring

Only users with this delete query.

Returns

Returns an empty answer on success.

Status codes

204 401 403 500

DELETE/user/remove_staff/:id
curl -X DELETE 'http://hristovtintdetailng.com/user/remove_staff/{id}?ionic=true&deleteQuery=...' \
  -H 'Authorization: Bearer <TOKEN>'

Create a user

Invites someone (email) to be staff of the user's account, or of one they manage (on_behalf_of). The invitation email carries a link to GET /user/add_staff. 403 when the user may not manage that account's staff.

Optional userUser token

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

Parameters
on_behalf_ofstring

The user's on behalf of.

emailstring

An email address.

Status codes

200 401 403 500

POST/user/send_staff_email
curl -X POST 'http://hristovtintdetailng.com/user/send_staff_email?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "on_behalf_of": "...", "email": "..." }'
Response
{
  "on_behalf_of": "6543210fedcba98765432100",
  "user_account": "6543210fedcba98765432100",
  "status": "pending",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z",
  "is_authorized_to": {
    "create_posts": false,
    "send_messages": false,
    "answer_delete_comments": false,
    "access_engagements": false,
    "access_boosted_posts": false,
    "access_analytics": false,
    "alter_profile_settings": false
  }
}

Create a user

Signs a visitor up: creates the user, emails the confirmation and answers the user with a token. Answers 201 with { token } for the app; a website sign-up is redirected to /account-confirmation instead. The confirmation email carries the code GET /users/confirm checks. 400 when the email is taken or a field is invalid.

Public

Public - no token needed.

Returns

Returns the User object.

Status codes

201 400 500

POST/users
curl -X POST 'http://hristovtintdetailng.com/users?ionic=true'
Response
{
  "name": "Example",
  "email": "jane@example.com",
  "avatar": "6543210fedcba98765432100",
  "social_avatar": "example",
  "isAdmin": false,
  "isStaff": false,
  "owner_id": "6543210fedcba98765432100",
  "organization_name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "isConfirmed": false,
  "number_of_sales": 0,
  "stripe_id": "example",
  "paypal_id": "example",
  "access_level": 1,
  "validation_code": "example",
  "can_edit": {
    "site": false,
    "crm": false,
    "store": false,
    "payments": false,
    "staff": false
  },
  "ip_location": {
    "city": "example",
    "continent_name": "Example",
    "country_name": "Example",
    "country_subdivision": "example",
    "location_latitude": 0,
    "location_longitude": 0,
    "last_updated": "example"
  }
}

Create a users admin

Signs an administrator in to another site's account by email, creating that user when missing (can_edit), and answers a token. Used by the platform admin to open a customer's site: the user is found by email, or created with the given can_edit rights, and a fresh token is answered with 201.

Admin token

Needs a site admin token.

Parameters
emailstring

An email address.

namestring

The users admin's name.

can_editstring

The users admin's can edit.

Status codes

201 400 401 500

POST/users-admin
curl -X POST 'http://hristovtintdetailng.com/users-admin?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "email": "...", "name": "...", "can_edit": "..." }'
Response
{
  "name": "Example",
  "email": "jane@example.com",
  "avatar": "6543210fedcba98765432100",
  "social_avatar": "example",
  "isAdmin": false,
  "isStaff": false,
  "owner_id": "6543210fedcba98765432100",
  "organization_name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "isConfirmed": false,
  "number_of_sales": 0,
  "stripe_id": "example",
  "paypal_id": "example",
  "access_level": 1,
  "validation_code": "example",
  "can_edit": {
    "site": false,
    "crm": false,
    "store": false,
    "payments": false,
    "staff": false
  },
  "ip_location": {
    "city": "example",
    "continent_name": "Example",
    "country_name": "Example",
    "country_subdivision": "example",
    "location_latitude": 0,
    "location_longitude": 0,
    "last_updated": "example"
  }
}

Update a user

Updates any user (admin). For administrators. Answers the updated user, or 404. Fields outside the allowed list are ignored.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the user.

Returns

Returns the User object.

Status codes

200 400 401 404 500

PATCH/users/:id
curl -X PATCH 'http://hristovtintdetailng.com/users/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "email": "jane@example.com",
  "avatar": "6543210fedcba98765432100",
  "social_avatar": "example",
  "isAdmin": false,
  "isStaff": false,
  "owner_id": "6543210fedcba98765432100",
  "organization_name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "isConfirmed": false,
  "number_of_sales": 0,
  "stripe_id": "example",
  "paypal_id": "example",
  "access_level": 1,
  "validation_code": "example",
  "can_edit": {
    "site": false,
    "crm": false,
    "store": false,
    "payments": false,
    "staff": false
  },
  "ip_location": {
    "city": "example",
    "continent_name": "Example",
    "country_name": "Example",
    "country_subdivision": "example",
    "location_latitude": 0,
    "location_longitude": 0,
    "last_updated": "example"
  }
}

Confirm the user

Confirms a user's email with the code they were sent and signs them in. Opened from the confirmation email: marks the email confirmed and redirects to the account page signed in. A wrong code answers 400.

Public

Public - no token needed.

Path parameters
emailstringRequired

An email address.

validation_codestringRequired

Code sent to confirm the email.

Returns

Returns the User object.

Status codes

200 400 418 500

GET/users/confirm/:email&:validation_code
curl -X GET 'http://hristovtintdetailng.com/users/confirm/{email}&{validation_code}?ionic=true'
Response
{
  "name": "Example",
  "email": "jane@example.com",
  "avatar": "6543210fedcba98765432100",
  "social_avatar": "example",
  "isAdmin": false,
  "isStaff": false,
  "owner_id": "6543210fedcba98765432100",
  "organization_name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "isConfirmed": false,
  "number_of_sales": 0,
  "stripe_id": "example",
  "paypal_id": "example",
  "access_level": 1,
  "validation_code": "example",
  "can_edit": {
    "site": false,
    "crm": false,
    "store": false,
    "payments": false,
    "staff": false
  },
  "ip_location": {
    "city": "example",
    "continent_name": "Example",
    "country_name": "Example",
    "country_subdivision": "example",
    "location_latitude": 0,
    "location_longitude": 0,
    "last_updated": "example"
  }
}

Retrieve the user

Whether the visitor is signed in; refreshes their location from their IP when it is older than a week. Answers { user }, or 401 when the token is missing or no longer valid. The location lookup uses the visitor's IP and runs at most once a week.

Optional userUser token

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

Status codes

200 401 500

GET/users/is-logged
curl -X GET 'http://hristovtintdetailng.com/users/is-logged?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Sign in

Signs a user in with email and password (or an existing token) and answers the user, a token and their active subscriptions. Answers { user, token }. With two-factor sign-in on, the first call answers 401 { needs_token: true } and the call is repeated with the code in token; a wrong code answers 401 "Invalid verification code.". 400 for a wrong email or password.

Public

Public - no token needed.

Parameters
emailstring

An email address.

Returns

Returns the User object.

Status codes

200 400 401 500

POST/users/login
curl -X POST 'http://hristovtintdetailng.com/users/login?ionic=true' \
  -H 'Content-Type: application/json' \
  -d '{ "email": "..." }'
Response
{
  "name": "Example",
  "email": "jane@example.com",
  "avatar": "6543210fedcba98765432100",
  "social_avatar": "example",
  "isAdmin": false,
  "isStaff": false,
  "owner_id": "6543210fedcba98765432100",
  "organization_name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "isConfirmed": false,
  "number_of_sales": 0,
  "stripe_id": "example",
  "paypal_id": "example",
  "access_level": 1,
  "validation_code": "example",
  "can_edit": {
    "site": false,
    "crm": false,
    "store": false,
    "payments": false,
    "staff": false
  },
  "ip_location": {
    "city": "example",
    "continent_name": "Example",
    "country_name": "Example",
    "country_subdivision": "example",
    "location_latitude": 0,
    "location_longitude": 0,
    "last_updated": "example"
  }
}

Sign out

Signs out: removes the token used for the call. Only the token in the Authorization header is removed; the user's other devices stay signed in.

User token

Needs the token of a signed-in user.

Status codes

200 401 500

POST/users/logout
curl -X POST 'http://hristovtintdetailng.com/users/logout?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve your user

The signed-in user with the site's settings, their orders and the programs they bought. Renders the account page on the website, or JSON for the app with ?ionic. In social mode the website sends the user to the app instead, signed in with their latest token.

Optional userUser token

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

Query parameters
skip_transactions_checkstring

Only users with this skip transactions check.

Returns

Returns the User object.

Status codes

200 401 404 500

GET/users/me
curl -X GET 'http://hristovtintdetailng.com/users/me?ionic=true&skip_transactions_check=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "email": "jane@example.com",
  "avatar": "6543210fedcba98765432100",
  "social_avatar": "example",
  "isAdmin": false,
  "isStaff": false,
  "owner_id": "6543210fedcba98765432100",
  "organization_name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "isConfirmed": false,
  "number_of_sales": 0,
  "stripe_id": "example",
  "paypal_id": "example",
  "access_level": 1,
  "validation_code": "example",
  "can_edit": {
    "site": false,
    "crm": false,
    "store": false,
    "payments": false,
    "staff": false
  },
  "ip_location": {
    "city": "example",
    "continent_name": "Example",
    "country_name": "Example",
    "country_subdivision": "example",
    "location_latitude": 0,
    "location_longitude": 0,
    "last_updated": "example"
  }
}

Update your user

Updates the signed-in user's own profile (name, address, saved items, two-factor and other allowed fields). Fields outside the allowed list are silently ignored, and the two-factor fields can never be set here (use GET /generate-2auth-token and PATCH /verify-token). Answers the updated user without its two-factor secret.

User token

Needs the token of a signed-in user.

Parameters
saved_productsstring

The user's saved products.

saved_programsstring

The user's saved programs.

saved_blogpostsstring

The user's saved blog posts.

saved_servicesstring

The user's saved services.

Status codes

200 400 401 500

PATCH/users/me
curl -X PATCH 'http://hristovtintdetailng.com/users/me?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "saved_products": "...", "saved_programs": "...", "saved_blogposts": "...", "saved_services": "..." }'

Delete your user

Deletes the signed-in user's account and everything they own. Deletes the account at once and emails the user a cancellation. Answers the deleted user. Use PATCH /disable-user for the 90-day grace period instead.

User token

Needs the token of a signed-in user.

Returns

Returns an empty answer on success.

Status codes

200 401 500

DELETE/users/me
curl -X DELETE 'http://hristovtintdetailng.com/users/me?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve your user

The signed-in user's profile picture. Answers the image bytes, or 404 when the user has no picture.

User token

Needs the token of a signed-in user.

Status codes

200 401 404 500

GET/users/me/avatar
curl -X GET 'http://hristovtintdetailng.com/users/me/avatar?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "file": "example",
  "file_path": "example",
  "alt": "example",
  "filename": "Example",
  "filetype": "example",
  "vimeo_uri": "example",
  "vimeo_picture": "example",
  "duration": 1,
  "vimeo_url": "example-item",
  "youtube_url": "example-item",
  "youtube_picture": "example",
  "thumbnail": "example",
  "gcs_url": "example-item",
  "gcs_480_30_url": "example-item",
  "gcs_720_30_url": "example-item",
  "gcs_1080_30_url": "example-item",
  "picture_gcs_url": "example-item",
  "transcode_status": "not_started",
  "owner_id": "6543210fedcba98765432100",
  "source_url": "example-item",
  "source_framing": "example",
  "origin": "example",
  "width": 1,
  "height": 1,
  "sequence": {
    "status": "example",
    "started_at": "example",
    "updated_at": "example",
    "step": "example",
    "done": 0,
    "total": 0,
    "ext": "example",
    "trim_start": 0,
    "trim_end": 0,
    "build_id": "example",
    "previous_base": "example",
    "frame_count": 0
  }
}

Create a user

Uploads the signed-in user's profile picture (avatar, form field). Multipart upload; the picture is resized and stored as a media record. Redirects to the account page when done.

User token

Needs the token of a signed-in user.

Status codes

200 400 401

POST/users/me/avatar
curl -X POST 'http://hristovtintdetailng.com/users/me/avatar?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Delete your user

Removes the signed-in user's profile picture. Deletes the media record too.

User token

Needs the token of a signed-in user.

Returns

Returns an empty answer on success.

Status codes

200 401

DELETE/users/me/avatar
curl -X DELETE 'http://hristovtintdetailng.com/users/me/avatar?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve your user

The account deletion page. Asks to confirm before DELETE /users/me.

User token

Needs the token of a signed-in user.

Status codes

200 400 401 500

GET/users/me/delete
curl -X GET 'http://hristovtintdetailng.com/users/me/delete?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve your user

The signed-in user's payments: Stripe invoices, payment intents and subscriptions. Read live from Stripe, so it is as current as Stripe is and takes a moment. 404 when the user has no Stripe customer yet.

Optional userUser token

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

Query parameters
skip_transactions_checkstring

Only users with this skip transactions check.

Status codes

200 401 404 500

GET/users/me/transactions
curl -X GET 'http://hristovtintdetailng.com/users/me/transactions?ionic=true&skip_transactions_check=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "has_cash": false,
  "cash_locale": "Pay by cash",
  "cash_instructions": "example",
  "cash_increase": 0,
  "has_card": false,
  "card_locale": "Pay with credit card",
  "email": "jane@example.com",
  "country": "example",
  "has_invoicing": false,
  "invoice_locale": "Pay via invoice",
  "invoicing_instructions": "example",
  "currency": "EUR",
  "agreedToTerms": false,
  "agreedToTermsAt": "example",
  "merchant_id": "example",
  "has_paypal": false,
  "paypal_increase": 0,
  "paypal_id": "example",
  "lock_currency": false,
  "commission_percentage": 4.4,
  "two_currencies": false,
  "second_currency": "EUR",
  "calculate_rate": false,
  "currency_rate": 1
}

Retrieve the user

The account the signed-in user manages for someone else (?on_behalf_of), with its orders. The same as /users/me, for an account the signed-in user has been given access to. 404 when there is no such connection.

Optional userUser token

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

Query parameters
on_behalf_ofstring

Only users with this on behalf of.

skip_transactions_checkstring

Only users with this skip transactions check.

Returns

Returns the User object.

Status codes

200 401 404 500

GET/users/on-behalf-of
curl -X GET 'http://hristovtintdetailng.com/users/on-behalf-of?ionic=true&on_behalf_of=...&skip_transactions_check=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "email": "jane@example.com",
  "avatar": "6543210fedcba98765432100",
  "social_avatar": "example",
  "isAdmin": false,
  "isStaff": false,
  "owner_id": "6543210fedcba98765432100",
  "organization_name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "isConfirmed": false,
  "number_of_sales": 0,
  "stripe_id": "example",
  "paypal_id": "example",
  "access_level": 1,
  "validation_code": "example",
  "can_edit": {
    "site": false,
    "crm": false,
    "store": false,
    "payments": false,
    "staff": false
  },
  "ip_location": {
    "city": "example",
    "continent_name": "Example",
    "country_name": "Example",
    "country_subdivision": "example",
    "location_latitude": 0,
    "location_longitude": 0,
    "last_updated": "example"
  }
}

List all users

Emails a password reset link to the user. Answers 201 when the email was sent, 400 when no user has that email.

Public

Public - no token needed.

Path parameters
emailstringRequired

An email address.

Returns

Returns a list of User objects.

Status codes

201 400 500

GET/users/send-password-reset/:email
curl -X GET 'http://hristovtintdetailng.com/users/send-password-reset/{email}?ionic=true'
Response
[
  {
    "name": "Example",
    "email": "jane@example.com",
    "avatar": "6543210fedcba98765432100",
    "social_avatar": "example",
    "isAdmin": false,
    "isStaff": false,
    "owner_id": "6543210fedcba98765432100",
    "organization_name": "Example",
    "firstname": "Example",
    "lastname": "Example",
    "phone_number": "+359 888 123 456",
    "address": "example",
    "city": "example",
    "state": "example",
    "country": "example",
    "zip_code": "example",
    "tax_identification_number": "example",
    "notes": "Text shown on the site.",
    "isConfirmed": false,
    "number_of_sales": 0,
    "stripe_id": "example",
    "paypal_id": "example",
    "access_level": 1,
    "validation_code": "example",
    "can_edit": {
      "site": false,
      "crm": false,
      "store": false,
      "payments": false,
      "staff": false
    },
    "ip_location": {
      "city": "example",
      "continent_name": "Example",
      "country_name": "Example",
      "country_subdivision": "example",
      "location_latitude": 0,
      "location_longitude": 0,
      "last_updated": "example"
    }
  }
]

Verify a token

Checks a two-factor code (token) and turns two-factor sign-in on when it is right. Answers { verified }.

User token

Needs the token of a signed-in user.

Status codes

200 400 401 500

PATCH/verify-token
curl -X PATCH 'http://hristovtintdetailng.com/verify-token?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "email": "jane@example.com",
  "avatar": "6543210fedcba98765432100",
  "social_avatar": "example",
  "isAdmin": false,
  "isStaff": false,
  "owner_id": "6543210fedcba98765432100",
  "organization_name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "isConfirmed": false,
  "number_of_sales": 0,
  "stripe_id": "example",
  "paypal_id": "example",
  "access_level": 1,
  "validation_code": "example",
  "can_edit": {
    "site": false,
    "crm": false,
    "store": false,
    "payments": false,
    "staff": false
  },
  "ip_location": {
    "city": "example",
    "continent_name": "Example",
    "country_name": "Example",
    "country_subdivision": "example",
    "location_latitude": 0,
    "location_longitude": 0,
    "last_updated": "example"
  }
}

List all user engagement notifications

The signed-in user's latest notifications. The newest 5.

User token

Needs the token of a signed-in user.

Path parameters
usersstringRequired

The user engagement notification's users.

Returns

Returns a list of UserEngagementNotification objects.

Status codes

200 401 500

GET/latest-user-engagement-notifications/:users
curl -X GET 'http://hristovtintdetailng.com/latest-user-engagement-notifications/{users}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "type": "example",
    "title": "Example",
    "body": "Text shown on the site.",
    "owner_id": "6543210fedcba98765432100",
    "from": "6543210fedcba98765432100",
    "post": "6543210fedcba98765432100",
    "group": "6543210fedcba98765432100",
    "sendToAll": false,
    "comment": "6543210fedcba98765432100",
    "is_received": false,
    "is_seen": false,
    "url": "example-item",
    "image": "example",
    "service": "6543210fedcba98765432100",
    "product": "6543210fedcba98765432100",
    "blogpost": "6543210fedcba98765432100",
    "program": "6543210fedcba98765432100",
    "booking": "6543210fedcba98765432100",
    "_id": "6543210fedcba98765432100",
    "updatedAt": "2026-11-04T12:00:00.000Z",
    "createdAt": "2026-11-04T12:00:00.000Z"
  }
]

List all user engagement notifications

The signed-in user's unseen notifications. Answers { notifications_count, messages_count }, for the badges.

User token

Needs the token of a signed-in user.

Returns

Returns a list of UserEngagementNotification objects.

Status codes

200 401 500

GET/new-user-engagement-notifications
curl -X GET 'http://hristovtintdetailng.com/new-user-engagement-notifications?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "type": "example",
    "title": "Example",
    "body": "Text shown on the site.",
    "owner_id": "6543210fedcba98765432100",
    "from": "6543210fedcba98765432100",
    "post": "6543210fedcba98765432100",
    "group": "6543210fedcba98765432100",
    "sendToAll": false,
    "comment": "6543210fedcba98765432100",
    "is_received": false,
    "is_seen": false,
    "url": "example-item",
    "image": "example",
    "service": "6543210fedcba98765432100",
    "product": "6543210fedcba98765432100",
    "blogpost": "6543210fedcba98765432100",
    "program": "6543210fedcba98765432100",
    "booking": "6543210fedcba98765432100",
    "_id": "6543210fedcba98765432100",
    "updatedAt": "2026-11-04T12:00:00.000Z",
    "createdAt": "2026-11-04T12:00:00.000Z"
  }
]

Update the seen message notification

Marks the signed-in user's message notifications seen. Answers the notifications marked.

User token

Needs the token of a signed-in user.

Status codes

200 401 500

PATCH/seen-my-message-notification
curl -X PATCH 'http://hristovtintdetailng.com/seen-my-message-notification?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "type": "example",
  "title": "Example",
  "body": "Text shown on the site.",
  "owner_id": "6543210fedcba98765432100",
  "from": "6543210fedcba98765432100",
  "post": "6543210fedcba98765432100",
  "group": "6543210fedcba98765432100",
  "sendToAll": false,
  "comment": "6543210fedcba98765432100",
  "is_received": false,
  "is_seen": false,
  "url": "example-item",
  "image": "example",
  "service": "6543210fedcba98765432100",
  "product": "6543210fedcba98765432100",
  "blogpost": "6543210fedcba98765432100",
  "program": "6543210fedcba98765432100",
  "booking": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Update the seen notification

Marks the signed-in user's notifications seen. Answers the notifications marked.

User token

Needs the token of a signed-in user.

Status codes

200 401 500

PATCH/seen-my-notifications
curl -X PATCH 'http://hristovtintdetailng.com/seen-my-notifications?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "type": "example",
  "title": "Example",
  "body": "Text shown on the site.",
  "owner_id": "6543210fedcba98765432100",
  "from": "6543210fedcba98765432100",
  "post": "6543210fedcba98765432100",
  "group": "6543210fedcba98765432100",
  "sendToAll": false,
  "comment": "6543210fedcba98765432100",
  "is_received": false,
  "is_seen": false,
  "url": "example-item",
  "image": "example",
  "service": "6543210fedcba98765432100",
  "product": "6543210fedcba98765432100",
  "blogpost": "6543210fedcba98765432100",
  "program": "6543210fedcba98765432100",
  "booking": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

List all system user engagement notifications

System notifications for the signed-in user. Newest first.

User token

Needs the token of a signed-in user.

Returns

Returns a list of UserEngagementNotification objects.

Status codes

200 401 500

GET/system-user-engagement-notifications
curl -X GET 'http://hristovtintdetailng.com/system-user-engagement-notifications?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "type": "example",
    "title": "Example",
    "body": "Text shown on the site.",
    "owner_id": "6543210fedcba98765432100",
    "from": "6543210fedcba98765432100",
    "post": "6543210fedcba98765432100",
    "group": "6543210fedcba98765432100",
    "sendToAll": false,
    "comment": "6543210fedcba98765432100",
    "is_received": false,
    "is_seen": false,
    "url": "example-item",
    "image": "example",
    "service": "6543210fedcba98765432100",
    "product": "6543210fedcba98765432100",
    "blogpost": "6543210fedcba98765432100",
    "program": "6543210fedcba98765432100",
    "booking": "6543210fedcba98765432100",
    "_id": "6543210fedcba98765432100",
    "updatedAt": "2026-11-04T12:00:00.000Z",
    "createdAt": "2026-11-04T12:00:00.000Z"
  }
]

List all user engagement notifications

The signed-in user's notifications. The newest 50, with the post, comment or item each is about, skipping blocked users.

User token

Needs the token of a signed-in user.

Returns

Returns a list of UserEngagementNotification objects.

Status codes

200 401 500

GET/user-engagement-notifications
curl -X GET 'http://hristovtintdetailng.com/user-engagement-notifications?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "type": "example",
    "title": "Example",
    "body": "Text shown on the site.",
    "owner_id": "6543210fedcba98765432100",
    "from": "6543210fedcba98765432100",
    "post": "6543210fedcba98765432100",
    "group": "6543210fedcba98765432100",
    "sendToAll": false,
    "comment": "6543210fedcba98765432100",
    "is_received": false,
    "is_seen": false,
    "url": "example-item",
    "image": "example",
    "service": "6543210fedcba98765432100",
    "product": "6543210fedcba98765432100",
    "blogpost": "6543210fedcba98765432100",
    "program": "6543210fedcba98765432100",
    "booking": "6543210fedcba98765432100",
    "_id": "6543210fedcba98765432100",
    "updatedAt": "2026-11-04T12:00:00.000Z",
    "createdAt": "2026-11-04T12:00:00.000Z"
  }
]

List all user engagement notifications

The signed-in user's notifications, a page at a time. Skips users the viewer blocked.

User token

Needs the token of a signed-in user.

Path parameters
skipstringRequired

How many results to skip - for paging.

usersstringRequired

The user engagement notification's users.

Returns

Returns a list of UserEngagementNotification objects.

Status codes

200 401 500

GET/user-engagement-notifications/:skip&:users
curl -X GET 'http://hristovtintdetailng.com/user-engagement-notifications/{skip}&{users}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "type": "example",
    "title": "Example",
    "body": "Text shown on the site.",
    "owner_id": "6543210fedcba98765432100",
    "from": "6543210fedcba98765432100",
    "post": "6543210fedcba98765432100",
    "group": "6543210fedcba98765432100",
    "sendToAll": false,
    "comment": "6543210fedcba98765432100",
    "is_received": false,
    "is_seen": false,
    "url": "example-item",
    "image": "example",
    "service": "6543210fedcba98765432100",
    "product": "6543210fedcba98765432100",
    "blogpost": "6543210fedcba98765432100",
    "program": "6543210fedcba98765432100",
    "booking": "6543210fedcba98765432100",
    "_id": "6543210fedcba98765432100",
    "updatedAt": "2026-11-04T12:00:00.000Z",
    "createdAt": "2026-11-04T12:00:00.000Z"
  }
]

List all user privileges

Who can see each kind of content (sign-in, subscription). Answers an array of every record.

Public

Public - no token needed.

Status codes

200 500

GET/user-privileges
curl -X GET 'http://hristovtintdetailng.com/user-privileges?ionic=true'

Create a user privilege

Creates a content access setting. A site has one; update it with PATCH instead. Answers 201.

Admin token

Needs a site admin token.

Status codes

201 400 401 500

POST/user-privileges
curl -X POST 'http://hristovtintdetailng.com/user-privileges?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve a user privilege

The content access settings by id. 404 when there is no such record.

Public

Public - no token needed.

Path parameters
idstringRequired

The ID of the user privilege.

Status codes

200 404 500

GET/user-privileges/:id
curl -X GET 'http://hristovtintdetailng.com/user-privileges/{id}?ionic=true'

Update a user privilege

Updates a content access setting. Fields outside the allowed list are silently ignored. Answers the updated record, or 404.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the user privilege.

Status codes

200 400 401 404 500

PATCH/user-privileges/:id
curl -X PATCH 'http://hristovtintdetailng.com/user-privileges/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Delete a user privilege

Deletes a content access setting. Answers the deleted record, or 404. Records that point to it are not changed.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the user privilege.

Returns

Returns an empty answer on success.

Status codes

200 401 404 500

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

List all mini app reports

Reports of mini apps, a page at a time. Answers { userReports, count }.

User token

Needs the token of a signed-in user.

Path parameters
skipstringRequired

How many results to skip - for paging.

Status codes

200 400 401 500

GET/mini-app-reports/:skip
curl -X GET 'http://hristovtintdetailng.com/mini-app-reports/{skip}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "user": "6543210fedcba98765432100",
  "post": "6543210fedcba98765432100",
  "reason": "example",
  "reported_user": "6543210fedcba98765432100",
  "comment": "6543210fedcba98765432100",
  "reply": "6543210fedcba98765432100",
  "seen": false,
  "miniApp": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Create a user report

Creates an user report. Answers 201 with no body.

User token

Needs the token of a signed-in user.

Returns

Returns the UserReport object.

Status codes

201 400 401 500

POST/user-report
curl -X POST 'http://hristovtintdetailng.com/user-report?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "user": "6543210fedcba98765432100",
  "post": "6543210fedcba98765432100",
  "reason": "example",
  "reported_user": "6543210fedcba98765432100",
  "comment": "6543210fedcba98765432100",
  "reply": "6543210fedcba98765432100",
  "seen": false,
  "miniApp": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Update a user report

Updates an user report. Fields outside the allowed list are silently ignored. Answers the updated record, or 404.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the user report.

Returns

Returns the UserReport object.

Status codes

200 400 401 404 500

PATCH/user-report/:id
curl -X PATCH 'http://hristovtintdetailng.com/user-report/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "user": "6543210fedcba98765432100",
  "post": "6543210fedcba98765432100",
  "reason": "example",
  "reported_user": "6543210fedcba98765432100",
  "comment": "6543210fedcba98765432100",
  "reply": "6543210fedcba98765432100",
  "seen": false,
  "miniApp": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

List all user reports

Reports of posts, users and comments, a page at a time. Answers reported posts, comments and users, and content flagged by the blacklist, with counts.

User token

Needs the token of a signed-in user.

Path parameters
skipstringRequired

How many results to skip - for paging.

limitstringRequired

How many results to return.

Returns

Returns a list of UserReport objects.

Status codes

200 401 500

GET/user-reports/:skip&:limit
curl -X GET 'http://hristovtintdetailng.com/user-reports/{skip}&{limit}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "user": "6543210fedcba98765432100",
    "post": "6543210fedcba98765432100",
    "reason": "example",
    "reported_user": "6543210fedcba98765432100",
    "comment": "6543210fedcba98765432100",
    "reply": "6543210fedcba98765432100",
    "seen": false,
    "miniApp": "6543210fedcba98765432100",
    "_id": "6543210fedcba98765432100",
    "updatedAt": "2026-11-04T12:00:00.000Z",
    "createdAt": "2026-11-04T12:00:00.000Z"
  }
]

Create a staff member with AI

Create a staff member from a prompt, written by the AI builder.

Admin token

Needs a site admin token.

Parameters
promptstring

What the AI should do with the staff member, 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 staff member to change.

Status codes

200 401 500

POST/create-staff-member
curl -X POST 'http://hristovtintdetailng.com/create-staff-member?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"
  }
}

Create a staff schedule with AI

Create a staff schedule from a prompt, written by the AI builder.

Admin token

Needs a site admin token.

Parameters
promptstring

What the AI should do with the staff schedule, 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 staff schedule to change.

Status codes

200 401 500

POST/create-staff-schedule
curl -X POST 'http://hristovtintdetailng.com/create-staff-schedule?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 staff with AI

Use it to create a new staff member or team member account.

Admin token

Needs a site admin token.

Parameters
promptstring

What the AI should do with the staff, 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-staff
curl -X POST 'http://hristovtintdetailng.com/generate-staff?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "prompt": "...", "chatId": "..." }'

Generate a staff schedule with AI

Use it to lock or block time slots in a staff member's schedule.

Admin token

Needs a site admin token.

Parameters
promptstring

What the AI should do with the staff schedule, 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-staff-schedule
curl -X POST 'http://hristovtintdetailng.com/generate-staff-schedule?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "prompt": "...", "chatId": "..." }'
↑↓ Navigate↵ GoEsc Close