AlkantarClanX12

Your IP : 216.73.217.24


Current Path : /www/capitalgmcbuickregina_830/public/wp-content/plugins/leadbox/docs/
Upload File :
Current File : /www/capitalgmcbuickregina_830/public/wp-content/plugins/leadbox/docs/API_ERROR_CODES.md

# API Error Codes Reference

This document describes the standardized error codes returned by the Leadbox API Client.

## Response Structure

All API methods now return a standardized response structure:

```php
array(
    'success' => bool,      // Whether the operation succeeded
    'data' => mixed,        // Response data (null on error, array/object on success)
    'count' => int,         // Number of items in data array (0 if not array)
    'message' => string,    // User-friendly message (null if no message)
    'error_code' => string, // Machine-readable error code (null on success)
    'timestamp' => int      // Unix timestamp of response
)
```

## Success Response Examples

### Successful Search with Results

```php
array(
    'success' => true,
    'data' => [...vehicles...],
    'count' => 42,
    'message' => null,
    'error_code' => null,
    'timestamp' => 1234567890
)
```

### Successful Search with No Results

```php
array(
    'success' => true,
    'data' => array(),
    'count' => 0,
    'message' => 'No vehicles match your search criteria',
    'error_code' => null,
    'timestamp' => 1234567890
)
```

## Error Codes

### Connection Errors

#### API_CONNECTION_FAILED
- **Meaning**: Cannot connect to API server
- **User Message**: "Unable to connect to vehicle database. Please try again later."
- **User Action**: Try again later, check internet connection
- **Developer Action**:
  - Check API endpoint URL
  - Verify network connectivity
  - Check firewall rules
  - Review error logs for specific connection error message

#### USING_STALE_CACHE
- **Meaning**: API is unavailable but cached data is being returned
- **User Message**: "Showing cached results. Live data temporarily unavailable."
- **User Action**: Results may be outdated, try refreshing later
- **Developer Action**:
  - Investigate API downtime
  - Check API health monitoring
  - Verify API server status

### HTTP Errors

#### API_HTTP_ERROR_XXX
- **Format**: API_HTTP_ERROR_404, API_HTTP_ERROR_500, etc.
- **Meaning**: HTTP error status returned by API
- **User Message**: "Vehicle database returned an error. Please try again later."
- **User Action**: Contact support if error persists
- **Developer Action**:
  - Check API endpoint configuration
  - Review API authentication credentials
  - Verify API request parameters
  - Check API server logs

Common HTTP error codes:
- **API_HTTP_ERROR_401**: Unauthorized - Invalid API key
- **API_HTTP_ERROR_403**: Forbidden - API key lacks permissions
- **API_HTTP_ERROR_404**: Not Found - Endpoint doesn't exist
- **API_HTTP_ERROR_429**: Too Many Requests - Rate limit exceeded
- **API_HTTP_ERROR_500**: Internal Server Error - API server problem
- **API_HTTP_ERROR_503**: Service Unavailable - API temporarily down

### Data Errors

#### API_PARSE_ERROR
- **Meaning**: Invalid JSON response from API
- **User Message**: "Received invalid data from vehicle database."
- **User Action**: Contact support
- **Developer Action**:
  - Check API response format
  - Verify API version compatibility
  - Review API server logs
  - Check for partial/corrupted response

#### API_INVALID_RESPONSE
- **Meaning**: Unexpected data format in API response
- **User Message**: "Received unexpected data format from vehicle database."
- **User Action**: Contact support
- **Developer Action**:
  - Verify API contract/schema
  - Check for API version changes
  - Review response structure
  - Validate expected fields are present

### Lead Submission Errors

#### LEAD_SUBMISSION_FAILED
- **Meaning**: Failed to submit lead to backend
- **User Message**: "Unable to submit lead. Please try again later."
- **User Action**: Try submitting form again
- **Developer Action**:
  - Check POSTAsync error logs
  - Verify lead data format
  - Check API endpoint availability
  - Review timeout settings

## Usage Examples

### Checking for Errors in Vehicle Search

```php
$api = LB_API_Client::getInstance();
$params = new SearchParameters();
$params->setMake('Toyota');

$response = $api->VehicleSearch($params);

if (!$response['success']) {
    // Handle error
    error_log('Vehicle search failed: ' . $response['error_code']);
    echo '<div class="error">' . esc_html($response['message']) . '</div>';
    return;
}

// Check for empty results
if ($response['count'] === 0) {
    echo '<div class="info">' . esc_html($response['message']) . '</div>';
    return;
}

// Process vehicles
foreach ($response['data'] as $vehicle) {
    // Render vehicle...
}
```

### Checking for Errors in Lead Submission

```php
$api = LB_API_Client::getInstance();
$lead = new LB_Lead_Dto();
$lead->FromArray($form_data);

$response = $api->CreateLead($lead);

if (!$response['success']) {
    // Log error with code for monitoring
    leadbox_logger()->error('Lead submission failed', array(
        'error_code' => $response['error_code'],
        'message' => $response['message']
    ));

    // Show user-friendly message
    echo '<div class="error">' . esc_html($response['message']) . '</div>';
    return;
}

// Success
echo '<div class="success">Thank you! Your submission has been received.</div>';
```

### Using Stale Cache Fallback

```php
$response = $api->VehicleSearch($params);

if (!$response['success']) {
    // Check if we're using stale cache
    if ($response['error_code'] === 'USING_STALE_CACHE') {
        // Still have data to show, but warn user
        echo '<div class="warning">' . esc_html($response['message']) . '</div>';
        // Continue to render vehicles from cached data
        $vehicles = $response['data'];
    } else {
        // Complete failure, no data available
        echo '<div class="error">' . esc_html($response['message']) . '</div>';
        return;
    }
}
```

## Monitoring and Alerting

You can set up monitoring based on error codes:

```php
// Track API errors for monitoring
function track_api_error($error_code) {
    $error_counts = get_transient('leadbox_api_errors') ?: array();

    if (!isset($error_counts[$error_code])) {
        $error_counts[$error_code] = 0;
    }

    $error_counts[$error_code]++;

    // Alert if too many errors
    if ($error_counts[$error_code] > 10) {
        // Send alert to monitoring service
        alert_admin('High API error rate: ' . $error_code);
    }

    set_transient('leadbox_api_errors', $error_counts, HOUR_IN_SECONDS);
}
```

## Backward Compatibility

The API client maintains backward compatibility:

- The `GET()`, `POST()`, and `DELETE()` private methods return structured responses on errors
- On success, `GET()` returns raw API data (not wrapped) for backward compatibility
- Public methods like `VehicleSearch()`, `VehicleDetail()`, etc. wrap all responses in the structured format
- Old code checking for `NULL` returns will still work, but should be updated to check `$response['success']`

## Migration Guide

### Before (Old Code)

```php
$vehicles = $api->VehicleSearch($params);

if (!$vehicles) {
    echo 'No results found'; // Can't tell if error or empty results!
    return;
}

foreach ($vehicles as $vehicle) {
    // Render...
}
```

### After (New Code)

```php
$response = $api->VehicleSearch($params);

if (!$response['success']) {
    echo '<div class="error">' . esc_html($response['message']) . '</div>';
    return;
}

if ($response['count'] === 0) {
    echo '<div class="info">' . esc_html($response['message']) . '</div>';
    return;
}

foreach ($response['data'] as $vehicle) {
    // Render...
}
```

## Benefits

1. **Better User Experience**: Users see meaningful error messages instead of generic "No results"
2. **Easier Debugging**: Developers can quickly identify issues with error codes
3. **Monitoring**: Error codes enable automated monitoring and alerting
4. **Graceful Degradation**: Stale cache fallback prevents complete failures
5. **Consistent Handling**: All API methods follow the same response structure

## Related Files

- `/classes/api.php` - API Client implementation
- `/integrations/ninja-forms/actions/send-lead.php` - Lead submission handling
- `/docs/ERROR_HANDLING_LOGGING.md` - General error handling documentation

---

**Last Updated**: 2025-12-15
**Version**: 1.0.0

Home - Capital GMC Buick Regina

No data

Welcome to Capital GMC BUICK – REGINA

Thank you for choosing Capital GMC Buick | Regina, your premier certified Buick and GMC dealership proudly serving drivers in Regina and the surrounding communities. Whether you’re searching for a brand-new Buick or GMC vehicle or a meticulously inspected pre-owned model, we have a diverse selection to match your needs and lifestyle.

Beyond our impressive inventory, we offer a seamless and stress-free financing experience through our well-connected finance centre, where our team of experts is dedicated to securing the best loan or lease options for you, quickly, transparently, and hassle-free.

But our commitment to you doesn’t stop at the sale. Our state-of-the-art service centre is staffed with skilled Buick and GMC technicians who use the latest equipment and genuine OEM parts to keep your vehicle running at its best. From routine maintenance to complex repairs, we’ve got you covered.

Experience top-tier customer service, quality vehicles, and expert care, all in one place. Visit Capital GMC Buick | Regina today or call us at 306-205-8072 with any questions. We’re here to help!

Ask a Question