---
features:
  - |
    The exception class ``RbacMalformedException`` has been broken up into the
    following discrete exceptions:

    * ``RbacMissingAttributeResponseBody`` - incomplete means that the
      response body (for show or list) is missing certain attributes
    * ``RbacPartialResponseBody`` - partial means that a list response
      only returned a subset of the possible results available.
    * ``RbacEmptyResponseBody`` - empty means that the show or list
      response body is entirely empty

    Each of the exception classes above deals with a different type of failure
    related to a soft authorization failure. This means that, rather than a
    403 error code getting returned by the server, the response body is
    incomplete in some way.
upgrade:
  - |
    The exception class ``RbacMalformedException`` has been removed. Use one
    of the following exception classes instead:

    * ``RbacMissingAttributeResponseBody``
    * ``RbacPartialResponseBody``
    * ``RbacEmptyResponseBody``
