1.0.0 • Published 4 months ago

node-lexoffice-client v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

JS client library for lexoffice public API.

Installation

npm i node-lexoffice-client

Usage

Import as ES6 Module

import { LexOfficeClient } from 'node-lexoffice-client'

const lexOffice = new LexOfficeClient('YOUR_LEXOFFICE_API_KEY');

lexOffice.invoices.get('53b8d208-76d9-4f23-bfda-ce340af8a3b3')
.then((invoice) =>{
	console.log(JSON.stringify(invoice));
})
.catch((err) =>{
	console.log(err);
});

Using with CommonJS

const LexOfficeClient = require('node-lexoffice-client).default;

const lexOffice = new LexOfficeClient('YOUR_LEXOFFICE_API_KEY');

lexOffice.invoices.get('53b8d208-76d9-4f23-bfda-ce340af8a3b3')
.then((invoice) =>{
	console.log(JSON.stringify(invoice));
})
.catch((err) =>{
	console.log(err);
});

Using with promises or async/await

lexOffice.invoices.get('53b8d208-76d9-4f23-bfda-ce340af8a3b3')
.then((invoice) =>{
	console.log(JSON.stringify(invoice));
})
.catch((err) =>{
	console.log(err);
});
getInvoice();

async function getInvoice() {
  try {
    const invoice = await invoices.get('53b8d208-76d9-4f23-bfda-ce340af8a3b3');
    console.log(JSON.stringify(invoice));
  } catch (err) {
    console.log(err);
  }
}

Examples

See examples directory.

API endpoints

Documentation for the public API can be found here: lexoffice public API documentation

Contacts

Methods overview

contacts.get(id)
contacts.add(contact)
contacts.update(id, contact)
contacts.filter({ "email": "mail@domain.com" })

Countries

Methods overview

countries.list()

Credit notes

creditNotes.get(id)
creditNotes.add(creditNote, {finalize:true})
creditNotes.render(id)

Delivery notes

deliveryNotes.get(id)
deliveryNotes.add(deliveryNote)
deliveryNotes.render(id)

Down payment invoices

downPaymentInvoices.get(id)

Dunnings

dunnings.get(id)
dunnings.add(dunning)
dunnings.render(id)

Event subscriptions

eventSubscriptions.get(id)
eventSubscriptions.add(eventSubscription)
eventSubscriptions.delete(id)
eventSubscriptions.list()

Files

files.download(id)
files.upload(form)

Invoices

invoices.get()
invoices.add(invoice, {finalize:true})
invoices.render(id)

Payments

payments.get(id)

Payment conditions

paymentConditions.list()

Profile

profile.get()

Quotations

quotations.get(id)
quotations.add(quotation, { finalize: true })
quotations.render(id)

Recurring templates

recurringTemplates.get(id)
recurringTemplates.list()

Vouchers

vouchers.get(id)
vouchers.add(voucher)
vouchers.update(id, voucher)
vouchers.filter({ "voucherNumber": voucherNumber })
vouchers.uploadFile(form, id)

Voucherlist

voucherlist.filter({ "voucherType": "invoice" })

Filteroptions:

voucherType:       salesinvoice, salescreditnote, purchaseinvoice, purchasecreditnote, invoice, downpaymentinvoice, creditnote, orderconfirmation, quotation, deliverynote
voucherStatus:     open,draft,paid,paidoff,voided
archived:          0
contactId:         97c5794f-8ab2-43ad-b459-c5980b055e4d
voucherDateFrom:   2023-07-01
voucherDateTo:     2023-07-31
createdDateFrom:   2023-07-01
createdDateTo:     2023-07-31
updatedDateFrom:   2023-07-01
updatedDateTo:     2023-07-31
page:              0
size:              250
sort:              updatedDate,DESC

Error handling

import { LexOfficeClient, RequestError, RequestNotFoundError, RequestInternalServerError } from 'node-lexoffice-client'

const lexOffice = new LexOfficeClient('YOUR_LEXOFFICE_API_KEY');

lexOffice.invoices.get('53b8d208-76d9-4f23-bfda-ce340af8a3b3')
.then((invoice) =>{
	console.log(JSON.stringify(invoice));
})
.catch((err) =>{

  console.log(err);

  if (err instanceof RequestError) {
    console.log('We have a RequestError!');

    if (err instanceof RequestNotFoundError) {
        console.log('404 RequestNotFoundError');
    }

    if (err instanceof RequestInternalServerError) {
      console.log('500 RequestInternalServerError');
    }

  }

});

Import all from LexOfficeClient.

import * as lexAPI from 'node-lexoffice-client'

const lexOffice = new lexAPI.LexOfficeClient('YOUR_LEXOFFICE_API_KEY');

lexOffice.invoices.get('53b8d208-76d9-4f23-bfda-ce340af8a3b3')
.then((invoice) =>{
	console.log(JSON.stringify(invoice));
})
.catch((err) =>{

  console.log(err);

  if (err instanceof lexAPI.RequestError) {
    console.log('Ooops RequestError!');

    if (err instanceof lexAPI.RequestNotFoundError) {
        console.log('404 RequestNotFoundError');
    }

    if (err instanceof lexAPI.RequestInternalServerError) {
      console.log('500 RequestInternalServerError');
    }

  }

});

HTTP errors

400	RequestBadRequestError	
401	RequestUnauthorizedError	
402	RequestPaymentRequiredError	
403	RequestForbiddenError		
404	RequestNotFoundError		
405	RequestMethodNotAllowedError		
406	RequestMethodNotAcceptableError		
409	RequestConflictError		
415	RequestUnsupportedMediaTypeError		
429	RequestTooManyRequestsError		

Server errors

500	RequestInternalServerError
503	RequestServiceUnavailableError
504	RequestGatewayTimeoutError

Legacy errors (only files, profiles and contacts endpoints)

400	RequestBadRequestLegacyError
406	RequestMethodNotAcceptableLegacyError		
500	RequestInternalServerLegacyError
1.0.0

4 months ago