billoget-sdk
Version:
Official Node.js SDK for Billoget Public API - Complete budget, customer, and product management with approval workflows and UBS support
398 lines • 9.26 kB
TypeScript
export interface ApiResponse<T> {
data: T;
pagination?: {
page: number;
limit: number;
total: number;
};
}
export interface PaginationInfo {
page: number;
limit: number;
total: number;
hasMore: boolean;
}
export interface ApiError {
message: string;
error?: string;
statusCode?: number;
}
export declare enum BudgetState {
GENERATED = 0,
APPROVED = 1,
REJECTED = 2
}
export interface BudgetItem {
id: number;
productId?: number;
packageId?: number;
quantity: number;
unitPrice: number;
subtotal: number;
budgetId: number;
product?: Product;
package?: any;
}
export interface Budget {
id: number;
currency: string;
issueDate: Date;
expirationDate: Date;
customerId: number;
sellerId: number;
businessId?: number;
minimumPaymentToConfirm: number;
state: BudgetState;
subtotal: number;
total: number;
iva: number;
preferenceId?: string;
paymentUrl?: string;
paymentData?: any;
publicToken?: string;
comments?: string;
ubs_id?: string;
ubs_version?: string;
sign_track_id?: string;
business_budget_id?: number;
isArchived?: boolean;
customer?: Customer;
seller?: any;
business?: any;
items?: BudgetItem[];
createdAt?: Date;
updatedAt?: Date;
}
export interface CreateBudgetItemDto {
productId?: number;
packageId?: number;
quantity: number;
unitPrice: number;
}
export interface CreateBudgetDto {
currency: string;
issueDate: Date;
expirationDate: Date;
customerId: number;
sellerId: number;
businessId?: number;
minimumPaymentToConfirm: number;
subtotal: number;
total: number;
iva: number;
comments?: string;
items: CreateBudgetItemDto[];
}
export interface CreateBudgetRequest extends CreateBudgetDto {
}
export declare enum ApprovalStatus {
PENDING = "pending",
APPROVED = "approved",
REJECTED = "rejected",
CANCELLED = "cancelled"
}
export declare enum ApprovalAction {
SUBMITTED = "submitted",
APPROVED = "approved",
REJECTED = "rejected",
CANCELLED = "cancelled",
RESUBMITTED = "resubmitted"
}
export interface BudgetApproval {
id: number;
budgetId: number;
requestedBy: number;
approvedBy?: number;
status: ApprovalStatus;
action: ApprovalAction;
comments?: string;
requestNotes?: string;
reviewedAt?: Date;
approvedAt?: Date;
rejectedAt?: Date;
createdAt: Date;
updatedAt: Date;
budget?: Budget;
requestedByUser?: any;
approvedByUser?: any;
}
export interface ApprovalConfig {
id: number;
businessId: number;
requiresBudgetApproval: boolean;
ownerCanApprove: boolean;
adminCanApprove: boolean;
approvalThreshold?: number;
isActive: boolean;
createdAt: Date;
updatedAt: Date;
}
export interface BudgetApprover {
id: number;
businessId: number;
userId: number;
isActive: boolean;
assignedBy: number;
notes?: string;
createdAt: Date;
updatedAt: Date;
user?: any;
assignedByUser?: any;
}
export interface CreateApprovalConfigDto {
requiresBudgetApproval: boolean;
ownerCanApprove: boolean;
adminCanApprove: boolean;
approvalThreshold?: number;
isActive?: boolean;
}
export interface SubmitApprovalDto {
budgetId: number;
requestNotes?: string;
}
export interface ProcessApprovalDto {
action: "approve" | "reject";
comments?: string;
}
export interface AssignApproverDto {
userId: number;
notes?: string;
}
export interface PublicBudget {
id: number;
currency: string;
issueDate: Date;
expirationDate: Date;
minimumPaymentToConfirm: number;
state: BudgetState;
subtotal: number;
total: number;
iva: number;
paymentUrl?: string;
publicToken: string;
comments?: string;
ubs_id?: string;
ubs_version?: string;
sign_track_id?: string;
business_budget_id?: number;
isArchived?: boolean;
customer?: Pick<Customer, "firstName" | "lastName" | "email" | "phoneNumber">;
seller?: {
id: number;
displayName: string;
email: string;
business?: {
id: number;
name: string;
logo?: string;
category?: string;
description?: string;
address?: string;
alternativeAddress?: string;
phone?: string;
email?: string;
website?: string;
};
};
business?: {
id: number;
name: string;
logo?: string;
category?: string;
description?: string;
address?: string;
alternativeAddress?: string;
phone?: string;
email?: string;
website?: string;
};
items?: Array<{
id: number;
quantity: number;
unitPrice: number;
subtotal: number;
product?: {
id: number;
productCode: string;
description: string;
category: string;
price: number;
type: ProductType;
netContent?: number;
netContentUnit?: string;
sku?: string;
barcode?: string;
imageUrl?: string;
isActive: boolean;
};
package?: {
name: string;
description?: string;
totalPrice?: number;
};
}>;
}
export interface Customer {
id: number;
firstName: string;
lastName: string;
email?: string;
phoneNumber?: string;
dni?: number;
cuit?: string;
businessId: number;
createdAt?: Date;
updatedAt?: Date;
}
export interface CreateCustomerDto {
firstName: string;
lastName: string;
email?: string;
phoneNumber?: string;
dni?: number;
cuit?: string;
businessId?: number;
}
export interface UpdateCustomerDto {
firstName?: string;
lastName?: string;
email?: string;
phoneNumber?: string;
dni?: number;
cuit?: string;
}
export declare enum ProductType {
PRODUCT = "product",
SERVICE = "service"
}
export interface Product {
id: number;
productCode: string;
description: string;
category: string;
price: number;
stock: number;
netContent?: number;
netContentUnit?: string;
isActive: boolean;
sku?: string;
barcode?: string;
imageUrl?: string;
type: ProductType;
businessId?: number;
variants?: ProductVariant[];
createdAt: Date;
updatedAt: Date;
}
export interface ProductVariant {
id: number;
name: string;
description?: string;
price: number;
stock: number;
sku?: string;
barcode?: string;
imageUrl?: string;
attributes?: Record<string, any>;
isActive: boolean;
sortOrder: number;
productId: number;
product?: Product;
createdAt: Date;
updatedAt: Date;
}
export interface CreateProductDto {
productCode: string;
description: string;
category: string;
price: number;
stock?: number;
netContent?: number;
netContentUnit?: string;
isActive?: boolean;
sku?: string;
barcode?: string;
imageUrl?: string;
type?: ProductType;
businessId?: number;
}
export interface CreateProductVariantDto {
name: string;
description?: string;
price: number;
stock?: number;
sku?: string;
barcode?: string;
imageUrl?: string;
attributes?: Record<string, any>;
isActive?: boolean;
sortOrder?: number;
productId: number;
}
export interface CreateProductWithVariantsDto extends CreateProductDto {
variants?: Omit<CreateProductVariantDto, "productId">[];
}
export interface UpdateProductDto {
productCode?: string;
description?: string;
category?: string;
price?: number;
stock?: number;
netContent?: number;
netContentUnit?: string;
isActive?: boolean;
sku?: string;
barcode?: string;
imageUrl?: string;
type?: ProductType;
}
export interface UpdateProductVariantDto {
name?: string;
description?: string;
price?: number;
stock?: number;
sku?: string;
barcode?: string;
imageUrl?: string;
attributes?: Record<string, any>;
isActive?: boolean;
sortOrder?: number;
productId?: number;
}
export interface PaginationQuery {
page?: number;
limit?: number;
}
export interface PaginatedResponse<T> {
data: T[];
meta: {
totalItems: number;
itemCount: number;
itemsPerPage: number;
totalPages: number;
currentPage: number;
};
}
export interface CustomerQuery extends PaginationQuery {
search?: string;
}
export interface ProductQuery extends PaginationQuery {
category?: string;
search?: string;
type?: ProductType;
isActive?: boolean;
}
export interface BudgetQuery extends PaginationQuery {
status?: BudgetState;
customerId?: number;
search?: string;
startDate?: string;
endDate?: string;
}
export interface ApprovalQuery extends PaginationQuery {
status?: ApprovalStatus;
budgetId?: number;
userId?: number;
}
export * from "./query";
//# sourceMappingURL=index.d.ts.map