Skip to main content

Search Products for Sale

Headers

Authorization
string
required
Bearer token for authentication

Query Parameters

Search term to filter products
limit
number
default:"10"
Maximum number of results to return
includeStock
boolean
default:"true"
Include stock information in response

Response

success
boolean
Indicates if the search was successful
products
array
Array of products matching the search criteria

Example Request

curl -X GET "https://cemac-api.vercel.app/sales/products/search?search=cuaderno&limit=10&includeStock=true" \
  -H "Authorization: Bearer YOUR_TOKEN"

Example Response

{
  "success": true,
  "products": [
    {
      "id": "prod_123",
      "name": "Cuaderno Profesional 100 hojas",
      "price": 45.50,
      "stock": 150,
      "availability": "available"
    }
  ]
}

Error Codes

  • 401 - Unauthorized
  • 500 - Internal server error

Get Vendors

Headers

Authorization
string
required
Bearer token for authentication

Query Parameters

includeInactive
boolean
default:"false"
Include inactive vendors in the results

Response

success
boolean
Indicates if the request was successful
vendedores
array
Array of vendor objects

Example Request

curl -X GET "https://cemac-api.vercel.app/sales/users/vendedores?includeInactive=false" \
  -H "Authorization: Bearer YOUR_TOKEN"

Example Response

{
  "success": true,
  "vendedores": [
    {
      "id": "user_123",
      "firstName": "Juan",
      "lastName": "Pérez",
      "email": "juan.perez@example.com",
      "role": "vendedor",
      "active": true
    }
  ]
}

Create Sale

Headers

Authorization
string
required
Bearer token for authentication

Request Body

cliente
string
required
Customer name or ID
vendedor
string
required
Vendor/seller ID
products
array
required
Array of products being sold
products[].productId
string
required
Product ID
products[].productName
string
required
Product name
products[].quantity
number
required
Quantity being sold
products[].price
number
required
Unit price
products[].totalPrice
number
required
Total price for this product (quantity × price)
subtotal
number
required
Subtotal before discounts and taxes
discountAmount
number
default:"0"
Discount amount applied
ivaAmount
number
default:"0"
Tax (IVA) amount
total
number
required
Total sale amount
paymentMethod
string
required
Payment method (e.g., “Efectivo”, “Tarjeta”, “Transferencia”)
status
string
default:"completada"
Sale status

Response

success
boolean
Indicates if the sale was created
sale
object
Created sale object with ID
message
string
Success or error message

Example Request

curl -X POST https://cemac-api.vercel.app/sales \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "cliente": "María González",
    "vendedor": "user_123",
    "products": [
      {
        "productId": "prod_123",
        "productName": "Cuaderno A4",
        "quantity": 5,
        "price": 45.50,
        "totalPrice": 227.50
      }
    ],
    "subtotal": 227.50,
    "discountAmount": 0,
    "ivaAmount": 36.40,
    "total": 263.90,
    "paymentMethod": "Efectivo",
    "status": "completada"
  }'

Example Response

{
  "success": true,
  "sale": {
    "id": "sale_789",
    "date": "2025-11-16",
    "cliente": "María González",
    "vendedor": "user_123",
    "total": 263.90,
    "status": "completada",
    "createdAt": "2025-11-16T14:30:00Z"
  },
  "message": "Venta creada exitosamente"
}

Error Codes

  • 400 - Invalid input or insufficient stock
  • 401 - Unauthorized
  • 500 - Internal server error

Get Sales

Headers

Authorization
string
required
Bearer token for authentication

Query Parameters

page
number
default:"1"
Page number for pagination
limit
number
default:"10"
Number of sales per page
startDate
string
Filter sales from this date (ISO 8601 format)
endDate
string
Filter sales until this date (ISO 8601 format)
vendedor
string
Filter by vendor ID
cliente
string
Filter by customer name
status
string
Filter by sale status
sortBy
string
Field to sort by
sortOrder
string
Sort order: “asc” or “desc”

Response

success
boolean
Indicates if the request was successful
sales
array
Array of sale objects
pagination
object
Pagination information

Example Request

curl -X GET "https://cemac-api.vercel.app/sales?page=1&limit=10&startDate=2025-11-01" \
  -H "Authorization: Bearer YOUR_TOKEN"

Example Response

{
  "success": true,
  "sales": [
    {
      "id": "sale_789",
      "date": "2025-11-16",
      "cliente": "María González",
      "vendedor": "Juan Pérez",
      "subtotal": 227.50,
      "discountAmount": 0,
      "ivaAmount": 36.40,
      "total": 263.90,
      "status": "completada",
      "paymentMethod": "Efectivo",
      "products": [
        {
          "productId": "prod_123",
          "productName": "Cuaderno A4",
          "quantity": 5,
          "price": 45.50,
          "totalPrice": 227.50
        }
      ]
    }
  ],
  "pagination": {
    "total": 45,
    "page": 1,
    "limit": 10,
    "totalPages": 5
  }
}

Get Sale by ID

Headers

Authorization
string
required
Bearer token for authentication

Path Parameters

saleId
string
required
ID of the sale to retrieve

Response

success
boolean
Indicates if the sale was found
sale
object
Sale object with complete details

Example Request

curl -X GET https://cemac-api.vercel.app/sales/sale_789 \
  -H "Authorization: Bearer YOUR_TOKEN"

Example Response

{
  "success": true,
  "sale": {
    "id": "sale_789",
    "date": "2025-11-16",
    "cliente": "María González",
    "vendedor": "Juan Pérez",
    "total": 263.90,
    "status": "completada",
    "products": [
      {
        "productId": "prod_123",
        "productName": "Cuaderno A4",
        "quantity": 5,
        "price": 45.50,
        "totalPrice": 227.50
      }
    ]
  }
}

Error Codes

  • 401 - Unauthorized
  • 404 - Sale not found
  • 500 - Internal server error

Update Sale Status

Headers

Authorization
string
required
Bearer token for authentication

Path Parameters

saleId
string
required
ID of the sale to update

Request Body

status
string
required
New status (e.g., “completada”, “cancelada”, “pendiente”)

Response

success
boolean
Indicates if the update was successful
sale
object
Updated sale object

Example Request

curl -X PUT https://cemac-api.vercel.app/sales/sale_789/status \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"status": "cancelada"}'

Example Response

{
  "success": true,
  "sale": {
    "id": "sale_789",
    "status": "cancelada",
    "updatedAt": "2025-11-16T15:00:00Z"
  }
}

Get Sales Report

Headers

Authorization
string
required
Bearer token for authentication

Query Parameters

startDate
string
Report start date (ISO 8601 format)
endDate
string
Report end date (ISO 8601 format)
vendedor
string
Filter by specific vendor

Response

success
boolean
Indicates if the report was generated
report
object
Summary report data
report.totalSales
number
Total number of sales
report.totalRevenue
number
Total revenue amount
report.averageOrderValue
number
Average order value

Example Request

curl -X GET "https://cemac-api.vercel.app/sales/reports/summary?startDate=2025-11-01&endDate=2025-11-16" \
  -H "Authorization: Bearer YOUR_TOKEN"

Example Response

{
  "success": true,
  "report": {
    "period": {
      "startDate": "2025-11-01",
      "endDate": "2025-11-16"
    },
    "totalSales": 45,
    "totalRevenue": 12500.75,
    "averageOrderValue": 277.79,
    "topProducts": [
      {
        "productId": "prod_123",
        "productName": "Cuaderno A4",
        "quantitySold": 150,
        "revenue": 6825.00
      }
    ]
  }
}

Error Codes

  • 401 - Unauthorized
  • 500 - Internal server error

Build docs developers (and LLMs) love