API ReferenceView as MarkdownOpenAPI

Users & staff

View as Markdown

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

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

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

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

Create a professional account

Creates a professional account from the fields sent.

User token

Needs the token of a signed-in user.

Returns

Returns the ProfessionalAccount object.

Status codes

201 400 401 402 403 500

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

List all professional account pages

Returns the site's professional account pages, newest first unless a sort is given.

Optional user

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

Path parameters
modelstringRequired

The professional account page's model.

Query parameters
collectionstring

Only results in this collection.

origin_addressstring

Only professional account pages with this origin address.

Status codes

200 404 500

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

List all professional accounts

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

Public

Public - no token needed.

Path parameters
userstringRequired

The user - the ID of a user.

Returns

Returns a list of ProfessionalAccount objects.

Status codes

200 403 404 500

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

Update a professional account

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

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the professional account.

Returns

Returns the ProfessionalAccount object.

Status codes

200 400 401 403 404 500

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

Delete a professional account

Deletes the professional account. This cannot be undone.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the professional account.

Returns

Returns an empty answer on success.

Status codes

201 401 403 404 500

DELETE/professional-account/:id
curl -X DELETE 'http://cloudoffice-2.max-media.io/professional-account/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

List all professional accounts

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

Optional user

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

Path parameters
userstringRequired

The user - the ID of a user.

Returns

Returns a list of ProfessionalAccount objects.

Status codes

200 403 404 500

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

Retrieve the account confirmation

Returns the account confirmation.

Optional user

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

Status codes

200

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

Block a block user

Block a block user.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the block user.

Returns

Returns the User object.

Status codes

201 400 401 404 500

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

List all blocked users

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

User token

Needs the token of a signed-in user.

Returns

Returns a list of User objects.

Status codes

200 401 500

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

List all booking schedule full months

Returns the site's booking schedule full months, newest first unless a sort is given.

Optional userUser token

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

Path parameters
datestringRequired

A date (YYYY-MM-DD).

Status codes

200 401 500

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

List all booking schedule months

Returns the site's booking schedule months, newest first unless a sort is given.

Optional userUser token

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

Path parameters
datestringRequired

A date (YYYY-MM-DD).

Status codes

200 401 500

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

List all booking schedule weeks

Returns the site's booking schedule weeks, newest first unless a sort is given.

Optional userUser token

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

Path parameters
datestringRequired

A date (YYYY-MM-DD).

directionstringRequired

The booking schedule week's direction.

Status codes

200 401 500

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

Update the disable user

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

User token

Needs the token of a signed-in user.

Status codes

200 401 500

PATCH/disable-user
curl -X PATCH 'http://cloudoffice-2.max-media.io/disable-user?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve the followers email

Returns the followers email.

User token

Needs the token of a signed-in user.

Status codes

200 401 500

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

Generate a 2auth token with AI

Generate a 2auth token from a prompt, written by the AI builder.

User token

Needs the token of a signed-in user.

Status codes

201 400 401 500

GET/generate-2auth-token
curl -X GET 'http://cloudoffice-2.max-media.io/generate-2auth-token?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "zip_code": "example",
  "city": "example",
  "address": "example",
  "contact": "example",
  "email": "jane@example.com",
  "google_app": "example",
  "workhours": "example",
  "logo": "6543210fedcba98765432100",
  "site_name": "Example",
  "domain": "example",
  "stock_domain": "example",
  "isMarket": false,
  "forbidden_collections": [
    {
      "collection_id": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "isInit": false,
  "template": "0000",
  "lang": "en",
  "favicon": "6543210fedcba98765432100",
  "cacheEnabled": false,
  "has_completed_startup_prompt": true,
  "gmb_location": "example",
  "ga_property": "example",
  "site_generated_at": "2026-11-04T12:00:00.000Z",
  "admin_first_opened_at": "2026-11-04T12:00:00.000Z",
  "admin_last_opened_at": "2026-11-04T12:00:00.000Z",
  "allowedComponents": {
    "services": false,
    "products": false,
    "blogposts": false,
    "programs": false
  }
}

List all user bookings

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

Optional userUser token

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

Query parameters
newer_thanstring

Only user bookings with this newer than.

Returns

Returns a list of Booking objects.

Status codes

200 401 500

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

Retrieve the password reset

Returns the password reset.

Optional user

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

Status codes

200

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

Reset a reset password

Reset a reset password.

Optional user

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

Path parameters
emailstringRequired

An email address.

validation_codestringRequired

The reset password's validation code.

Status codes

200 400 500

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

Retrieve the signup

Returns the signup.

Optional user

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

Status codes

200

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

Update a staff

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

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the staff.

Status codes

200 400 401 404 500

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

Retrieve an u

Returns one u, found by its ID.

Optional user

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

Path parameters
handlestringRequired

The u's handle.

Status codes

200 500

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

Delete user addresses

Deletes the user address. This cannot be undone.

User token

Needs the token of a signed-in user.

Path parameters
indexstringRequired

The user address's index.

Returns

Returns an empty answer on success.

Status codes

200 401 500

DELETE/user-address/:index
curl -X DELETE 'http://cloudoffice-2.max-media.io/user-address/{index}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

List all user ads

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

Optional user

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

Query parameters
handlestring

Only user ads with this handle.

userstring

Only user ads with this user.

Status codes

200 404 500

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

List all user attributions

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

User token

Needs the token of a signed-in user.

Status codes

200 401 500

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

List all user attributions

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

User token

Needs the token of a signed-in user.

Path parameters
daysstringRequired

The user attribution's days.

Status codes

200 401 500

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

Retrieve the user blog post

Returns the user blog post.

Optional userUser token

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

Query parameters
idstring

The ID of the user blog post.

Returns

Returns the BlogPost object.

Status codes

200 401

GET/user-blogpost
curl -X GET 'http://cloudoffice-2.max-media.io/user-blogpost?ionic=true&id=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "title": "Example",
  "url": "example-item",
  "static_url": "example-item",
  "header": "example",
  "description": "Text shown on the site.",
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "thumbnail": "example",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "published": true,
  "owner_id": "6543210fedcba98765432100",
  "connected_account_owner_id": "6543210fedcba98765432100",
  "collection_id": "6543210fedcba98765432100",
  "selected": false,
  "custom_1": "example",
  "custom_2": "example",
  "custom_3": "example",
  "about_page": "6543210fedcba98765432100",
  "suitability_price_plans": [
    "6543210fedcba98765432101"
  ],
  "isSuitable": false,
  "reference_id": "example",
  "wildcard_url": {},
  "likes": [
    "6543210fedcba98765432101"
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "total_views": 0,
  "saves": [
    "6543210fedcba98765432101"
  ],
  "times_showed": 0
}

Retrieve the user booking

Returns the user booking.

Optional userUser token

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

Query parameters
idstring

The ID of the user booking.

Returns

Returns the Booking object.

Status codes

200 401 403 500

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

Search user bookings

Search user bookings.

User token

Needs the token of a signed-in user.

Path parameters
argsstringRequired

The user booking's args.

Returns

Returns a list of Booking objects.

Status codes

200 401 500

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

List all user bookings

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

Optional userUser token

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

Path parameters
skipstringRequired

How many results to skip - for paging.

Query parameters
sortBystring

The order of the results.

sortOrderstring

Only user bookings with this sort order.

Returns

Returns a list of Booking objects.

Status codes

200 401 500

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

Update the user churned booking

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

Optional userUser token

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

Query parameters
booking_idstring

Only user churned bookings with this booking id.

Returns

Returns the Booking object.

Status codes

200 401 403 500

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

Confirm a user booking

Confirm a user booking.

Optional userUser token

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

Query parameters
booking_idstring

Only user bookings with this booking id.

Returns

Returns the Booking object.

Status codes

200 401 403 500

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

Retrieve the user confirmation mail

Returns the user confirmation mail.

User token

Needs the token of a signed-in user.

Status codes

200 401 500

GET/user-confirmation-mail
curl -X GET 'http://cloudoffice-2.max-media.io/user-confirmation-mail?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Search user confirmed bookings

Search user confirmed bookings.

User token

Needs the token of a signed-in user.

Path parameters
argsstringRequired

The user confirmed booking's args.

Returns

Returns a list of Booking objects.

Status codes

200 401 500

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

List all user confirmed bookings

Returns the site's user confirmed bookings, newest first unless a sort is given.

Optional userUser token

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

Path parameters
skipstringRequired

How many results to skip - for paging.

Query parameters
sortBystring

The order of the results.

sortOrderstring

Only user confirmed bookings with this sort order.

Returns

Returns a list of Booking objects.

Status codes

200 401 500

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

List all user current bookings

Returns the site's user current bookings, newest first unless a sort is given.

Optional userUser token

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

Query parameters
sortBystring

The order of the results.

sortOrderstring

Only user current bookings with this sort order.

Returns

Returns a list of Booking objects.

Status codes

200 401 500

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

Update the user did not answer booking

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

Optional userUser token

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

Query parameters
booking_idstring

Only user did not answer bookings with this booking id.

Returns

Returns the Booking object.

Status codes

200 401 403 500

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

List all user dynamic models

Returns the site's user dynamic models, newest first unless a sort is given.

User token

Needs the token of a signed-in user.

Returns

Returns a list of DynamicModel objects.

Status codes

200 401 500

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

Retrieve a user dynamic model

Returns one user dynamic model, found by its ID.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the user dynamic model.

Returns

Returns the DynamicModel object.

Status codes

200 401 404 500

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

Retrieve a user follower

Returns one user follower, found by its ID.

Public

Public - no token needed.

Path parameters
idstringRequired

The ID of the user follower.

skipstringRequired

How many results to skip - for paging.

Status codes

200 500

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

Retrieve a user following

Returns one user following, found by its ID.

Public

Public - no token needed.

Path parameters
idstringRequired

The ID of the user following.

skipstringRequired

How many results to skip - for paging.

Status codes

200 500

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

Retrieve a user handle

Returns one user handle, found by its ID.

Public

Public - no token needed.

Path parameters
handlestringRequired

The user handle's handle.

Status codes

200 500

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

Retrieve the user inbox

Returns the user inbox.

User token

Needs the token of a signed-in user.

Query parameters
on_behalf_ofstring

Only user inboxes with this on behalf of.

Status codes

200 401 403 404 500

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

List all user invoices

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

User token

Needs the token of a signed-in user.

Status codes

200 401 500

GET/user-invoices
curl -X GET 'http://cloudoffice-2.max-media.io/user-invoices?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve the user lead from booking

Returns the user lead from booking.

Optional userUser token

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

Query parameters
idstring

The ID of the user lead from booking.

Returns

Returns the Booking object.

Status codes

200 401 500

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

Retrieve a user mention

Returns one user mention, found by its ID.

User token

Needs the token of a signed-in user.

Path parameters
handlestringRequired

The user mention's handle.

Status codes

200 401 500

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

Retrieve the user order

Returns the user order.

Optional userUser token

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

Query parameters
idstring

The ID of the user order.

Returns

Returns the Order object.

Status codes

200 401 500

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

List all user payment methods

Returns the site's user payment methods, newest first unless a sort is given.

Optional userUser token

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

Path parameters
payment_methodstringRequired

The user payment method's payment method.

Status codes

200 401 404 500

GET/user-payment-method/:payment_method
curl -X GET 'http://cloudoffice-2.max-media.io/user-payment-method/{payment_method}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

List all user payments

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

User token

Needs the token of a signed-in user.

Status codes

200 401 500

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

Retrieve the user price plan

Returns the user price plan.

User token

Needs the token of a signed-in user.

Returns

Returns the PricePlan object.

Status codes

200 401 500

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

Retrieve the user product

Returns the user product.

Optional userUser token

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

Query parameters
idstring

The ID of the user product.

Returns

Returns the Product object.

Status codes

200 401 500

GET/user-product
curl -X GET 'http://cloudoffice-2.max-media.io/user-product?ionic=true&id=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "url": "example-item",
  "static_url": "example-item",
  "ribbon": "example",
  "striked": "example",
  "price": 49.9,
  "description": "Text shown on the site.",
  "product_informations": [
    {
      "name": "Example",
      "description": "Text shown on the site.",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "product_options": [
    {
      "name": "Example",
      "options": [],
      "informations": [],
      "_id": "6543210fedcba98765432100"
    }
  ],
  "published": true,
  "available_for_purchase": true,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "thumbnail": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "collection_id": "6543210fedcba98765432100",
  "grouping": [
    {
      "collection_id": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "owner_id": "6543210fedcba98765432100",
  "connected_account_owner_id": "6543210fedcba98765432100",
  "qty": 1,
  "origin_address": "example",
  "selected": false,
  "custom_1": "example",
  "custom_2": "example",
  "custom_3": "example",
  "about_page": "6543210fedcba98765432100",
  "is_digital": false,
  "secondary_cta": {
    "show": false,
    "title": "Example",
    "webUrl": "example",
    "appUrl": "example"
  },
  "attached_priceplans": {
    "name": "Example",
    "priceplans": "example"
  }
}

List all user products

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

Optional user

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

Query parameters
userstring

Only user products with this user.

Returns

Returns a list of Product objects.

Status codes

200 500

GET/user-products
curl -X GET 'http://cloudoffice-2.max-media.io/user-products?ionic=true&user=...'
Response
[
  {
    "name": "Example",
    "url": "example-item",
    "static_url": "example-item",
    "ribbon": "example",
    "striked": "example",
    "price": 49.9,
    "description": "Text shown on the site.",
    "product_informations": [
      {
        "name": "Example",
        "description": "Text shown on the site.",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "product_options": [
      {
        "name": "Example",
        "options": [],
        "informations": [],
        "_id": "6543210fedcba98765432100"
      }
    ],
    "published": true,
    "available_for_purchase": true,
    "medias": [
      {
        "media": "6543210fedcba98765432100",
        "gcs_url": "example-item",
        "gcs_480_30_url": "example-item",
        "gcs_720_30_url": "example-item",
        "gcs_1080_30_url": "example-item",
        "duration": 1,
        "vimeo_uri": "example",
        "vimeo_picture": "example",
        "vimeo_url": "example-item",
        "youtube_url": "example-item",
        "youtube_picture": "example",
        "thumbnail": "example",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "collection_id": "6543210fedcba98765432100",
    "grouping": [
      {
        "collection_id": "6543210fedcba98765432100",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "owner_id": "6543210fedcba98765432100",
    "connected_account_owner_id": "6543210fedcba98765432100",
    "qty": 1,
    "origin_address": "example",
    "selected": false,
    "custom_1": "example",
    "custom_2": "example",
    "custom_3": "example",
    "about_page": "6543210fedcba98765432100",
    "is_digital": false,
    "secondary_cta": {
      "show": false,
      "title": "Example",
      "webUrl": "example",
      "appUrl": "example"
    },
    "attached_priceplans": {
      "name": "Example",
      "priceplans": "example"
    }
  }
]

Retrieve the user program

Returns the user program.

Optional userUser token

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

Query parameters
idstring

The ID of the user program.

Returns

Returns the Program object.

Status codes

200 401 500

GET/user-program
curl -X GET 'http://cloudoffice-2.max-media.io/user-program?ionic=true&id=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "title": "Example",
  "url": "example-item",
  "static_url": "example-item",
  "header": "example",
  "body": "Text shown on the site.",
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "thumbnail": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "video": "6543210fedcba98765432100",
  "about_page": "6543210fedcba98765432100",
  "weeks": [
    {
      "isCompleted": {},
      "progress": {},
      "title": "Example",
      "days": [],
      "_id": "6543210fedcba98765432100"
    }
  ],
  "suitability_price_plans": [
    "6543210fedcba98765432101"
  ],
  "isSuitable": false,
  "price": 0,
  "collection_id": "6543210fedcba98765432100",
  "topics": [
    {
      "collection_id": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "owner_id": "6543210fedcba98765432100",
  "connected_account_owner_id": "6543210fedcba98765432100",
  "ribbon": "example",
  "striked": "example",
  "isConsistent": false,
  "isAcademic": true,
  "wildcard_url": {},
  "reviewed": false,
  "approved": false,
  "likes": [
    "6543210fedcba98765432101"
  ],
  "popup": {
    "title": "Example",
    "points": "example"
  }
}

Retrieve the user service

Returns the user service.

Optional userUser token

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

Query parameters
idstring

The ID of the user service.

on_behalf_ofstring

Only user services with this on behalf of.

Returns

Returns the Service object.

Status codes

200 401 403

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

List all user services

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

User token

Needs the token of a signed-in user.

Returns

Returns a list of Service objects.

Status codes

200 401 500

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

Retrieve the user shipping

Returns the user shipping.

Optional userUser token

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

Query parameters
idstring

The ID of the user shipping.

Returns

Returns the Shipping object.

Status codes

200 401 500

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

Retrieve the user staff

Returns the user staff.

Optional userUser token

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

Status codes

200 401

GET/user-staff
curl -X GET 'http://cloudoffice-2.max-media.io/user-staff?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Update a user token

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

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the user token.

Status codes

200 400 401 404 500

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

Retrieve a user

Returns one user, found by its ID.

User token

Needs the token of a signed-in user.

Path parameters
owner_idstringRequired

The user's owner id.

validation_codestringRequired

The user's validation code.

Returns

Returns the User object.

Status codes

200 401 500

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

Update your user

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

User token

Needs the token of a signed-in user.

Status codes

200 401 500

PATCH/user/me/password
curl -X PATCH 'http://cloudoffice-2.max-media.io/user/me/password?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Delete a user

Deletes the user. This cannot be undone.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the user.

Query parameters
deleteQuerystring

Only users with this delete query.

Returns

Returns an empty answer on success.

Status codes

204 401 403 500

DELETE/user/remove_admin/:id
curl -X DELETE 'http://cloudoffice-2.max-media.io/user/remove_admin/{id}?ionic=true&deleteQuery=...' \
  -H 'Authorization: Bearer <TOKEN>'

Delete a user

Deletes the user. This cannot be undone.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the user.

Query parameters
deleteQuerystring

Only users with this delete query.

Returns

Returns an empty answer on success.

Status codes

204 401 403 500

DELETE/user/remove_staff/:id
curl -X DELETE 'http://cloudoffice-2.max-media.io/user/remove_staff/{id}?ionic=true&deleteQuery=...' \
  -H 'Authorization: Bearer <TOKEN>'

Create a user

Creates a user from the fields sent.

Optional userUser token

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

Parameters
on_behalf_ofstring

The user's on behalf of.

emailstring

An email address.

Status codes

200 401 403 500

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

Create a user

Creates a user from the fields sent.

Public

Public - no token needed.

Returns

Returns the User object.

Status codes

201 400 500

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

Create a users admin

Creates a users admin from the fields sent.

Admin token

Needs a site admin token.

Parameters
emailstring

An email address.

namestring

The users admin's name.

can_editstring

The users admin's can edit.

Status codes

201 400 401 500

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

Update a user

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

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the user.

Returns

Returns the User object.

Status codes

200 400 401 404 500

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

Confirm the user

Confirm the user.

Public

Public - no token needed.

Path parameters
emailstringRequired

An email address.

validation_codestringRequired

The user's validation code.

Returns

Returns the User object.

Status codes

200 400 418 500

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

Retrieve the user

Returns the user.

Optional userUser token

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

Status codes

200 401 500

GET/users/is-logged
curl -X GET 'http://cloudoffice-2.max-media.io/users/is-logged?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Sign in

Sign in.

Public

Public - no token needed.

Parameters
emailstring

An email address.

Returns

Returns the User object.

Status codes

200 400 401 500

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

Sign out

Sign out.

User token

Needs the token of a signed-in user.

Status codes

200 401 500

POST/users/logout
curl -X POST 'http://cloudoffice-2.max-media.io/users/logout?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve your user

Returns the user.

Optional userUser token

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

Query parameters
skip_transactions_checkstring

Only users with this skip transactions check.

Returns

Returns the User object.

Status codes

200 401 404 500

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

Update your user

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

User token

Needs the token of a signed-in user.

Parameters
saved_productsstring

The user's saved products.

saved_programsstring

The user's saved programs.

saved_blogpostsstring

The user's saved blog posts.

saved_servicesstring

The user's saved services.

Status codes

200 400 401 500

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

Delete your user

Deletes the users. This cannot be undone.

User token

Needs the token of a signed-in user.

Returns

Returns an empty answer on success.

Status codes

200 401 500

DELETE/users/me
curl -X DELETE 'http://cloudoffice-2.max-media.io/users/me?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve your user

Returns the user.

User token

Needs the token of a signed-in user.

Status codes

200 401 404 500

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

Create a user

Creates a user from the fields sent.

User token

Needs the token of a signed-in user.

Status codes

200 400 401

POST/users/me/avatar
curl -X POST 'http://cloudoffice-2.max-media.io/users/me/avatar?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Delete your user

Deletes the users. This cannot be undone.

User token

Needs the token of a signed-in user.

Returns

Returns an empty answer on success.

Status codes

200 401

DELETE/users/me/avatar
curl -X DELETE 'http://cloudoffice-2.max-media.io/users/me/avatar?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve your user

Returns the user.

User token

Needs the token of a signed-in user.

Status codes

200 400 401 500

GET/users/me/delete
curl -X GET 'http://cloudoffice-2.max-media.io/users/me/delete?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve your user

Returns the user.

Optional userUser token

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

Query parameters
skip_transactions_checkstring

Only users with this skip transactions check.

Status codes

200 401 404 500

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

Retrieve the user

Returns the user.

Optional userUser token

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

Query parameters
on_behalf_ofstring

Only users with this on behalf of.

skip_transactions_checkstring

Only users with this skip transactions check.

Returns

Returns the User object.

Status codes

200 401 404 500

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

List all users

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

Public

Public - no token needed.

Path parameters
emailstringRequired

An email address.

Returns

Returns a list of User objects.

Status codes

201 400 500

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

Verify a token

Verify a token.

User token

Needs the token of a signed-in user.

Status codes

200 400 401 500

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

List all user engagement notifications

Returns the site's user engagement notifications, newest first unless a sort is given.

User token

Needs the token of a signed-in user.

Path parameters
usersstringRequired

The user engagement notification's users.

Returns

Returns a list of UserEngagementNotification objects.

Status codes

200 401 500

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

List all user engagement notifications

Returns the site's user engagement notifications, newest first unless a sort is given.

User token

Needs the token of a signed-in user.

Returns

Returns a list of UserEngagementNotification objects.

Status codes

200 401 500

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

Update the seen message notification

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

User token

Needs the token of a signed-in user.

Status codes

200 401 500

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

Update the seen notification

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

User token

Needs the token of a signed-in user.

Status codes

200 401 500

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

List all system user engagement notifications

Returns the site's system user engagement notifications, newest first unless a sort is given.

User token

Needs the token of a signed-in user.

Returns

Returns a list of UserEngagementNotification objects.

Status codes

200 401 500

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

List all user engagement notifications

Returns the site's user engagement notifications, newest first unless a sort is given.

User token

Needs the token of a signed-in user.

Returns

Returns a list of UserEngagementNotification objects.

Status codes

200 401 500

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

List all user engagement notifications

Returns the site's user engagement notifications, newest first unless a sort is given.

User token

Needs the token of a signed-in user.

Path parameters
skipstringRequired

How many results to skip - for paging.

usersstringRequired

The user engagement notification's users.

Returns

Returns a list of UserEngagementNotification objects.

Status codes

200 401 500

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

List all user privileges

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

Public

Public - no token needed.

Status codes

200 500

GET/user-privileges
curl -X GET 'http://cloudoffice-2.max-media.io/user-privileges?ionic=true'

Create a user privilege

Create new user_privilege.

Admin token

Needs a site admin token.

Status codes

201 400 401 500

POST/user-privileges
curl -X POST 'http://cloudoffice-2.max-media.io/user-privileges?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve a user privilege

Returns one user privilege, found by its ID.

Public

Public - no token needed.

Path parameters
idstringRequired

The ID of the user privilege.

Status codes

200 404 500

GET/user-privileges/:id
curl -X GET 'http://cloudoffice-2.max-media.io/user-privileges/{id}?ionic=true'

Update a user privilege

Update UserPrivilege by id.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the user privilege.

Status codes

200 400 401 404 500

PATCH/user-privileges/:id
curl -X PATCH 'http://cloudoffice-2.max-media.io/user-privileges/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Delete a user privilege

Delete UserPrivilege record by id.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the user privilege.

Returns

Returns an empty answer on success.

Status codes

200 401 404 500

DELETE/user-privileges/:id
curl -X DELETE 'http://cloudoffice-2.max-media.io/user-privileges/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

List all mini app reports

Returns the site's mini app reports, newest first unless a sort is given.

User token

Needs the token of a signed-in user.

Path parameters
skipstringRequired

How many results to skip - for paging.

Status codes

200 400 401 500

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

Create a user report

Create new UserReport.

User token

Needs the token of a signed-in user.

Returns

Returns the UserReport object.

Status codes

201 400 401 500

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

Update a user report

Update UserReport by id.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the user report.

Returns

Returns the UserReport object.

Status codes

200 400 401 404 500

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

List all user reports

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

User token

Needs the token of a signed-in user.

Path parameters
skipstringRequired

How many results to skip - for paging.

limitstringRequired

How many results to return.

Returns

Returns a list of UserReport objects.

Status codes

200 401 500

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

Create a staff member with AI

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

Admin token

Needs a site admin token.

Parameters
promptstring

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

chatIdstring

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

aiVersionstring

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

item_idstring

The ID of the staff member to change.

Status codes

200 401 500

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

Create a staff schedule with AI

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

Admin token

Needs a site admin token.

Parameters
promptstring

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

chatIdstring

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

aiVersionstring

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

item_idstring

The ID of the staff schedule to change.

Status codes

200 401 500

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

Generate a staff with AI

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

Admin token

Needs a site admin token.

Parameters
promptstring

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

chatIdstring

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

Status codes

200 401 500

POST/generate-staff
curl -X POST 'http://cloudoffice-2.max-media.io/generate-staff?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "prompt": "...", "chatId": "..." }'

Generate a staff schedule with AI

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

Admin token

Needs a site admin token.

Parameters
promptstring

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

chatIdstring

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

Status codes

200 401 500

POST/generate-staff-schedule
curl -X POST 'http://cloudoffice-2.max-media.io/generate-staff-schedule?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "prompt": "...", "chatId": "..." }'
↑↓ Navigate↵ GoEsc Close