[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md) ## ExpressionAstFunctionBuilder interface Signature: ```typescript export interface ExpressionAstFunctionBuilder ``` ## Properties | Property | Type | Description | | --- | --- | --- | | [addArgument](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.addargument.md) | <A extends FunctionArgName<FnDef>>(name: A, value: FunctionArgs<FnDef>[A] | ExpressionAstExpressionBuilder) => this | Adds an additional argument to the function. For multi-args, this should be called once for each new arg. Note that TS will not enforce whether multi-args are available, so only use this to update an existing arg if you are certain it is a multi-arg. | | [arguments](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.arguments.md) | FunctionBuilderArguments<FnDef> | Object of all args currently added to the function. This is structured similarly to ExpressionAstFunction['arguments'], however any subexpressions are returned as expression builder instances instead of expression ASTs. | | [getArgument](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.getargument.md) | <A extends FunctionArgName<FnDef>>(name: A) => Array<FunctionArgs<FnDef>[A] | ExpressionAstExpressionBuilder> | undefined | Retrieves an existing argument by name. Useful when you want to retrieve the current array of args and add something to it before calling replaceArgument. Any subexpression arguments will be returned as expression builder instances. | | [name](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.name.md) | InferFunctionDefinition<FnDef>['name'] | Name of this expression function. | | [removeArgument](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.removeargument.md) | <A extends OptionalKeys<FunctionArgs<FnDef>>>(name: A) => this | Removes an (optional) argument from the function.TypeScript will enforce that you only remove optional arguments. For manipulating required args, use replaceArgument. | | [replaceArgument](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.replaceargument.md) | <A extends FunctionArgName<FnDef>>(name: A, value: Array<FunctionArgs<FnDef>[A] | ExpressionAstExpressionBuilder>) => this | Overwrites an existing argument with a new value. In order to support multi-args, the value given must always be an array. | | [toAst](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.toast.md) | () => ExpressionAstFunction | Converts function to an AST. ExpressionAstFunction | | [toString](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.tostring.md) | () => string | Converts function to an expression string. string | | [type](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.type.md) | 'expression_function_builder' | Used to identify expression function builder objects. |