API Field Descriptions
Field descriptions are the most-read part of API documentation. Users scan for specific fields and need clear, consistent information.
Field Description Structure
Every field description answers: What is it? (purpose), What type? (data type), Required? (mandatory), Constraints? (limits/validations), Example? (valid data)
Table Format (Preferred)
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| id | uuid | — | The unique identifier of the Account |
| name | string | Yes | The display name of the Account (max 255 chars) |
| status | enum | — | Account status: `ACTIVE`, `INACTIVE`, `BLOCKED` |
Note: Use — for response-only fields (not applicable for requests).
For nested objects: status.code, status.description
Description Patterns by Type
| Type |
Pattern |
Example |
| UUID |
"The unique identifier of the [Entity]" |
id: uuid — The unique identifier of the Account |
| String |
"[Purpose] (constraints)" |
code: string — The asset code (max 10 chars, uppercase, e.g., "BRL") |
| String (format) |
"[Purpose] (format example)" |
email: string — Email address (e.g., "user@example.com") |
| Enum |
"[Purpose]: val1, val2, val3" |
type: enum — Asset type: \currency`, `crypto`, `commodity`` |
| Boolean |
"If true, [what happens]. Default: [value]" |
allowSending: boolean — If \true`, sending permitted. Default: `true`` |
| Integer |
"[Purpose] (range)" |
scale: integer — Decimal places (0-18) |
| Timestamp |
"Timestamp of [event] (UTC)" |
createdAt: timestamptz — Timestamp of creation (UTC) |
| Object (jsonb) |
"[Purpose] including [fields]" |
status: jsonb — Status information including code and description |
| Array |
"List of [what it contains]" |
operations: array — List of operations in the transaction |
Required vs Optional
In Requests:
Yes = Must be provided
No = Optional
Conditional = Required in specific scenarios (explain in description)
In Responses: Use — (response fields are always returned or null)
Special Field Documentation
| Pattern |
Format |
| Default values |
"Results per page. Default: 10" |
| Nullable fields |
"Soft deletion timestamp, or null if not deleted" |
| Deprecated fields |
"[Deprecated] Use route instead" |
| Read-only fields |
"Read-only. Generated by the system" |
| Relationships |
"References an Asset code. Must exist in the Ledger" |
Writing Good Descriptions
| Don't |
Do |
| "The name" |
"The display name of the Account" |
| "Status info" |
"Account status: ACTIVE, INACTIVE, BLOCKED" |
| "A number" |
"Balance version, incremented with each transaction" |
| "The code" |
"The asset code (max 10 chars, uppercase)" |
| "The timestamp" |
"Timestamp of creation (UTC)" |
Quality Checklist
Standards Loading (MANDATORY)
Before writing field descriptions:
- Load API documentation skill -
ring:writing-api-docs for endpoint context
- Load voice and tone -
ring:voice-and-tone for consistent style
- Verify data types - Confirm actual types from API schema
HARD GATE: CANNOT document fields without verified type information.
Blocker Criteria - STOP and Report
| Condition |
Decision |
Action |
| Field types unknown |
STOP |
Report: "Need schema or type definitions" |
| Constraints not defined |
STOP |
Report: "Need validation rules for constraints" |
| Required/optional unclear |
STOP |
Report: "Need field requirement status" |
| Enum values undefined |
STOP |
Report: "Need complete list of enum values" |
| Default values unknown |
STOP |
Report: "Need default values for optional fields" |
Cannot Be Overridden
These requirements are NON-NEGOTIABLE:
- MUST document purpose for every field
- MUST include accurate data type
- MUST specify required vs optional status
- MUST document all constraints (length, format, range)
- MUST use realistic example values (not "foo", "bar")
- CANNOT leave fields undocumented
- CANNOT guess types or constraints
Severity Calibration
| Severity |
Criteria |
Examples |
| CRITICAL |
Wrong type, missing required fields |
Documents string as integer, skips required field |
| HIGH |
Missing constraints, no examples |
Max length undocumented, no example values |
| MEDIUM |
Vague descriptions, inconsistent format |
"The name" instead of "The display name of the Account" |
| LOW |
Could be clearer, minor format issues |
Description could include more context |
Pressure Resistance
| User Says |
Your Response |
| "Field names are self-explanatory" |
"Self-explanatory to you ≠ self-explanatory to users. MUST write explicit descriptions." |
| "Just copy the schema" |
"Schema lacks context. MUST add purpose, constraints, and examples." |
| "Skip constraints, they're in validation" |
"Constraints MUST be documented. Users shouldn't discover limits via errors." |
| "Use placeholder examples (foo, bar)" |
"MUST use realistic examples. Placeholders don't demonstrate proper usage." |
| "Required/optional is obvious" |
"Nothing is obvious. MUST explicitly mark required vs optional." |
Anti-Rationalization Table
| Rationalization |
Why It's WRONG |
Required Action |
| "Schema documents the type" |
Schema doesn't explain purpose or usage |
MUST add human description |
| "ID fields don't need description" |
Users need to know what ID refers to |
Document ALL fields including IDs |
| "Boolean is self-documenting" |
Users need to know effect of true/false |
MUST explain boolean behavior |
| "Timestamp format is standard" |
Which standard? Timezone? Format? |
MUST specify format and timezone |
| "Enum values are obvious" |
Enum meanings may not be clear |
MUST describe each enum value |
| "Same field, same description everywhere" |
Context may differ |
Tailor description to context |
When This Skill is Not Needed
Signs that field descriptions already meet standards:
- ALL fields have purpose-explaining descriptions
- ALL data types documented accurately
- ALL required/optional status clearly marked
- ALL constraints documented (length, format, valid values)
- ALL default values noted for optional fields
- ALL nullable behavior explained
- ALL deprecated fields marked with migration path
- ALL examples use realistic values
If all above are true: Field descriptions are complete, no changes needed.
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: lerianstudio-ring-api-field-descriptions3description: API Field Descriptions4---56# API Field Descriptions78Field descriptions are the most-read part of API documentation. Users scan for specific fields and need clear, consistent information.910## Field Description Structure1112Every field description answers: **What is it?** (purpose), **What type?** (data type), **Required?** (mandatory), **Constraints?** (limits/validations), **Example?** (valid data)1314## Table Format (Preferred)1516```markdown17| Field | Type | Required | Description |18|-------|------|----------|-------------|19| id | uuid | — | The unique identifier of the Account |20| name | string | Yes | The display name of the Account (max 255 chars) |21| status | enum | — | Account status: `ACTIVE`, `INACTIVE`, `BLOCKED` |22```2324**Note:** Use `—` for response-only fields (not applicable for requests).2526For nested objects: `status.code`, `status.description`2728---2930## Description Patterns by Type3132| Type | Pattern | Example |33|------|---------|---------|34| UUID | "The unique identifier of the [Entity]" | `id: uuid — The unique identifier of the Account` |35| String | "[Purpose] (constraints)" | `code: string — The asset code (max 10 chars, uppercase, e.g., "BRL")` |36| String (format) | "[Purpose] (format example)" | `email: string — Email address (e.g., "user@example.com")` |37| Enum | "[Purpose]: `val1`, `val2`, `val3`" | `type: enum — Asset type: \`currency\`, \`crypto\`, \`commodity\`` |38| Boolean | "If `true`, [what happens]. Default: `[value]`" | `allowSending: boolean — If \`true\`, sending permitted. Default: \`true\`` |39| Integer | "[Purpose] (range)" | `scale: integer — Decimal places (0-18)` |40| Timestamp | "Timestamp of [event] (UTC)" | `createdAt: timestamptz — Timestamp of creation (UTC)` |41| Object (jsonb) | "[Purpose] including [fields]" | `status: jsonb — Status information including code and description` |42| Array | "List of [what it contains]" | `operations: array — List of operations in the transaction` |4344---4546## Required vs Optional4748**In Requests:**49- `Yes` = Must be provided50- `No` = Optional51- `Conditional` = Required in specific scenarios (explain in description)5253**In Responses:** Use `—` (response fields are always returned or null)5455---5657## Special Field Documentation5859| Pattern | Format |60|---------|--------|61| Default values | "Results per page. Default: 10" |62| Nullable fields | "Soft deletion timestamp, or `null` if not deleted" |63| Deprecated fields | "**[Deprecated]** Use `route` instead" |64| Read-only fields | "**Read-only.** Generated by the system" |65| Relationships | "References an Asset code. Must exist in the Ledger" |6667---6869## Writing Good Descriptions7071| Don't | Do |72|-------|-----|73| "The name" | "The display name of the Account" |74| "Status info" | "Account status: `ACTIVE`, `INACTIVE`, `BLOCKED`" |75| "A number" | "Balance version, incremented with each transaction" |76| "The code" | "The asset code (max 10 chars, uppercase)" |77| "The timestamp" | "Timestamp of creation (UTC)" |7879---8081## Quality Checklist8283- [ ] Description explains the field's purpose84- [ ] Data type is accurate85- [ ] Required/optional status is clear86- [ ] Constraints documented (max length, valid values)87- [ ] Default value noted (if optional)88- [ ] Nullable behavior explained (if applicable)89- [ ] Deprecated fields marked90- [ ] Read-only fields indicated91- [ ] Relationships to other entities clear92- [ ] Example values realistic9394---9596## Standards Loading (MANDATORY)9798Before writing field descriptions:991001. **Load API documentation skill** - `ring:writing-api-docs` for endpoint context1012. **Load voice and tone** - `ring:voice-and-tone` for consistent style1023. **Verify data types** - Confirm actual types from API schema103104**HARD GATE:** CANNOT document fields without verified type information.105106---107108## Blocker Criteria - STOP and Report109110| Condition | Decision | Action |111|-----------|----------|--------|112| Field types unknown | STOP | Report: "Need schema or type definitions" |113| Constraints not defined | STOP | Report: "Need validation rules for constraints" |114| Required/optional unclear | STOP | Report: "Need field requirement status" |115| Enum values undefined | STOP | Report: "Need complete list of enum values" |116| Default values unknown | STOP | Report: "Need default values for optional fields" |117118### Cannot Be Overridden119120These requirements are NON-NEGOTIABLE:121122- MUST document purpose for every field123- MUST include accurate data type124- MUST specify required vs optional status125- MUST document all constraints (length, format, range)126- MUST use realistic example values (not "foo", "bar")127- CANNOT leave fields undocumented128- CANNOT guess types or constraints129130---131132## Severity Calibration133134| Severity | Criteria | Examples |135|----------|----------|----------|136| **CRITICAL** | Wrong type, missing required fields | Documents string as integer, skips required field |137| **HIGH** | Missing constraints, no examples | Max length undocumented, no example values |138| **MEDIUM** | Vague descriptions, inconsistent format | "The name" instead of "The display name of the Account" |139| **LOW** | Could be clearer, minor format issues | Description could include more context |140141---142143## Pressure Resistance144145| User Says | Your Response |146|-----------|---------------|147| "Field names are self-explanatory" | "Self-explanatory to you ≠ self-explanatory to users. MUST write explicit descriptions." |148| "Just copy the schema" | "Schema lacks context. MUST add purpose, constraints, and examples." |149| "Skip constraints, they're in validation" | "Constraints MUST be documented. Users shouldn't discover limits via errors." |150| "Use placeholder examples (foo, bar)" | "MUST use realistic examples. Placeholders don't demonstrate proper usage." |151| "Required/optional is obvious" | "Nothing is obvious. MUST explicitly mark required vs optional." |152153---154155## Anti-Rationalization Table156157| Rationalization | Why It's WRONG | Required Action |158|-----------------|----------------|-----------------|159| "Schema documents the type" | Schema doesn't explain purpose or usage | **MUST add human description** |160| "ID fields don't need description" | Users need to know what ID refers to | **Document ALL fields including IDs** |161| "Boolean is self-documenting" | Users need to know effect of true/false | **MUST explain boolean behavior** |162| "Timestamp format is standard" | Which standard? Timezone? Format? | **MUST specify format and timezone** |163| "Enum values are obvious" | Enum meanings may not be clear | **MUST describe each enum value** |164| "Same field, same description everywhere" | Context may differ | **Tailor description to context** |165166---167168## When This Skill is Not Needed169170Signs that field descriptions already meet standards:171172- ALL fields have purpose-explaining descriptions173- ALL data types documented accurately174- ALL required/optional status clearly marked175- ALL constraints documented (length, format, valid values)176- ALL default values noted for optional fields177- ALL nullable behavior explained178- ALL deprecated fields marked with migration path179- ALL examples use realistic values180181**If all above are true:** Field descriptions are complete, no changes needed.182183---184> Converted and distributed by [TomeVault](https://tomevault.io/claim/lerianstudio) — claim your Tome and manage your conversions.185<!-- tomevault:4.0:skill_md:2026-04-11 -->