L'API Aruba utilizza OAuth2 con grant type password.
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
Il refresh token e valido 60 minuti:
const newToken = await client.auth.refresh(refreshToken);
L'SDK rinnova automaticamente il token durante le chiamate API.
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');
// 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');
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');
},
},
});
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');
}
}