Skip to main content

Add an API Endpoint

How to add a new endpoint to an existing module.

1. Edit the Module Spec​

Open the module's OpenAPI spec (e.g., apps/api/internal/modules/recipe/transport/api/openapi.yaml) and add the new path or operation:

paths:
/recipes:
get: ... # existing
post: # new
operationId: createRecipe
summary: Create a recipe
tags: [Recipes]
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateRecipeRequest"
responses:
"201":
description: Created
content:
application/json:
schema:
$ref: "#/components/schemas/Recipe"

Add any new schemas under components/schemas in the same file.

2. Run Generate​

pnpm generate --filter=api

This bundles all module specs and regenerates server code.

3. Implement the Handler​

The build will fail because Server no longer satisfies the generated ServerInterface. Add the missing method in transport/api/handler.go:

func (s *Server) CreateRecipe(w http.ResponseWriter, r *http.Request) {
// implementation
}

4. Verify​

go build ./...