# Errors

Every response carries an `Errors` array. An error means the request was rejected and
nothing was created.
**New asset strategy** can return these validation codes with `400`:
| Code | Raised when |
|  --- | --- |
| `PORTFOLIO_ASSET_STRATEGY_ASSET_STRATEGY_COUNT` | `Allocations` is missing or empty. |
| `ASSET_STRATEGY_SELECT` | An allocation has no `AssetClass`. |
| `ASSET_STRATEGY_INVALID_ASSET_CLASS` | An `AssetClass` is not one of the supported Class asset classes. |
| `PORTFOLIO_ASSET_STRATEGY_ASSET_CLASS_NOT_UNIQUE` | The same `AssetClass` appears more than once. |
| `ASSET_STRATEGY_MINGTRMAX` | An allocation's `LowerRange` is not less than its `HigherRange`. |
| `ASSET_STRATEGY_MAX_OUT_OF_RANGE` | An allocation's `HigherRange` is more than 100. |
| `PORTFOLIO_ASSET_STRATEGY_TARGETRANGE` | An allocation's `TargetRange` is outside its `LowerRange` and `HigherRange`. |
| `PORTFOLIO_ASSET_STRATEGY_TARGET` | Targets are supplied and do not total exactly 100%. |
| `PORTFOLIO_ASSET_STRATEGY_PERCENTAGE` | The `LowerRange` values total 100% or more, or the `HigherRange` values total less than 100%. One code covers both. |
| `PORTFOLIO_ASSET_ALREADY_EXIST` | The fund already has a strategy for the same effective date. |
| `API_MODEL_BINDING` | `EffectiveDate` is not a valid calendar date, such as 29 February in a non-leap year. |

Every operation can also return `API_NOT_AUTHORISED` (401), `FORBIDDEN` (403),
`API_NOT_FOUND` (404) and `API_INTERNAL_ERROR` (500).

