Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions src/PexCard.Api.Client.Core/Enums/BillPaymentMethodType.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace PexCard.Api.Client.Core.Enums
{
public enum BillPaymentMethodType
{
VendorCard,
ACH
}
}
8 changes: 8 additions & 0 deletions src/PexCard.Api.Client.Core/Enums/BillSortDirection.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace PexCard.Api.Client.Core.Enums
{
public enum BillSortDirection
{
Ascending,
Descending
}
}
10 changes: 10 additions & 0 deletions src/PexCard.Api.Client.Core/Enums/BillSortField.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
namespace PexCard.Api.Client.Core.Enums
{
public enum BillSortField
{
Id,
Amount,
Created,
DueDate
}
}
10 changes: 10 additions & 0 deletions src/PexCard.Api.Client.Core/Enums/VendorStatus.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
namespace PexCard.Api.Client.Core.Enums
{
public enum VendorStatus
{
Draft = 10,
Pending = 20,
Onboarded = 30,
Closed = 40
}
}
12 changes: 12 additions & 0 deletions src/PexCard.Api.Client.Core/Enums/VendorStatusTrigger.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
namespace PexCard.Api.Client.Core.Enums
{
public enum VendorStatusTrigger
{
New = 10,
Submitted = 20,
Active = 30,
Inactive = 35,
Rejected = 40,
Offboarded = 45
}
}
15 changes: 15 additions & 0 deletions src/PexCard.Api.Client.Core/Enums/VendorStatusUpdateTrigger.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
namespace PexCard.Api.Client.Core.Enums
{
/// <summary>
/// Status triggers allowed for vendor status update operations.
/// This is a subset of VendorStatusTrigger that excludes triggers
/// that require dedicated endpoints (Rejected) or are only used
/// during vendor creation (New).
/// </summary>
public enum VendorStatusUpdateTrigger
{
Active = 30,
Inactive = 35,
Offboarded = 45
}
}
60 changes: 60 additions & 0 deletions src/PexCard.Api.Client.Core/IPexApiClient.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
using PexCard.Api.Client.Core.Enums;
Expand Down Expand Up @@ -135,6 +136,65 @@ public interface IPexApiClient

Task SendVendorCardData(string externalToken, VendorCardDataModel data, CancellationToken cancelToken = default);

// Vendor Management
Task<GetVendorsResponseModel> GetVendors(string externalToken, GetVendorsRequestModel request = null, CancellationToken cancelToken = default);

Task<VendorModel> GetVendor(string externalToken, int vendorId, CancellationToken cancelToken = default);

Task<VendorModel> CreateVendor(string externalToken, CreateVendorRequestModel request, CancellationToken cancelToken = default);

Task<VendorModel> UpdateVendor(string externalToken, int vendorId, UpdateVendorRequestModel request, CancellationToken cancelToken = default);

Task<VendorModel> UpdateVendorStatus(string externalToken, int vendorId, UpdateVendorStatusRequestModel request, CancellationToken cancelToken = default);

Task<VendorModel> ApproveVendor(string externalToken, int vendorId, CancellationToken cancelToken = default);

Task<VendorModel> RejectVendor(string externalToken, int vendorId, CancellationToken cancelToken = default);

// Vendor Documents
Task<VendorModel> AddVendorDocument(string externalToken, int vendorId, string fileName, Stream fileContent, CancellationToken cancelToken = default);

Task<VendorModel> DeleteVendorDocument(string externalToken, int vendorId, int documentId, CancellationToken cancelToken = default);

// Vendor Cards (linked cardholder accounts)
Task<VendorModel> AddVendorCard(string externalToken, int vendorId, AddVendorCardRequestModel request, CancellationToken cancelToken = default);

Task<VendorModel> UpdateVendorCard(string externalToken, int vendorId, int cardholderAcctId, CancellationToken cancelToken = default);

// Vendor Bank Accounts
Task<VendorModel> AddVendorBankAccount(string externalToken, int vendorId, AddVendorBankAccountRequestModel request, CancellationToken cancelToken = default);

Task<VendorModel> UpdateVendorBankAccount(string externalToken, int vendorId, long bankAccountId, UpdateVendorBankAccountRequestModel request, CancellationToken cancelToken = default);

// Bill Payments
Task<BillModel> GetBill(string externalToken, int billId, CancellationToken cancelToken = default);

Task<GetBillPaymentsResponseModel> GetBillPayments(string externalToken, int billId, CancellationToken cancelToken = default);

Task<BillModel> CreateBill(string externalToken, CreateBillRequestModel request, CancellationToken cancelToken = default);

Task<SearchBillsResponseModel> SearchBills(string externalToken, SearchBillsRequestModel request = null, CancellationToken cancelToken = default);

Task UpdateBillTags(string externalToken, int billId, UpdateBillTagsRequestModel request, CancellationToken cancelToken = default);

Task DeleteBillTags(string externalToken, int billId, CancellationToken cancelToken = default);

Task<BillNoteResponseModel> AddBillNote(string externalToken, int billId, AddBillNoteRequestModel request, CancellationToken cancelToken = default);

Task UpdateBillNote(string externalToken, int billId, long noteId, UpdateBillNoteRequestModel request, CancellationToken cancelToken = default);

Task DeleteBillNote(string externalToken, int billId, long noteId, CancellationToken cancelToken = default);

Task<UploadBillAttachmentResponseModel> AddBillAttachment(string externalToken, int billId, string fileName, Stream fileContent, CancellationToken cancelToken = default);

Task<BillModel> SubmitBill(string externalToken, int billId, CancellationToken cancelToken = default);

Task<BillModel> ApproveBill(string externalToken, int billId, ApproveBillRequestModel request = null, CancellationToken cancelToken = default);

Task<BillModel> RejectBill(string externalToken, int billId, RejectBillRequestModel request = null, CancellationToken cancelToken = default);

Task<BillModel> ProcessBill(string externalToken, int billId, ProcessBillRequestModel request = null, CancellationToken cancelToken = default);

Task<GetSpendingRulesetsResponseModel> GetSpendingRulesets(string externalToken, CancellationToken cancelToken = default);

Task<GetSpendingRulesetResponseModel> GetSpendingRuleset(string externalToken, int rulesetId, CancellationToken cancelToken = default);
Expand Down
9 changes: 9 additions & 0 deletions src/PexCard.Api.Client.Core/Models/AddBillNoteRequestModel.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
namespace PexCard.Api.Client.Core.Models
{
public class AddBillNoteRequestModel
{
public string Note { get; set; }
public bool VisibleToCardholder { get; set; }
public bool SystemGenerated { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
namespace PexCard.Api.Client.Core.Models
{
public class AddVendorBankAccountRequestModel
{
public string BankName { get; set; }
public string BankAccountNumber { get; set; }
public string BankRoutingNumber { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace PexCard.Api.Client.Core.Models
{
public class AddVendorCardRequestModel
{
public int CardholderAcctId { get; set; }
}
}
7 changes: 7 additions & 0 deletions src/PexCard.Api.Client.Core/Models/ApproveBillRequestModel.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace PexCard.Api.Client.Core.Models
{
public class ApproveBillRequestModel
{
public string Reason { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
namespace PexCard.Api.Client.Core.Models
{
public class BillApprovalDetailsModel
{
public long? ApprovalId { get; set; }
public string ApprovalStatus { get; set; }
public string ApprovalWorkflowType { get; set; }
}
}
11 changes: 11 additions & 0 deletions src/PexCard.Api.Client.Core/Models/BillAttachmentModel.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using System;

namespace PexCard.Api.Client.Core.Models
{
public class BillAttachmentModel
{
public string Id { get; set; }
public string FileName { get; set; }
public DateTimeOffset UploadedDate { get; set; }
}
}
29 changes: 29 additions & 0 deletions src/PexCard.Api.Client.Core/Models/BillModel.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;

namespace PexCard.Api.Client.Core.Models
{
public class BillModel
{
public int BillId { get; set; }
public string MerchantName { get; set; }
public decimal Amount { get; set; }
public string PaymentRequestStatus { get; set; }
public string PaymentRequestStatusTrigger { get; set; }
public string PaymentRequestType { get; set; }
public string PayeeFundsDestinationType { get; set; }
public DateTimeOffset PurchaseDate { get; set; }
public DateTimeOffset? PayoutDate { get; set; }
public long? MetadataId { get; set; }
public DateTimeOffset CreatedDate { get; set; }
public bool HasPaymentError { get; set; }
public long? PayeePexId { get; set; }
public BillPaymentDetailsModel BillPayment { get; set; }
public BillApprovalDetailsModel ApprovalDetails { get; set; }
public bool IsUserApprovalRestricted { get; set; }
public bool IsUserInApprovalRoute { get; set; }
public List<BillAttachmentModel> Attachments { get; set; }
public BillTagsModel Tags { get; set; }
public List<BillNoteModel> Notes { get; set; }
}
}
15 changes: 15 additions & 0 deletions src/PexCard.Api.Client.Core/Models/BillNoteModel.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
using System;

namespace PexCard.Api.Client.Core.Models
{
public class BillNoteModel
{
public long Id { get; set; }
public string Note { get; set; }
public bool VisibleToCardholder { get; set; }
public bool SystemGenerated { get; set; }
public long? CreatedByUserId { get; set; }
public string CreatedByUser { get; set; }
public DateTime CreatedDateTime { get; set; }
}
}
7 changes: 7 additions & 0 deletions src/PexCard.Api.Client.Core/Models/BillNoteResponseModel.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace PexCard.Api.Client.Core.Models
{
public class BillNoteResponseModel
{
public long NoteId { get; set; }
}
}
11 changes: 11 additions & 0 deletions src/PexCard.Api.Client.Core/Models/BillPaymentDetailsModel.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using System;

namespace PexCard.Api.Client.Core.Models
{
public class BillPaymentDetailsModel
{
public DateTimeOffset BillDate { get; set; }
public DateTimeOffset? DueDate { get; set; }
public string BillRefNo { get; set; }
}
}
20 changes: 20 additions & 0 deletions src/PexCard.Api.Client.Core/Models/BillPaymentItemModel.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
using System;

namespace PexCard.Api.Client.Core.Models
{
public class BillPaymentItemModel
{
public int PaymentId { get; set; }
public string PaymentStatus { get; set; }
public string PaymentStatusTrigger { get; set; }
public int? PaymentTransferId { get; set; }
public decimal Amount { get; set; }
public long? PayeeBankAccountId { get; set; }
public long? PayeeUserId { get; set; }
public DateTimeOffset? PayoutDate { get; set; }
public DateTimeOffset? OutboundAchCreationDate { get; set; }
public DateTimeOffset? ExpectedPaymentDate { get; set; }
public DateTimeOffset Created { get; set; }
public DateTimeOffset? Updated { get; set; }
}
}
19 changes: 19 additions & 0 deletions src/PexCard.Api.Client.Core/Models/BillSearchItemModel.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using System;

namespace PexCard.Api.Client.Core.Models
{
public class BillSearchItemModel
{
public int BillId { get; set; }
public string BillRefNo { get; set; }
public decimal Amount { get; set; }
public DateTimeOffset Created { get; set; }
public long CreatedByUserId { get; set; }
public string CreatedByUser { get; set; }
public long PayeePexId { get; set; }
public string PayeeName { get; set; }
public DateTimeOffset? DueDate { get; set; }
public string PaymentRequestStatus { get; set; }
public string PaymentRequestStatusTrigger { get; set; }
}
}
10 changes: 10 additions & 0 deletions src/PexCard.Api.Client.Core/Models/BillTagAllocationModel.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
using System.Collections.Generic;

namespace PexCard.Api.Client.Core.Models
{
public class BillTagAllocationModel
{
public decimal Amount { get; set; }
public List<BillTagValueModel> Tags { get; set; }
}
}
8 changes: 8 additions & 0 deletions src/PexCard.Api.Client.Core/Models/BillTagValueModel.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace PexCard.Api.Client.Core.Models
{
public class BillTagValueModel
{
public string TagId { get; set; }
public object Value { get; set; }
}
}
24 changes: 24 additions & 0 deletions src/PexCard.Api.Client.Core/Models/BillTagsModel.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using System.Collections.Generic;

namespace PexCard.Api.Client.Core.Models
{
public class BillTagsModel
{
public bool IsSplit { get; set; }
public List<BillTagAllocationResponseModel> Allocations { get; set; }
}

public class BillTagAllocationResponseModel
{
public decimal Amount { get; set; }
public List<BillTagValueResponseModel> Tags { get; set; }
}

public class BillTagValueResponseModel
{
public string TagId { get; set; }
public string TagName { get; set; }
public object TagOptionValue { get; set; }
public string TagOptionName { get; set; }
}
}
12 changes: 12 additions & 0 deletions src/PexCard.Api.Client.Core/Models/CreateBillRequestModel.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
using PexCard.Api.Client.Core.Enums;

namespace PexCard.Api.Client.Core.Models
{
public class CreateBillRequestModel
{
public int VendorId { get; set; }
public decimal Amount { get; set; }
public BillPaymentMethodType? PaymentMethod { get; set; }
public BillPaymentDetailsModel BillPayment { get; set; }
}
}
18 changes: 18 additions & 0 deletions src/PexCard.Api.Client.Core/Models/CreateVendorRequestModel.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
namespace PexCard.Api.Client.Core.Models
{
public class CreateVendorRequestModel
{
public string VendorName { get; set; }
public string EmailForRemittance { get; set; }
public string WebSite { get; set; }
public string CustomId { get; set; }
public string TaxId { get; set; }
public string Note { get; set; }
public VendorAddressModel VendorAddress { get; set; }
public VendorContactModel VendorContact { get; set; }
public long? MerchantId { get; set; }
public bool SendNotification { get; set; }
public bool VendorCardPaymentEnabled { get; set; }
public bool AchPaymentEnabled { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
using System.Collections.Generic;

namespace PexCard.Api.Client.Core.Models
{
public class GetBillPaymentsResponseModel
{
public List<BillPaymentItemModel> Payments { get; set; }
}
}
Loading