xavicabot/laravel-holded

Cliente PHP para la API de Holded, listo para Laravel

Installs: 41

Dependents: 0

Suggesters: 0

Security: 0

Stars: 2

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/xavicabot/laravel-holded

v2.0 2025-12-17 09:14 UTC

README

Cliente PHP para la API de Holded, diseñado para integrarse fácilmente con Laravel.

🚀 Instalación

composer require xavicabot/laravel-holded

⚙️ Configuración

Publica el archivo de configuración:

php artisan vendor:publish --tag=config --provider="XaviCabot\\Laravel\\Holded\\HoldedServiceProvider"

Agrega en tu .env:

HOLDED_API=your_api_key
HOLDED_API_URL=https://api.holded.com/api/invoicing/v1/

✅ Uso

use XaviCabot\Laravel\Holded\Facades\Holded;

// Uso básico con las credenciales por defecto del config/holded.php
$contacts = Holded::contact()->list();
$contact = Holded::contact()->get('contactId');
$newContact = Holded::contact()->create(['name' => 'Cliente nuevo']);

// Documentos
$invoices = Holded::document()->list();

Multi‑cuenta

Puedes definir varias cuentas en el config o establecer las credenciales en tiempo de ejecución.

  • Definir cuentas en config/holded.php:
return [
    'api_key' => env('HOLDED_API', ''),
    'base_url' => env('HOLDED_API_URL', 'https://api.holded.com/api/invoicing/v1/'),

    'accounts' => [
        'principal' => [
            'api_key' => env('HOLDED_API_PRINCIPAL'),
            'base_url' => env('HOLDED_API_URL_PRINCIPAL', env('HOLDED_API_URL')),
        ],
        'secundaria' => [
            'api_key' => env('HOLDED_API_SECUNDARIA'),
            'base_url' => env('HOLDED_API_URL_SECUNDARIA', env('HOLDED_API_URL')),
        ],
    ],
];
  • Usar una cuenta concreta por nombre:
use XaviCabot\Laravel\Holded\Facades\Holded;

$contacts = Holded::account('principal')->contact()->list();
$invoices = Holded::account('secundaria')->document()->list();
  • Establecer credenciales en tiempo de ejecución (sin tocar el config):
use XaviCabot\Laravel\Holded\Facades\Holded;

$dynamic = Holded::withCredentials('API_KEY_XYZ', 'https://api.holded.com/api/invoicing/v1/');
$contacts = $dynamic->contact()->list();

🧪 Tests

Instala dependencias de desarrollo:

composer install

Lanza los tests:

composer test

📂 Estructura del paquete

  • src/ → Código fuente principal
  • config/ → Archivo de configuración Laravel
  • tests/ → Pruebas con Pest
  • composer.json → Autoload, dependencias, provider

✍️ Créditos

Creado por Xavi Cabot

📄 Licencia

MIT ©