added

API Release 1.60

🚀New Features

We are super excited to announce the launch of our Mutual Funds and Fixed Income products. If you haven’t seen our press releases on these products, check out this link to learn more. With the launch of these products, you are able to introduce new investment strategies to your clients which will improve stickiness to your existing offering. We have truly focused on making the onboarding of customers’ of these products just as easy as our current equities solution. Interested in learning more about Mutual Funds or Fixed Income, please reach out to [email protected] or your assigned account manager.

For Fixed Income, we have released two endpoints in this release: The filter endpoint (exclusive to Fixed Income) helps in screening the fixed-income instrument universe and supports a rich filtering criteria. After filtering, the instrument endpoint can then be used to get reference data for that instrument, similar to equities. To learn more about the filer API, click here

For Mutual Funds, we have released broad support for the new instruments across our APIs. Mutual funds can now be viewed, generate quotes, and be traded using the same structure and approach as equities.

We also created additional readings about Mutual Funds and Fixed Income feel free to review them as well.



🎉Feature Enhancements

Automated Customer Account Transfer Service


Rejection Reason

We are continuously making improvements to our ACATs API which will make transferring assets IN and OUT of DriveWealth as easy as making an API request. We added a rejection reason on the following requests and events.

{
  ...
  "rejectionInfo": {  
    "rejectionCode": "ACCOUNT_NOT_MATCH",
    "rejectionReason": "Account Title Mismatch"
  },
  ...
}

Clearing Number

We are adding a 4 character maximum for clearingNo when creating the ACATs request.

{  
  ...  
  "clearingNo": "1234" ✅  
  ...  
}
{
  ...  
  "clearingNo": "12345" ❌  
  ..., 
}

Duplicate ACATs

Duplicate ACATs are no longer a problem. We can now detect when an ACAT request has been made, and reject the API request. The request caller will now receive an E020 when this occurs.

{  
  "errorCode": "E020",  
  "message": "Value already exists. Details: ACAT transfer request is already exist for DWBE000762"

}


Pattern Day Trading

We continue to make improvements to our PDT monitoring system. We will now be including equity amount breakdown on the account events and on the violations endpoint. To learn more about this, see here

{  
  ... 
  "accountEquityBreakdown": {  
     "longMarketValue": 3166.83,  
     "debitBalance":  46836.04,  
     "accountEquity":  -43669.21  
  }  
}


Cancel Rebill

Struggling to initiate Cancel Rebills for commission adjustment, multi-leg positions, and transactions that qualify for TEFRA or PTP withholding; consider that a thing of the past. You can now achieve all of that through our Cancel Rebill APIs.

{  
  "orderNo": "KCYC000204",  
  "type": "COMMISSION_ADJUSTMENT",  
  "reason": "PARTNER_TECHNICAL_ERROR",  
  "adjustedcommission": 4.99,  
  "comment":"adjustment on the commission",  
  "metadata":[{}]
}


Instruments

We are adding a new field called Market Tier to the instrument's details endpoint.

{  
  "id": "a67422af-8504-43df-9e63-7361eb0bd99e",  
  "incorporatedCountry": "USA",  
  "marketTier": "Q",  
  ...
}



👠🐛 Squashing Bugs

No bugs squashed this release. Seeing some issues and wanting to report them?
Login into DriveHub, in the top navigation bar look for the❓ icon. Click on it, and click “Open a support ticket.”



🪵 Changelog

## Modified endpoints

**`POST /accounts`**

* Request payload:
    * Changed object property `accountFeatures`
        * Changed object property `mutualFunds`
            * Added property `dividendReinvestmentOptOutWhen`
            * Added property `capitalGainsReinvestment`
            * Added property `capitalGainsReinvestmentOptInWhen`
            * Added property `capitalGainsReinvestmentOptOutWhen`
            * Added property `dividendReinvestment`
            * Added property `dividendReinvestmentOptInWhen`
            * Removed property `mfDivCapGainReinvestmentOptOutWhen`
            * Removed property `mfDivCapGainReinvestment`
            * Removed property `mfDivCapGainReinvestmentOptInWhen`
* Modified the `200` response:
    * Changed object property `accountFeatures`
        * Changed object property `mutualFunds`
            * Added property `capitalGainsReinvestment`
            * Added property `capitalGainsReinvestmentOptInWhen`
            * Added property `capitalGainsReinvestmentOptOutWhen`
            * Added property `dividendReinvestment`
            * Added property `dividendReinvestmentOptInWhen`
            * Added property `dividendReinvestmentOptOutWhen`
            * Removed property `mfDivCapGainReinvestmentOptInWhen`
            * Removed property `mfDivCapGainReinvestmentOptOutWhen`
            * Removed property `mfDivCapGainReinvestment`

**`GET /accounts/{accountID}`**

* Modified the `200` response:
    * Changed object property `account`
        * Changed object property `accountFeatures`
            * Changed object property `mutualFunds`
                * Added property `capitalGainsReinvestment`
                * Added property `capitalGainsReinvestmentOptInWhen`
                * Added property `capitalGainsReinvestmentOptOutWhen`
                * Added property `dividendReinvestment`
                * Added property `dividendReinvestmentOptInWhen`
                * Added property `dividendReinvestmentOptOutWhen`
                * Removed property `mfDivCapGainReinvestmentOptInWhen`
                * Removed property `mfDivCapGainReinvestmentOptOutWhen`
                * Removed property `mfDivCapGainReinvestment`

**`PATCH /accounts/{accountID}`**

* Request payload:
    * Changed object property `accountFeatures`
        * Changed object property `mutualFunds`
            * Added property `dividendReinvestmentOptOutWhen`
            * Added property `capitalGainsReinvestment`
            * Added property `capitalGainsReinvestmentOptInWhen`
            * Added property `capitalGainsReinvestmentOptOutWhen`
            * Added property `dividendReinvestment`
            * Added property `dividendReinvestmentOptInWhen`
            * Removed property `mfDivCapGainReinvestmentOptOutWhen`
            * Removed property `mfDivCapGainReinvestment`
            * Removed property `mfDivCapGainReinvestmentOptInWhen`
* Modified the `200` response:
    * Modified the schema option `AccountDetailRes`
        * Changed object property `account`
            * Changed object property `accountFeatures`
                * Changed object property `mutualFunds`
                    * Added property `capitalGainsReinvestment`
                    * Added property `capitalGainsReinvestmentOptInWhen`
                    * Added property `capitalGainsReinvestmentOptOutWhen`
                    * Added property `dividendReinvestment`
                    * Added property `dividendReinvestmentOptInWhen`
                    * Added property `dividendReinvestmentOptOutWhen`
                    * Removed property `mfDivCapGainReinvestmentOptInWhen`
                    * Removed property `mfDivCapGainReinvestmentOptOutWhen`
                    * Removed property `mfDivCapGainReinvestment`

**`GET /accounts/{accountID}/reports/exchange-history`**

* Modified the `200` response:
    * Changed object property `exchanges`
        * Changed enum values for property `status`
            * Added values `NEW`, `FILLED`, `REJECTED`, `PENDING_CANCEL`, `CANCELED`, `FILLED`

**`GET /accounts/{accountID}/summary/exchanges`**

* Modified the `200` response:
    * Changed array property `exchanges`
        * Changed nested object schema
            * Changed enum values for property `status`
                * Added values `NEW`, `FILLED`, `REJECTED`, `PENDING_CANCEL`, `CANCELED`, `FILLED`

**`GET /accounts/{accountID}/violations`**

* Modified the `200` response:
    * Added property `accountEquityBreakdown`

**`GET /asset-transfers`**

* Modified the `200` response:
    * Changed root array
        * Modified the schema option `ACATSTransfer`
            * Added property `rejectionInfo`
            * Changed property `clearingNo`
                * Minimum length was set to 1
                * Minimum length was set to 4

**`POST /asset-transfers/acats`**

* Request payload:
    * Changed property `clearingNo`
        * Minimum length was set to 1
        * Minimum length was set to 4
* Modified the `200` response:
    * Added property `rejectionInfo`
    * Changed property `clearingNo`
        * Minimum length was set to 1
        * Minimum length was set to 4

**`GET /asset-transfers/cancel-rebills`**

* Modified the `200` response:
    * Changed array property `data`
        * Changed nested object schema
            * Added property `errorAccountID`
            * Added property `accountID`
            * Added property `adjustedCommission`
            * Removed property `createdBy`
            * Removed property `updatedBy`
            * Removed property `created`
            * Changed object property `type`
                * Changed enum values for property `name`
                    * Added values `COMMISSION_ADJUSTMENT`

**`POST /asset-transfers/cancel-rebills`**

* Request payload:
    * Added property `adjustedCommission`
    * Changed enum values for property `type`
        * Added values `COMMISION_ADJUSTMENT`
* Modified the `200` response:
    * Changed object property `type`
        * Changed enum values for property `name`
            * Added values `COMMISSION_ADJUSTMENT`

**`GET /asset-transfers/cancel-rebills/{id}`**

* Modified the `200` response:
    * Changed object property `type`
        * Changed enum values for property `name`
            * Added values `COMMISSION_ADJUSTMENT`

**`GET /asset-transfers/{assetTransferID}`**

* Modified the `200` response:
    * Modified the schema option `ACATSTransfer`
        * Added property `rejectionInfo`
        * Changed property `clearingNo`
            * Minimum length was set to 1
            * Minimum length was set to 4

**`GET /exchanges/{exchangeID}`**

* Modified the `200` response:
    * Added property `cancelledWhen`
    * Added property `rejectedWhen`
    * Added property `cancelledBy`
    * Added property `rejectedReason`
    * Added property `createdWhen`
    * Removed property `created`
    * Changed enum values for property `status`
        * Added values `NEW`, `FILLED`, `REJECTED`, `PENDING_CANCEL`, `CANCELED`, `FILLED`

**`GET /instruments/{symbolOrInstrumentID}`**

* Modified the `200` response:
    * Modified the schema option `EquityInstrumentDetails`
        * Added property `marketTier`