API ReferenceView as MarkdownOpenAPI

Programs

View as Markdown

Programs are online courses: a priced program made of weeks, each week of days and each day of steps - text, a video, images. Buyers work through it in the site or the app, and their progress is kept.

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.

23 endpoints in 4 parts: Program, Program Progress, Tracker, Tracker Progress.

Like or unlike a program

Likes or unlikes a program and notifies its owner. Calling it again takes the like back. Answers { like }.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the program.

Returns

Returns the Program object.

Status codes

200 400 401 404 500

PATCH/program-likes/:id
curl -X PATCH 'http://hristovtintdetailng.com/program-likes/{id}?ionic=true' \
  -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"
  }
}

Find a program by its address

Opens a program in the app (redirects to its app page). For links shared from the app: the website sends the visitor to the program in the app.

Optional user

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

Path parameters
urlstringRequired

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

Status codes

200 500

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

Save or unsave a program

Saves or unsaves a program for the signed-in user. Calling it again unsaves.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the program.

Returns

Returns the Program object.

Status codes

200 400 401 404 500

PATCH/program-saves/:id
curl -X PATCH 'http://hristovtintdetailng.com/program-saves/{id}?ionic=true' \
  -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"
  }
}

List all programs

The programs page, or the programs as JSON with ?ionic. Paged with ?skip, filtered by ?collection and ?published; ?sortBy sets the order. Cached for an hour.

User with accessOptional user

Needs a signed-in user whose plan grants access.

Query parameters
publishedstring

Only programs with this published.

completedstring

Only programs with this completed.

sortBystring

The order of the results.

collectionstring

Only results in this collection.

skipstring

How many results to skip - for paging.

wherestring

Only programs with this where.

Returns

Returns a list of Program objects.

Status codes

200 401 402 404 500

GET/programs
curl -X GET 'http://hristovtintdetailng.com/programs?ionic=true&published=...&completed=...&sortBy=...' \
  -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"
    }
  }
]

Create a program

Creates a program. url is made from title. Answers 201 with the program. 403 without a professional account where social mode requires one.

User token

Needs the token of a signed-in user.

Parameters
titlestring

Name of the program, required.

on_behalf_ofstring

The program's on behalf of.

Returns

Returns the Program object.

Status codes

201 400 401 403 500

POST/programs
curl -X POST 'http://hristovtintdetailng.com/programs?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "title": "...", "on_behalf_of": "..." }'
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"
  }
}

Update a program

Updates a program. Fields outside the allowed list are silently ignored. Answers the program. 403 unless the owner or an admin.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the program.

Parameters
convertedPricestring

The program's converted price.

Returns

Returns the Program object.

Status codes

200 400 401 403 404 500

PATCH/programs/:id
curl -X PATCH 'http://hristovtintdetailng.com/programs/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "convertedPrice": "..." }'
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"
  }
}

Delete a program

Deletes a program. Answers the deleted program. Users' progress in it stays. 403 unless the owner or an admin.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the program.

Returns

Returns an empty answer on success.

Status codes

200 401 403 404 500

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

Retrieve a program

A program's page, or JSON with ?ionic. By url, not id. 404 when there is no such program.

Page accessOptional user

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

Path parameters
urlstringRequired

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

Returns

Returns the Program object.

Status codes

200 401 402 404 500

GET/programs/:url
curl -X GET 'http://hristovtintdetailng.com/programs/{url}?ionic=true'
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 program progress

Users' progress in programs. Answers an array of every record.

Public

Public - no token needed.

Returns

Returns the ProgramProgress object.

Status codes

200 500

GET/program-progress
curl -X GET 'http://hristovtintdetailng.com/program-progress?ionic=true'
Response
{
  "program": "6543210fedcba98765432100",
  "user": "6543210fedcba98765432100",
  "no_steps": 1,
  "is_completed": false,
  "weeks_completed": [
    "example"
  ],
  "days_completed": [
    "example"
  ],
  "steps_completed": [
    "example"
  ],
  "selectedWeek": {},
  "selectedWeekIndex": {},
  "selectedDay": {},
  "selectedDayIndex": {},
  "selectedStep": {},
  "selectedStepIndex": {},
  "about_section": {},
  "selected": false,
  "percentage": {},
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Create a program progress

Creates a program progress record. Enrols the user in a program: 403 "You need to buy course before proceeding." for a paid one they have not bought. Answers 201 { program_progress_id }, or 200 with the existing one when already enrolled.

User token

Needs the token of a signed-in user.

Parameters
programobjectid

Program.id.

Returns

Returns the ProgramProgress object.

Status codes

200 201 400 401 403 500

POST/program-progress
curl -X POST 'http://hristovtintdetailng.com/program-progress?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "program": "..." }'
Response
{
  "program": "6543210fedcba98765432100",
  "user": "6543210fedcba98765432100",
  "no_steps": 1,
  "is_completed": false,
  "weeks_completed": [
    "example"
  ],
  "days_completed": [
    "example"
  ],
  "steps_completed": [
    "example"
  ],
  "selectedWeek": {},
  "selectedWeekIndex": {},
  "selectedDay": {},
  "selectedDayIndex": {},
  "selectedStep": {},
  "selectedStepIndex": {},
  "about_section": {},
  "selected": false,
  "percentage": {},
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Retrieve a program progress

One user's progress in a program. With the program; the week and day come from ?week and ?day (both 0 by default) for a weekly program. 404 when there is no such progress.

Optional userUser token

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

Path parameters
idstringRequired

The ID of the program progress.

Query parameters
weekstring

Only program progresses with this week.

daystring

Only program progresses with this day.

stepstring

Only program progresses with this step.

Returns

Returns the ProgramProgress object.

Status codes

200 401 404 500

GET/program-progress/:id
curl -X GET 'http://hristovtintdetailng.com/program-progress/{id}?ionic=true&week=...&day=...&step=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "program": "6543210fedcba98765432100",
  "user": "6543210fedcba98765432100",
  "no_steps": 1,
  "is_completed": false,
  "weeks_completed": [
    "example"
  ],
  "days_completed": [
    "example"
  ],
  "steps_completed": [
    "example"
  ],
  "selectedWeek": {},
  "selectedWeekIndex": {},
  "selectedDay": {},
  "selectedDayIndex": {},
  "selectedStep": {},
  "selectedStepIndex": {},
  "about_section": {},
  "selected": false,
  "percentage": {},
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Update a program progress

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

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the program progress.

Parameters
concatinated_progressstring

The program progress's concatinated progress.

isCompletedstring

The program progress's is completed.

splitstring

The program progress's split.

progressstring

The program progress's progress.

Returns

Returns the ProgramProgress object.

Status codes

200 400 401 404 500

PATCH/program-progress/:id
curl -X PATCH 'http://hristovtintdetailng.com/program-progress/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "concatinated_progress": "...", "isCompleted": "...", "split": "...", "progress": "..." }'
Response
{
  "program": "6543210fedcba98765432100",
  "user": "6543210fedcba98765432100",
  "no_steps": 1,
  "is_completed": false,
  "weeks_completed": [
    "example"
  ],
  "days_completed": [
    "example"
  ],
  "steps_completed": [
    "example"
  ],
  "selectedWeek": {},
  "selectedWeekIndex": {},
  "selectedDay": {},
  "selectedDayIndex": {},
  "selectedStep": {},
  "selectedStepIndex": {},
  "about_section": {},
  "selected": false,
  "percentage": {},
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Delete a program progress

Deletes a program progress record. Answers the deleted record, or 404. Records that point to it are not changed.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the program progress.

Returns

Returns an empty answer on success.

Status codes

200 401 404 500

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

Retrieve the tracker

The progress trackers. With the signed-in user's entries, newest first, and its video.

Optional userUser token

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

Returns

Returns the Tracker object.

Status codes

200 401 500

GET/tracker
curl -X GET 'http://hristovtintdetailng.com/tracker?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "title": "Example",
  "unit": "example",
  "score_direction": "up",
  "additional_fields": [
    {
      "label": "Example",
      "type": "example",
      "options": [],
      "_id": "6543210fedcba98765432100"
    }
  ],
  "body": "Text shown on the site.",
  "video": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z",
  "goal_definition": {
    "label": "Example",
    "type": "example",
    "options": "example"
  }
}

Create a tracker

Creates a progress tracker. Answers 201 with the tracker.

Admin token

Needs a site admin token.

Returns

Returns the Tracker object.

Status codes

201 400 401 500

POST/tracker
curl -X POST 'http://hristovtintdetailng.com/tracker?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "title": "Example",
  "unit": "example",
  "score_direction": "up",
  "additional_fields": [
    {
      "label": "Example",
      "type": "example",
      "options": [],
      "_id": "6543210fedcba98765432100"
    }
  ],
  "body": "Text shown on the site.",
  "video": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z",
  "goal_definition": {
    "label": "Example",
    "type": "example",
    "options": "example"
  }
}

Retrieve a tracker

One progress tracker. 404 when there is no such tracker.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the tracker.

Returns

Returns the Tracker object.

Status codes

200 401 404 500

GET/tracker/:id
curl -X GET 'http://hristovtintdetailng.com/tracker/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "title": "Example",
  "unit": "example",
  "score_direction": "up",
  "additional_fields": [
    {
      "label": "Example",
      "type": "example",
      "options": [],
      "_id": "6543210fedcba98765432100"
    }
  ],
  "body": "Text shown on the site.",
  "video": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z",
  "goal_definition": {
    "label": "Example",
    "type": "example",
    "options": "example"
  }
}

Update a tracker

Updates a progress tracker. Answers the tracker, or 404.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the tracker.

Returns

Returns the Tracker object.

Status codes

200 400 401 404 500

PATCH/tracker/:id
curl -X PATCH 'http://hristovtintdetailng.com/tracker/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "title": "Example",
  "unit": "example",
  "score_direction": "up",
  "additional_fields": [
    {
      "label": "Example",
      "type": "example",
      "options": [],
      "_id": "6543210fedcba98765432100"
    }
  ],
  "body": "Text shown on the site.",
  "video": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z",
  "goal_definition": {
    "label": "Example",
    "type": "example",
    "options": "example"
  }
}

Delete a tracker

Deletes a progress tracker. Answers the deleted tracker. Users' entries stay.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the tracker.

Returns

Returns an empty answer on success.

Status codes

200 401 404 500

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

Retrieve the tracker progress

Users' progress entries. The signed-in user's own entries.

Optional userUser token

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

Returns

Returns the TrackerProgress object.

Status codes

200 401 500

GET/tracker-progress
curl -X GET 'http://hristovtintdetailng.com/tracker-progress?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "score": "example",
  "user_id": "6543210fedcba98765432100",
  "media": "example",
  "additional_fields": {},
  "goal": {},
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Create a tracker progress

Creates a progress entry. Answers 201 for the app; a website form is sent back to /tracker.

User token

Needs the token of a signed-in user.

Parameters
bodystring

The tracker progress's body.

Returns

Returns the TrackerProgress object.

Status codes

201 400 401 500

POST/tracker-progress
curl -X POST 'http://hristovtintdetailng.com/tracker-progress?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "body": "..." }'
Response
{
  "score": "example",
  "user_id": "6543210fedcba98765432100",
  "media": "example",
  "additional_fields": {},
  "goal": {},
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Retrieve a tracker progress

One progress entry. 404 when there is no such record.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the tracker progress.

Returns

Returns the TrackerProgress object.

Status codes

200 401 404 500

GET/tracker-progress/:id
curl -X GET 'http://hristovtintdetailng.com/tracker-progress/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "score": "example",
  "user_id": "6543210fedcba98765432100",
  "media": "example",
  "additional_fields": {},
  "goal": {},
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Update a tracker progress

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

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the tracker progress.

Returns

Returns the TrackerProgress object.

Status codes

200 400 401 404 500

PATCH/tracker-progress/:id
curl -X PATCH 'http://hristovtintdetailng.com/tracker-progress/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "score": "example",
  "user_id": "6543210fedcba98765432100",
  "media": "example",
  "additional_fields": {},
  "goal": {},
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Delete a tracker progress

Deletes a progress entry. Answers the deleted record, or 404. Records that point to it are not changed.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the tracker progress.

Returns

Returns an empty answer on success.

Status codes

200 401 404 500

DELETE/tracker-progress/:id
curl -X DELETE 'http://hristovtintdetailng.com/tracker-progress/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
↑↓ Navigate↵ GoEsc Close