Skip to content

Commit

Permalink
feat: virt account
Browse files Browse the repository at this point in the history
  • Loading branch information
brokeyourbike committed Jun 23, 2024
1 parent 447b393 commit 9799405
Showing 1 changed file with 24 additions and 2 deletions.
26 changes: 24 additions & 2 deletions accounts.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,11 @@ type AccountsClient interface {
UpdateAccount(ctx context.Context, accountID uuid.UUID, payload UpdateAccountPayload) error

// virtual accounts
FetchVirtualAccount(ctx context.Context, accountID, virtualAccountID uuid.UUID) (VirtualAccountResponse, error)
FetchVirtualAccountsFor(ctx context.Context, accountID uuid.UUID, pageNum int, pageSize int) (VirtualAccountsResponse, error)
CreateVirtualAccounts(ctx context.Context, accountID uuid.UUID, payload CreateVirtualAccountsPayload) error
UpdateVirtualAccount(ctx context.Context, accountID uuid.UUID, virtualAccountID uuid.UUID, payload UpdateVirtualAccountPayload) error
DisableVirtualAccount(ctx context.Context, accountID uuid.UUID, virtualAccountID uuid.UUID) error
UpdateVirtualAccount(ctx context.Context, accountID, virtualAccountID uuid.UUID, payload UpdateVirtualAccountPayload) error
DisableVirtualAccount(ctx context.Context, accountID, virtualAccountID uuid.UUID) error
}

type AccountStatus string
Expand Down Expand Up @@ -143,6 +144,27 @@ func (c *client) UpdateAccount(ctx context.Context, accountID uuid.UUID, payload
return c.do(ctx, req)
}

type VirtualAccountResponse struct {
ID uuid.UUID `json:"id"`
Name string `json:"name"`
Owner string `json:"label"`
Type string `json:"type"`
Status VirtualAccountStatus `json:"status"`
Currencies []string `json:"currency"`
IBAN string `json:"iban"`
}

func (c *client) FetchVirtualAccount(ctx context.Context, accountID, virtualAccountID uuid.UUID) (data VirtualAccountResponse, err error) {
req, err := c.newRequest(ctx, http.MethodGet, fmt.Sprintf("/v2/Accounts/%s/Virtual/%s", accountID, virtualAccountID), nil)
if err != nil {
return data, fmt.Errorf("failed to create request: %w", err)
}

req.ExpectStatus(http.StatusOK)
req.DecodeTo(&data)
return data, c.do(ctx, req)
}

type VirtualAccountsResponse struct {
Accounts []struct {
ID uuid.UUID `json:"id"`
Expand Down

0 comments on commit 9799405

Please sign in to comment.