diff --git a/components/payments/cmd/api/internal/api/accounts.go b/components/payments/cmd/api/internal/api/accounts.go index 9ee42afd7a..6654711346 100644 --- a/components/payments/cmd/api/internal/api/accounts.go +++ b/components/payments/cmd/api/internal/api/accounts.go @@ -12,16 +12,17 @@ import ( ) type accountResponse struct { - ID string `json:"id"` - Reference string `json:"reference"` - CreatedAt time.Time `json:"createdAt"` - ConnectorID string `json:"connectorID"` - Provider string `json:"provider"` - DefaultCurrency string `json:"defaultCurrency"` // Deprecated: should be removed soon - DefaultAsset string `json:"defaultAsset"` - AccountName string `json:"accountName"` - Type string `json:"type"` - Raw interface{} `json:"raw"` + ID string `json:"id"` + Reference string `json:"reference"` + CreatedAt time.Time `json:"createdAt"` + ConnectorID string `json:"connectorID"` + Provider string `json:"provider"` + DefaultCurrency string `json:"defaultCurrency"` // Deprecated: should be removed soon + DefaultAsset string `json:"defaultAsset"` + AccountName string `json:"accountName"` + Type string `json:"type"` + Metadata map[string]string `json:"metadata"` + Raw interface{} `json:"raw"` } func listAccountsHandler(b backend.Backend) http.HandlerFunc { @@ -63,6 +64,14 @@ func listAccountsHandler(b backend.Backend) http.HandlerFunc { if ret[i].Connector != nil { data[i].Provider = ret[i].Connector.Provider.String() } + + if ret[i].Metadata != nil { + metadata := make(map[string]string) + for k, v := range ret[i].Metadata { + metadata[k] = v + } + data[i].Metadata = metadata + } } err = json.NewEncoder(w).Encode(api.BaseResponse[*accountResponse]{ @@ -114,6 +123,14 @@ func readAccountHandler(b backend.Backend) http.HandlerFunc { data.Provider = account.Connector.Provider.String() } + if account.Metadata != nil { + metadata := make(map[string]string) + for k, v := range account.Metadata { + metadata[k] = v + } + data.Metadata = metadata + } + err = json.NewEncoder(w).Encode(api.BaseResponse[accountResponse]{ Data: data, }) diff --git a/components/payments/cmd/api/internal/api/accounts_test.go b/components/payments/cmd/api/internal/api/accounts_test.go index 9e6936ac53..c6ed3d4ab2 100644 --- a/components/payments/cmd/api/internal/api/accounts_test.go +++ b/components/payments/cmd/api/internal/api/accounts_test.go @@ -154,6 +154,9 @@ func TestListAccounts(t *testing.T) { CreatedAt: time.Date(2023, 11, 22, 8, 0, 0, 0, time.UTC), Reference: "acc1", Type: models.AccountTypeInternal, + Metadata: map[string]string{ + "foo": "bar", + }, Connector: &models.Connector{ Provider: models.ConnectorProviderDummyPay, }, @@ -184,6 +187,7 @@ func TestListAccounts(t *testing.T) { DefaultAsset: listAccountsResponse[0].DefaultAsset.String(), AccountName: listAccountsResponse[0].AccountName, Type: listAccountsResponse[0].Type.String(), + Metadata: listAccountsResponse[0].Metadata, }, { ID: listAccountsResponse[1].ID.String(), @@ -336,6 +340,9 @@ func TestGetAccount(t *testing.T) { CreatedAt: time.Date(2023, 11, 22, 8, 0, 0, 0, time.UTC), Reference: "acc1", Type: models.AccountTypeInternal, + Metadata: map[string]string{ + "foo": "bar", + }, Connector: &models.Connector{ Provider: models.ConnectorProviderDummyPay, }, @@ -350,6 +357,7 @@ func TestGetAccount(t *testing.T) { DefaultCurrency: getAccountResponse.DefaultAsset.String(), DefaultAsset: getAccountResponse.DefaultAsset.String(), AccountName: getAccountResponse.AccountName, + Metadata: getAccountResponse.Metadata, Type: getAccountResponse.Type.String(), } } else { diff --git a/components/payments/openapi.yaml b/components/payments/openapi.yaml index 0d7f150a57..177cc36581 100644 --- a/components/payments/openapi.yaml +++ b/components/payments/openapi.yaml @@ -1604,9 +1604,13 @@ components: type: boolean PaymentMetadata: type: object - properties: - key: - type: string + additionalProperties: + type: string + nullable: true + AccountMetadata: + type: object + additionalProperties: + type: string nullable: true Pool: type: object @@ -1657,6 +1661,7 @@ components: - defaultAsset - accountName - type + - metadata - raw properties: id: @@ -1677,6 +1682,8 @@ components: type: string type: type: string + metadata: + $ref: '#/components/schemas/AccountMetadata' raw: type: object nullable: true