-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
dee76c8
commit 037cb2f
Showing
10 changed files
with
640 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
package webhook | ||
|
||
import "github.com/google/uuid" | ||
|
||
type AccountType string | ||
|
||
const ( | ||
AccountTypeCurrent AccountType = "CurrentAccount" | ||
AccountTypeDeposit AccountType = "DepositAccount" | ||
AccountTypeControl AccountType = "ControlAccount" | ||
AccountTypeSegregatedClient AccountType = "SegregatedClientAccount" | ||
AccountTypeInstitution AccountType = "InstitutionAccount" | ||
) | ||
|
||
// WebhookAccountCreatedPayload | ||
// This webhook confirms the account has been created | ||
type WebhookAccountCreatedPayload struct { | ||
AccountID uuid.UUID `json:"AccountId" validate:"required"` | ||
AccountName string `json:"AccountName" validate:"required"` | ||
AccountHolderLabel string `json:"AccountHolderLabel" validate:"required"` | ||
AccountIdentifiers struct { | ||
IBAN string `json:"IBAN" validate:"required"` | ||
BBAN string `json:"BBAN" validate:"required"` | ||
} `json:"AccountIdentifiers" validate:"required"` | ||
TimestampCreated string `json:"TimestampCreated" validate:"required"` | ||
AccountType AccountType `json:"AccountType" validate:"required"` | ||
} | ||
|
||
type DisabledReason string | ||
|
||
const ( | ||
DisabledReasonAccountClosed DisabledReason = "AccountClosed" | ||
DisabledReasonAccountSuspended DisabledReason = "AccountSuspended" | ||
) | ||
|
||
// WebhookAccountDisabledPayload | ||
type WebhookAccountDisabledPayload struct { | ||
AccountID uuid.UUID `json:"AccountId" validate:"required"` | ||
DisabledReason DisabledReason `json:"DisabledReason" validate:"required"` | ||
DisabledTimestamp string `json:"DisabledTimestamp" validate:"required"` | ||
} | ||
|
||
// WebhookVirtualAccountCreationFailedPayload | ||
// This webhook confirms a virtual account creation failure | ||
type WebhookVirtualAccountCreationFailedPayload struct { | ||
AccountID uuid.UUID `json:"AccountId" validate:"required"` | ||
VirtualAccountID uuid.UUID `json:"VirtualAccountId" validate:"required"` | ||
AccountIdentifier struct { | ||
IBAN string `json:"Iban" validate:"required"` | ||
BBAN string `json:"Bban" validate:"required"` | ||
ExternalIdentifier string `json:"ExternalIdentifier"` | ||
} `json:"AccountIdentifier" validate:"required"` | ||
Errors map[string]string `json:"Errors" validate:"required"` | ||
OwnerName string `json:"OwnerName"` | ||
TimestampCreated string `json:"TimestampCreated" validate:"required"` | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
package webhook | ||
|
||
import ( | ||
"github.com/brokeyourbike/clearbank-api-client-go" | ||
"github.com/google/uuid" | ||
) | ||
|
||
// WebhookFxTradeExecutedPayload | ||
// This webhook confirms that the FX trade has been executed | ||
type WebhookFxTradeExecutedPayload struct { | ||
SellAccountOwner string `json:"SellAccountOwner" validate:"required"` | ||
SellAccountIBAN string `json:"SellAccountIban" validate:"required"` | ||
BuyAccountOwner string `json:"BuyAccountOwner" validate:"required"` | ||
BuyAccountIBAN string `json:"BuyAccountIban" validate:"required"` | ||
Attestation string `json:"Attestation" validate:"required"` | ||
ValueDate clearbank.Time `json:"ValueDate" validate:"required"` | ||
InstructedAmount float64 `json:"InstructedAmount" validate:"required"` | ||
FixedSide clearbank.FixedSide `json:"FixedSide" validate:"required"` | ||
BuyCurrency string `json:"BuyCurrency" validate:"required"` | ||
SellCurrency string `json:"SellCurrency" validate:"required"` | ||
Margin float64 `json:"Margin"` | ||
MarginAccountIBAN string `json:"MarginAccountIban"` | ||
EndToEndID string `json:"EndToEndId" validate:"required"` | ||
UnstructuredInformation string `json:"UnstructuredInformation"` | ||
Symbol string `json:"Symbol" validate:"required"` | ||
FIReceivedMarginAmount float64 `json:"FIReceivedMarginAmount"` | ||
BuyAmount float64 `json:"BuyAmount" validate:"required"` | ||
SellAmount float64 `json:"SellAmount" validate:"required"` | ||
ClearbankRate float64 `json:"ClearBankRate" validate:"required"` | ||
FIRate float64 `json:"FIRate" validate:"required"` | ||
RequestedTime clearbank.Time `json:"RequestedTime" validate:"required"` | ||
ExecutedTime clearbank.Time `json:"ExecutedTime" validate:"required"` | ||
} | ||
|
||
// WebhookFxTradeSettledPayload | ||
// This webhook confirms that the FX trade has been settled | ||
type WebhookFxTradeSettledPayload struct { | ||
SellAccountOwner string `json:"SellAccountOwner" validate:"required"` | ||
SellAccountIBAN string `json:"SellAccountIban" validate:"required"` | ||
BuyAccountOwner string `json:"BuyAccountOwner" validate:"required"` | ||
BuyAccountIBAN string `json:"BuyAccountIban" validate:"required"` | ||
Attestation string `json:"Attestation" validate:"required"` | ||
ValueDate clearbank.Time `json:"ValueDate" validate:"required"` | ||
InstructedAmount float64 `json:"InstructedAmount" validate:"required"` | ||
FixedSide clearbank.FixedSide `json:"FixedSide" validate:"required"` | ||
BuyCurrency string `json:"BuyCurrency" validate:"required"` | ||
SellCurrency string `json:"SellCurrency" validate:"required"` | ||
Margin float64 `json:"Margin"` | ||
MarginAccountIBAN string `json:"MarginAccountIban"` | ||
EndToEndID string `json:"EndToEndId" validate:"required"` | ||
UnstructuredInformation string `json:"UnstructuredInformation"` | ||
DebitTransactionID uuid.UUID `json:"DebitTransactionId" validate:"required"` | ||
DebitAmount float64 `json:"DebitAmount" validate:"required"` | ||
DebitCurrency string `json:"DebitCurrency" validate:"required"` | ||
DebitCreatedAt clearbank.Time `json:"DebitCreatedAt" validate:"required"` | ||
DebitSettledAt clearbank.Time `json:"DebitSettledAt" validate:"required"` | ||
CreditTransactionID uuid.UUID `json:"CreditTransactionId" validate:"required"` | ||
CreditAmount float64 `json:"CreditAmount" validate:"required"` | ||
CreditCurrency string `json:"CreditCurrency" validate:"required"` | ||
CreditCreatedAt clearbank.Time `json:"CreditCreatedAt" validate:"required"` | ||
CreditSettledAt clearbank.Time `json:"CreditSettledAt" validate:"required"` | ||
MarginTransactionID *uuid.UUID `json:"MarginTransactionId"` | ||
MarginAmount float64 `json:"MarginAmount"` | ||
MarginCurrency string `json:"MarginCurrency"` | ||
MarginCreatedAt string `json:"MarginCreatedAt"` | ||
MarginSettledAt string `json:"MarginSettledAt"` | ||
} | ||
|
||
// WebhookFxTradeCancelledPayload | ||
// This webhook confirms that the FX trade has been canceled | ||
type WebhookFxTradeCancelledPayload struct { | ||
SellAccountOwner string `json:"SellAccountOwner" validate:"required"` | ||
SellAccountIBAN string `json:"SellAccountIban" validate:"required"` | ||
BuyAccountOwner string `json:"BuyAccountOwner" validate:"required"` | ||
BuyAccountIBAN string `json:"BuyAccountIban" validate:"required"` | ||
Attestation string `json:"Attestation" validate:"required"` | ||
ValueDate clearbank.Time `json:"ValueDate" validate:"required"` | ||
InstructedAmount float64 `json:"InstructedAmount" validate:"required"` | ||
FixedSide string `json:"FixedSide" validate:"required"` | ||
BuyCurrency string `json:"BuyCurrency" validate:"required"` | ||
SellCurrency string `json:"SellCurrency" validate:"required"` | ||
Margin float64 `json:"Margin"` | ||
MarginAccountIBAN string `json:"MarginAccountIban"` | ||
EndToEndID string `json:"EndToEndId" validate:"required"` | ||
UnstructuredInformation string `json:"UnstructuredInformation"` | ||
CancellationCode string `json:"CancellationCode" validate:"required"` | ||
CancellationReason string `json:"CancellationReason" validate:"required"` | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
package webhook | ||
|
||
// WebhookMCInternalTransfersSettledPayload | ||
// This webhook confirms that a multicurrency internal transfer request has been settled | ||
type WebhookMCInternalTransfersSettledPayload struct { | ||
EndToEndID string `json:"EndToEndId" validate:"required"` | ||
InstructedCurrency string `json:"InstructedCurrency" validate:"required"` | ||
InstructedAmount float64 `json:"InstructedAmount" validate:"required"` | ||
DebitAccountIBAN string `json:"DebitAccountIban"` | ||
CreditAccountIBAN string `json:"CreditAccountIban"` | ||
Reference string `json:"Reference"` | ||
} | ||
|
||
// WebhookMCInternalTransfersCancelledPayload | ||
// This webhook confirms that a multicurrency internal transfer request has been canceled | ||
type WebhookMCInternalTransfersCancelledPayload struct { | ||
CancellationCode string `json:"CancellationCode" validate:"required"` | ||
FailureReasons []string `json:"FailureReasons" validate:"required"` | ||
EndToEndID string `json:"EndToEndId" validate:"required"` | ||
InstructedCurrency string `json:"InstructedCurrency" validate:"required"` | ||
InstructedAmount float64 `json:"InstructedAmount" validate:"required"` | ||
DebitAccountIBAN string `json:"DebitAccountIban"` | ||
CreditAccountIBAN string `json:"CreditAccountIban"` | ||
Reference string `json:"Reference"` | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
package webhook | ||
|
||
import ( | ||
"github.com/brokeyourbike/clearbank-api-client-go" | ||
"github.com/google/uuid" | ||
) | ||
|
||
type IdentifierKind string | ||
|
||
const ( | ||
IdentifierKindIBAN IdentifierKind = "IBAN" | ||
IdentifierKindBBAN IdentifierKind = "IBAN" | ||
IdentifierKindAccountID IdentifierKind = "AccountId" | ||
IdentifierKindDescriptor IdentifierKind = "Descriptor" | ||
) | ||
|
||
type MCCYIdentifier struct { | ||
Identifier string `json:"Identifier" validate:"required"` | ||
Kind IdentifierKind `json:"Kind" validate:"required"` | ||
} | ||
|
||
// WebhookMCAccountCreatedPayload | ||
// This webhook confirms that the multicurrency account has been created | ||
type WebhookMCAccountCreatedPayload struct { | ||
AccountID uuid.UUID `json:"AccountId" validate:"required"` | ||
Name string `json:"Name" validate:"required"` | ||
Label string `json:"Label" validate:"required"` | ||
Owner string `json:"Owner" validate:"required"` | ||
Kind clearbank.MCCYAccountKind `json:"Kind" validate:"required"` | ||
Currencies []string `json:"Currencies" validate:"required"` | ||
Status clearbank.MCCYAccountStatus `json:"Status" validate:"required"` | ||
ProductID string `json:"ProductId"` | ||
CustomerID string `json:"CustomerId"` | ||
TimestampCreated clearbank.Time `json:"TimestampCreated" validate:"required"` | ||
Identifiers []MCCYIdentifier `json:"Identifiers" validate:"required"` | ||
Type string `json:"Type" validate:"required"` | ||
} | ||
|
||
// WebhookMCAccountUpdatedPayload | ||
// This webhook confirms that the multicurrency account has been updated | ||
type WebhookMCAccountUpdatedPayload struct { | ||
AccountID uuid.UUID `json:"AccountId" validate:"required"` | ||
Name string `json:"Name" validate:"required"` | ||
Label string `json:"Label" validate:"required"` | ||
Owner string `json:"Owner" validate:"required"` | ||
Kind clearbank.MCCYAccountKind `json:"Kind" validate:"required"` | ||
Currencies []string `json:"Currencies" validate:"required"` | ||
Status clearbank.MCCYAccountStatus `json:"Status" validate:"required"` | ||
ProductID string `json:"ProductId"` | ||
CustomerID string `json:"CustomerId"` | ||
TimestampCreated clearbank.Time `json:"TimestampCreated" validate:"required"` | ||
TimestampModified clearbank.Time `json:"TimestampModified" validate:"required"` | ||
StatusReason string `json:"StatusReason"` | ||
StatusInformation string `json:"StatusInformation"` | ||
Identifiers []MCCYIdentifier `json:"Identifiers" validate:"required"` | ||
Type string `json:"Type" validate:"required"` | ||
} | ||
|
||
// WebhookMCVirtualAccountCreatedPayload | ||
// This webhook confirms that the multicurrency virtual account has been created | ||
type WebhookMCVirtualAccountCreatedPayload struct { | ||
AccountID uuid.UUID `json:"AccountId" validate:"required"` | ||
VirtualAccountID uuid.UUID `json:"VirtualAccountId" validate:"required"` | ||
BatchID uuid.UUID `json:"BatchId" validate:"required"` | ||
Owner string `json:"Owner" validate:"required"` | ||
Status clearbank.MCCYAccountStatus `json:"Status" validate:"required"` | ||
Identifiers []MCCYIdentifier `json:"Identifiers" validate:"required"` | ||
TimestampCreated clearbank.Time `json:"TimestampCreated" validate:"required"` | ||
} | ||
|
||
// WebhookMCVirtualAccountUpdatedPayload | ||
// This webhook confirms that the multicurrency virtual account has been updated | ||
type WebhookMCVirtualAccountUpdatedPayload struct { | ||
AccountID uuid.UUID `json:"AccountId" validate:"required"` | ||
VirtualAccountID uuid.UUID `json:"VirtualAccountId" validate:"required"` | ||
Owner string `json:"Owner" validate:"required"` | ||
Status clearbank.MCCYAccountStatus `json:"Status" validate:"required"` | ||
Identifiers []MCCYIdentifier `json:"Identifiers" validate:"required"` | ||
TimestampCreated clearbank.Time `json:"TimestampCreated" validate:"required"` | ||
TimestampModified clearbank.Time `json:"TimestampModified" validate:"required"` | ||
StatusReason string `json:"StatusReason"` | ||
StatusInformation string `json:"StatusInformation"` | ||
} |
Oops, something went wrong.