How the site is found and measured: SEO keywords, meta titles and descriptions, redirects, tracking codes and visit statistics.
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.
62 endpoints in 10 parts: Activity Log, Ga, Gmb, Gsc, Keyword, Keyword Blacklist, Meta, Pixel Data, Report, Tracking.
The action and entity values actually present, for the filter menus. Only values that occur, so no filter comes back empty.
Needs a site admin token.
Returns a list of ActivityLog objects.
curl -X GET 'http://hristovtintdetailng.com/activity-log-filters?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
[
{
"action": "example",
"entity": "example",
"entity_id": "example",
"label": "Example",
"method": "example",
"path": "example",
"status": 1,
"changes": {},
"ip": "example",
"user_agent": "example",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"actor": {
"user": "example",
"email": "jane@example.com",
"name": "Example",
"kind": "example"
}
}
]List activity log entries, newest first. Answers { results, limit, skip, has_more }, paged with ?skip and ?limit (capped). Filters: ?action, ?entity, ?entity_id, ?user, ?email, ?kind, ?search, ?from and ?to.
Needs a site admin token.
How many results to return.
How many results to skip - for paging.
Returns a list of ActivityLog objects.
curl -X GET 'http://hristovtintdetailng.com/activity-logs?ionic=true&limit=...&skip=...' \ -H 'Authorization: Bearer <TOKEN>'
[
{
"action": "example",
"entity": "example",
"entity_id": "example",
"label": "Example",
"method": "example",
"path": "example",
"status": 1,
"changes": {},
"ip": "example",
"user_agent": "example",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"actor": {
"user": "example",
"email": "jane@example.com",
"name": "Example",
"kind": "example"
}
}
]The current selection as CSV. The same filters as /activity-logs, capped at a limit.
Needs a site admin token.
How many results to return.
Returns the ActivityLog object.
curl -X GET 'http://hristovtintdetailng.com/activity-logs-export?ionic=true&limit=...' \ -H 'Authorization: Bearer <TOKEN>'
{
"action": "example",
"entity": "example",
"entity_id": "example",
"label": "Example",
"method": "example",
"path": "example",
"status": 1,
"changes": {},
"ip": "example",
"user_agent": "example",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"actor": {
"user": "example",
"email": "jane@example.com",
"name": "Example",
"kind": "example"
}
}One entry, including the full recorded payload. 404 when there is no such record.
Needs a site admin token.
The ID of the activity log.
Returns the ActivityLog object.
curl -X GET 'http://hristovtintdetailng.com/activity-logs/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"action": "example",
"entity": "example",
"entity_id": "example",
"label": "Example",
"method": "example",
"path": "example",
"status": 1,
"changes": {},
"ip": "example",
"user_agent": "example",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"actor": {
"user": "example",
"email": "jane@example.com",
"name": "Example",
"kind": "example"
}
}Lists the Google Analytics accounts and properties of a Google sign-in (accessToken). Answers { hasAccount, accounts }. The token is used once and not stored.
Needs the token of a signed-in user.
curl -X POST 'http://hristovtintdetailng.com/ga/connect?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
Creates or picks a Google Analytics property and puts its tag on the site. Uses the site's domain and currency. Every page is rendered again with the tag.
Needs the token of a signed-in user.
The Google Analytic's property.
The Google Analytic's account name.
The Google Analytic's currency code.
The Google Analytic's property name.
The Google Analytic's time zone.
The Google Analytic's replace tag.
curl -X POST 'http://hristovtintdetailng.com/ga/create?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "property": "...", "accountName": "...", "currencyCode": "...", "propertyName": "...", "timeZone": "..." }'{
"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
}
}Unlinks Google Analytics and removes its tag from the site. Every page is rendered again without the tag. The Analytics property itself is not touched. Answers { connected: false }.
Needs the token of a signed-in user.
curl -X POST 'http://hristovtintdetailng.com/ga/disconnect?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"zip_code": "example",
"city": "example",
"address": "example",
"contact": "example",
"email": "jane@example.com",
"google_app": "example",
"workhours": "example",
"logo": "6543210fedcba98765432100",
"site_name": "Example",
"domain": "example",
"stock_domain": "example",
"isMarket": false,
"forbidden_collections": [
{
"collection_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100"
}
],
"isInit": false,
"template": "0000",
"lang": "en",
"favicon": "6543210fedcba98765432100",
"cacheEnabled": false,
"has_completed_startup_prompt": true,
"gmb_location": "example",
"ga_property": "example",
"site_generated_at": "2026-11-04T12:00:00.000Z",
"admin_first_opened_at": "2026-11-04T12:00:00.000Z",
"admin_last_opened_at": "2026-11-04T12:00:00.000Z",
"allowedComponents": {
"services": false,
"products": false,
"blogposts": false,
"programs": false
}
}Events by name over ?range, from Google Analytics. The same answers when not linked as /ga/report.
Needs the token of a signed-in user.
Only Google Analytics with this range.
curl -X GET 'http://hristovtintdetailng.com/ga/events?ionic=true&range=...' \ -H 'Authorization: Bearer <TOKEN>'
{
"zip_code": "example",
"city": "example",
"address": "example",
"contact": "example",
"email": "jane@example.com",
"google_app": "example",
"workhours": "example",
"logo": "6543210fedcba98765432100",
"site_name": "Example",
"domain": "example",
"stock_domain": "example",
"isMarket": false,
"forbidden_collections": [
{
"collection_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100"
}
],
"isInit": false,
"template": "0000",
"lang": "en",
"favicon": "6543210fedcba98765432100",
"cacheEnabled": false,
"has_completed_startup_prompt": true,
"gmb_location": "example",
"ga_property": "example",
"site_generated_at": "2026-11-04T12:00:00.000Z",
"admin_first_opened_at": "2026-11-04T12:00:00.000Z",
"admin_last_opened_at": "2026-11-04T12:00:00.000Z",
"allowedComponents": {
"services": false,
"products": false,
"blogposts": false,
"programs": false
}
}Most viewed pages over ?range, from Google Analytics. The same answers when not linked as /ga/report.
Needs the token of a signed-in user.
Only Google Analytics with this range.
curl -X GET 'http://hristovtintdetailng.com/ga/pages?ionic=true&range=...' \ -H 'Authorization: Bearer <TOKEN>'
{
"zip_code": "example",
"city": "example",
"address": "example",
"contact": "example",
"email": "jane@example.com",
"google_app": "example",
"workhours": "example",
"logo": "6543210fedcba98765432100",
"site_name": "Example",
"domain": "example",
"stock_domain": "example",
"isMarket": false,
"forbidden_collections": [
{
"collection_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100"
}
],
"isInit": false,
"template": "0000",
"lang": "en",
"favicon": "6543210fedcba98765432100",
"cacheEnabled": false,
"has_completed_startup_prompt": true,
"gmb_location": "example",
"ga_property": "example",
"site_generated_at": "2026-11-04T12:00:00.000Z",
"admin_first_opened_at": "2026-11-04T12:00:00.000Z",
"admin_last_opened_at": "2026-11-04T12:00:00.000Z",
"allowedComponents": {
"services": false,
"products": false,
"blogposts": false,
"programs": false
}
}Visitors on the site right now, from Google Analytics. The last 30 minutes, by minute. Cached for a minute.
Needs the token of a signed-in user.
curl -X GET 'http://hristovtintdetailng.com/ga/realtime?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"zip_code": "example",
"city": "example",
"address": "example",
"contact": "example",
"email": "jane@example.com",
"google_app": "example",
"workhours": "example",
"logo": "6543210fedcba98765432100",
"site_name": "Example",
"domain": "example",
"stock_domain": "example",
"isMarket": false,
"forbidden_collections": [
{
"collection_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100"
}
],
"isInit": false,
"template": "0000",
"lang": "en",
"favicon": "6543210fedcba98765432100",
"cacheEnabled": false,
"has_completed_startup_prompt": true,
"gmb_location": "example",
"ga_property": "example",
"site_generated_at": "2026-11-04T12:00:00.000Z",
"admin_first_opened_at": "2026-11-04T12:00:00.000Z",
"admin_last_opened_at": "2026-11-04T12:00:00.000Z",
"allowedComponents": {
"services": false,
"products": false,
"blogposts": false,
"programs": false
}
}Visitors and events per day over ?range, from Google Analytics (cached). ?range picks the period. Answers { connected: false } when not linked, and noAccess when the platform lost access to the property. Answers are cached.
Needs the token of a signed-in user.
Only Google Analytics with this range.
curl -X GET 'http://hristovtintdetailng.com/ga/report?ionic=true&range=...' \ -H 'Authorization: Bearer <TOKEN>'
{
"zip_code": "example",
"city": "example",
"address": "example",
"contact": "example",
"email": "jane@example.com",
"google_app": "example",
"workhours": "example",
"logo": "6543210fedcba98765432100",
"site_name": "Example",
"domain": "example",
"stock_domain": "example",
"isMarket": false,
"forbidden_collections": [
{
"collection_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100"
}
],
"isInit": false,
"template": "0000",
"lang": "en",
"favicon": "6543210fedcba98765432100",
"cacheEnabled": false,
"has_completed_startup_prompt": true,
"gmb_location": "example",
"ga_property": "example",
"site_generated_at": "2026-11-04T12:00:00.000Z",
"admin_first_opened_at": "2026-11-04T12:00:00.000Z",
"admin_last_opened_at": "2026-11-04T12:00:00.000Z",
"allowedComponents": {
"services": false,
"products": false,
"blogposts": false,
"programs": false
}
}Whether Google Analytics is linked and its tag is on the site. Answers { connected } with the property when linked.
Needs the token of a signed-in user.
curl -X GET 'http://hristovtintdetailng.com/ga/status?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"zip_code": "example",
"city": "example",
"address": "example",
"contact": "example",
"email": "jane@example.com",
"google_app": "example",
"workhours": "example",
"logo": "6543210fedcba98765432100",
"site_name": "Example",
"domain": "example",
"stock_domain": "example",
"isMarket": false,
"forbidden_collections": [
{
"collection_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100"
}
],
"isInit": false,
"template": "0000",
"lang": "en",
"favicon": "6543210fedcba98765432100",
"cacheEnabled": false,
"has_completed_startup_prompt": true,
"gmb_location": "example",
"ga_property": "example",
"site_generated_at": "2026-11-04T12:00:00.000Z",
"admin_first_opened_at": "2026-11-04T12:00:00.000Z",
"admin_last_opened_at": "2026-11-04T12:00:00.000Z",
"allowedComponents": {
"services": false,
"products": false,
"blogposts": false,
"programs": false
}
}Business Profile categories matching ?q, for a region and language. ?accessToken is the owner's Google token.
Needs the token of a signed-in user.
Only Google Business Profiles with this access token.
Only Google Business Profiles with this region code.
Only Google Business Profiles with this language code.
The words to search for.
curl -X GET 'http://hristovtintdetailng.com/gmb/categories?ionic=true&accessToken=...®ionCode=...&languageCode=...' \ -H 'Authorization: Bearer <TOKEN>'
Lists the Google Business Profile locations of a Google sign-in (accessToken). Answers { hasBusiness, locations, accountEmail }. The token is used once and not stored.
Needs the token of a signed-in user.
curl -X POST 'http://hristovtintdetailng.com/gmb/connect?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"zip_code": "example",
"city": "example",
"address": "example",
"contact": "example",
"email": "jane@example.com",
"google_app": "example",
"workhours": "example",
"logo": "6543210fedcba98765432100",
"site_name": "Example",
"domain": "example",
"stock_domain": "example",
"isMarket": false,
"forbidden_collections": [
{
"collection_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100"
}
],
"isInit": false,
"template": "0000",
"lang": "en",
"favicon": "6543210fedcba98765432100",
"cacheEnabled": false,
"has_completed_startup_prompt": true,
"gmb_location": "example",
"ga_property": "example",
"site_generated_at": "2026-11-04T12:00:00.000Z",
"admin_first_opened_at": "2026-11-04T12:00:00.000Z",
"admin_last_opened_at": "2026-11-04T12:00:00.000Z",
"allowedComponents": {
"services": false,
"products": false,
"blogposts": false,
"programs": false
}
}Creates Business Profile locations (locations) for the business. 400 when the Google account has no Business Profile account. Answers 201 { locations }.
Needs the token of a signed-in user.
The Google Business Profile's locations.
curl -X POST 'http://hristovtintdetailng.com/gmb/create?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "locations": "..." }'{
"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
}
}Unlinks the Business Profile from the site; the profile itself stays. Answers { connected: false }.
Needs the token of a signed-in user.
curl -X POST 'http://hristovtintdetailng.com/gmb/disconnect?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"zip_code": "example",
"city": "example",
"address": "example",
"contact": "example",
"email": "jane@example.com",
"google_app": "example",
"workhours": "example",
"logo": "6543210fedcba98765432100",
"site_name": "Example",
"domain": "example",
"stock_domain": "example",
"isMarket": false,
"forbidden_collections": [
{
"collection_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100"
}
],
"isInit": false,
"template": "0000",
"lang": "en",
"favicon": "6543210fedcba98765432100",
"cacheEnabled": false,
"has_completed_startup_prompt": true,
"gmb_location": "example",
"ga_property": "example",
"site_generated_at": "2026-11-04T12:00:00.000Z",
"admin_first_opened_at": "2026-11-04T12:00:00.000Z",
"admin_last_opened_at": "2026-11-04T12:00:00.000Z",
"allowedComponents": {
"services": false,
"products": false,
"blogposts": false,
"programs": false
}
}Imports a location's address, hours, services and pictures into the site. Only what is asked: importServices, importHours, importAddress, importEmail; services go into collectionId. Answers what was imported.
Needs the token of a signed-in user.
The Google Business Profile's service items.
The Google Business Profile's storefront address.
The Google Business Profile's regular hours.
The Google Business Profile's location.
The Google Business Profile's import services.
The Google Business Profile's collection id.
The Google Business Profile's import hours.
The Google Business Profile's import address.
An email address.
The Google Business Profile's import email.
curl -X POST 'http://hristovtintdetailng.com/gmb/import?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "serviceItems": "...", "storefrontAddress": "...", "regularHours": "...", "location": "...", "importServices": "..." }'{
"title": "Example",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}Links one Business Profile location to the site (location). Answers { connected, gmb_location }.
Needs the token of a signed-in user.
The Google Business Profile's location.
curl -X POST 'http://hristovtintdetailng.com/gmb/select?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "location": "..." }'{
"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
}
}Whether a Business Profile location is linked to the site. Answers { connected } with the location when linked.
Needs the token of a signed-in user.
curl -X GET 'http://hristovtintdetailng.com/gmb/status?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"zip_code": "example",
"city": "example",
"address": "example",
"contact": "example",
"email": "jane@example.com",
"google_app": "example",
"workhours": "example",
"logo": "6543210fedcba98765432100",
"site_name": "Example",
"domain": "example",
"stock_domain": "example",
"isMarket": false,
"forbidden_collections": [
{
"collection_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100"
}
],
"isInit": false,
"template": "0000",
"lang": "en",
"favicon": "6543210fedcba98765432100",
"cacheEnabled": false,
"has_completed_startup_prompt": true,
"gmb_location": "example",
"ga_property": "example",
"site_generated_at": "2026-11-04T12:00:00.000Z",
"admin_first_opened_at": "2026-11-04T12:00:00.000Z",
"admin_last_opened_at": "2026-11-04T12:00:00.000Z",
"allowedComponents": {
"services": false,
"products": false,
"blogposts": false,
"programs": false
}
}Search Console results by query, page, country or device (?dimension). ?dimension: query, page, country or device.
Needs the token of a signed-in user.
Only Search Consoles with this range.
Only Search Consoles with this type.
Only Search Consoles with this dimension.
curl -X GET 'http://hristovtintdetailng.com/gsc/breakdown?ionic=true&range=...&type=...&dimension=...' \ -H 'Authorization: Bearer <TOKEN>'
{
"zip_code": "example",
"city": "example",
"address": "example",
"contact": "example",
"email": "jane@example.com",
"google_app": "example",
"workhours": "example",
"logo": "6543210fedcba98765432100",
"site_name": "Example",
"domain": "example",
"stock_domain": "example",
"isMarket": false,
"forbidden_collections": [
{
"collection_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100"
}
],
"isInit": false,
"template": "0000",
"lang": "en",
"favicon": "6543210fedcba98765432100",
"cacheEnabled": false,
"has_completed_startup_prompt": true,
"gmb_location": "example",
"ga_property": "example",
"site_generated_at": "2026-11-04T12:00:00.000Z",
"admin_first_opened_at": "2026-11-04T12:00:00.000Z",
"admin_last_opened_at": "2026-11-04T12:00:00.000Z",
"allowedComponents": {
"services": false,
"products": false,
"blogposts": false,
"programs": false
}
}Verifies the site in Search Console and adds it (accessToken). Puts the verification meta tag on the site, verifies it and adds the sitemap. Answers { connected, siteUrl, reporting }.
Needs the token of a signed-in user.
curl -X POST 'http://hristovtintdetailng.com/gsc/connect?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"domain": "example",
"instance_group": "example",
"port": 1,
"name": "Example",
"isPremium": false,
"access_level": 0,
"premium_domain": "example",
"premium_domain_parked": false,
"subscription_id": "example",
"hasSSL": false,
"isDeleted": false,
"agreedToTerms": false,
"agreedToTermsAt": "example",
"hasRunningCampaign": false,
"transfer_ns": [
"example"
],
"pending_domain_transfer": false,
"domain_transfer_complete": false,
"isSuspended": false,
"suspended_at": "2026-11-04T12:00:00.000Z",
"replica_sets": [
{
"instance_group": "example",
"port": 1,
"_id": "6543210fedcba98765432100"
}
],
"defaultUser": "6543210fedcba98765432100",
"onboard_type": "generic",
"completed_payment": false,
"_id": "6543210fedcba98765432100",
"cancel": {
"isPending": false,
"timestamp": "example"
}
}Unlinks Search Console and removes its verification tag. The site stays in the owner's Search Console. Answers { connected: false }.
Needs the token of a signed-in user.
curl -X POST 'http://hristovtintdetailng.com/gsc/disconnect?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"title": "Example",
"script": "example",
"prefix": "example",
"place_in_body": false,
"external_tracker_id": "example",
"external_tracker_integration": "example",
"event_map": {},
"_id": "6543210fedcba98765432100"
}Clicks, impressions and positions over ?range, from Search Console (cached). ?range picks the period, ?type the search type. Answers { connected: false } when not linked.
Needs the token of a signed-in user.
Only Search Consoles with this range.
Only Search Consoles with this type.
curl -X GET 'http://hristovtintdetailng.com/gsc/performance?ionic=true&range=...&type=...' \ -H 'Authorization: Bearer <TOKEN>'
{
"zip_code": "example",
"city": "example",
"address": "example",
"contact": "example",
"email": "jane@example.com",
"google_app": "example",
"workhours": "example",
"logo": "6543210fedcba98765432100",
"site_name": "Example",
"domain": "example",
"stock_domain": "example",
"isMarket": false,
"forbidden_collections": [
{
"collection_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100"
}
],
"isInit": false,
"template": "0000",
"lang": "en",
"favicon": "6543210fedcba98765432100",
"cacheEnabled": false,
"has_completed_startup_prompt": true,
"gmb_location": "example",
"ga_property": "example",
"site_generated_at": "2026-11-04T12:00:00.000Z",
"admin_first_opened_at": "2026-11-04T12:00:00.000Z",
"admin_last_opened_at": "2026-11-04T12:00:00.000Z",
"allowedComponents": {
"services": false,
"products": false,
"blogposts": false,
"programs": false
}
}Whether Google Search Console is linked and verified for the site. Answers { connected } with the site's Search Console address when linked.
Needs the token of a signed-in user.
curl -X GET 'http://hristovtintdetailng.com/gsc/sites?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"zip_code": "example",
"city": "example",
"address": "example",
"contact": "example",
"email": "jane@example.com",
"google_app": "example",
"workhours": "example",
"logo": "6543210fedcba98765432100",
"site_name": "Example",
"domain": "example",
"stock_domain": "example",
"isMarket": false,
"forbidden_collections": [
{
"collection_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100"
}
],
"isInit": false,
"template": "0000",
"lang": "en",
"favicon": "6543210fedcba98765432100",
"cacheEnabled": false,
"has_completed_startup_prompt": true,
"gmb_location": "example",
"ga_property": "example",
"site_generated_at": "2026-11-04T12:00:00.000Z",
"admin_first_opened_at": "2026-11-04T12:00:00.000Z",
"admin_last_opened_at": "2026-11-04T12:00:00.000Z",
"allowedComponents": {
"services": false,
"products": false,
"blogposts": false,
"programs": false
}
}The SEO keywords. Answers an array of every keyword.
Needs a site admin token.
Returns a list of Keyword objects.
curl -X GET 'http://hristovtintdetailng.com/keywords?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
[
{
"word": "example",
"_id": "6543210fedcba98765432100"
}
]One SEO keyword. 404 when there is no such keyword.
Needs a site admin token.
The ID of the keyword.
Returns the Keyword object.
curl -X GET 'http://hristovtintdetailng.com/keywords/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"word": "example",
"_id": "6543210fedcba98765432100"
}Words not allowed in posts and comments. Answers the record's id and words.
Needs the token of a signed-in user.
Returns the KeywordBlacklist object.
curl -X GET 'http://hristovtintdetailng.com/keyword-blacklist?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"keyword": [
"example"
],
"_id": "6543210fedcba98765432100"
}Creates a blacklist record. Answers 201 with no body.
Needs the token of a signed-in user.
Returns the KeywordBlacklist object.
curl -X POST 'http://hristovtintdetailng.com/keyword-blacklist?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"keyword": [
"example"
],
"_id": "6543210fedcba98765432100"
}Updates a blacklist record. Fields outside the allowed list are silently ignored. Answers the updated record, or 404.
Needs the token of a signed-in user.
The ID of the keyword blacklist.
Returns the KeywordBlacklist object.
curl -X PATCH 'http://hristovtintdetailng.com/keyword-blacklist/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"keyword": [
"example"
],
"_id": "6543210fedcba98765432100"
}Deletes a blacklist record. Answers the deleted record, or 404. Records that point to it are not changed.
Needs the token of a signed-in user.
The ID of the keyword blacklist.
Returns an empty answer on success.
curl -X DELETE 'http://hristovtintdetailng.com/keyword-blacklist/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'Every page's meta tags. Reads no token.
Public - no token needed.
Returns a list of Meta objects.
curl -X GET 'http://hristovtintdetailng.com/metas?ionic=true'
[
{
"title": "Example",
"url": "example-item",
"description": "Text shown on the site.",
"site_name": "Example",
"image": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100"
}
]Creates a page's meta tags. Answers 201 with the record. Pages get theirs automatically when created, so this is for pages without one.
Needs the token of a signed-in user.
Returns the Meta object.
curl -X POST 'http://hristovtintdetailng.com/metas?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"title": "Example",
"url": "example-item",
"description": "Text shown on the site.",
"site_name": "Example",
"image": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100"
}One page's meta tags. 404 when there is no such record.
Public - no token needed.
The ID of the meta.
Returns the Meta object.
curl -X GET 'http://hristovtintdetailng.com/metas/{id}?ionic=true'{
"title": "Example",
"url": "example-item",
"description": "Text shown on the site.",
"site_name": "Example",
"image": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100"
}Each conversion by date over the last days. From the site's own pixel. 403 "Unauthorized" for an account the user may not manage (?on_behalf_of).
Needs the token of a signed-in user.
The conversions day's days.
Only conversions days with this on behalf of.
curl -X GET 'http://hristovtintdetailng.com/conversions-by-days/{days}?ionic=true&on_behalf_of=...' \
-H 'Authorization: Bearer <TOKEN>'{
"on_behalf_of": "6543210fedcba98765432100",
"user_account": "6543210fedcba98765432100",
"status": "pending",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"is_authorized_to": {
"create_posts": false,
"send_messages": false,
"answer_delete_comments": false,
"access_engagements": false,
"access_boosted_posts": false,
"access_analytics": false,
"alter_profile_settings": false
}
}Conversions per day over the last days, for a chart. From the site's own pixel. 403 "Unauthorized" for an account the user may not manage (?on_behalf_of).
Needs the token of a signed-in user.
The conversions graph day's days.
Only conversions graph days with this on behalf of.
curl -X GET 'http://hristovtintdetailng.com/conversions-graph-by-days/{days}?ionic=true&on_behalf_of=...' \
-H 'Authorization: Bearer <TOKEN>'{
"on_behalf_of": "6543210fedcba98765432100",
"user_account": "6543210fedcba98765432100",
"status": "pending",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"is_authorized_to": {
"create_posts": false,
"send_messages": false,
"answer_delete_comments": false,
"access_engagements": false,
"access_boosted_posts": false,
"access_analytics": false,
"alter_profile_settings": false
}
}Conversions by event over the last days, as a table. From the site's own pixel. 403 "Unauthorized" for an account the user may not manage (?on_behalf_of).
Needs the token of a signed-in user.
The conversions table day's days.
Only conversions table days with this on behalf of.
curl -X GET 'http://hristovtintdetailng.com/conversions-table-by-days/{days}?ionic=true&on_behalf_of=...' \
-H 'Authorization: Bearer <TOKEN>'{
"on_behalf_of": "6543210fedcba98765432100",
"user_account": "6543210fedcba98765432100",
"status": "pending",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"is_authorized_to": {
"create_posts": false,
"send_messages": false,
"answer_delete_comments": false,
"access_engagements": false,
"access_boosted_posts": false,
"access_analytics": false,
"alter_profile_settings": false
}
}How many pixel events happened per day over the last days. From the site's own pixel. 403 "Unauthorized" for an account the user may not manage (?on_behalf_of). Answers { events, count }.
Needs the token of a signed-in user.
The event day's days.
Only event days with this on behalf of.
curl -X GET 'http://hristovtintdetailng.com/event-count-by-days/{days}?ionic=true&on_behalf_of=...' \
-H 'Authorization: Bearer <TOKEN>'{
"on_behalf_of": "6543210fedcba98765432100",
"user_account": "6543210fedcba98765432100",
"status": "pending",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"is_authorized_to": {
"create_posts": false,
"send_messages": false,
"answer_delete_comments": false,
"access_engagements": false,
"access_boosted_posts": false,
"access_analytics": false,
"alter_profile_settings": false
}
}The most viewed pages over the last days. From the site's own pixel. 403 "Unauthorized" for an account the user may not manage (?on_behalf_of).
Needs the token of a signed-in user.
The pages and screens day's days.
Only pages and screens days with this on behalf of.
curl -X GET 'http://hristovtintdetailng.com/pages-and-screens-by-days/{days}?ionic=true&on_behalf_of=...' \
-H 'Authorization: Bearer <TOKEN>'{
"on_behalf_of": "6543210fedcba98765432100",
"user_account": "6543210fedcba98765432100",
"status": "pending",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"is_authorized_to": {
"create_posts": false,
"send_messages": false,
"answer_delete_comments": false,
"access_engagements": false,
"access_boosted_posts": false,
"access_analytics": false,
"alter_profile_settings": false
}
}Page views per day over the last days, for a chart. From the site's own pixel. 403 "Unauthorized" for an account the user may not manage (?on_behalf_of).
Needs the token of a signed-in user.
The pages and screens graph day's days.
Only pages and screens graph days with this on behalf of.
curl -X GET 'http://hristovtintdetailng.com/pages-and-screens-graph-by-days/{days}?ionic=true&on_behalf_of=...' \
-H 'Authorization: Bearer <TOKEN>'{
"zip_code": "example",
"city": "example",
"address": "example",
"contact": "example",
"email": "jane@example.com",
"google_app": "example",
"workhours": "example",
"logo": "6543210fedcba98765432100",
"site_name": "Example",
"domain": "example",
"stock_domain": "example",
"isMarket": false,
"forbidden_collections": [
{
"collection_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100"
}
],
"isInit": false,
"template": "0000",
"lang": "en",
"favicon": "6543210fedcba98765432100",
"cacheEnabled": false,
"has_completed_startup_prompt": true,
"gmb_location": "example",
"ga_property": "example",
"site_generated_at": "2026-11-04T12:00:00.000Z",
"admin_first_opened_at": "2026-11-04T12:00:00.000Z",
"admin_last_opened_at": "2026-11-04T12:00:00.000Z",
"allowedComponents": {
"services": false,
"products": false,
"blogposts": false,
"programs": false
}
}Sessions and their length per day over the last days. From the site's own pixel. 403 "Unauthorized" for an account the user may not manage (?on_behalf_of). Answers { sessions }.
Needs the token of a signed-in user.
The sessions day's days.
Only sessions days with this on behalf of.
curl -X GET 'http://hristovtintdetailng.com/sessions-count-by-days/{days}?ionic=true&on_behalf_of=...' \
-H 'Authorization: Bearer <TOKEN>'{
"on_behalf_of": "6543210fedcba98765432100",
"user_account": "6543210fedcba98765432100",
"status": "pending",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"is_authorized_to": {
"create_posts": false,
"send_messages": false,
"answer_delete_comments": false,
"access_engagements": false,
"access_boosted_posts": false,
"access_analytics": false,
"alter_profile_settings": false
}
}Visitors per day over the last days. From the site's own pixel. 403 "Unauthorized" for an account the user may not manage (?on_behalf_of). Answers { users, count }.
Needs the token of a signed-in user.
The user day's days.
Only user days with this on behalf of.
curl -X GET 'http://hristovtintdetailng.com/user-count-by-days/{days}?ionic=true&on_behalf_of=...' \
-H 'Authorization: Bearer <TOKEN>'{
"on_behalf_of": "6543210fedcba98765432100",
"user_account": "6543210fedcba98765432100",
"status": "pending",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"is_authorized_to": {
"create_posts": false,
"send_messages": false,
"answer_delete_comments": false,
"access_engagements": false,
"access_boosted_posts": false,
"access_analytics": false,
"alter_profile_settings": false
}
}Ratings of chosen items over time. Answers { datasets, averageRating, totalRatings } for ?itemsString.
Needs a site admin token.
The item rating over time's from.
The item rating over time's to.
Only item rating over times with this split.
Only item rating over times with this items string.
curl -X GET 'http://hristovtintdetailng.com/item-rating-over-time/{from}&{to}?ionic=true&split=...&itemsString=...' \
-H 'Authorization: Bearer <TOKEN>'{
"email": "jane@example.com",
"text": "Text shown on the site.",
"medias": [
{
"media": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100"
}
],
"stars": 1,
"product": "6543210fedcba98765432100",
"service": "6543210fedcba98765432100",
"program": "6543210fedcba98765432100",
"price_plan": "6543210fedcba98765432100",
"name": "Example",
"miniapp": "6543210fedcba98765432100",
"staff_member": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}Bookings per service between two dates. Renders the report page; with ?ionic answers its data as JSON. Dates are yyyy-mm-dd.
Needs a site admin token.
The bookings over time's from.
The bookings over time's to.
Only bookings over times with this split.
Only bookings over times with this services.
curl -X GET 'http://hristovtintdetailng.com/report-bookings-over-time/{from}&{to}?ionic=true&split=...&services=...' \
-H 'Authorization: Bearer <TOKEN>'{
"title": "Example",
"url": "example-item",
"static_url": "example-item",
"header": "example",
"description": "Text shown on the site.",
"bookable": true,
"expirable": false,
"confirm_bookings": false,
"show_notes": false,
"minutes_delete_bookings": 1,
"medias": [
{
"media": "6543210fedcba98765432100",
"gcs_url": "example-item",
"gcs_480_30_url": "example-item",
"gcs_720_30_url": "example-item",
"gcs_1080_30_url": "example-item",
"duration": 1,
"vimeo_uri": "example",
"vimeo_picture": "example",
"vimeo_url": "example-item",
"youtube_url": "example-item",
"youtube_picture": "example",
"thumbnail": "example",
"_id": "6543210fedcba98765432100"
}
],
"collection_id": "6543210fedcba98765432100",
"price": 49.9,
"online_payment": false,
"book_by_date": false,
"book_date_range": false,
"start_date": "2026-11-04T12:00:00.000Z",
"end_date": "2026-11-04T12:00:00.000Z",
"day_offset": 0,
"is_recurring": false,
"max_participants": 1,
"session_duration": 1,
"time_between_sessions": 0,
"discount": [
{
"days": 1,
"per_total_price": 49.9,
"fixed_price": 49.9,
"per_day": 1,
"_id": "6543210fedcba98765432100"
}
],
"monday": {
"active": false,
"hours": "example"
},
"tuesday": {
"active": false,
"hours": "example"
},
"wednesday": {
"active": false,
"hours": "example"
},
"thursday": {
"active": false,
"hours": "example"
},
"friday": {
"active": false,
"hours": "example"
},
"saturday": {
"active": false
}
}Clicks per link between two dates. Renders the report page; with ?ionic answers its data as JSON. Dates are yyyy-mm-dd.
Needs a site admin token.
The clicks over time's from.
The clicks over time's to.
curl -X GET 'http://hristovtintdetailng.com/report-clicks-over-time/{from}&{to}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"url": "example-item",
"ip": "example",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}Use of chosen coupons (?coupons) between two dates. Renders the report page; with ?ionic answers its data as JSON. Dates are yyyy-mm-dd.
Needs a site admin token.
The coupon over time's from.
The coupon over time's to.
Only coupon over times with this split.
Only coupon over times with this coupons.
curl -X GET 'http://hristovtintdetailng.com/report-coupon-over-time/{from}&{to}?ionic=true&split=...&coupons=...' \
-H 'Authorization: Bearer <TOKEN>'{
"code": "example",
"name": "Example",
"fixed_discount": 1,
"percentage_discount": 1,
"shipping_discount": 1,
"sale_discount": 1,
"apply_to_all_orders": false,
"apply_to_all_products": false,
"apply_to_product": "example",
"apply_to_event": "example",
"apply_to_all_events": false,
"apply_to_collection": "example",
"apply_to_minimum_subtotal": 49.9,
"start_date": "2026-11-04T12:00:00.000Z",
"end_date": "2026-11-04T12:00:00.000Z",
"no_end_date": false,
"limit_uses": 1,
"uses": 0,
"_id": "6543210fedcba98765432100",
"quantity_discount": {
"buy": 0,
"get": 0
}
}Visitor interaction per day between two dates. Renders the report page; with ?ionic answers its data as JSON. Dates are yyyy-mm-dd. Reads no token.
Public - no token needed.
The interaction over time's from.
The interaction over time's to.
curl -X GET 'http://hristovtintdetailng.com/report-interaction-over-time/{from}&{to}?ionic=true'{
"session_id": "example",
"page_views": 1,
"site_session": 0,
"app_session": 0,
"last_url": "example-item",
"path": [
"example"
],
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}Sales of chosen products (?ids) per day between two dates. Renders the report page; with ?ionic answers its data as JSON. Dates are yyyy-mm-dd.
Needs a site admin token.
The item over time's from.
The item over time's to.
Only item over times with this split.
Only item over times with this ids.
curl -X GET 'http://hristovtintdetailng.com/report-item-over-time/{from}&{to}?ionic=true&split=...&ids=...' \
-H 'Authorization: Bearer <TOKEN>'{
"name": "Example",
"url": "example-item",
"static_url": "example-item",
"ribbon": "example",
"striked": "example",
"price": 49.9,
"description": "Text shown on the site.",
"product_informations": [
{
"name": "Example",
"description": "Text shown on the site.",
"_id": "6543210fedcba98765432100"
}
],
"product_options": [
{
"name": "Example",
"options": [],
"informations": [],
"_id": "6543210fedcba98765432100"
}
],
"published": true,
"available_for_purchase": true,
"medias": [
{
"media": "6543210fedcba98765432100",
"gcs_url": "example-item",
"gcs_480_30_url": "example-item",
"gcs_720_30_url": "example-item",
"gcs_1080_30_url": "example-item",
"duration": 1,
"vimeo_uri": "example",
"vimeo_picture": "example",
"vimeo_url": "example-item",
"youtube_url": "example-item",
"youtube_picture": "example",
"thumbnail": "example",
"_id": "6543210fedcba98765432100"
}
],
"collection_id": "6543210fedcba98765432100",
"grouping": [
{
"collection_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100"
}
],
"owner_id": "6543210fedcba98765432100",
"connected_account_owner_id": "6543210fedcba98765432100",
"qty": 1,
"origin_address": "example",
"selected": false,
"custom_1": "example",
"custom_2": "example",
"custom_3": "example",
"about_page": "6543210fedcba98765432100",
"is_digital": false,
"secondary_cta": {
"show": false,
"title": "Example",
"webUrl": "example",
"appUrl": "example"
},
"attached_priceplans": {
"name": "Example",
"priceplans": "example"
}
}Sales per product between two dates. Renders the report page; with ?ionic answers its data as JSON. Dates are yyyy-mm-dd.
Needs a site admin token.
The item sales over time's from.
The item sales over time's to.
curl -X GET 'http://hristovtintdetailng.com/report-item-sales-over-time/{from}&{to}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"organization_name": "Example",
"firstname": "Example",
"lastname": "Example",
"email": "jane@example.com",
"phone_number": "+359 888 123 456",
"address": "example",
"city": "example",
"state": "example",
"country": "example",
"zip_code": "example",
"tax_identification_number": "example",
"notes": "Text shown on the site.",
"products": [
"example"
],
"products_obj": [
{
"product_id": "6543210fedcba98765432100",
"name": "Example",
"options": "example",
"price": 49.9,
"quantity": 1,
"_id": "6543210fedcba98765432100"
}
],
"programs": [
"example"
],
"programs_obj": [
{
"program_id": "6543210fedcba98765432100",
"title": "Example",
"price": 49.9,
"_id": "6543210fedcba98765432100"
}
],
"tickets": [
"6543210fedcba98765432101"
],
"donations": [
"6543210fedcba98765432101"
],
"donations_obj": [
{
"donation_id": "6543210fedcba98765432100",
"name": "Example",
"options": "example",
"price": 49.9,
"quantity": 1,
"_id": "6543210fedcba98765432100"
}
],
"value": 49.9,
"finalized": false,
"fulfilled": false,
"paid": false,
"delivery_method": "example"
}New newsletter subscribers per day between two dates. Renders the report page; with ?ionic answers its data as JSON. Dates are yyyy-mm-dd.
Needs a site admin token.
The newsletter over time's from.
The newsletter over time's to.
curl -X GET 'http://hristovtintdetailng.com/report-newsletter-over-time/{from}&{to}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"name": "Example",
"age": 1,
"email": "jane@example.com",
"city": "example",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}Revenue per payment method between two dates. Renders the report page; with ?ionic answers its data as JSON. Dates are yyyy-mm-dd.
Needs a site admin token.
The payment methods revenue over time's from.
The payment methods revenue over time's to.
Only payment methods revenue over times with this split.
Only payment methods revenue over times with this payments.
curl -X GET 'http://hristovtintdetailng.com/report-payment-methods-revenue-over-time/{from}&{to}?ionic=true&split=...&payments=...' \
-H 'Authorization: Bearer <TOKEN>'{
"organization_name": "Example",
"firstname": "Example",
"lastname": "Example",
"email": "jane@example.com",
"phone_number": "+359 888 123 456",
"address": "example",
"city": "example",
"state": "example",
"country": "example",
"zip_code": "example",
"tax_identification_number": "example",
"notes": "Text shown on the site.",
"products": [
"example"
],
"products_obj": [
{
"product_id": "6543210fedcba98765432100",
"name": "Example",
"options": "example",
"price": 49.9,
"quantity": 1,
"_id": "6543210fedcba98765432100"
}
],
"programs": [
"example"
],
"programs_obj": [
{
"program_id": "6543210fedcba98765432100",
"title": "Example",
"price": 49.9,
"_id": "6543210fedcba98765432100"
}
],
"tickets": [
"6543210fedcba98765432101"
],
"donations": [
"6543210fedcba98765432101"
],
"donations_obj": [
{
"donation_id": "6543210fedcba98765432100",
"name": "Example",
"options": "example",
"price": 49.9,
"quantity": 1,
"_id": "6543210fedcba98765432100"
}
],
"value": 49.9,
"finalized": false,
"fulfilled": false,
"paid": false,
"delivery_method": "example"
}New subscriptions per plan between two dates. Renders the report page; with ?ionic answers its data as JSON. Dates are yyyy-mm-dd.
Needs a site admin token.
The price plan over time's from.
The price plan over time's to.
Only price plan over times with this split.
Only price plan over times with this price plans.
curl -X GET 'http://hristovtintdetailng.com/report-priceplan-over-time/{from}&{to}?ionic=true&split=...&price_plans=...' \
-H 'Authorization: Bearer <TOKEN>'{
"name": "Example",
"description": "Text shown on the site.",
"statement_descriptor": "example",
"plan_features": [
{
"feature_type": "example",
"feature_name": "Example",
"feature_value": "example",
"_id": "6543210fedcba98765432100"
}
],
"price": 49.9,
"link": "example-item",
"image": "6543210fedcba98765432100",
"price_id": "example",
"payment_link_id": "example-item",
"free_trial_days": 0,
"billing_address_collection": "auto",
"owner_id": "6543210fedcba98765432100",
"times_showed": 0,
"views": [
"6543210fedcba98765432101"
],
"total_views": 0,
"disabled": false,
"ribbon": "example",
"linked_plans": [
"6543210fedcba98765432101"
],
"is_hidden": false,
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"recurring_options": {
"interval": "example",
"interval_count": 0
}
}New push subscribers per day between two dates. Renders the report page; with ?ionic answers its data as JSON. Dates are yyyy-mm-dd.
Needs a site admin token.
The push over time's from.
The push over time's to.
curl -X GET 'http://hristovtintdetailng.com/report-push-over-time/{from}&{to}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"user": "example",
"is_admin": false,
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}Sales per day between two dates (yyyy-mm-dd). Renders the report page; with ?ionic answers its data as JSON. Dates are yyyy-mm-dd.
Needs a site admin token.
The sales over time's from.
The sales over time's to.
curl -X GET 'http://hristovtintdetailng.com/report-sales-over-time/{from}&{to}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"organization_name": "Example",
"firstname": "Example",
"lastname": "Example",
"email": "jane@example.com",
"phone_number": "+359 888 123 456",
"address": "example",
"city": "example",
"state": "example",
"country": "example",
"zip_code": "example",
"tax_identification_number": "example",
"notes": "Text shown on the site.",
"products": [
"example"
],
"products_obj": [
{
"product_id": "6543210fedcba98765432100",
"name": "Example",
"options": "example",
"price": 49.9,
"quantity": 1,
"_id": "6543210fedcba98765432100"
}
],
"programs": [
"example"
],
"programs_obj": [
{
"program_id": "6543210fedcba98765432100",
"title": "Example",
"price": 49.9,
"_id": "6543210fedcba98765432100"
}
],
"tickets": [
"6543210fedcba98765432101"
],
"donations": [
"6543210fedcba98765432101"
],
"donations_obj": [
{
"donation_id": "6543210fedcba98765432100",
"name": "Example",
"options": "example",
"price": 49.9,
"quantity": 1,
"_id": "6543210fedcba98765432100"
}
],
"value": 49.9,
"finalized": false,
"fulfilled": false,
"paid": false,
"delivery_method": "example"
}Orders per delivery method between two dates. Renders the report page; with ?ionic answers its data as JSON. Dates are yyyy-mm-dd.
Needs a site admin token.
The shipping over time's from.
The shipping over time's to.
Only shipping over times with this split.
Only shipping over times with this shippings.
curl -X GET 'http://hristovtintdetailng.com/report-shipping-over-time/{from}&{to}?ionic=true&split=...&shippings=...' \
-H 'Authorization: Bearer <TOKEN>'{
"organization_name": "Example",
"firstname": "Example",
"lastname": "Example",
"email": "jane@example.com",
"phone_number": "+359 888 123 456",
"address": "example",
"city": "example",
"state": "example",
"country": "example",
"zip_code": "example",
"tax_identification_number": "example",
"notes": "Text shown on the site.",
"products": [
"example"
],
"products_obj": [
{
"product_id": "6543210fedcba98765432100",
"name": "Example",
"options": "example",
"price": 49.9,
"quantity": 1,
"_id": "6543210fedcba98765432100"
}
],
"programs": [
"example"
],
"programs_obj": [
{
"program_id": "6543210fedcba98765432100",
"title": "Example",
"price": 49.9,
"_id": "6543210fedcba98765432100"
}
],
"tickets": [
"6543210fedcba98765432101"
],
"donations": [
"6543210fedcba98765432101"
],
"donations_obj": [
{
"donation_id": "6543210fedcba98765432100",
"name": "Example",
"options": "example",
"price": 49.9,
"quantity": 1,
"_id": "6543210fedcba98765432100"
}
],
"value": 49.9,
"finalized": false,
"fulfilled": false,
"paid": false,
"delivery_method": "example"
}Sessions and page views per day between two dates. Renders the report page; with ?ionic answers its data as JSON. Dates are yyyy-mm-dd.
Needs a site admin token.
The traffic over time's from.
The traffic over time's to.
curl -X GET 'http://hristovtintdetailng.com/report-traffic-over-time/{from}&{to}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"session_id": "example",
"page_views": 1,
"site_session": 0,
"app_session": 0,
"last_url": "example-item",
"path": [
"example"
],
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}New users per day between two dates. Renders the report page; with ?ionic answers its data as JSON. Dates are yyyy-mm-dd.
Needs a site admin token.
The users over time's from.
The users over time's to.
curl -X GET 'http://hristovtintdetailng.com/report-users-over-time/{from}&{to}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"name": "Example",
"email": "jane@example.com",
"avatar": "6543210fedcba98765432100",
"social_avatar": "example",
"isAdmin": false,
"isStaff": false,
"owner_id": "6543210fedcba98765432100",
"organization_name": "Example",
"firstname": "Example",
"lastname": "Example",
"phone_number": "+359 888 123 456",
"address": "example",
"city": "example",
"state": "example",
"country": "example",
"zip_code": "example",
"tax_identification_number": "example",
"notes": "Text shown on the site.",
"isConfirmed": false,
"number_of_sales": 0,
"stripe_id": "example",
"paypal_id": "example",
"access_level": 1,
"validation_code": "example",
"can_edit": {
"site": false,
"crm": false,
"store": false,
"payments": false,
"staff": false
},
"ip_location": {
"city": "example",
"continent_name": "Example",
"country_name": "Example",
"country_subdivision": "example",
"location_latitude": 0,
"location_longitude": 0,
"last_updated": "example"
}
}Ratings of the user's items of a kind (?type) over time. 404 "No ratings found". Answers the series with the average to 2 decimals.
Needs a site admin token.
The user item rating over time's from.
The user item rating over time's to.
Only user item rating over times with this char at.
Only user item rating over times with this slice.
Only user item rating over times with this type.
curl -X GET 'http://hristovtintdetailng.com/user-item-rating-over-time/{from}&{to}?ionic=true&charAt=...&slice=...&type=...' \
-H 'Authorization: Bearer <TOKEN>'{
"name": "Example",
"make": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}The site's tracking scripts. Answers an array of every record.
Public - no token needed.
Returns a list of Tracking objects.
curl -X GET 'http://hristovtintdetailng.com/trackings?ionic=true'
[
{
"title": "Example",
"script": "example",
"prefix": "example",
"place_in_body": false,
"external_tracker_id": "example",
"external_tracker_integration": "example",
"event_map": {},
"_id": "6543210fedcba98765432100"
}
]Creates a tracking script. Every page is rendered again with the script. Answers 201.
Needs a site admin token.
Returns the Tracking object.
curl -X POST 'http://hristovtintdetailng.com/trackings?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"title": "Example",
"script": "example",
"prefix": "example",
"place_in_body": false,
"external_tracker_id": "example",
"external_tracker_integration": "example",
"event_map": {},
"_id": "6543210fedcba98765432100"
}One tracking script. 404 when there is no such record.
Public - no token needed.
The ID of the tracking.
Returns the Tracking object.
curl -X GET 'http://hristovtintdetailng.com/trackings/{id}?ionic=true'{
"title": "Example",
"script": "example",
"prefix": "example",
"place_in_body": false,
"external_tracker_id": "example",
"external_tracker_integration": "example",
"event_map": {},
"_id": "6543210fedcba98765432100"
}Updates a tracking script. Fields outside the allowed list are silently ignored. Answers the updated record, or 404.
Needs a site admin token.
The ID of the tracking.
Returns the Tracking object.
curl -X PATCH 'http://hristovtintdetailng.com/trackings/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"title": "Example",
"script": "example",
"prefix": "example",
"place_in_body": false,
"external_tracker_id": "example",
"external_tracker_integration": "example",
"event_map": {},
"_id": "6543210fedcba98765432100"
}Deletes a tracking script. Answers the deleted record, or 404. Records that point to it are not changed.
Needs a site admin token.
The ID of the tracking.
Returns an empty answer on success.
curl -X DELETE 'http://hristovtintdetailng.com/trackings/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'