Guide

Autenticazione

Gestione del flusso OAuth2

Autenticazione

L'API Aruba utilizza OAuth2 con grant type password.

Login

import { ArubaClient } from '@fatturazione-elettronica-aruba/core';

const client = new ArubaClient({ environment: 'demo' });

const result = await client.auth.signin('username', 'password');

console.log('Access Token:', result.access_token);
console.log('Scade tra:', result.expires_in, 'secondi'); // 1800s = 30 min

Refresh Token

Il refresh token e valido 60 minuti:

const newToken = await client.auth.refresh(refreshToken);

L'SDK rinnova automaticamente il token durante le chiamate API.

Info Utente

const userInfo = await client.auth.getUserInfo();

console.log('Username:', userInfo.username);
console.log('P.IVA:', userInfo.vatCode);
console.log('Spazio usato:', userInfo.usageStatus.usedSpaceKB, 'KB');

Multicedenti (Premium)

// Lista
const multicedenti = await client.auth.getMulticedenti({
  page: 0,
  size: 20,
});

for (const cedente of multicedenti.content) {
  console.log(`${cedente.id}: ${cedente.description}`);
}

// Dettaglio
const cedente = await client.auth.getMulticedenteById('123');

Token Storage Personalizzato

const client = new ArubaClient({
  environment: 'production',
  tokenStorage: {
    getToken: async () => {
      const stored = await redis.get('aruba:token');
      return stored ? JSON.parse(stored) : null;
    },
    setToken: async (token) => {
      await redis.set('aruba:token', JSON.stringify(token), 'EX', 3600);
    },
    clearToken: async () => {
      await redis.del('aruba:token');
    },
  },
});

Gestione Errori

try {
  await client.auth.signin('username', 'wrong_password');
} catch (error) {
  if (error.status === 401) {
    console.error('Credenziali non valide');
  } else if (error.status === 429) {
    console.error('Troppi tentativi, riprova tra un minuto');
  }
}