Soxom automatically transforms names to match each language’s conventions, ensuring idiomatic code generation.
| OpenAPI | TypeScript | Python | Go | Java |
|---|
user_name | userName | user_name | UserName | userName |
createdAt | createdAt | created_at | CreatedAt | createdAt |
API_KEY | apiKey | api_key | APIKEY | apiKey |
HTMLParser | htmlParser | html_parser | HTMLParser | htmlParser |
| OpenAPI/Config | TypeScript | Python | Go | Java |
|---|
list | list | list | List | list |
get | get | get | Get | get |
create | create | create | Create | create |
getUserById | getUserById | get_user_by_id | GetUserByID | getUserById |
| OpenAPI Schema | TypeScript | Python | Go | Java |
|---|
User | User | User | User | User |
user_profile | UserProfile | UserProfile | UserProfile | UserProfile |
HTTPResponse | HttpResponse | HttpResponse | HTTPResponse | HttpResponse |
Soxom generates method names based on HTTP method and path pattern:
| HTTP Method | Path Pattern | Default Name |
|---|
| GET | /resources | list |
| GET | /resources/{id} | get |
| POST | /resources | create |
| PUT | /resources/{id} | update |
| PATCH | /resources/{id} | patch |
| DELETE | /resources/{id} | delete |
| HTTP Method | Path Pattern | Default Name |
|---|
| POST | /resources/{id}/cancel | cancel |
| POST | /resources/{id}/archive | archive |
| POST | /resources/batch | batch |
| GET | /resources/{id}/status | getStatus |
fetchAll: get /orders # Instead of "list"
archive: delete /orders/{id} # Instead of "delete"
Model names come directly from OpenAPI schema names:
UserCreate: # → UserCreate
user_settings: # → UserSettings (PascalCase)
APIToken: # → ApiToken / APIToken (language-dependent)
- PascalCase for types - All languages use PascalCase for type names
- Preserve acronyms -
API, HTTP, URL handling varies by language
- Remove invalid characters - Spaces, special chars are removed
Different languages handle acronyms differently:
| Input | TypeScript | Python | Go | Java |
|---|
APIKey | ApiKey | ApiKey | APIKey | ApiKey |
HTTPStatus | HttpStatus | HttpStatus | HTTPStatus | HttpStatus |
userID | userId | user_id | UserID | userId |
XMLParser | XmlParser | XmlParser | XMLParser | XmlParser |
Generated code uses original OpenAPI names for JSON:
userName: string; // TypeScript property name
// { "user_name": "..." } ← Original OpenAPI name
UserName string `json:"user_name"` // Tag preserves original
Soxom handles language reserved words automatically:
| Conflict | TypeScript | Python | Go | Java |
|---|
class | class_ | class_ | Class | classValue |
type | type_ | type_ | Type_ | typeValue |
default | default_ | default_ | Default_ | defaultValue |
enum: [active, inactive, pending]
| Language | Type Name | Values |
|---|
| TypeScript | UserStatus | 'active' | 'inactive' | 'pending' |
| Python | UserStatus(Enum) | ACTIVE, INACTIVE, PENDING |
| Go | UserStatus | UserStatusActive, UserStatusInactive |
| Java | UserStatus | ACTIVE, INACTIVE, PENDING |
| OpenAPI Value | TypeScript | Python | Go | Java |
|---|
active | 'active' | ACTIVE | UserStatusActive | ACTIVE |
in-progress | 'in-progress' | IN_PROGRESS | UserStatusInProgress | IN_PROGRESS |
PENDING | 'PENDING' | PENDING | UserStatusPending | PENDING |
Generated file names follow language conventions:
| Content | TypeScript | Python | Go | Java |
|---|
| User type | user.ts | user.py | user.go | User.java |
| Users resource | users.ts | users.py | users.go | Users.java |
| Client | client.ts | client.py | client.go | Client.java |
- Use snake_case for properties - Most universally compatible
- Use PascalCase for schemas - Becomes type names directly
- Use descriptive operationIds - Helps with method naming
- Avoid reserved words - Even though Soxom handles them
User: # PascalCase for types
user_name: # snake_case for properties
created_at: # snake_case with common suffix
$ref: '#/components/schemas/UserStatus'
UserStatus: # PascalCase for enums
- active # lowercase for enum values