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.
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.
Needs the token of a signed-in user.
Returns the ProfessionalAccount object.
curl -X POST 'http://hristovtintdetailng.com/professional-account?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"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
}
}Professional accounts that offer a kind of item, with their ratings. Answers { users, filters, advanced_filters, originAddresses }.
Works without a token; with a user token the answer is personal.
The professional account page's model.
Only results in this collection.
Only professional account pages with this origin address.
curl -X GET 'http://hristovtintdetailng.com/professional-account-pages/{model}?ionic=true&collection=...&origin_address=...'{
"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
}A professional account's shareable page. Server-rendered with meta tags, for link previews. Cached for an hour.
Public - no token needed.
Id of user, who has created the account.
Returns a list of ProfessionalAccount objects.
curl -X GET 'http://hristovtintdetailng.com/professional-account-preview/{user}?ionic=true'[
{
"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
}
}
]Updates a professional account. Fields outside the allowed list are silently ignored. Answers the updated record, or 404.
Needs the token of a signed-in user.
The ID of the professional account.
Returns the ProfessionalAccount object.
curl -X PATCH 'http://hristovtintdetailng.com/professional-account/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"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
}
}Deletes a professional account. 403 when it is another user's. Answers 201.
Needs the token of a signed-in user.
The ID of the professional account.
Returns an empty answer on success.
curl -X DELETE 'http://hristovtintdetailng.com/professional-account/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'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.
Works without a token; with a user token the answer is personal.
Id of user, who has created the account.
Returns a list of ProfessionalAccount objects.
curl -X GET 'http://hristovtintdetailng.com/professional-account/{user}?ionic=true'[
{
"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
}
}
]The page that asks the user to confirm their email. Shown after signing up on the website.
Works without a token; with a user token the answer is personal.
curl -X GET 'http://hristovtintdetailng.com/account-confirmation?ionic=true'
{
"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
}
}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.
Needs the token of a signed-in user.
The ID of the block user.
Returns the User object.
curl -X PATCH 'http://hristovtintdetailng.com/block-user/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"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"
}
}Users the signed-in user blocked. Each with name, handle, avatar and whether verified.
Needs the token of a signed-in user.
Returns a list of User objects.
curl -X GET 'http://hristovtintdetailng.com/blocked-users?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
[
{
"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"
}
}
]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).
Works without a token; with a user token the answer is personal.
A date (YYYY-MM-DD).
curl -X GET 'http://hristovtintdetailng.com/booking-schedule-full-month/{date}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"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
}
}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.
Works without a token; with a user token the answer is personal.
A date (YYYY-MM-DD).
curl -X GET 'http://hristovtintdetailng.com/booking-schedule-month/{date}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"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
}
}The user's booking schedule for the week of a date, or the week before or after (direction). Weeks run Sunday to Saturday.
Works without a token; with a user token the answer is personal.
A date (YYYY-MM-DD).
The booking schedule week's direction.
curl -X GET 'http://hristovtintdetailng.com/booking-schedule-week/{date}&{direction}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"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
}
}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).
Needs the token of a signed-in user.
curl -X PATCH 'http://hristovtintdetailng.com/disable-user?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
Emails of the signed-in user's followers. Only the emails.
Needs the token of a signed-in user.
curl -X GET 'http://hristovtintdetailng.com/followers-email?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"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"
}
}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.
Needs the token of a signed-in user.
curl -X GET 'http://hristovtintdetailng.com/generate-2auth-token?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"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
}
}Bookings of the user's services made after ?newer_than. Polled by the admin to show new bookings as they come in.
Works without a token; with a user token the answer is personal.
Only user bookings with this newer than.
Returns a list of Booking objects.
curl -X GET 'http://hristovtintdetailng.com/new-user-bookings?ionic=true&newer_than=...' \ -H 'Authorization: Bearer <TOKEN>'
[
{
"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"
}
]The page to ask for a password reset. Renders the form; it calls GET /users/send-password-reset/:email.
Works without a token; with a user token the answer is personal.
curl -X GET 'http://hristovtintdetailng.com/password-reset?ionic=true'
{
"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
}
}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.
Works without a token; with a user token the answer is personal.
An email address.
The reset password's validation code.
curl -X GET 'http://hristovtintdetailng.com/reset-password/{email}&{validation_code}?ionic=true'{
"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
}
}The sign-up page. Renders the form; it posts to POST /users.
Works without a token; with a user token the answer is personal.
curl -X GET 'http://hristovtintdetailng.com/signup?ionic=true'
{
"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
}
}Updates a staff member. Answers the updated staff member, or 404. Fields outside the allowed list are ignored.
Needs a site admin token.
The ID of the staff.
curl -X PATCH 'http://hristovtintdetailng.com/staff/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"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"
}
}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.
Works without a token; with a user token the answer is personal.
The u's handle.
curl -X GET 'http://hristovtintdetailng.com/u/{handle}?ionic=true'{
"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
}
}Removes one of the signed-in user's saved addresses. index is the address's position in other_address, from 0.
Needs the token of a signed-in user.
The user address's index.
Returns an empty answer on success.
curl -X DELETE 'http://hristovtintdetailng.com/user-address/{index}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'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.
Works without a token; with a user token the answer is personal.
Only user ads with this handle.
Only user ads with this user.
curl -X GET 'http://hristovtintdetailng.com/user-ads?ionic=true&handle=...&user=...'
{
"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"
}
}Revenue attributed to the signed-in user, in total and by month. Answers { total_revenue } rounded to 2 decimals.
Needs the token of a signed-in user.
curl -X GET 'http://hristovtintdetailng.com/user-attributions?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"value": 49.9,
"owner_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}Revenue attributed to the signed-in user over the last days. Answers { current_period_revenue } rounded to 2 decimals.
Needs the token of a signed-in user.
The user attribution's days.
curl -X GET 'http://hristovtintdetailng.com/user-attributions/{days}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"value": 49.9,
"owner_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}One of the user's own blog posts for its editor (?id), in social mode. Answers the post with the categories its editor needs.
Works without a token; with a user token the answer is personal.
The ID of the user blog post.
Returns the BlogPost object.
curl -X GET 'http://hristovtintdetailng.com/user-blogpost?ionic=true&id=...' \ -H 'Authorization: Bearer <TOKEN>'
{
"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
}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.
Works without a token; with a user token the answer is personal.
The ID of the user booking.
Returns the Booking object.
curl -X GET 'http://hristovtintdetailng.com/user-booking?ionic=true&id=...' \ -H 'Authorization: Bearer <TOKEN>'
{
"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"
}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.
Needs the token of a signed-in user.
The user booking's args.
Returns a list of Booking objects.
curl -X GET 'http://hristovtintdetailng.com/user-bookings-search/{args}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'[
{
"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"
}
]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.
Works without a token; with a user token the answer is personal.
How many results to skip - for paging.
The order of the results.
Only user bookings with this sort order.
Returns a list of Booking objects.
curl -X GET 'http://hristovtintdetailng.com/user-bookings/{skip}?ionic=true&sortBy=...&sortOrder=...' \
-H 'Authorization: Bearer <TOKEN>'[
{
"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"
}
]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.
Works without a token; with a user token the answer is personal.
Only user churned bookings with this booking id.
Returns the Booking object.
curl -X PATCH 'http://hristovtintdetailng.com/user-churned-booking?ionic=true&booking_id=...' \ -H 'Authorization: Bearer <TOKEN>'
{
"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"
}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.
Works without a token; with a user token the answer is personal.
Only user bookings with this booking id.
Returns the Booking object.
curl -X PATCH 'http://hristovtintdetailng.com/user-confirm-booking?ionic=true&booking_id=...' \ -H 'Authorization: Bearer <TOKEN>'
{
"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"
}Sends the signed-in user the email confirmation again. Answers with no body.
Needs the token of a signed-in user.
curl -X GET 'http://hristovtintdetailng.com/user-confirmation-mail?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
Confirmed bookings matching a search. Matches the customer's name, phone number or email, newest first.
Needs the token of a signed-in user.
The user confirmed booking's args.
Returns a list of Booking objects.
curl -X GET 'http://hristovtintdetailng.com/user-confirmed-bookings-search/{args}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'[
{
"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"
}
]Confirmed bookings of the user's services, a page at a time. Ten at a time, sorted by ?sortBy and ?sortOrder.
Works without a token; with a user token the answer is personal.
How many results to skip - for paging.
The order of the results.
Only user confirmed bookings with this sort order.
Returns a list of Booking objects.
curl -X GET 'http://hristovtintdetailng.com/user-confirmed-bookings/{skip}?ionic=true&sortBy=...&sortOrder=...' \
-H 'Authorization: Bearer <TOKEN>'[
{
"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"
}
]Today's and upcoming bookings of the user's services. At most 100.
Works without a token; with a user token the answer is personal.
The order of the results.
Only user current bookings with this sort order.
Returns a list of Booking objects.
curl -X GET 'http://hristovtintdetailng.com/user-current-bookings?ionic=true&sortBy=...&sortOrder=...' \ -H 'Authorization: Bearer <TOKEN>'
[
{
"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"
}
]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.
Works without a token; with a user token the answer is personal.
Only user did not answer bookings with this booking id.
Returns the Booking object.
curl -X PATCH 'http://hristovtintdetailng.com/user-did-not-answer-booking?ionic=true&booking_id=...' \ -H 'Authorization: Bearer <TOKEN>'
{
"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"
}Custom models the signed-in user can use, with their records. Answers { dynamic_models, user_input_models }.
Needs the token of a signed-in user.
Returns a list of DynamicModel objects.
curl -X GET 'http://hristovtintdetailng.com/user-dynamic-models?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
[
{
"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
}
}
]One custom model. Only its name and fields. 404 when there is no such model.
Needs the token of a signed-in user.
The ID of the user dynamic model.
Returns the DynamicModel object.
curl -X GET 'http://hristovtintdetailng.com/user-dynamic-models/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"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
}
}A user's followers, a page at a time. Answers { users, count }.
Public - no token needed.
The ID of the user follower.
How many results to skip - for paging.
curl -X GET 'http://hristovtintdetailng.com/user-followers/{id}&{skip}?ionic=true'{
"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"
}
}Who a user follows, a page at a time. Answers { users, count }.
Public - no token needed.
The ID of the user following.
How many results to skip - for paging.
curl -X GET 'http://hristovtintdetailng.com/user-following/{id}&{skip}?ionic=true'{
"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"
}
}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 - no token needed.
The user handle's handle.
curl -X GET 'http://hristovtintdetailng.com/user-handle/{handle}?ionic=true'{
"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"
}
}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.
Needs the token of a signed-in user.
Only user inboxes with this on behalf of.
curl -X GET 'http://hristovtintdetailng.com/user-inbox?ionic=true&on_behalf_of=...' \ -H 'Authorization: Bearer <TOKEN>'
{
"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
}
}The signed-in user's Stripe invoices. Read from Stripe and formatted for display.
Needs the token of a signed-in user.
curl -X GET 'http://hristovtintdetailng.com/user-invoices?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
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.
Works without a token; with a user token the answer is personal.
The ID of the user lead from booking.
Returns the Booking object.
curl -X GET 'http://hristovtintdetailng.com/user-lead-from-booking?ionic=true&id=...' \ -H 'Authorization: Bearer <TOKEN>'
{
"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"
}Users whose handle starts with the text, for @mentions. An empty list for an empty search.
Needs the token of a signed-in user.
The user mention's handle.
curl -X GET 'http://hristovtintdetailng.com/user-mention/{handle}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"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"
}
}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.
Works without a token; with a user token the answer is personal.
The ID of the user order.
Returns the Order object.
curl -X GET 'http://hristovtintdetailng.com/user-order?ionic=true&id=...' \ -H 'Authorization: Bearer <TOKEN>'
{
"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"
}One of the user's saved Stripe payment methods. Read from Stripe. 404 when Stripe has no such method.
Works without a token; with a user token the answer is personal.
The user payment method's payment method.
curl -X GET 'http://hristovtintdetailng.com/user-payment-method/{payment_method}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'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.
Needs the token of a signed-in user.
curl -X GET 'http://hristovtintdetailng.com/user-payments?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"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"
}The signed-in user's price plans. The plans the user subscribes to.
Needs the token of a signed-in user.
Returns the PricePlan object.
curl -X GET 'http://hristovtintdetailng.com/user-price-plan/?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"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
}
}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.
Works without a token; with a user token the answer is personal.
The ID of the user product.
Returns the Product object.
curl -X GET 'http://hristovtintdetailng.com/user-product?ionic=true&id=...' \ -H 'Authorization: Bearer <TOKEN>'
{
"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"
}
}A user's products page (?user), in social mode. Rendered with the seller's products.
Works without a token; with a user token the answer is personal.
Only user products with this user.
Returns a list of Product objects.
curl -X GET 'http://hristovtintdetailng.com/user-products?ionic=true&user=...'
[
{
"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"
}
}
]One of the user's own programs for its editor (?id), in social mode. Answers { program, categories, topics }.
Works without a token; with a user token the answer is personal.
The ID of the user program.
Returns the Program object.
curl -X GET 'http://hristovtintdetailng.com/user-program?ionic=true&id=...' \ -H 'Authorization: Bearer <TOKEN>'
{
"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"
}
}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.
Works without a token; with a user token the answer is personal.
The ID of the user service.
Only user services with this on behalf of.
Returns the Service object.
curl -X GET 'http://hristovtintdetailng.com/user-service?ionic=true&id=...&on_behalf_of=...' \ -H 'Authorization: Bearer <TOKEN>'
{
"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
}
}The signed-in user's services. Services the user is a staff member of.
Needs the token of a signed-in user.
Returns a list of Service objects.
curl -X GET 'http://hristovtintdetailng.com/user-services?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
[
{
"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
}
}
]One of the user's own delivery settings (?id), in social mode. 404 when it is not the user's.
Works without a token; with a user token the answer is personal.
The ID of the user shipping.
Returns the Shipping object.
curl -X GET 'http://hristovtintdetailng.com/user-shipping?ionic=true&id=...' \ -H 'Authorization: Bearer <TOKEN>'
{
"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"
}The page of the user's own staff, in social mode. The page; it loads the staff itself.
Works without a token; with a user token the answer is personal.
curl -X GET 'http://hristovtintdetailng.com/user-staff?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
Signs a restricted user out everywhere (clears their tokens). Does nothing unless the user is restricted.
Needs the token of a signed-in user.
The ID of the user token.
curl -X PATCH 'http://hristovtintdetailng.com/user-tokens/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"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"
}
}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.
Needs the token of a signed-in user.
User.id of the admin who added this user.
Code sent to confirm the email.
Returns the User object.
curl -X GET 'http://hristovtintdetailng.com/user/add_staff/{owner_id}&{validation_code}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"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"
}
}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.
Needs the token of a signed-in user.
curl -X PATCH 'http://hristovtintdetailng.com/user/me/password?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
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.
Needs a site admin token.
The ID of the user.
Only users with this delete query.
Returns an empty answer on success.
curl -X DELETE 'http://hristovtintdetailng.com/user/remove_admin/{id}?ionic=true&deleteQuery=...' \
-H 'Authorization: Bearer <TOKEN>'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.
Needs the token of a signed-in user.
The ID of the user.
Only users with this delete query.
Returns an empty answer on success.
curl -X DELETE 'http://hristovtintdetailng.com/user/remove_staff/{id}?ionic=true&deleteQuery=...' \
-H 'Authorization: Bearer <TOKEN>'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.
Works without a token; with a user token the answer is personal.
The user's on behalf of.
An email address.
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": "..." }'{
"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
}
}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 - no token needed.
Returns the User object.
curl -X POST 'http://hristovtintdetailng.com/users?ionic=true'
{
"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"
}
}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.
Needs a site admin token.
An email address.
The users admin's name.
The users admin's can edit.
curl -X POST 'http://hristovtintdetailng.com/users-admin?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "email": "...", "name": "...", "can_edit": "..." }'{
"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"
}
}Updates any user (admin). For administrators. Answers the updated user, or 404. Fields outside the allowed list are ignored.
Needs a site admin token.
The ID of the user.
Returns the User object.
curl -X PATCH 'http://hristovtintdetailng.com/users/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"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"
}
}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 - no token needed.
An email address.
Code sent to confirm the email.
Returns the User object.
curl -X GET 'http://hristovtintdetailng.com/users/confirm/{email}&{validation_code}?ionic=true'{
"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"
}
}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.
Works without a token; with a user token the answer is personal.
curl -X GET 'http://hristovtintdetailng.com/users/is-logged?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
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 - no token needed.
An email address.
Returns the User object.
curl -X POST 'http://hristovtintdetailng.com/users/login?ionic=true' \
-H 'Content-Type: application/json' \
-d '{ "email": "..." }'{
"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"
}
}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.
Needs the token of a signed-in user.
curl -X POST 'http://hristovtintdetailng.com/users/logout?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
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.
Works without a token; with a user token the answer is personal.
Only users with this skip transactions check.
Returns the User object.
curl -X GET 'http://hristovtintdetailng.com/users/me?ionic=true&skip_transactions_check=...' \ -H 'Authorization: Bearer <TOKEN>'
{
"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"
}
}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.
Needs the token of a signed-in user.
The user's saved products.
The user's saved programs.
The user's saved blog posts.
The user's saved services.
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": "..." }'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.
Needs the token of a signed-in user.
Returns an empty answer on success.
curl -X DELETE 'http://hristovtintdetailng.com/users/me?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
The signed-in user's profile picture. Answers the image bytes, or 404 when the user has no picture.
Needs the token of a signed-in user.
curl -X GET 'http://hristovtintdetailng.com/users/me/avatar?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"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
}
}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.
Needs the token of a signed-in user.
curl -X POST 'http://hristovtintdetailng.com/users/me/avatar?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
Removes the signed-in user's profile picture. Deletes the media record too.
Needs the token of a signed-in user.
Returns an empty answer on success.
curl -X DELETE 'http://hristovtintdetailng.com/users/me/avatar?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
The account deletion page. Asks to confirm before DELETE /users/me.
Needs the token of a signed-in user.
curl -X GET 'http://hristovtintdetailng.com/users/me/delete?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
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.
Works without a token; with a user token the answer is personal.
Only users with this skip transactions check.
curl -X GET 'http://hristovtintdetailng.com/users/me/transactions?ionic=true&skip_transactions_check=...' \ -H 'Authorization: Bearer <TOKEN>'
{
"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
}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.
Works without a token; with a user token the answer is personal.
Only users with this on behalf of.
Only users with this skip transactions check.
Returns the User object.
curl -X GET 'http://hristovtintdetailng.com/users/on-behalf-of?ionic=true&on_behalf_of=...&skip_transactions_check=...' \ -H 'Authorization: Bearer <TOKEN>'
{
"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"
}
}Emails a password reset link to the user. Answers 201 when the email was sent, 400 when no user has that email.
Public - no token needed.
An email address.
Returns a list of User objects.
curl -X GET 'http://hristovtintdetailng.com/users/send-password-reset/{email}?ionic=true'[
{
"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"
}
}
]Checks a two-factor code (token) and turns two-factor sign-in on when it is right. Answers { verified }.
Needs the token of a signed-in user.
curl -X PATCH 'http://hristovtintdetailng.com/verify-token?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"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"
}
}The signed-in user's latest notifications. The newest 5.
Needs the token of a signed-in user.
The user engagement notification's users.
Returns a list of UserEngagementNotification objects.
curl -X GET 'http://hristovtintdetailng.com/latest-user-engagement-notifications/{users}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'[
{
"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"
}
]The signed-in user's unseen notifications. Answers { notifications_count, messages_count }, for the badges.
Needs the token of a signed-in user.
Returns a list of UserEngagementNotification objects.
curl -X GET 'http://hristovtintdetailng.com/new-user-engagement-notifications?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
[
{
"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"
}
]Marks the signed-in user's message notifications seen. Answers the notifications marked.
Needs the token of a signed-in user.
curl -X PATCH 'http://hristovtintdetailng.com/seen-my-message-notification?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"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"
}Marks the signed-in user's notifications seen. Answers the notifications marked.
Needs the token of a signed-in user.
curl -X PATCH 'http://hristovtintdetailng.com/seen-my-notifications?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"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"
}System notifications for the signed-in user. Newest first.
Needs the token of a signed-in user.
Returns a list of UserEngagementNotification objects.
curl -X GET 'http://hristovtintdetailng.com/system-user-engagement-notifications?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
[
{
"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"
}
]The signed-in user's notifications. The newest 50, with the post, comment or item each is about, skipping blocked users.
Needs the token of a signed-in user.
Returns a list of UserEngagementNotification objects.
curl -X GET 'http://hristovtintdetailng.com/user-engagement-notifications?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
[
{
"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"
}
]The signed-in user's notifications, a page at a time. Skips users the viewer blocked.
Needs the token of a signed-in user.
How many results to skip - for paging.
The user engagement notification's users.
Returns a list of UserEngagementNotification objects.
curl -X GET 'http://hristovtintdetailng.com/user-engagement-notifications/{skip}&{users}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'[
{
"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"
}
]Who can see each kind of content (sign-in, subscription). Answers an array of every record.
Public - no token needed.
curl -X GET 'http://hristovtintdetailng.com/user-privileges?ionic=true'
Creates a content access setting. A site has one; update it with PATCH instead. Answers 201.
Needs a site admin token.
curl -X POST 'http://hristovtintdetailng.com/user-privileges?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
The content access settings by id. 404 when there is no such record.
Public - no token needed.
The ID of the user privilege.
curl -X GET 'http://hristovtintdetailng.com/user-privileges/{id}?ionic=true'Updates a content access setting. Fields outside the allowed list are silently ignored. Answers the updated record, or 404.
Needs a site admin token.
The ID of the user privilege.
curl -X PATCH 'http://hristovtintdetailng.com/user-privileges/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'Deletes a content access setting. Answers the deleted record, or 404. Records that point to it are not changed.
Needs a site admin token.
The ID of the user privilege.
Returns an empty answer on success.
curl -X DELETE 'http://hristovtintdetailng.com/user-privileges/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'Reports of mini apps, a page at a time. Answers { userReports, count }.
Needs the token of a signed-in user.
How many results to skip - for paging.
curl -X GET 'http://hristovtintdetailng.com/mini-app-reports/{skip}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"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"
}Creates an user report. Answers 201 with no body.
Needs the token of a signed-in user.
Returns the UserReport object.
curl -X POST 'http://hristovtintdetailng.com/user-report?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"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"
}Updates an user report. Fields outside the allowed list are silently ignored. Answers the updated record, or 404.
Needs the token of a signed-in user.
The ID of the user report.
Returns the UserReport object.
curl -X PATCH 'http://hristovtintdetailng.com/user-report/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"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"
}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.
Needs the token of a signed-in user.
How many results to skip - for paging.
How many results to return.
Returns a list of UserReport objects.
curl -X GET 'http://hristovtintdetailng.com/user-reports/{skip}&{limit}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'[
{
"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 from a prompt, written by the AI builder.
Needs a site admin token.
What the AI should do with the staff member, in plain words - any language.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
Which version of the AI builder to use; leave it out for the current one.
The ID of the staff member to change.
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": "..." }'{
"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 from a prompt, written by the AI builder.
Needs a site admin token.
What the AI should do with the staff schedule, in plain words - any language.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
Which version of the AI builder to use; leave it out for the current one.
The ID of the staff schedule to change.
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": "..." }'{
"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"
}
}Use it to create a new staff member or team member account.
Needs a site admin token.
What the AI should do with the staff, in plain words - any language.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
curl -X POST 'http://hristovtintdetailng.com/generate-staff?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "chatId": "..." }'Use it to lock or block time slots in a staff member's schedule.
Needs a site admin token.
What the AI should do with the staff schedule, in plain words - any language.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
curl -X POST 'http://hristovtintdetailng.com/generate-staff-schedule?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "chatId": "..." }'