The @fatturazione-elettronica-aruba/nuxt package provides Nuxt integration through auto-imported server-side composables.
pnpm add @fatturazione-elettronica-aruba/nuxt
Module configuration options in nuxt.config.ts:
export default defineNuxtConfig({
modules: ['@fatturazione-elettronica-aruba/nuxt'],
fatturazioneAruba: {
environment: 'demo',
},
});
| Property | Type | Default | Description |
|---|---|---|---|
environment | 'demo' | 'production' | 'demo' | Aruba API environment |
Credentials configurable via runtimeConfig:
export default defineNuxtConfig({
runtimeConfig: {
fatturazioneAruba: {
username: '',
password: '',
},
},
});
| Property | Type | Env Variable | Description |
|---|---|---|---|
username | string | NUXT_FATTURAZIONE_ARUBA_USERNAME | Aruba API username |
password | string | NUXT_FATTURAZIONE_ARUBA_PASSWORD | Aruba API password |
All composables are available exclusively in Nitro server routes and are auto-imported.
Returns the automatically configured ArubaClient singleton instance.
function useArubaClient(): ArubaClient
Returns: ArubaClient - Main client with access to auth and http.
Example:
// server/api/user.get.ts
export default defineEventHandler(async () => {
const client = useArubaClient();
// Access user info
const userInfo = await client.auth.getUserInfo();
return {
username: userInfo.username,
vatCode: userInfo.vatCode,
accountStatus: userInfo.accountStatus,
};
});
Returns the InvoicesClient singleton instance for invoice management.
function useArubaInvoices(): InvoicesClient
Returns: InvoicesClient - Client for invoice operations.
Available methods:
| Method | Description |
|---|---|
upload(params) | Upload an invoice |
findSent(params) | Search sent invoices |
findReceived(params) | Search received invoices |
downloadSent(params) | Download sent invoice XML |
downloadReceived(params) | Download received invoice XML |
sendOutcome(params) | Send customer outcome |
Example:
// server/api/invoices/index.get.ts
export default defineEventHandler(async (event) => {
const invoices = useArubaInvoices();
const query = getQuery(event);
const result = await invoices.findSent({
creationDateStart: query.from as string,
creationDateEnd: query.to as string,
page: Number(query.page) || 0,
size: Number(query.size) || 20,
});
return result;
});
// server/api/invoices/upload.post.ts
import { encodeBase64 } from '@fatturazione-elettronica-aruba/utils';
export default defineEventHandler(async (event) => {
const body = await readBody(event);
const invoices = useArubaInvoices();
const result = await invoices.upload({
dataFile: encodeBase64(body.xml),
signed: body.signed ?? false,
});
return {
success: true,
filename: result.uploadFileName,
};
});
Returns the NotificationsClient singleton instance for SDI notifications.
function useArubaNotifications(): NotificationsClient
Returns: NotificationsClient - Client for notification operations.
Available methods:
| Method | Description |
|---|---|
findDeliveryReceipts(params) | Delivery receipts (RC) |
findFailedDeliveries(params) | Failed deliveries (MC) |
findRejections(params) | Rejection notices (NS) |
findExpirations(params) | Term expirations (DT) |
downloadNotification(params) | Download notification XML |
Example:
// server/api/notifications/index.get.ts
export default defineEventHandler(async (event) => {
const notifications = useArubaNotifications();
const query = getQuery(event);
const [receipts, rejections] = await Promise.all([
notifications.findDeliveryReceipts({
creationDateStart: query.from as string,
creationDateEnd: query.to as string,
}),
notifications.findRejections({
creationDateStart: query.from as string,
creationDateEnd: query.to as string,
}),
]);
return {
receipts: receipts.content,
rejections: rejections.content,
};
});
Returns the CommunicationsClient singleton instance for AdE communications.
function useArubaCommunications(): CommunicationsClient
Returns: CommunicationsClient - Client for Agenzia delle Entrate communications.
Available methods:
| Method | Description |
|---|---|
uploadLiquidazione(params) | Upload VAT liquidation |
findLiquidazioni(params) | Search liquidations |
downloadLiquidazione(params) | Download liquidation XML |
uploadDatiFatture(params) | Upload invoice data |
findDatiFatture(params) | Search invoice data |
Example:
// server/api/liquidazioni/index.get.ts
export default defineEventHandler(async (event) => {
const communications = useArubaCommunications();
const query = getQuery(event);
const result = await communications.findLiquidazioni({
creationDateStart: query.from as string,
creationDateEnd: query.to as string,
year: query.year as string,
quarter: query.quarter as string,
});
return result;
});
The module automatically extends Nuxt and Nitro types:
// Runtime config declaration
declare module '@nuxt/schema' {
interface RuntimeConfig {
fatturazioneAruba: {
username: string;
password: string;
environment: 'demo' | 'production';
};
}
}
// Composables declaration in #imports
declare module '#imports' {
export function useArubaClient(): ArubaClient;
export function useArubaInvoices(): InvoicesClient;
export function useArubaNotifications(): NotificationsClient;
export function useArubaCommunications(): CommunicationsClient;
}
All composables use the singleton pattern to optimize performance:
// First call: creates the instance
const invoices1 = useArubaInvoices();
// Subsequent calls: reuses the same instance
const invoices2 = useArubaInvoices();
invoices1 === invoices2 // true
Authentication is automatically performed on the first call using credentials configured in runtimeConfig.
server/api/, server/routes/, server/middleware/). They cannot be used in Vue components or client-side code.runtimeConfig. Without valid credentials, API calls will fail with authentication errors.