{"id":49688,"library":"wajez-api","title":"Wajez API","description":"Wajez API is a library built on Express and Mongoose to simplify REST API development by generating CRUD routes from Mongoose models and relations. Current stable version is 1.6.2. It follows a functional programming style using Sanctuary, offering full control over routes and actions. Differentiators include automatic route generation based on model relations (one-to-many, many-to-many), built-in pagination, sorting, and filtering. Release cadence is sporadic; last update was in 2019. Suited for rapid prototyping but not actively maintained.","status":"maintenance","version":"1.6.2","language":"javascript","source_language":"en","source_url":"https://github.com/wajez/api","tags":["javascript","api","rest","express","mongodb","mongoose"],"install":[{"cmd":"npm install wajez-api","lang":"bash","label":"npm"},{"cmd":"yarn add wajez-api","lang":"bash","label":"yarn"},{"cmd":"pnpm add wajez-api","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"HTTP server framework","package":"express","optional":false},{"reason":"MongoDB ODM for models","package":"mongoose","optional":false}],"imports":[{"note":"Library supports both CJS and ESM; named export required.","wrong":"const api = require('wajez-api')","symbol":"api","correct":"import { api } from 'wajez-api'"},{"note":"Direct named import works; no default export.","wrong":"const { oneMany } = require('wajez-api').oneMany","symbol":"oneMany","correct":"import { oneMany } from 'wajez-api'"},{"note":"Available for many-to-many relations.","wrong":"","symbol":"manyMany","correct":"import { manyMany } from 'wajez-api'"}],"quickstart":{"code":"const express = require('express');\nconst bodyParser = require('body-parser');\nconst mongoose = require('mongoose');\nconst { api, oneMany } = require('wajez-api');\n\n// Connect to MongoDB\nmongoose.connect(process.env.MONGO_URI || 'mongodb://localhost/test', { useNewUrlParser: true, useUnifiedTopology: true });\n\n// Define Mongoose models\nconst UserSchema = new mongoose.Schema({ name: String, email: String });\nconst PostSchema = new mongoose.Schema({ title: String, content: String, author: { type: mongoose.Schema.Types.ObjectId, ref: 'User' } });\nconst User = mongoose.model('User', UserSchema);\nconst Post = mongoose.model('Post', PostSchema);\n\n// Define relations\nconst relations = [oneMany('User', 'posts', 'Post', 'author')];\n\n// Create Express app\nconst app = express();\napp.use(bodyParser.json());\n\n// Use wajez-api\napp.use(api([User, Post], relations));\n\n// Error handler\napp.use((err, req, res, next) => {\n  console.error(err);\n  res.status(500).json({ error: err.message });\n});\n\napp.listen(3000, () => console.log('API running on port 3000'));","lang":"javascript","description":"Sets up a REST API for User and Post models with a one-to-many relation, including error handling."},"warnings":[{"fix":"Evaluate alternative frameworks.","message":"The API generator no longer receives updates; consider using more modern solutions like NestJS or express-generator.","severity":"deprecated","affected_versions":">=1.0.0"},{"fix":"Add app.use(bodyParser.json()) before app.use(api(...)).","message":"Must use body-parser middleware before api() to parse JSON bodies; otherwise req.body is undefined.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Ensure model schemas include 'ref' in ObjectId fields used in relations.","message":"Mongoose models must be defined with proper ObjectId references for relations to work; otherwise relation routes may fail silently.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Update app to handle larger default limit or set limit explicitly.","message":"v1.2.0 changed default pagination limit from 20 to 100.","severity":"breaking","affected_versions":"<1.2.0"}],"env_vars":null,"search_vec":"'1.6.2':31 '2019':79 'action':46 'activ':86 'api':2,4,16,89 'automat':49 'base':52 'built':8,65 'built-in':64 'cadenc':72 'control':42 'crud':20 'current':27 'develop':17 'differenti':47 'express':10,91 'filter':70 'follow':33 'full':41 'function':35 'generat':19,51 'includ':48 'javascript':88 'last':75 'librari':7 'maintain':87 'mani':59,61,63 'many-to-mani':60 'model':24,54 'mongodb':92 'mongoos':12,23,93 'offer':40 'one':57 'one-to-mani':56 'pagin':67 'program':36 'prototyp':83 'rapid':82 'relat':26,55 'releas':71 'rest':15,90 'rout':21,44,50 'sanctuari':39 'simplifi':14 'sort':68 'sporad':74 'stabl':28 'style':37 'suit':80 'updat':76 'use':38 'version':29 'wajez':1,3","created_at":"2026-06-07T17:03:05.764270+00:00","updated_at":"2026-06-07T17:03:05.764270+00:00","problems":[{"fix":"Run 'npm install wajez-api' and ensure no typo in require/import statement.","cause":"Package not installed or import path incorrect.","error":"Cannot find module 'wajez-api'"},{"fix":"Verify mongoose.connect() is called and model schema is correct.","cause":"Mongoose model not connected to MongoDB or model is not properly defined.","error":"TypeError: Cannot read property 'find' of undefined"},{"fix":"Add bodyParser.json() middleware before using wajez-api.","cause":"Route parameter not parsed correctly; often due to missing body-parser.","error":"Cannot read property 'id' of undefined"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/wajez/api#readme","github":"https://github.com/wajez/api","docs":null,"changelog":null,"pypi":null,"npm":"wajez-api","openapi_spec":null,"status_page":null,"smithery":null,"categories":["devops"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-07","next_check":"2026-09-05","install_tag":null}}