code: def build_api_error(response, blob=None):
      
      try:
          blob = blob or response.json()
      except json.JSONDecodeError:
          blob = {}
      error_list = blob.get('errors', None)
      error = (error_list[0] if error_list else {})
      if error:
          error_id = error.get('id', '')
          error_message = error.get('message', '')
      else:
          # In the case of an OAuth-specific error, the response data is the error
          # blob, and the keys are slightly different. See
          # https://developers.coinbase.com/api/v2#error-response
          error_id = blob.get('error')
          error_message = blob.get('error_description')
      error_class = (
          _error_id_to_class.get(error_id, None) or
          _status_code_to_class.get(response.status_code, APIError))
      return error_class(response, error_id, error_message, error_list)
docs: Helper method for creating errors and attaching HTTP response/request
      details to them.