Source: src/js/models/bookkeeper/Quota.js

define(["jquery", "underscore", "backbone"], function ($, _, Backbone) {
  /**
   * @classdesc A Quota Model represents a single instance of a Quota object from the
   * DataONE Bookkeeper data model. Quotas are limits set
   * for a particular Product, such as the number of portals allowed, disk space
   * allowed, etc. Quotas have a soft and hard limit per unit to help with communicating limit warnings.
   * See https://github.com/DataONEorg/bookkeeper for documentation on the
   * DataONE Bookkeeper service and data model.
   * @classcategory Models/Bookkeeper
   * @class Quota
   * @name Quota
   * @since 2.14.0
   * @constructor
   * @extends Backbone.Model
   */
  var Quota = Backbone.Model.extend(
    /** @lends Quota.prototype */ {
      /**
       * The name of this type of model
       * @type {string}
       */
      type: "Quota",

      /**
       * Default attributes for Quota models
       * @name Quota#defaults
       * @type {Object}
       * @property {string} id  The unique id of this Quota, from Bookkeeper
       * @property {string} quotaType  The quotaType of this Quota type
       * @property {string[]} quotaTypeOptions The controlled list of `quotaType` values that can be set on a Quota model
       * @property {string} object  The name of this type of Bookkeeper object, which will always be "quota"
       * @property {number} softLimit  The soft quota limit, which may be surpassed under certain conditions
       * @property {number} hardLimit  The hard quota limit, which cannot be surpassed
       * @property {string} unit  The unit of each Usage of this Quota (e.g. bytes, portals)
       * @property {string[]} unitOptions The controlled list of `unit` values that can be set on a Quota model
       * @property {string} customerId  The id of the Customer associated with this Quota
       * @property {string} subject  The user or group subject associated with this Quota
       * @property {number} totalUsage  The total or sum of usage of this Quota
       */
      defaults: function () {
        return {
          id: "",
          quotaType: "",
          quotaTypeOptions: ["portal", "storage", "repository_storage"],
          object: "quota",
          softLimit: 0,
          hardLimit: 0,
          unit: "",
          unitOptions: ["portal", "byte"],
          customerId: "",
          subject: "",
          totalUsage: 0,
        };
      },
    },
  );

  return Quota;
});