SDK Method Names

Use x-fern-sdk-method-name to customize SDK method names for JSON-RPC methods

By default, Fern generates SDK method names based on your OpenRPC method names. You can override this behavior using the x-fern-sdk-method-name extension.

Customize method names

Use x-fern-sdk-method-name to specify custom method names for your JSON-RPC methods:

openrpc.yml
1methods:
2 - name: user.getById
3 summary: Get user by ID
4 x-fern-sdk-method-name: getUser
5 params:
6 - name: id
7 schema:
8 type: string
9 required: true
10 result:
11 name: user
12 schema:
13 $ref: '#/components/schemas/User'
14 - name: order.createNew
15 summary: Create a new order
16 x-fern-sdk-method-name: create
17 params:
18 - name: orderData
19 schema:
20 $ref: '#/components/schemas/CreateOrderRequest'
21 required: true
22 result:
23 name: order
24 schema:
25 $ref: '#/components/schemas/Order'

This will generate SDK methods like:

1// Instead of client.user.getById()
2const user = await client.user.getUser({ id: "user_123" });
3
4// Instead of client.order.createNew()
5const order = await client.order.create({ orderData: {...} });

Method naming conventions

Follow these conventions when naming SDK methods:

CRUD operations

Use standard CRUD naming:

openrpc.yml
1methods:
2 - name: user.createUser
3 summary: Create a new user
4 x-fern-sdk-method-name: create
5 # Generates: client.user.create()
6
7 - name: user.getUserById
8 summary: Get user by ID
9 x-fern-sdk-method-name: get
10 # Generates: client.user.get()
11
12 - name: user.updateUser
13 summary: Update user information
14 x-fern-sdk-method-name: update
15 # Generates: client.user.update()
16
17 - name: user.deleteUser
18 summary: Delete a user
19 x-fern-sdk-method-name: delete
20 # Generates: client.user.delete()

List operations

Use descriptive names for list operations:

openrpc.yml
1methods:
2 - name: user.getAllUsers
3 summary: Get all users
4 x-fern-sdk-method-name: list
5 # Generates: client.user.list()
6
7 - name: user.searchUsers
8 summary: Search for users
9 x-fern-sdk-method-name: search
10 # Generates: client.user.search()
11
12 - name: order.getUserOrders
13 summary: Get orders for a user
14 x-fern-sdk-method-name: listByUser
15 # Generates: client.order.listByUser()

Action operations

Use action-oriented names:

openrpc.yml
1methods:
2 - name: email.sendNotification
3 summary: Send email notification
4 x-fern-sdk-method-name: send
5 # Generates: client.email.send()
6
7 - name: payment.processPayment
8 summary: Process a payment
9 x-fern-sdk-method-name: process
10 # Generates: client.payment.process()
11
12 - name: cache.invalidateCache
13 summary: Invalidate cache entries
14 x-fern-sdk-method-name: invalidate
15 # Generates: client.cache.invalidate()

Language-specific method names

You can specify different method names for different programming languages:

openrpc.yml
1methods:
2 - name: user.getUserPreferences
3 summary: Get user preferences
4 x-fern-sdk-method-name:
5 python: get_preferences
6 typescript: getPreferences
7 go: GetPreferences
8 java: getPreferences
9 csharp: GetPreferences
10 params:
11 - name: userId
12 schema:
13 type: string
14 required: true
15 result:
16 name: preferences
17 schema:
18 $ref: '#/components/schemas/UserPreferences'

Namespaced method names

For methods with namespace prefixes, customize the final method name:

openrpc.yml
1methods:
2 - name: analytics.track.pageView
3 summary: Track page view event
4 x-fern-sdk-method-name: trackPageView
5 params:
6 - name: eventData
7 schema:
8 $ref: '#/components/schemas/PageViewEvent'
9 required: true
10 - name: analytics.track.conversion
11 summary: Track conversion event
12 x-fern-sdk-method-name: trackConversion
13 params:
14 - name: eventData
15 schema:
16 $ref: '#/components/schemas/ConversionEvent'
17 required: true

Generates:

1await client.analytics.trackPageView({ eventData: {...} });
2await client.analytics.trackConversion({ eventData: {...} });

Notification method names

For notification methods (one-way calls), use appropriate naming:

openrpc.yml
1methods:
2 - name: log.recordError
3 summary: Record an error event
4 x-fern-sdk-method-name: logError
5 params:
6 - name: errorData
7 schema:
8 $ref: '#/components/schemas/ErrorData'
9 required: true
10 # No result - this is a notification
11 - name: metrics.incrementCounter
12 summary: Increment a metric counter
13 x-fern-sdk-method-name: increment
14 params:
15 - name: metric
16 schema:
17 type: string
18 required: true
19 - name: value
20 schema:
21 type: number
22 default: 1
23 # No result - this is a notification

Async method naming

For methods that return promises or futures, consider async naming:

openrpc.yml
1methods:
2 - name: report.generateReport
3 summary: Generate a report (long-running)
4 x-fern-sdk-method-name: generateAsync
5 params:
6 - name: reportConfig
7 schema:
8 $ref: '#/components/schemas/ReportConfig'
9 required: true
10 result:
11 name: jobId
12 schema:
13 type: string
14 description: Job ID for tracking report generation

This ensures method names follow the conventions of each target language while maintaining clear and intuitive APIs for developers.