lib/validators/spec.js
function validateParameters (api, path, pathId, operation, operationId) {
  var pathParams = path.parameters || [];
  var operationParams = operation.parameters || [];

  // Check for duplicate path parameters
  try {
    checkForDuplicates(pathParams);
  }
  catch (e) {
    throw ono.syntax(e, "Validation failed. %s has duplicate parameters", pathId);
  }

  // Check for duplicate operation parameters
  try {
    checkForDuplicates(operationParams);
  }
  catch (e) {
    throw ono.syntax(e, "Validation failed. %s has duplicate parameters", operationId);
  }

  // Combine the path and operation parameters,
  // with the operation params taking precedence over the path params
  var params = pathParams.reduce(function (combinedParams, value) {
    var duplicate = combinedParams.some(function (param) {
      return param.in === value.in && param.name === value.name;
    });
    if (!duplicate) {
      combinedParams.push(value);
    }
    return combinedParams;
  }, operationParams.slice());

  validateBodyParameters(params, operationId);
  validatePathParameters(params, pathId, operationId);
  validateParameterTypes(params, api, operation, operationId);
}
function validateParameters (api, path, pathId, operation, operationId) {
  var pathParams = path.parameters || [];
  var operationParams = operation.parameters || [];

  // Check for duplicate path parameters
  try {
    checkForDuplicates(pathParams);
  }
  catch (e) {
    throw ono.syntax(e, "Validation failed. %s has duplicate parameters", pathId);
  }

  // Check for duplicate operation parameters
  try {
    checkForDuplicates(operationParams);
  }
  catch (e) {
    throw ono.syntax(e, "Validation failed. %s has duplicate parameters", operationId);
  }

  // Combine the path and operation parameters,
  // with the operation params taking precedence over the path params
  var params = pathParams.reduce(function (combinedParams, value) {
    var duplicate = combinedParams.some(function (param) {
      return param.in === value.in && param.name === value.name;
    });
    if (!duplicate) {
      combinedParams.push(value);
    }
    return combinedParams;
  }, operationParams.slice());

  validateBodyParameters(params, operationId);
  validatePathParameters(params, pathId, operationId);
  validateParameterTypes(params, api, operation, operationId);
}
function validateParameters ( api , path , pathId , operation , operationId ) { var pathParams = path . parameters || [ ] ; var operationParams = operation . parameters || [ ] ; // Check for duplicate path parameters try { checkForDuplicates ( pathParams ) ; } catch ( e ) { throw ono . syntax ( e , "Validation failed. %s has duplicate parameters" , pathId ) ; } // Check for duplicate operation parameters try { checkForDuplicates ( operationParams ) ; } catch ( e ) { throw ono . syntax ( e , "Validation failed. %s has duplicate parameters" , operationId ) ; } // Combine the path and operation parameters, // with the operation params taking precedence over the path params var params = pathParams . reduce ( function ( combinedParams , value ) { var duplicate = combinedParams . some ( function ( param ) { return param . in === value . in && param . name === value . name ; } ) ; if ( ! duplicate ) { combinedParams . push ( value ) ; } return combinedParams ; } , operationParams . slice ( ) ) ; validateBodyParameters ( params , operationId ) ; validatePathParameters ( params , pathId , operationId ) ; validateParameterTypes ( params , api , operation , operationId ) ; }
Validates the parameters for the given operation.

@param {SwaggerObject} api           - The entire Swagger API object
@param {object}        path          - A Path object, from the Swagger API
@param {string}        pathId        - A value that uniquely identifies the path
@param {object}        operation     - An Operation object, from the Swagger API
@param {string}        operationId   - A value that uniquely identifies the operation
Validates the parameters for the given operation .