# Template

A reusable template for generating a subgraph of a Grepr job graph using Javascript. Templates allow users to define parameterized pipeline components that can be instantiated with specific configuration.

**Type**: `object`

## Properties

- name: builtIn (optional)
  type: boolean
  description: Read-only property indicating whether this template is a built-in, non-editable template.

- name: description (optional)
  type: string
  description: Description of the template.

- name: draftOutputs (optional)
  type: array of `TemplateDraftOutput`
  description: List of additional outputs that will be added to the graph when running in draft mode.

- name: id (optional)
  type: string
  description: Unique identifier for the template.

- name: inputSchema (optional)
  type: object
  description: JSONSchema (https://json-schema.org/draft/2020-12) for validating the inputs to the template. Make sure you make this validation forwards/backwards compatible to ensure that the template version can be upgraded and rolled back.

- name: inputs (optional)
  type: object
  description: Map of input names used in a parent subgraph that uses a TemplateOperation to their internal connections within the subgraph. Can be missing if there are no inputs to the subgraph

- name: isLatest (optional)
  type: boolean

- name: latest (optional)
  type: boolean

- name: name (required)
  type: string
  description: Name of the template.

- name: organizationId (optional)
  type: string
  description: Organization ID to which the template belongs. This is null for built-in templates.

- name: outputs (optional)
  type: object
  description: Map of output names used in a parent subgraph that uses a TemplateOperation to their internal connections within the subgraph. Can be missing if there are no outputs from the subgraph

- name: sourceHash (optional)
  type: string
  description: SHA-256 hash of template source and all dependencies (utils, types, build config, package versions). Used to track when template dependencies change and avoid unnecessary updates.

- name: teamIds (optional)
  type: array of string
  description: Set of team IDs that can use this template.

- name: template (required)
  type: string
  description: A javascript string that generates the JSON for the job subgraph. It will receive as input a User object and the inputs provided via the operation when it is getting resolved into a subgraph.

- name: version (required)
  type: integer
  description: Version of the template.
