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.

Administrators have read and write access to all user accounts on the platform. You can list every registered account, retrieve individual user records, deactivate or delete accounts, and promote users to the ADMIN role using the dedicated bootstrap tool. No HTTP endpoint exists for creating or promoting admins — this is handled exclusively through the admin-init Docker service.

Listing and viewing users

List all users

GET /users
Authorization: Bearer <admin-token>
Returns all registered accounts on the platform. This endpoint requires the ADMIN role; non-admin requests receive 403 Forbidden.

Get a specific user

GET /users/{id}
Authorization: Bearer <admin-token>
Returns the full record for a single user by their ID.

Fields returned for each user

FieldTypeDescription
idstringUnique user identifier
emailstringAccount email address
usernamestringPublic display name
is_activebooleanWhether the account is active
created_attimestampAccount creation date and time
providerstringAuthentication provider: local or google
provider_idstringProvider-specific user identifier (OAuth accounts)
rolesarrayAssigned roles: ADMIN, USER, CREATOR, VENUE_MANAGER

Deactivating or deleting a user

DELETE /users/{id}
Authorization: Bearer <admin-token>
Removes the specified user account. An admin can delete any account; regular users can only delete their own.
Deleting a user account is permanent. Review the account’s active orders and open disputes before proceeding.

Promoting a user to admin

Admin creation and promotion is handled exclusively through the admin-init Docker service. This is a deliberate security decision — there is no HTTP endpoint for granting admin privileges. The service is a one-shot tool that either creates a new admin account or promotes an existing user.
Promoting an admin via HTTP endpoint is intentionally not supported. The admin-init tool is the only supported method for creating or elevating admin accounts, keeping this capability out of the regular API surface.

How to run admin-init

1

Set environment variables

Open your .env file and configure the following variables:
APP_ADMIN_EMAIL=admin@example.com
APP_ADMIN_PASSWORD_HASH=$2b$12$...   # bcrypt hash of the desired password
Set APP_ADMIN_EMAIL to the email of the account you want to create or promote. Set APP_ADMIN_PASSWORD_HASH to a bcrypt hash of the desired password if you are creating a new user. If you are promoting an existing account, the password hash is used only when no account with that email is found.
2

Run the admin-init service

Execute the one-shot service using Docker Compose:
docker compose --profile tools run --rm admin-init
The service will connect to the database and perform one of two actions:
  • User not found — creates a new account with the provided email, password hash, and ADMIN role.
  • User found — promotes the existing account to the ADMIN role without changing any other fields.
3

Verify the promotion

Log in with the admin account and confirm the /admin panel is accessible, or call GET /users/{id} and check that the roles array includes ADMIN.
Use a strong, unique password and always store it as a bcrypt hash. Never commit plaintext passwords or your .env file to version control. Rotate the admin password if it is ever exposed.

Platform roles reference

The following roles are defined in the system. A user can hold multiple roles simultaneously.
RoleDescription
ADMINFull platform access, including all user data, content moderation, and dispute management
USERBase role assigned to all registered accounts
CREATORContent creators who publish services and portfolio work
VENUE_MANAGERVenue owners who list spaces and manage events
The USER role is assigned by default when an account registers. CREATOR and VENUE_MANAGER are granted based on the registration flow or profile configuration. ADMIN can only be assigned through the admin-init tool.

Build docs developers (and LLMs) love