Products are the catalog items that end-users see on the WiFi captive portal. Each product ties a specific MikroTik Hotspot profile (which controls bandwidth, session duration, and other network parameters) to a display name, price, and additional marketing fields such as description, image, and feature bullet points. A product always belongs to one router within the authenticated company. All endpoints requireDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/sistemashm24/pagos_hotspot_api/llms.txt
Use this file to discover all available pages before exploring further.
Authorization: Bearer <session_token> for a cliente_admin user.
Each router can only have one product per MikroTik profile ID. Attempting to create a duplicate
perfil_mikrotik_id on the same router returns HTTP 409 Conflict.POST /api/v1/admin/products
Creates a new product. The router referenced byrouter_id must belong to the authenticated user’s company. Returns the created product with HTTP 201.
cURL
Request Body
ID of the router this product belongs to. Must be a router owned by the authenticated company.
The MikroTik internal profile identifier, e.g.
"*003". Use GET /mikrotik-profiles to retrieve available profile IDs from the router in real time.The technical name of the MikroTik profile, e.g.
"1_Semana_tiempo_corrido". This is stored for display purposes and used when creating hotspot users.Customer-facing product name shown on the captive portal, e.g.
"Plan Semanal".Optional short description displayed below the product name on the captive portal.
Optional URL to a product thumbnail or promotional image.
Product price as a decimal number, e.g.
50.00.Currency code. Accepted values:
"MXN", "USD", "EUR".Array of feature bullet-point objects. Each object must have a
"texto" key with the display string. Stored internally as JSON and returned as a flat array of strings.Whether the product is visible on the captive portal. Defaults to
true.Sort order for display on the captive portal. Lower values appear first.
When
true, the product is highlighted as a featured/recommended plan on the captive portal.Response (HTTP 201)
Returns aProductoResponse object. See the ProductoResponse fields reference below.
Error Responses
| Status | Detail |
|---|---|
404 | Router not found or does not belong to this company |
409 | A product with this perfil_mikrotik_id already exists for this router |
GET /api/v1/admin/products
Lists all products for the authenticated company, ordered byorden_visual ascending, then creado_en descending. Optionally filter by router.
cURL
Query Parameters
Filter results to a single router. The router must belong to the authenticated company.
Response
Returns an array ofProductoResponse objects.
GET /api/v1/admin/products/
Returns a single product by its numeric ID. Returns HTTP 404 if the product does not exist or belongs to a different company.cURL
Path Parameters
Numeric product ID returned when the product was created.
Response
Returns a singleProductoResponse object.
PUT /api/v1/admin/products/
Partially updates a product. Only fields included in the request body are modified.router_id, perfil_mikrotik_id, and perfil_mikrotik_nombre cannot be changed after creation — create a new product instead.
cURL
Path Parameters
Numeric ID of the product to update.
Request Body
New customer-facing product name.
New description text.
New image URL.
New price.
Currency code:
"MXN", "USD", or "EUR". Returns HTTP 422 if any other value is provided.Replaces the entire
detalles array. Same format as the create endpoint.Show or hide the product on the captive portal.
New display sort order.
Toggle featured/highlighted status.
Response
Returns the updatedProductoResponse object.
DELETE /api/v1/admin/products/
Soft-deletes a product by settingactivo = false. The product record is retained in the database for historical transaction data integrity. It will no longer appear on the captive portal.
cURL
Path Parameters
Numeric ID of the product to deactivate.
Response
ProductoResponse Fields
All product endpoints returnProductoResponse objects with the following fields:
Auto-incremented numeric product ID.
ID of the router this product is associated with.
MikroTik internal profile ID, e.g.
"*003".MikroTik profile technical name, e.g.
"1_Semana_tiempo_corrido".Customer-facing product name shown on the captive portal.
Optional description text.
Optional URL to a product image.
Product price as a float.
Currency code:
"MXN", "USD", or "EUR".Feature bullet points. Stored as JSON objects internally but serialized as a flat array of strings:
["7 días continuos", "Velocidad 10 Mbps"].Whether the product is currently active and visible on the captive portal.
Display sort order. Lower values appear first.
Whether this product is highlighted as a featured plan.
Timestamp of when the product was created.