Skip to content

Interface: EmptyFormulaDef<ParamsT>

Defined in: api.ts:1036

Inputs to define an "empty" formula, that is, a formula that uses a RequestHandlerTemplate to define an implementation for the formula rather than implementing an actual execute function in JavaScript. An empty formula returns a string. To return a list of objects, see ObjectArrayFormulaDef.

This type is generally not used directly, but describes the inputs to makeEmptyFormula.

Extends

Type Parameters

Type Parameter
ParamsT extends ParamDefs

Properties

cacheTtlSecs?

readonly optional cacheTtlSecs: number

Defined in: api_types.ts:595

How long formulas running with the same values should cache their results for.

Inherited from

SyncFormulaDef.cacheTtlSecs


connectionRequirement?

readonly optional connectionRequirement: ConnectionRequirement

Defined in: api_types.ts:587

Does this formula require a connection (aka an account)?

Inherited from

SyncFormulaDef.connectionRequirement


description

readonly description: string

Defined in: api_types.ts:556

A brief description of what the formula does.

Inherited from

SyncFormulaDef.description


examples?

readonly optional examples: object[]

Defined in: api_types.ts:576

Sample inputs and outputs demonstrating usage of this formula.

params

params: (PackFormulaValue | undefined)[]

result

result: PackFormulaResult

Inherited from

Omit.examples


extraOAuthScopes?

readonly optional extraOAuthScopes: string[]

Defined in: api_types.ts:623

OAuth scopes that the formula needs that weren't requested in the pack's overall authentication config. For example, a Slack pack can have one formula that needs admin privileges, but non-admins can use the bulk of the pack without those privileges. The platform will give users help in understanding that they need additional authentication to use a formula with extra OAuth scopes. Note that these scopes will always be requested in addition to the default scopes for the pack, so an end user must have both sets of permissions.

Inherited from

SyncFormulaDef.extraOAuthScopes


instructions?

readonly optional instructions: string

Defined in: api_types.ts:561

Instructions for LLMs to use the formula, overrides the description for LLMs if set.

Inherited from

SyncFormulaDef.instructions


isAction?

readonly optional isAction: boolean

Defined in: api_types.ts:582

Does this formula take an action (vs retrieve data or make a calculation)? Actions are presented as buttons in the Superhuman Docs UI.

Inherited from

SyncFormulaDef.isAction


isExperimental?

readonly optional isExperimental: boolean

Defined in: api_types.ts:601

If specified, the formula will not be suggested to users in the formula autocomplete. The formula can still be invoked by manually typing its full name.

Inherited from

SyncFormulaDef.isExperimental


isSystem?

readonly optional isSystem: boolean

Defined in: api_types.ts:607

Whether this is a formula that will be used internally and not exposed directly to users. Not for use by packs that are not Superhuman-authored.

Inherited from

SyncFormulaDef.isSystem


name

readonly name: string

Defined in: api_types.ts:551

The name of the formula, used to invoke it.

Inherited from

SyncFormulaDef.name


network?

readonly optional network: Network

Defined in: api_types.ts:590

Deprecated

use isAction and connectionRequirement instead

Inherited from

SyncFormulaDef.network


parameters

readonly parameters: ParamsT

Defined in: api_types.ts:566

The parameter inputs to the formula, if any.

Inherited from

Omit.parameters


request

request: RequestHandlerTemplate

Defined in: api.ts:1038

A definition of the request and any parameter transformations to make in order to implement this formula.


validateParameters?

optional validateParameters: MetadataFormula<ExecutionContext, ParameterValidationResult>

Defined in: api_types.ts:667

The JavaScript function that implements parameter validation. This is only allowed on sync formulas.

This function takes in parameters and a context containing a PermissionSyncMode and validates the parameters. A formula may want to validate parameters differently for permissionSyncMode 'PermissionAware' vs 'Personal' vs undefined (which represents a formula).

Example

validateParameters: async function (context, _, params) {
  let {quantity, sku} = ensureExists(params);
  let errors = [];
  if (quantity < 0) {
    errors.push({message: "Must be a positive number.", propertyName: "quantity"});
  }
  if (!isValidSku(context, sku)) {
    errors.push({message: `Product SKU not found.`, propertyName: "sku"});
  }
  if (errors.length > 0) {
    return {
      isValid: false,
      message: "Invalid parameter values.",
      errors,
    };
  }
  return {
    isValid: true,
  };
},

Returns

a ParameterValidationResult

Inherited from

Omit.validateParameters


varargParameters?

readonly optional varargParameters: ParamDefs

Defined in: api_types.ts:571

Variable argument parameters, used if this formula should accept arbitrary numbers of inputs.

Inherited from

Omit.varargParameters