#

API Docs for: v3.16.0-alpha.2
Show: Inherited Protected Private Deprecated

# InvalidError Class

Extends AdapterError
Defined in: `../adapter/addon/error.js:121`
Module: @ember-data/adapter

A `InvalidError` is used by an adapter to signal the external API was unable to process a request because the content was not semantically correct or meaningful per the API. Usually, this means a record failed some form of server-side validation. When a promise from an adapter is rejected with a `InvalidError` the record will transition to the `invalid` state and the errors will be set to the `errors` property on the record.

For Ember Data to correctly map errors to their corresponding properties on the model, Ember Data expects each error to be a valid JSON-API error object with a `source/pointer` that matches the property name. For example, if you had a Post model that looked like this.

    import Model, { attr } from '@ember-data/model';

    export default Model.extend({
      title: attr('string'),
      content: attr('string')
    });

To show an error from the server related to the `title` and `content` properties your adapter could return a promise that rejects with a `InvalidError` object that looks like this:

    import RSVP from 'RSVP';
    import RESTAdapter from '@ember-data/adapter/rest';
    import { InvalidError } from '@ember-data/adapter/error';

    export default RESTAdapter.extend({
      updateRecord() {
        // Fictional adapter that always rejects
        return RSVP.reject(new InvalidError([
          {
            detail: 'Must be unique',
            source: { pointer: '/data/attributes/title' }
          },
          {
            detail: 'Must not be blank',
            source: { pointer: '/data/attributes/content'}
          }
        ]));
      }
    });

Your backend may use different property names for your records the store will attempt to extract and normalize the errors using the serializer's `extractErrors` method before the errors get added to the model. As a result, it is safe for the `InvalidError` to wrap the error payload unaltered.

- Index

## Item Index