Skip to content
Written with Claude

TSCLIENT

Control TypeScript client code generation for individual endpoints using custom parameter annotations.

Requires Configuration

TypeScript client generation must be enabled in the Code Generation configuration (ClientCodeGen.Enabled = true).

Syntax

code
@tsclient = <true|false>
@tsclient_module = <module_name>
@tsclient_events = <true|false>
@tsclient_parse_url = <true|false>
@tsclient_parse_request = <true|false>
@tsclient_status_code = <true|false>
@tsclient_export_url = <true|false>
@tsclient_url_only = <true|false>

Parameters

ParameterDescription
tsclientSet to false, off, disabled, disable, or 0 to disable TypeScript client code generation for the endpoint.
tsclient_moduleSets a different module name for the generated TypeScript client file. Endpoints with the same module name are grouped into the same file.
tsclient_eventsEnable or disable SSE events parameter for endpoints with SSE events enabled.
tsclient_parse_urlEnable or disable parseUrl parameter in the generated function.
tsclient_parse_requestEnable or disable parseRequest parameter in the generated function.
tsclient_status_codeEnable or disable status code in the return value.
tsclient_export_urlWhen true, exports a URL constant for this endpoint regardless of the global ExportUrls setting.
tsclient_url_onlyWhen true, only the URL constant and request interface are exported — the fetch function and response type are skipped. Implies tsclient_export_url = true. Useful for endpoints consumed via browser navigation (e.g., table format downloads).

Examples

Disable Generation

Use @tsclient = false to skip client generation for endpoints that return binary data or are not useful in the TypeScript client:

sql
sql
create function get_image(_id int)
returns bytea
language sql
begin atomic;
  select data from images where id = _id;
end;

comment on function get_image(int) is '
HTTP GET
@tsclient = false
';

URL-Only Export

Use @tsclient_url_only = true for endpoints consumed via browser navigation rather than fetch — such as table format downloads or file exports:

sql
sql
create function get_data(
    _format text,
    _excel_file_name text = null,
    _excel_sheet text = null
)
returns table (int_val int, text_val text, date_val date)
language sql
begin atomic;
  select * from data;
end;

comment on function get_data(text, text, text) is '
HTTP GET
@table_format = {_format}
@excel_file_name = {_excel_file_name}
@excel_sheet = {_excel_sheet}
@tsclient_url_only = true
';

This generates only the URL builder and request interface:

typescript
typescript
export const getDataUrl = (request: IGetDataRequest) =>
    baseUrl + "/api/get-data" + parseQuery(request);

interface IGetDataRequest {
    format: string | null;
    excelFileName?: string | null;
    excelSheet?: string | null;
}

Custom Module

Use @tsclient_module to group endpoints from different schemas into the same generated file:

sql
sql
comment on function public.get_users() is '
HTTP GET
@tsclient_module = admin
';

comment on function auth.get_roles() is '
HTTP GET
@tsclient_module = admin
';

Both endpoints will be generated in the admin module file.

  • TABLE_FORMAT - Table format rendering (commonly used with tsclient_url_only)
  • SSE - Server-Sent Events (use tsclient_events to control SSE parameter generation)

See Also

Comments