API Reference

Nuxt Module

API reference for the Nuxt Module - composables and configuration.

Nuxt Module

The @fatturazione-elettronica-aruba/nuxt package provides Nuxt integration through auto-imported server-side composables.

Installation

pnpm add @fatturazione-elettronica-aruba/nuxt

Configuration

ModuleOptions

Module configuration options in nuxt.config.ts:

export default defineNuxtConfig({
  modules: ['@fatturazione-elettronica-aruba/nuxt'],

  fatturazioneAruba: {
    environment: 'demo',
  },
});
PropertyTypeDefaultDescription
environment'demo' | 'production''demo'Aruba API environment

RuntimeConfig

Credentials configurable via runtimeConfig:

export default defineNuxtConfig({
  runtimeConfig: {
    fatturazioneAruba: {
      username: '',
      password: '',
    },
  },
});
PropertyTypeEnv VariableDescription
usernamestringNUXT_FATTURAZIONE_ARUBA_USERNAMEAruba API username
passwordstringNUXT_FATTURAZIONE_ARUBA_PASSWORDAruba API password

Composables

All composables are available exclusively in Nitro server routes and are auto-imported.

useArubaClient()

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,
  };
});

useArubaInvoices()

Returns the InvoicesClient singleton instance for invoice management.

function useArubaInvoices(): InvoicesClient

Returns: InvoicesClient - Client for invoice operations.

Available methods:

MethodDescription
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,
  };
});

useArubaNotifications()

Returns the NotificationsClient singleton instance for SDI notifications.

function useArubaNotifications(): NotificationsClient

Returns: NotificationsClient - Client for notification operations.

Available methods:

MethodDescription
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,
  };
});

useArubaCommunications()

Returns the CommunicationsClient singleton instance for AdE communications.

function useArubaCommunications(): CommunicationsClient

Returns: CommunicationsClient - Client for Agenzia delle Entrate communications.

Available methods:

MethodDescription
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;
});

TypeScript Types

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;
}

Singleton Pattern

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.


Limitations

Composables are available only in server routes (server/api/, server/routes/, server/middleware/). They cannot be used in Vue components or client-side code.
The module requires credentials to be configured via environment variables or runtimeConfig. Without valid credentials, API calls will fail with authentication errors.