wheels-api-generator
Generates RESTful API controllers for ColdFusion Wheels framework with proper HTTP status codes, JSON responses, and authentication middleware. Provides complete CRUD operations with error handling and validation.
Packaged view
This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.
Install command
npx @skill-hub/cli install wheels-dev-wheels-wheels-api-generator
Repository
Skill path: examples/tweet/.claude/skills/wheels-api-generator
Generates RESTful API controllers for ColdFusion Wheels framework with proper HTTP status codes, JSON responses, and authentication middleware. Provides complete CRUD operations with error handling and validation.
Open repositoryBest for
Primary workflow: Build Backend.
Technical facets: Backend.
Target audience: ColdFusion developers using Wheels framework who need to quickly create REST APIs with standard conventions.
License: Unknown.
Original source
Catalog source: SkillHub Club.
Repository owner: wheels-dev.
This is still a mirrored public skill entry. Review the repository before installing into production workflows.
What it helps with
- Install wheels-api-generator into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
- Review https://github.com/wheels-dev/wheels before adding wheels-api-generator to shared team environments
- Use wheels-api-generator for backend workflows
Works across
Favorites: 0.
Sub-skills: 0.
Aggregator: No.
Original source / Raw SKILL.md
---
name: Wheels API Generator
description: Generate RESTful API controllers with JSON responses, proper HTTP status codes, and API authentication. Use when creating API endpoints, JSON APIs, or web services. Ensures proper REST conventions and error handling.
---
# Wheels API Generator
## When to Use This Skill
Activate when:
- User requests to create an API
- User wants JSON endpoints
- User mentions: API, REST, JSON, endpoint, web service
## API Controller Template
```cfm
component extends="Controller" {
function config() {
provides("json");
verifies(only="show,update,delete", params="key", paramsTypes="integer");
filters(through="requireApiAuth");
}
function index() {
resources = model("Resource").findAll(order="createdAt DESC");
renderWith(
data=resources,
format="json",
status=200
);
}
function show() {
resource = model("Resource").findByKey(key=params.key);
if (!isObject(resource)) {
renderWith(
data={error="Resource not found"},
format="json",
status=404
);
return;
}
renderWith(
data=resource,
format="json",
status=200
);
}
function create() {
resource = model("Resource").new(params.resource);
if (resource.save()) {
renderWith(
data=resource,
format="json",
status=201,
location=urlFor(action="show", key=resource.key())
);
} else {
renderWith(
data={errors=resource.allErrors()},
format="json",
status=422
);
}
}
function update() {
resource = model("Resource").findByKey(key=params.key);
if (!isObject(resource)) {
renderWith(data={error="Not found"}, format="json", status=404);
return;
}
if (resource.update(params.resource)) {
renderWith(data=resource, format="json", status=200);
} else {
renderWith(data={errors=resource.allErrors()}, format="json", status=422);
}
}
function delete() {
resource = model("Resource").findByKey(key=params.key);
if (!isObject(resource)) {
renderWith(data={error="Not found"}, format="json", status=404);
return;
}
resource.delete();
renderWith(data={message="Deleted"}, format="json", status=204);
}
private function requireApiAuth() {
var headers = getHTTPRequestData().headers;
if (!structKeyExists(headers, "Authorization")) {
renderWith(data={error="Unauthorized"}, format="json", status=401);
abort;
}
// Validate API token
var token = replace(headers.Authorization, "Bearer ", "");
if (!isValidApiToken(token)) {
renderWith(data={error="Invalid token"}, format="json", status=401);
abort;
}
}
private boolean function isValidApiToken(required string token) {
// Token validation logic
return true;
}
}
```
## HTTP Status Codes
- **200 OK**: Successful GET, PUT, PATCH
- **201 Created**: Successful POST
- **204 No Content**: Successful DELETE
- **400 Bad Request**: Invalid request data
- **401 Unauthorized**: Missing/invalid authentication
- **403 Forbidden**: Insufficient permissions
- **404 Not Found**: Resource doesn't exist
- **422 Unprocessable Entity**: Validation errors
- **500 Internal Server Error**: Server error
---
**Generated by:** Wheels API Generator Skill v1.0