@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
152 lines (140 loc) • 4.59 kB
text/typescript
import { HttpResponse } from "../../types/Http.type";
import RestApi from "../RestApi";
import { AuthToken } from "../../types/Economic.type";
import { EconomicResponse, Pagination } from "../../types/Economic.type";
import { CustomerInfo } from "./Customers";
export type DeliveryLocation = {
deliveryLocationNumber: number;
self: string;
address: string;
barred: boolean;
city: string;
country: string;
postalCode: string;
sortKey: number;
termsOfDelivery: string;
customer: CustomerInfo;
};
export type CreateDeliveryLocation = {
address: string;
barred: boolean;
city: string;
country: string;
postalCode: string;
sortKey: number;
termsOfDelivery: string;
};
export type Delivery = {
address: string;
city: string;
country: string;
deliveryDate: string;
deliveryTerms: string;
zip: string;
};
export type UpdateDeliveryLocation = Partial<CreateDeliveryLocation>;
export default class DeliveryLocations extends RestApi {
/**
* @constructor
*/
constructor(props: AuthToken) {
super(props);
}
getUrl(): string {
throw new Error("Method not implemented.");
}
/**
* Get collection of delivery locations for a specific customer.
* @see https://restdocs.e-conomic.com/#get-customers-customernumber-delivery-locations
*
* @param {number} customerNumber
* @param {number} offset
* @param {number} limit
* @returns {Promise<HttpResponse>}
*/
get(
customerNumber: number,
offset: number = 0,
limit: number = 100
): Promise<HttpResponse<EconomicResponse<DeliveryLocation[], Pagination>>> {
const requestObj = {
method: "get",
url: `/customers/${customerNumber}/delivery-locations?skippages=${offset}&pagesize=${limit}`,
};
return this._httpRequest<EconomicResponse<DeliveryLocation[], Pagination>>(
requestObj
);
}
/**
* Get a specific delivery location for a customer.
* @see https://restdocs.e-conomic.com/#get-customers-customernumber-delivery-locations-deliverylocationnumber
* @param {number} customerNumber
* @param {number} deliveryLocationNumber
* @returns {Promise<HttpResponse>}
*/
getFor(
customerNumber: number,
deliveryLocationNumber: number
): Promise<HttpResponse<DeliveryLocation>> {
const requestObj = {
method: "get",
url: `/customers/${customerNumber}/delivery-locations/${deliveryLocationNumber}`,
};
return this._httpRequest<DeliveryLocation>(requestObj);
}
/**
* Create a new delivery location for a specific customer.
* @see https://restdocs.e-conomic.com/#post-customers-customernumber-delivery-locations
* @param {number} customerNumber
* @param {CreateDeliveryLocation} deliveryLocation
* @returns {Promise<HttpResponse<DeliveryLocation>>}
*/
createDeliveryLocation(
customerNumber: number,
deliveryLocation: CreateDeliveryLocation
): Promise<HttpResponse<DeliveryLocation>> {
const requestObj = {
method: "post",
url: `/customers/${customerNumber}/delivery-locations`,
data: deliveryLocation,
};
return this._httpRequest<DeliveryLocation>(requestObj);
}
/**
* Update an existing delivery location for a specific customer.
* @see https://restdocs.e-conomic.com/#put-customers-customernumber-delivery-locations-deliverylocationnumber
* @param {number} customerNumber
* @param {number} deliveryLocationNumber
* @param {UpdateDeliveryLocation} deliveryLocation
* @returns {Promise<HttpResponse<DeliveryLocation>>}
*/
updateDeliveryLocation(
customerNumber: number,
deliveryLocationNumber: number,
deliveryLocation: UpdateDeliveryLocation
): Promise<HttpResponse<DeliveryLocation>> {
const requestObj = {
method: "put",
url: `/customers/${customerNumber}/delivery-locations/${deliveryLocationNumber}`,
data: deliveryLocation,
};
return this._httpRequest<DeliveryLocation>(requestObj);
}
/**
* Delete an existing delivery location for a specific customer.
* @see https://restdocs.e-conomic.com/#delete-customers-customernumber-delivery-locations-deliverylocationnumber
* @param {number} customerNumber
* @param {number} deliveryLocationNumber
* @returns {Promise<HttpResponse<void>>}
*/
deleteDeliveryLocation(
customerNumber: number,
deliveryLocationNumber: number
): Promise<HttpResponse<void>> {
const requestObj = {
method: "delete",
url: `/customers/${customerNumber}/delivery-locations/${deliveryLocationNumber}`,
};
return this._httpRequest<void>(requestObj);
}
}