Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/HelenaLM32/ECHO/llms.txt

Use this file to discover all available pages before exploring further.

Services represent professional offerings that creators publish on the ECHO marketplace. Each service has a display name, description, delivery timeline, category, and an optional cover image. Creating a service automatically creates the underlying item record — you do not need to create an item separately. The GET endpoints are publicly accessible; creating, updating, and deleting a service requires authentication.

Get all services

GET /services Returns all published services. This endpoint is public and does not require authentication.
curl -X GET http://localhost:8084/services
Response
[
  {
    "id": 1,
    "itemId": 10,
    "name": "Logo Design",
    "description": "Custom logo for your brand",
    "deliveryDuration": 7,
    "category": "Diseño Gráfico",
    "coverImageUrl": "https://cdn.example.com/covers/logo-design.jpg",
    "creatorId": 3
  }
]
id
number
required
Unique identifier for the service record.
itemId
number
required
ID of the linked item. Each item can have at most one service.
name
string
required
Display name of the service. Maximum 150 characters.
description
string
Full description of what the service includes.
deliveryDuration
number
required
Number of days the creator requires to deliver the completed work.
category
string
The creative category this service belongs to (e.g., Diseño Gráfico, Fotografía).
categoryId
number
required
Numeric ID of the category.
price
number
Price of the service, if set.
coverImageUrl
string
URL of the service cover image.
creatorId
number
required
ID of the creator offering the service.
creator
object
Creator summary with id, username, publicName, and avatarUrl.
projects
array
List of associated portfolio project summaries (each has id and title).

Get my services

GET /services/me Returns all services owned by the authenticated user. Requires authentication.
curl -X GET http://localhost:8084/services/me \
  -H "Authorization: Bearer <token>"

Get services by user

GET /services/user/{userId} Returns all services created by a specific user. Public endpoint.
userId
number
required
The numeric ID of the creator whose services to retrieve.
curl -X GET http://localhost:8084/services/user/42

Get service by ID

GET /services/{id} Returns a single service by its ID. Public endpoint.
id
number
required
The numeric ID of the service to retrieve.
curl -X GET http://localhost:8084/services/1

Create a service

POST /services Creates a new service listing. Requires authentication. The underlying item record is created automatically.
name
string
required
Display name of the service. Maximum 150 characters.
description
string
Full description of the service offering.
deliveryDuration
number
required
Number of days to deliver the completed work. For example, 7 means the buyer can expect delivery within one week.
categoryId
number
required
Numeric ID of the category this service belongs to. See Categories for available IDs.
price
number
Price of the service. Optional.
coverImageUrl
string
URL pointing to the service cover image. Maximum 500 characters.
projectIds
array
List of up to 6 portfolio project IDs to associate with this service as examples of past work.
curl -X POST http://localhost:8084/services \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"name":"Logo Design","description":"Custom logo for your brand","deliveryDuration":7,"categoryId":1,"price":450.00}'
Response
{
  "id": 1,
  "itemId": 10,
  "name": "Logo Design",
  "description": "Custom logo for your brand",
  "deliveryDuration": 7,
  "category": "Diseño Gráfico",
  "categoryId": 1,
  "price": 450.00,
  "coverImageUrl": null,
  "creatorId": 5,
  "creator": {
    "id": 5,
    "username": "myartist",
    "publicName": "My Artist",
    "avatarUrl": null
  },
  "projects": []
}
The deliveryDuration field is expressed in calendar days. A value of 7 means the buyer should expect delivery within 7 days of placing the order.

Update a service

PUT /services/{id} Updates an existing service. Requires authentication.
id
number
required
The numeric ID of the service to update.
name
string
Updated display name.
description
string
Updated description.
deliveryDuration
number
Updated delivery time in days.
categoryId
number
Updated category ID.
price
number
Updated price.
coverImageUrl
string
Updated cover image URL.
projectIds
array
Updated list of associated portfolio project IDs (max 6).
curl -X PUT http://localhost:8084/services/1 \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"deliveryDuration":5,"price":350.00}'

Delete a service

DELETE /services/{id} Permanently removes a service listing. Requires authentication.
id
number
required
The numeric ID of the service to delete.
Deleting a service is irreversible. The linked item record will remain, but all service-specific data including the cover image URL and delivery duration will be lost.
curl -X DELETE http://localhost:8084/services/1 \
  -H "Authorization: Bearer <token>"

Build docs developers (and LLMs) love