***************************************************************************
@constructs CollectionOperationConfig
@description The base class for all collection configs
@memberof carbond.collections
function() {

    /***************************************************************************
     * @property {string} [description] -- A brief description of the operation used by the
     *                                     documentation generator
     */
    this.description = undefined

    /***************************************************************************
     * @property {object} [example]
     * @description An example response body used for documentation
     */
    this.example = undefined

    /***************************************************************************
     * @property {boolean} [noDocument=false] -- Exclude the operation from "docgen" API
     *                                           documentation
     */
    this.noDocument = false

    /***************************************************************************
     * @property {boolean} [allowUnauthenticated=false] -- Allow unauthenticated requests to
     *                                                     the operation
     */
    this.allowUnauthenticated = false

    /***************************************************************************
     * @property {string} idParameterName -- The collection object id property name. Note, this
     *                                       is configured on the top level
     *                                       {@link carbond.collections.Collection} and set on the
     *                                       configure during initialzation.
     * @readonly
     */
    this.idParameterName = undefined

    /***************************************************************************
     * @property {object.<string, carbond.OperationParameter>} parameters
     * @description Operation specific parameters (e.g., "skip", "limit"). These will be passed down
     *              to the operation handlers via the ``options`` parameter if they are not explicitly
     *              passed via another leading parameter (e.g., "id" and "update" for
     *              {@link carbond.collections.Collection.updateObject}).
     */
    this.parameters = {}

    /***************************************************************************
     * @property {object.<string, *>} options
     * @description Any additional options that should be added to options passed down to a handler.
     */
    this.options = undefined

    /***************************************************************************
     * @property {Object.<string, carbond.OperationResponse>} responses
     * @description Add custom responses for an operation. Note, this will override all default
     *              responses.
     */
    this.responses = {}

    /***************************************************************************
     * @property {carbond.Endpoint} endpoint -- The parent endpoint/collection that this
     *                                          configuration is a member of
     * @readonly
     */
    this.endpoint = null
  }