# Customer Products

## Get Customer Products

> Get Customer Products

```json
{"openapi":"3.0.1","info":{"title":"Products","version":"1.0"},"tags":[{"name":"Products","description":"Products"}],"servers":[{"url":"https://tvda-api.platform-test.tradevest.ai","description":"Test"},{"url":"https://tvda-api.platform-pretest.tradevest.ai","description":"Pretest"}],"security":[{"Bearer":[]}],"components":{"securitySchemes":{"Bearer":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"/oauth2/token","scopes":{}}}}},"schemas":{"ProductTypeEnum":{"title":"ProductTypeEnum","type":"string","description":"Product type","enum":["CASH","WALLET","DEPOSITORY"]},"ProductCodeEnum":{"title":"ProductCodeEnum","type":"string","description":"Product code","enum":["WALLET","BALANCE_ACCOUNT","DEPOSITORY_ACCOUNT","CURRENCY_WALLET"]},"CustomerProductStatus":{"title":"CustomerProductStatus","type":"string","enum":["RECEIVED","INVALID","PENDING","ACTIVE","BLOCKED","RESTRICTED","INACTIVE","CLOSED","REJECTED"]},"CustomerProduct":{"type":"object","properties":{"customerProductId":{"type":"string","format":"uuid","description":"The ID of the product instance for the given customer"},"productCode":{"$ref":"#/components/schemas/ProductCodeEnum"},"productType":{"$ref":"#/components/schemas/ProductTypeEnum"},"currency":{"$ref":"#/components/schemas/CurrencyEnum"},"accountData":{"$ref":"#/components/schemas/AccountData"},"cryptoAssets":{"type":"array","items":{"$ref":"#/components/schemas/CryptoAsset"}},"traditionalAssets":{"type":"array","items":{"$ref":"#/components/schemas/TraditionalAsset"}},"status":{"$ref":"#/components/schemas/CustomerProductStatus"},"proxyIds":{"type":"array","items":{"type":"string","format":"uuid"}},"createdOn":{"type":"string","format":"date-time","readOnly":true},"modifiedOn":{"type":"string","format":"date-time","readOnly":true},"openedOn":{"type":"string","format":"date-time","readOnly":true},"closedOn":{"type":"string","format":"date-time","readOnly":true}},"required":["customerProductId","productCode","productType","status","createdOn","modifiedOn"]},"CurrencyEnum":{"title":"CurrencyEnum","type":"string","description":"Currency of the product's balance. Currency code in ISO 4217","enum":["EUR"]},"AccountData":{"type":"object","required":["iban","bic","modifiedOn"],"properties":{"iban":{"type":"string"},"bic":{"type":"string"},"availableBalance":{"description":"The Available Balance represents the total amount of funds in an account that are accessible for trading at any given moment. \\\nThis balance takes into account all cleared and processed transactions, including deposits and withdrawals, but also adjusts for any holds, pending transactions, or uncleared checks.","type":"number"},"withdrawableBalance":{"description":"The withdrawableBalance attribute represents the portion of funds in an account that are available for withdrawal. This balance includes only those funds that have been fully settled and are currently present in the account, ensuring that the amount is readily accessible for outgoing transfers.","type":"number"},"modifiedOn":{"type":"string","format":"date-time","readOnly":true}}},"CryptoAsset":{"type":"object","properties":{"cryptoSymbol":{"type":"string"},"quantity":{"type":"number","description":"The quantity (position) of the cryptoSymbol held in the customer's wallet"},"availableQuantity":{"type":"number","description":"The available quantity (position) of the cryptoSymbol held in the customer's wallet that can be traded"},"avgBuyPrice":{"type":"number","description":"Average buy price, calculated using fifo method"},"modifiedOn":{"type":"string","format":"date-time","readOnly":true}},"required":["cryptoSymbol","quantity","availableQuantity","avgBuyPrice","modifiedOn"]},"TraditionalAsset":{"type":"object","properties":{"isin":{"type":"string","description":"ISIN of the asset"},"quantity":{"type":"number","description":"The quantity (position) of the asset held in the customer's account"},"availableQuantity":{"type":"number","description":"The available quantity (position) of the asset held in the customer's account that can be traded"},"avgBuyPrice":{"type":"number","description":"Average buy price, calculated using fifo method"},"modifiedOn":{"type":"string","format":"date-time","readOnly":true}},"required":["isin","quantity","availableQuantity","avgBuyPrice","modifiedOn"]},"ErrorMessage":{"title":"ErrorMessage","type":"object","properties":{"message":{"type":"string"},"responseType":{"type":"string"},"validationString":{"minLength":1,"type":"string"},"requestId":{"type":"string"},"errorCode":{"type":"string","maxLength":255},"errorDetails":{"type":"array","items":{"$ref":"#/components/schemas/ErrorDetails"}}},"required":["message","responseType","requestId"]},"ErrorDetails":{"title":"ErrorDetails","type":"object","properties":{"field":{"type":"string","maxLength":255},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ErrorDetailsExplanation"}}},"required":["field"]},"ErrorDetailsExplanation":{"title":"ErrorDetailsExplanation","type":"object","properties":{"code":{"type":"string","maxLength":255},"parameter":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}}},"paths":{"/customers/{customerId}/products":{"get":{"summary":"Get Customer Products","tags":["Products"],"parameters":[{"schema":{"type":"string","format":"uuid"},"name":"customerId","in":"path","required":true,"description":"Customer ID"},{"schema":{"$ref":"#/components/schemas/ProductTypeEnum"},"in":"query","name":"productType","description":"The type of a product"},{"schema":{"$ref":"#/components/schemas/ProductCodeEnum"},"in":"query","name":"productCode","description":"The code of a product"},{"schema":{"$ref":"#/components/schemas/CustomerProductStatus"},"in":"query","name":"status","description":"The status of the account"},{"schema":{"type":"string"},"in":"query","name":"iban","description":"The IBAN of a cash account"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CustomerProduct"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}},"operationId":"get-customer-products","description":"Get Customer Products"}}}}
```

## Create Customer Product

> Create Customer Product

```json
{"openapi":"3.0.1","info":{"title":"Products","version":"1.0"},"tags":[{"name":"Products","description":"Products"}],"servers":[{"url":"https://tvda-api.platform-test.tradevest.ai","description":"Test"},{"url":"https://tvda-api.platform-pretest.tradevest.ai","description":"Pretest"}],"security":[{"Bearer":[]}],"components":{"securitySchemes":{"Bearer":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"/oauth2/token","scopes":{}}}}},"schemas":{"CreateCustomerProductResult":{"type":"object","properties":{"customerProductId":{"type":"string","format":"uuid"}},"required":["customerProductId"]},"ErrorMessage":{"title":"ErrorMessage","type":"object","properties":{"message":{"type":"string"},"responseType":{"type":"string"},"validationString":{"minLength":1,"type":"string"},"requestId":{"type":"string"},"errorCode":{"type":"string","maxLength":255},"errorDetails":{"type":"array","items":{"$ref":"#/components/schemas/ErrorDetails"}}},"required":["message","responseType","requestId"]},"ErrorDetails":{"title":"ErrorDetails","type":"object","properties":{"field":{"type":"string","maxLength":255},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ErrorDetailsExplanation"}}},"required":["field"]},"ErrorDetailsExplanation":{"title":"ErrorDetailsExplanation","type":"object","properties":{"code":{"type":"string","maxLength":255},"parameter":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]},"CustomerProductData":{"type":"object","properties":{"productCode":{"$ref":"#/components/schemas/ProductCodeEnum"}},"required":["productCode"]},"ProductCodeEnum":{"title":"ProductCodeEnum","type":"string","description":"Product code","enum":["WALLET","BALANCE_ACCOUNT","DEPOSITORY_ACCOUNT","CURRENCY_WALLET"]}}},"paths":{"/customers/{customerId}/products":{"post":{"summary":"Create Customer Product","tags":["Products"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCustomerProductResult"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}},"operationId":"create-customer-product","description":"Create Customer Product","parameters":[{"schema":{"type":"string","format":"uuid"},"name":"customerId","in":"path","required":true,"description":"customer ID the partner is creating a product for"},{"schema":{"type":"string","format":"uuid"},"name":"Requestor-ID","in":"header","required":true,"description":"Unique requestor identification in UUID format"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerProductData"}}}}}}}}
```

## Get Customer Product

> Get Customer Product

```json
{"openapi":"3.0.1","info":{"title":"Products","version":"1.0"},"tags":[{"name":"Products","description":"Products"}],"servers":[{"url":"https://tvda-api.platform-test.tradevest.ai","description":"Test"},{"url":"https://tvda-api.platform-pretest.tradevest.ai","description":"Pretest"}],"security":[{"Bearer":[]}],"components":{"securitySchemes":{"Bearer":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"/oauth2/token","scopes":{}}}}},"schemas":{"CustomerProduct":{"type":"object","properties":{"customerProductId":{"type":"string","format":"uuid","description":"The ID of the product instance for the given customer"},"productCode":{"$ref":"#/components/schemas/ProductCodeEnum"},"productType":{"$ref":"#/components/schemas/ProductTypeEnum"},"currency":{"$ref":"#/components/schemas/CurrencyEnum"},"accountData":{"$ref":"#/components/schemas/AccountData"},"cryptoAssets":{"type":"array","items":{"$ref":"#/components/schemas/CryptoAsset"}},"traditionalAssets":{"type":"array","items":{"$ref":"#/components/schemas/TraditionalAsset"}},"status":{"$ref":"#/components/schemas/CustomerProductStatus"},"proxyIds":{"type":"array","items":{"type":"string","format":"uuid"}},"createdOn":{"type":"string","format":"date-time","readOnly":true},"modifiedOn":{"type":"string","format":"date-time","readOnly":true},"openedOn":{"type":"string","format":"date-time","readOnly":true},"closedOn":{"type":"string","format":"date-time","readOnly":true}},"required":["customerProductId","productCode","productType","status","createdOn","modifiedOn"]},"ProductCodeEnum":{"title":"ProductCodeEnum","type":"string","description":"Product code","enum":["WALLET","BALANCE_ACCOUNT","DEPOSITORY_ACCOUNT","CURRENCY_WALLET"]},"ProductTypeEnum":{"title":"ProductTypeEnum","type":"string","description":"Product type","enum":["CASH","WALLET","DEPOSITORY"]},"CurrencyEnum":{"title":"CurrencyEnum","type":"string","description":"Currency of the product's balance. Currency code in ISO 4217","enum":["EUR"]},"AccountData":{"type":"object","required":["iban","bic","modifiedOn"],"properties":{"iban":{"type":"string"},"bic":{"type":"string"},"availableBalance":{"description":"The Available Balance represents the total amount of funds in an account that are accessible for trading at any given moment. \\\nThis balance takes into account all cleared and processed transactions, including deposits and withdrawals, but also adjusts for any holds, pending transactions, or uncleared checks.","type":"number"},"withdrawableBalance":{"description":"The withdrawableBalance attribute represents the portion of funds in an account that are available for withdrawal. This balance includes only those funds that have been fully settled and are currently present in the account, ensuring that the amount is readily accessible for outgoing transfers.","type":"number"},"modifiedOn":{"type":"string","format":"date-time","readOnly":true}}},"CryptoAsset":{"type":"object","properties":{"cryptoSymbol":{"type":"string"},"quantity":{"type":"number","description":"The quantity (position) of the cryptoSymbol held in the customer's wallet"},"availableQuantity":{"type":"number","description":"The available quantity (position) of the cryptoSymbol held in the customer's wallet that can be traded"},"avgBuyPrice":{"type":"number","description":"Average buy price, calculated using fifo method"},"modifiedOn":{"type":"string","format":"date-time","readOnly":true}},"required":["cryptoSymbol","quantity","availableQuantity","avgBuyPrice","modifiedOn"]},"TraditionalAsset":{"type":"object","properties":{"isin":{"type":"string","description":"ISIN of the asset"},"quantity":{"type":"number","description":"The quantity (position) of the asset held in the customer's account"},"availableQuantity":{"type":"number","description":"The available quantity (position) of the asset held in the customer's account that can be traded"},"avgBuyPrice":{"type":"number","description":"Average buy price, calculated using fifo method"},"modifiedOn":{"type":"string","format":"date-time","readOnly":true}},"required":["isin","quantity","availableQuantity","avgBuyPrice","modifiedOn"]},"CustomerProductStatus":{"title":"CustomerProductStatus","type":"string","enum":["RECEIVED","INVALID","PENDING","ACTIVE","BLOCKED","RESTRICTED","INACTIVE","CLOSED","REJECTED"]},"ErrorMessage":{"title":"ErrorMessage","type":"object","properties":{"message":{"type":"string"},"responseType":{"type":"string"},"validationString":{"minLength":1,"type":"string"},"requestId":{"type":"string"},"errorCode":{"type":"string","maxLength":255},"errorDetails":{"type":"array","items":{"$ref":"#/components/schemas/ErrorDetails"}}},"required":["message","responseType","requestId"]},"ErrorDetails":{"title":"ErrorDetails","type":"object","properties":{"field":{"type":"string","maxLength":255},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ErrorDetailsExplanation"}}},"required":["field"]},"ErrorDetailsExplanation":{"title":"ErrorDetailsExplanation","type":"object","properties":{"code":{"type":"string","maxLength":255},"parameter":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}}},"paths":{"/products/{customerProductId}":{"get":{"summary":"Get Customer Product","tags":["Products"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerProduct"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}},"operationId":"get-single-customer-product","description":"Get Customer Product"}}}}
```

## Update customer product

> Update customer product. It is used to close the customer product.

```json
{"openapi":"3.0.1","info":{"title":"Products","version":"1.0"},"tags":[{"name":"Products","description":"Products"}],"servers":[{"url":"https://tvda-api.platform-test.tradevest.ai","description":"Test"},{"url":"https://tvda-api.platform-pretest.tradevest.ai","description":"Pretest"}],"security":[{"Bearer":[]}],"components":{"securitySchemes":{"Bearer":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"/oauth2/token","scopes":{}}}}},"schemas":{"CustomerProductUpdate":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/CustomerProductStatusUpdate"}},"required":["status"]},"CustomerProductStatusUpdate":{"title":"CustomerProductStatusUpdate","type":"string","enum":["CLOSED"]},"ErrorMessage":{"title":"ErrorMessage","type":"object","properties":{"message":{"type":"string"},"responseType":{"type":"string"},"validationString":{"minLength":1,"type":"string"},"requestId":{"type":"string"},"errorCode":{"type":"string","maxLength":255},"errorDetails":{"type":"array","items":{"$ref":"#/components/schemas/ErrorDetails"}}},"required":["message","responseType","requestId"]},"ErrorDetails":{"title":"ErrorDetails","type":"object","properties":{"field":{"type":"string","maxLength":255},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ErrorDetailsExplanation"}}},"required":["field"]},"ErrorDetailsExplanation":{"title":"ErrorDetailsExplanation","type":"object","properties":{"code":{"type":"string","maxLength":255},"parameter":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}}},"paths":{"/products/{customerProductId}":{"patch":{"parameters":[{"schema":{"type":"string","format":"uuid"},"name":"Requestor-ID","in":"header","required":true,"description":"Unique requestor identification in UUID format"}],"summary":"Update customer product","tags":["Products"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerProductUpdate"}}}},"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}},"operationId":"update-customer-product","description":"Update customer product. It is used to close the customer product."}}}}
```

## Create Securities Account Statement

> Create securities Account Statement

```json
{"openapi":"3.0.1","info":{"title":"Products","version":"1.0"},"tags":[{"name":"Products","description":"Products"}],"servers":[{"url":"https://tvda-api.platform-test.tradevest.ai","description":"Test"},{"url":"https://tvda-api.platform-pretest.tradevest.ai","description":"Pretest"}],"security":[{"Bearer":[]}],"components":{"securitySchemes":{"Bearer":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"/oauth2/token","scopes":{}}}}},"schemas":{"CreateSecuritiesAccountStatementResult":{"type":"object","properties":{"securitiesAccountStatementId":{"type":"string","format":"uuid"}},"required":["securitiesAccountStatementId"]},"ErrorMessage":{"title":"ErrorMessage","type":"object","properties":{"message":{"type":"string"},"responseType":{"type":"string"},"validationString":{"minLength":1,"type":"string"},"requestId":{"type":"string"},"errorCode":{"type":"string","maxLength":255},"errorDetails":{"type":"array","items":{"$ref":"#/components/schemas/ErrorDetails"}}},"required":["message","responseType","requestId"]},"ErrorDetails":{"title":"ErrorDetails","type":"object","properties":{"field":{"type":"string","maxLength":255},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ErrorDetailsExplanation"}}},"required":["field"]},"ErrorDetailsExplanation":{"title":"ErrorDetailsExplanation","type":"object","properties":{"code":{"type":"string","maxLength":255},"parameter":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}}},"paths":{"/products/{customerProductId}/documents/securities-account-statement":{"post":{"summary":"Create Securities Account Statement","tags":["Products"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSecuritiesAccountStatementResult"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}},"operationId":"create-securities-account-statement","description":"Create securities Account Statement"}}}}
```

## Retrieve Security Account Statement

> Get securities Account Statement

```json
{"openapi":"3.0.1","info":{"title":"Products","version":"1.0"},"tags":[{"name":"Products","description":"Products"}],"servers":[{"url":"https://tvda-api.platform-test.tradevest.ai","description":"Test"},{"url":"https://tvda-api.platform-pretest.tradevest.ai","description":"Pretest"}],"security":[{"Bearer":[]}],"components":{"securitySchemes":{"Bearer":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"/oauth2/token","scopes":{}}}}},"schemas":{"ErrorMessage":{"title":"ErrorMessage","type":"object","properties":{"message":{"type":"string"},"responseType":{"type":"string"},"validationString":{"minLength":1,"type":"string"},"requestId":{"type":"string"},"errorCode":{"type":"string","maxLength":255},"errorDetails":{"type":"array","items":{"$ref":"#/components/schemas/ErrorDetails"}}},"required":["message","responseType","requestId"]},"ErrorDetails":{"title":"ErrorDetails","type":"object","properties":{"field":{"type":"string","maxLength":255},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ErrorDetailsExplanation"}}},"required":["field"]},"ErrorDetailsExplanation":{"title":"ErrorDetailsExplanation","type":"object","properties":{"code":{"type":"string","maxLength":255},"parameter":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}}},"paths":{"/products/{customerProductId}/documents/securities-account-statement/{securityAccountStatementId}":{"get":{"summary":"Retrieve Security Account Statement","tags":["Products"],"responses":{"200":{"description":"OK","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}},"operationId":"get-securities-account-statement","description":"Get securities Account Statement"}}}}
```
