API Endpoints

Complete reference for all available Bassode API endpoints.

Base URL: https://api.bassode.com

Speakers

GET /api/speakers

Retrieve a list of speakers with optional filtering and pagination.

Required Scope

speakers:read

Query Parameters

Parameter Type Description
page integer Page number (default: 1)
pageSize integer Items per page (default: 50, max: 100)
brand string Filter by brand name
type string Filter by speaker type (Bookshelf, Floor-standing, etc.)
minPrice decimal Minimum price filter
maxPrice decimal Maximum price filter

Example Request

GET /api/speakers?brand=Klipsch&type=Bookshelf&page=1&pageSize=20

Example Response

{
  "speakers": [
    {
      "id": "1",
      "brand": "Klipsch",
      "model": "RP-600M II",
      "type": "Bookshelf",
      "price": 549.99,
      "frequencyResponse": "45Hz - 25kHz",
      "sensitivity": "96dB",
      "impedance": "8 Ohms"
    }
  ],
  "pagination": {
    "page": 1,
    "pageSize": 20,
    "totalCount": 45,
    "totalPages": 3
  }
}
GET /api/speakers/{id}

Get detailed information about a specific speaker.

Required Scope

speakers:read

Path Parameters

id string The unique speaker identifier

Example Request

GET /api/speakers/123

Amplifiers

GET /api/amplifiers

Retrieve a list of amplifiers with optional filtering and pagination.

Required Scope

amplifiers:read

Query Parameters

Parameter Type Description
page integer Page number (default: 1)
pageSize integer Items per page (default: 50, max: 100)
brand string Filter by brand name
minPower integer Minimum power output (watts)
maxPower integer Maximum power output (watts)
GET /api/amplifiers/{id}

Get detailed information about a specific amplifier.

Required Scope

amplifiers:read

DACs (Digital-to-Analog Converters)

GET /api/dacs

Retrieve a list of DACs with optional filtering and pagination.

Required Scope

dacs:read

Query Parameters

Similar to speakers and amplifiers endpoints (page, pageSize, brand, price filters)

GET /api/dacs/{id}

Get detailed information about a specific DAC.

Required Scope

dacs:read

Recommendations

POST /api/recommendations

Get intelligent equipment recommendations based on user preferences and budget.

Required Scope

recommendations:read

Request Body

{
  "budget": 1500,
  "preferences": {
    "roomSize": "medium",
    "musicGenres": ["rock", "jazz"],
    "priorities": ["soundQuality", "value"]
  },
  "includeCategories": ["speakers", "amplifiers", "dacs"]
}

Example Response

{
  "recommendations": {
    "speakers": {
      "id": "123",
      "brand": "Klipsch",
      "model": "RP-600M II",
      "price": 549.99,
      "matchScore": 0.95,
      "reasoning": "Excellent for rock and jazz with high sensitivity"
    },
    "amplifier": {
      "id": "456",
      "brand": "Cambridge Audio",
      "model": "CXA61",
      "price": 699.99,
      "matchScore": 0.92
    }
  },
  "totalCost": 1249.98,
  "budgetRemaining": 250.02
}

Search

GET /api/search

Search across all equipment categories.

Required Scope

search:read or any category-specific read scope

Query Parameters

q string Search query
categories string Comma-separated categories (speakers,amplifiers,dacs)
page integer Page number

Example Request

GET /api/search?q=Klipsch+reference&categories=speakers

Health Check

GET /health

Check API service health and database connectivity.

Required Scope

None - publicly accessible

Example Response

{
  "status": "Healthy",
  "checks": {
    "database": "Healthy"
  },
  "timestamp": "2024-01-15T10:30:00Z"
}

HTTP Status Codes

Status Code Meaning Description
200 OK Request succeeded
201 Created Resource created successfully
400 Bad Request Invalid request parameters
401 Unauthorized Missing or invalid authentication
403 Forbidden Insufficient permissions (scope)
404 Not Found Resource not found
429 Too Many Requests Rate limit exceeded
500 Internal Server Error Server error

Pagination

All list endpoints support pagination with the following parameters:

Paginated responses include metadata:

{
  "data": [ /* items */ ],
  "pagination": {
    "page": 1,
    "pageSize": 50,
    "totalCount": 234,
    "totalPages": 5,
    "hasNextPage": true,
    "hasPreviousPage": false
  }
}

Next Steps