Skip to content
AI-assisted, verified against source

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
';

Equivalent as a SQL file endpoint (sql/get-image.sql):

sql
sql
/*
HTTP GET
@tsclient = false
@param $1 id
*/
select data from images where id = $1;

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