@phasesdk/api-client-for-economic
Version:
e-conomic REST API Library for Node.js is a powerful tool designed to simplify integration with the e-conomic platform for developers building Node.js applications. With this library, developers can effortlessly leverage the full functionality of the e-co
305 lines (304 loc) • 9.74 kB
TypeScript
import { AuthToken, EconomicResponse, Pagination } from "../../types/Economic.type";
import { HttpResponse } from "../../types/Http.type";
import RestApi from "../RestApi";
import { Employee } from "./Employees";
import { DraftInvoice, InvoiceEndpoints, Totals } from "./Invoices";
import { Layout } from "./Layouts";
import { PaymentTerms } from "./PaymentTerms";
import { Templates } from "./Templates";
import { VatZone, VatZoneInfo } from "./Vatzone";
export type CustomerGroup = {
customerGroupNumber: number;
self: string;
};
export type Customer = {
authToken: any;
address: string;
attention: Attention;
balance: number;
barred: boolean;
city: string;
contacts: string;
corporateIdentificationNumber: string;
country: string;
creditLimit: number;
currency: string;
customerContact: CustomerContactInfo;
customerGroup: CustomerGroup;
customerNumber: number;
defaultDeliveryLocation: DefaultDeliveryLocation;
deliveryLocations: string;
dueAmount: number;
ean: string;
eInvoicingDisabledByDefault: boolean;
email: string;
invoices: Pick<InvoiceEndpoints, "booked" | "drafts" | "self">;
lastUpdated: string;
layout: Layout;
mobilePhone: string;
name: string;
paymentTerms: PaymentTerms;
pNumber: string;
publicEntryNumber: string;
salesPerson: Employee;
self: string;
telephoneAndFaxNumber: string;
templates: Pick<Templates, "invoice" | "invoiceLine" | "self">;
totals: Totals;
vatNumber: string;
vatZone: VatZone;
website: string;
zip: string;
};
export type CustomerInfo = Pick<Customer, "customerNumber" | "self">;
export type Attention = {
customerContactNumber: number;
self: string;
};
export type CustomerContactInfo = {
customerContactNumber: number;
self: string;
};
export type DefaultDeliveryLocation = {
deliveryLocationNumber: number;
self: string;
};
export type CustomerTotals = {
booked: string;
drafts: string;
self: string;
};
export type CustomerDeliveryLocations = {
address: string;
barred: boolean;
city: string;
country: string;
customer: CustomerInfo;
deliveryLocationNumber: number;
postalCode: string;
self: string;
sortKey: number;
termsOfDelivery: string;
};
export type CustomerContact = {
customer: CustomerInfo;
customerContactNumber: number;
deleted: boolean;
eInvoiceId: string;
email: string;
emailNotifications: [];
name: string;
notes: string;
phone: string;
self: string;
sortKey: number;
};
export type CreateCustomerContact = {
customer: CustomerInfo;
eInvoiceId: string;
email: string;
name: string;
phone: string;
sortKey: number;
notes?: string;
};
export type CreateCustomerDeliveryLocation = {
address: string;
barred: boolean;
city: string;
country: string;
postalCode: string;
sortKey: number;
termsOfDelivery: string;
};
export type SalesPerson = {
employeeNumber: number;
self: string;
};
export type References = {
customerContact: {
customerContactNumber: number;
self: string;
};
salesPerson: SalesPerson;
};
export type Recipient = {
address: string;
attention: Attention;
city: string;
country: string;
ean: string;
name: string;
publicEntryNumber: string;
vatZone: VatZoneInfo;
zip: string;
};
export type DeliveryInfo = {
address: string;
city: string;
country: string;
deliveryDate: string;
deliveryTerms: string;
zip: string;
};
export type DeliveryLocationInfo = {
deliveryLocationNumber: number;
self: string;
};
export type CustomerInvoiceTemplate = {
customer: {
customerNumber?: number;
self: string;
};
deliveryLocation: {
deliveryLocationNumber?: number;
self: string;
};
paymentTerms: {
paymentTermsNumber?: number;
self: string;
};
recipient: {
attention: {
customerContactNumber?: number;
self: string;
};
vatZone: {
vatZoneNumber?: number;
self: string;
};
address?: string;
city?: string;
country?: string;
ean?: string;
name?: string;
publicEntryNumber?: string;
zip?: string;
};
references: {
customerContact: {
customerContactNumber?: number;
self: string;
};
salesPerson: {
employeeNumber?: number;
self: string;
};
};
currency?: string;
date?: string;
dueDate?: string;
exchangeRate?: number;
delivery?: {
address?: string;
city?: string;
country?: string;
deliveryDate?: string;
deliveryTerms?: string;
zip?: string;
};
};
export type ProductInfo = {
productNumber?: string;
self: string;
};
export type CustomerInvoiceLineTemplate = {
description?: string;
product: ProductInfo;
self: string;
};
export default class Customers extends RestApi {
/**
* @constructor
*/
constructor(props: AuthToken);
getUrl(): string;
/**
* Get collection of customers.
* @see https://restdocs.e-conomic.com/#get-customers
*
* @param {number} offset
* @param {number} limit
* @returns {Promise<HttpResponse>}
*/
get(offset?: number, limit?: number): Promise<HttpResponse<EconomicResponse<Customer[], Pagination, any>>>;
/**
* Get a specific customer
* @see https://restdocs.e-conomic.com/#get-customers-customernumber
* @param {number} customerNumber
* @returns {Promise<HttpResponse>}
*/
getFor(customerNumber: number): Promise<HttpResponse<Customer>>;
/**
* Returns a specific customer totals.
* @see https://restdocs.e-conomic.com/#get-customers-customernumber-totals
* @param {number} customerNumber
* @returns {Promise<HttpResponse>}
*/
getCustomerTotals(customerNumber: number): Promise<HttpResponse<CustomerTotals>>;
/**
* Returns a specific customer delivery locations.
* @see https://restdocs.e-conomic.com/#get-customers-customernumber-delivery-locations
* @param {number} customerNumber
* @returns {Promise<HttpResponse>}
*/
getCustomerDeliveryLocations(customerNumber: number, skipPages?: number, limit?: number): Promise<HttpResponse<EconomicResponse<CustomerDeliveryLocations[], Pagination, any>>>;
/**
* Returns a specific customer contacts.
*
* @see https://restdocs.e-conomic.com/#get-customers-customernumber-contacts
* @param {number} customerNumber
* @returns {Promise<HttpResponse>}
*/
getCustomerContacts(customerNumber: number, skipPages?: number, limit?: number): Promise<HttpResponse<EconomicResponse<CustomerContact[], Pagination, any>>>;
/**
* Returns a specific customer invoices drafts.
*
* @see https://restdocs.e-conomic.com/#get-customers-customernumber-invoices-drafts
* @param {number} customerNumber
* @returns {Promise<HttpResponse>}
*/
getCustomerInvoiceDrafts(customerNumber: number, skipPages?: number, limit?: number): Promise<HttpResponse<EconomicResponse<DraftInvoice[], Pagination, any>>>;
/**
* Create a new customer
* @see https://restdocs.e-conomic.com/#customers-create
* @param {Customer} customer
* @returns {Promise<HttpResponse<Customer>>}
*/
createCustomer(customer: Customer): Promise<HttpResponse<Customer>>;
/**
* Create a new customer contact
* @see https://restdocs.e-conomic.com/#post-customers-customernumber-contacts
* @param {number} customerNumber
* @param {CreateCustomerContact} contact
* @returns {Promise<HttpResponse<CustomerContact>>}
*/
createCustomerContact(customerNumber: number, contact: CreateCustomerContact): Promise<HttpResponse<CustomerContact>>;
/**
* Create a new customer delivery location
* @see https://restdocs.e-conomic.com/#post-customers-customernumber-delivery-locations
* @param {number} customerNumber
* @param {CreateCustomerDeliveryLocation} deliveryLocation
* @returns {Promise<HttpResponse<CustomerDeliveryLocations>>}
*/
createCustomerDeliveryLocation(customerNumber: number, deliveryLocation: CreateCustomerDeliveryLocation): Promise<HttpResponse<CustomerDeliveryLocations>>;
/**
* Get a specific contact for a specific customer
* @see https://restdocs.e-conomic.com/#get-customers-customernumber-contacts-contactnumber
* @param {number} customerNumber
* @param {number} contactNumber
* @returns {Promise<HttpResponse>}
*/
getCustomerContact(customerNumber: number, contactNumber: number): Promise<HttpResponse<CustomerContact>>;
/**
* Get a specific delivery location for a specific customer
* @see https://restdocs.e-conomic.com/#get-customers-customernumber-delivery-locations-deliverylocationnumber
* @param {number} customerNumber
* @param {number} deliveryLocationNumber
* @returns {Promise<HttpResponse>}
*/
getCustomerDeliveryLocation(customerNumber: number, deliveryLocationNumber: number): Promise<HttpResponse<CustomerDeliveryLocations>>;
getCustomerTemplate(customerNumber: number): Promise<HttpResponse<Templates>>;
getCustomerInvoiceTemplate(customerNumber: number): Promise<HttpResponse<CustomerInvoiceTemplate>>;
getCustomerInvoiceLineTemplate(customerNumber: number, skipPages?: number, limit?: number): Promise<HttpResponse<EconomicResponse<CustomerInvoiceLineTemplate[], Pagination, any>>>;
}