Use the smallest construct that fits the architectural intent. The chart below maps a typical authoring question to the right Carrier construct.
Use this
When the architectural intent is
service
Define the application or bounded service boundary.
auth jwt
Protect routes with JWT-based identity.
enum
Represent a closed set of stable domain values.
model
Persist authoritative service-owned business data.
type
Define request bodies, response bodies, and reusable contract shapes.
healthcare.questionnaire
Define typed questionnaire-style healthcare inputs.
fn
Write pure helper logic that depends only on arguments.
action
Implement reusable business behavior, especially transactional or auth-aware workflows.
transaction
Define commit and rollback boundaries around related state changes.
route
Expose custom HTTP behavior and workflow operations.
crud
Expose standard resource operations when domain behavior is simple.
policy
Express access, visibility, tenant, or role rules.
job
Run durable background work.
event
Publish or consume meaningful domain facts.
schedule
Run recurring service-owned work.
client
Call an external system or another service.
Json
Accept flexible operational payloads where a stable typed contract is unnecessary.