A plain {{steps.<step_id>.result...}} placeholder is inserted as text:
Objects and arrays become JSON
Strings are inserted as-is, without quotes
null or a missing value becomes an empty string
This automatic conversion applies only to steps.<step_id>.result... placeholders with no filter. Other objects, such as {{item}} when the item is an object, render as [object Object]; write {{item | json}} instead.A step that reads another step’s result must list that step in needs, or it may run before the result exists. See Step Module Options.
PYTHON_SANDBOX_RUN returns its output under result.data, so a later step reads it as {{steps.<step_id>.result.data}}.
# String manipulation{{ variable | upper }}{{ variable | lower }}{{ variable | trim }}{{ variable | replace('old', 'new') }}# Default values{{ variable | default('fallback_value') }}# JSON handling{{ data | json }}# List operations{{ items | first }}{{ items | last }}{{ items | join(', ') }}
default replaces only a missing value. To also replace null, an empty string or false, write default('fallback_value', true).json is added by Jinba Flow and outputs strict JSON: strings keep their quotes and null stays null. There is no tojson filter.Jinba Flow also adds filters for the output of a forEach step:
The Python examples below read earlier results with json.loads(r'''{{steps.<step_id>.result}}'''). Pasting a result straight into Python code breaks on JSON values such as null, true and false. PYTHON_SANDBOX_RUN uses the value of the last line as its result; set data_type to OBJECT and end with json.dumps(...) to return structured data.
Nunjucks does not support Jinja2’s {% for x in list if condition %}: it checks the condition once for the whole list, so the loop usually outputs nothing. Put the condition inside the loop instead:
value: | {%- for entry in steps.get_items.result %} {%- if entry.status == 'active' %} - {{entry.name}} {%- endif %} {%- endfor %}
Verify the property path is correct (for PYTHON_SANDBOX_RUN, the output is under result.data)
Template syntax error
Check for balanced braces {{ }}
Verify Nunjucks tag syntax {% %}
Look for missing quotes in strings
Unexpected output
Use debug steps to inspect intermediate values
Check whitespace handling
Verify data types (string vs object)
[object Object] means an object was inserted without conversion; add | json
TemplateSecurityError: ... is not allowed in templates
Templates are flow-authored, so the engine refuses anything that could run code or read files, and the step fails instead of rendering
Not allowed: reading constructor, prototype or __proto__ on any value (including a result field with that name); {% asyncEach %} / {% asyncAll %}; names that are not plain identifiers (letters, digits, _, $) as a variable, loop variable, macro, filter or test
{% include %}, {% import %} and {% extends %} fail separately with a “template not found” render error, because no template files are loadable from a flow
Ordinary member access, method calls on values such as {{ steps.x.result.trim() }}, filters, range and macros keep working
Front-end code with its own {{ }} interpolation (for example {{ user?.name }} in an HTML snippet) must be wrapped in {% raw %} ... {% endraw %}
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"jinba","colors":{"primary":"#342115","light":"#CEB69A","dark":"#342115"},"logo":{"light":"https://mintcdn.com/jinba/7gYdJDDfMS9Bs1rw/logo/jinba_company_lockup.svg?fit=max\u0026auto=format\u0026n=7gYdJDDfMS9Bs1rw\u0026q=85\u0026s=36b484f0e9644585dbf18eb3d0ef2169","dark":"https://mintcdn.com/jinba/7gYdJDDfMS9Bs1rw/logo/jinba_company_lockup_dark.svg?fit=max\u0026auto=format\u0026n=7gYdJDDfMS9Bs1rw\u0026q=85\u0026s=377b10e83b07e529ea9dc727a7194247","href":"https://jinba.io/"},"favicon":"https://mintcdn.com/jinba/7gYdJDDfMS9Bs1rw/logo/favicon.svg?fit=max\u0026auto=format\u0026n=7gYdJDDfMS9Bs1rw\u0026q=85\u0026s=eda4903176064e51053ea1de81180599","navbar":{"links":[{"href":"mailto:contact@carnot.ai","label":"Support"}],"primary":{"type":"button","label":"Go to Jinba","href":"https://jinba.io/"}},"footer":{"socials":{"x":"https://x.com/jinbaflow_JP","discord":"https://discord.gg/EWsPMV7q75","linkedin":"https://www.linkedin.com/company/carnot-inc"},"links":[{"header":"Product","items":[{"label":"Jinba Flow","href":"https://flow.jinba.io"},{"label":"Jinba App","href":"https://app.jinba.io"},{"label":"Pricing","href":"https://jinba.io/pricing"}]},{"header":"Resources","items":[{"label":"Documentation","href":"https://docs.jinba.io/en/introduction"},{"label":"Blog","href":"https://jinba.io/blog"}]},{"header":"Company","items":[{"label":"Careers","href":"https://jinba.io/careers"},{"label":"Contact Sales","href":"https://jinba.io/contact-sales"}]},{"header":"Legal","items":[{"label":"Privacy Policy","href":"https://jinba.io/privacy"},{"label":"Terms of Use","href":"https://jinba.io/terms"}]}]},"styling":{"latex":true},"navigation":{"languages":[{"language":"en","href":"en/introduction"},{"language":"jp","href":"ja/introduction"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"jinba","hasAudioNarration":false,"actualSubdomain":"jinba","customDomains":["docs.jinba.io"],"gitSource":{"type":"github","owner":"carnot-tech","repo":"jinba-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6af4a49b5cc09d51b13097a7","clientVersion":"0.0.4117","searchFilterCounts":[{"language":"en","tag":"Docs","count":212},{"language":"jp","tag":"Docs","count":212},{"language":"en","tag":"Jinba Flow","count":133},{"language":"jp","tag":"Jinba Flow","count":133},{"language":"en","tag":"Jinba App","count":31},{"language":"jp","tag":"Jinba App","count":31},{"language":"en","tag":"Jinba App (Legacy)","count":28},{"language":"jp","tag":"Jinba App(レガシー)","count":28},{"language":"en","tag":"External Service Integration Tools","count":27},{"language":"jp","tag":"外部サービス連携ツール","count":27},{"language":"en","tag":"Credentials","count":26},{"language":"jp","tag":"認証情報","count":26},{"language":"en","tag":"Jinba Toolbox","count":20},{"language":"jp","tag":"Jinba Toolbox","count":20},{"language":"en","tag":"Getting Started","count":13},{"language":"en","tag":"Search \u0026 Data Retrieval Tools","count":13},{"language":"jp","tag":"はじめに","count":13},{"language":"jp","tag":"検索・情報取得ツール","count":13},{"language":"en","tag":"Agents","count":11},{"language":"jp","tag":"エージェント","count":11}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"en/pages/basics/variables","slug":"/en/pages/basics/variables","pageMetadata":{"title":"Variables \u0026 Templates","description":"Learn how to use variable placeholders and Nunjucks templates to create dynamic workflows","href":"/en/pages/basics/variables"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Learn how to use variable placeholders and Nunjucks templates to create dynamic workflows\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,Table}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`overview`,children:`Overview`}),`\n`,_jsx(_components.p,{children:`Jinba Flow supports powerful templating capabilities that allow you to:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Reference results from previous steps`}),`\n`,_jsx(_components.li,{children:`Access configured secrets securely`}),`\n`,_jsx(_components.li,{children:`Use Nunjucks templates for complex logic`}),`\n`,_jsx(_components.li,{children:`Create dynamic, reusable workflows`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`variable-placeholders`,children:`Variable Placeholders`}),`\n`,_jsx(Heading,{level:`3`,id:`basic-syntax`,children:`Basic Syntax`}),`\n`,_jsxs(_components.p,{children:[`Variables are enclosed in double curly braces: `,_jsx(_components.code,{children:`{{ variable }}`})]}),`\n`,_jsx(Heading,{level:`3`,id:`available-variables`,children:`Available Variables`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Description`}),_jsx(_components.th,{children:`Example`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`steps.\u003cstep_id>.result`})}),_jsx(_components.td,{children:`Result from a previous step`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`{{steps.fetch_data.result}}`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`steps.\u003cstep_id>.result.\u003cproperty>`})}),_jsx(_components.td,{children:`Specific property from result`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`{{steps.api_call.result.content}}`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`steps.\u003cstep_id>.status`})}),_jsxs(_components.td,{children:[`Status of a previous step (`,_jsx(_components.code,{children:`success`}),`, `,_jsx(_components.code,{children:`failed`}),`, `,_jsx(_components.code,{children:`skipped`}),`, `,_jsx(_components.code,{children:`cancelled`}),`)`]}),_jsx(_components.td,{children:_jsx(_components.code,{children:`{{steps.fetch_data.status}}`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`secrets.\u003csecret_name>`})}),_jsx(_components.td,{children:`Configured workspace secret`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`{{secrets.API_KEY}}`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`item`})}),_jsx(_components.td,{children:`Current item in a forEach loop`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`{{item}}`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`item.\u003cproperty>`})}),_jsx(_components.td,{children:`Property of current item`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`{{item.id}}`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`itemIndex`})}),_jsx(_components.td,{children:`Position of the current item in a forEach loop, starting at 0`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`{{itemIndex}}`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`itemCount`})}),_jsx(_components.td,{children:`Number of items in the forEach loop`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`{{itemCount}}`})})]})]})]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`item`}),`, `,_jsx(_components.code,{children:`itemIndex`}),` and `,_jsx(_components.code,{children:`itemCount`}),` exist only in the inputs of a step that has `,_jsx(_components.code,{children:`forEach`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`accessing-step-results`,children:`Accessing Step Results`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`15`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`15`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Access entire result`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`- `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`data`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"{{steps.previous_step.result}}\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Access specific property`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`- `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`content`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"{{steps.llm_response.result.content}}\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Access nested property`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`- `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`user_email`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"{{steps.get_user.result.user.email}}\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Access array element`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`- `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`first_item`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"{{steps.get_list.result[0]}}\"`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`A plain `,_jsx(_components.code,{children:`{{steps.\u003cstep_id>.result...}}`}),` placeholder is inserted as text:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Objects and arrays become JSON`}),`\n`,_jsx(_components.li,{children:`Strings are inserted as-is, without quotes`}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`null`}),` or a missing value becomes an empty string`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`This automatic conversion applies only to `,_jsx(_components.code,{children:`steps.\u003cstep_id>.result...`}),` placeholders with no filter. Other objects, such as `,_jsx(_components.code,{children:`{{item}}`}),` when the item is an object, render as `,_jsx(_components.code,{children:`[object Object]`}),`; write `,_jsx(_components.code,{children:`{{item | json}}`}),` instead.`]}),`\n`,_jsxs(_components.p,{children:[`A step that reads another step’s result must list that step in `,_jsx(_components.code,{children:`needs`}),`, or it may run before the result exists. See `,_jsx(_components.a,{href:`/en/pages/basics/step-options`,children:`Step Module Options`}),`.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`PYTHON_SANDBOX_RUN`}),` returns its output under `,_jsx(_components.code,{children:`result.data`}),`, so a later step reads it as `,_jsx(_components.code,{children:`{{steps.\u003cstep_id>.result.data}}`}),`.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`using-secrets`,children:`Using Secrets`}),`\n`,_jsx(_components.p,{children:`Secrets are configured at the workspace level and accessed securely:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`config`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`api_key`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"{{secrets.OPENAI_API_KEY}}\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`token`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"{{secrets.GITHUB_TOKEN}}\"`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Security Notes`}),`:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Secrets are encrypted at rest`}),`\n`,_jsx(_components.li,{children:`Never hardcode sensitive values in workflows`}),`\n`,_jsx(_components.li,{children:`Use secrets for API keys, tokens, and credentials`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`nunjucks-templates`,children:`Nunjucks Templates`}),`\n`,_jsxs(_components.p,{children:[`Jinba Flow renders templates with `,_jsx(_components.a,{href:`https://mozilla.github.io/nunjucks/templating.html`,children:`Nunjucks`}),`, whose syntax is close to Jinja2 but not identical. Templates are processed before step execution.`]}),`\n`,_jsx(Heading,{level:`3`,id:`control-structures`,children:`Control Structures`}),`\n`,_jsx(Heading,{level:`4`,id:`for-loops`,children:`For Loops`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`|`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {%- for user in steps.get_users.result %}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` - {{user.name}} (ID: {{user.id}})`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {%- endfor %}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`4`,id:`conditional-statements`,children:`Conditional Statements`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`|`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {%- if steps.check.result.status == 'success' %}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` Processing successful`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {%- else %}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` Handling error`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {%- endif %}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`4`,id:`loop-with-index`,children:`Loop with Index`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`|`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {%- for entry in steps.get_list.result %}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {{loop.index}}: {{entry}}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {%- endfor %}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`loop.index`}),` counts from 1 and `,_jsx(_components.code,{children:`loop.index0`}),` counts from 0.`]}),`\n`,_jsx(Heading,{level:`3`,id:`built-in-functions`,children:`Built-in Functions`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# range - Generate number sequence`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{%- `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`for i in range(5) %`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Item {{i}}`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{%- `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`endfor %`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# length/count`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Total`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {{`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`items|length`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}}`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Nunjucks has no `,_jsx(_components.code,{children:`zip()`}),`. To walk two lists side by side, loop over one and index the other with `,_jsx(_components.code,{children:`loop.index0`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{%- `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`for user in steps.users.result %`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{{`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`user.name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}}: {{`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`steps.orders.result`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`loop.index0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`.id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}}`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{%- `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`endfor %`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`filters`,children:`Filters`}),`\n`,_jsx(_components.p,{children:`Apply transformations to values:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`16`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`16`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# String manipulation`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{{ `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`variable | upper`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }}`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{{ `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`variable | lower`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }}`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{{ `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`variable | trim`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }}`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{{ `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`variable | replace('old'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'new')`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }}`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Default values`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{{ `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`variable | default('fallback_value')`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }}`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# JSON handling`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{{ `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`data | json`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }}`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# List operations`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{{ `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`items | first`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }}`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{{ `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`items | last`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }}`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{{ `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`items | join('`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`') }}`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`default`}),` replaces only a missing value. To also replace `,_jsx(_components.code,{children:`null`}),`, an empty string or `,_jsx(_components.code,{children:`false`}),`, write `,_jsx(_components.code,{children:`default('fallback_value', true)`}),`.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`json`}),` is added by Jinba Flow and outputs strict JSON: strings keep their quotes and `,_jsx(_components.code,{children:`null`}),` stays `,_jsx(_components.code,{children:`null`}),`. There is no `,_jsx(_components.code,{children:`tojson`}),` filter.`]}),`\n`,_jsx(_components.p,{children:`Jinba Flow also adds filters for the output of a forEach step:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Filter`}),_jsx(_components.th,{children:`Returns`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`successful`})}),_jsxs(_components.td,{children:[`The items whose status is `,_jsx(_components.code,{children:`success`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`failed`})}),_jsxs(_components.td,{children:[`The items whose status is `,_jsx(_components.code,{children:`failed`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`results`})}),_jsxs(_components.td,{children:[`The `,_jsx(_components.code,{children:`result`}),` of each successful item`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`pluck('key')`})}),_jsxs(_components.td,{children:[`The value of `,_jsx(_components.code,{children:`key`}),` from each item`]})]})]})]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Succeeded`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {{ `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`steps.batch | successful | length`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }}`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Failed`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {{ `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`steps.batch | failed | length`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }}`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`whitespace-control`,children:`Whitespace Control`}),`\n`,_jsxs(_components.p,{children:[`Use `,_jsx(_components.code,{children:`{%-`}),` and `,_jsx(_components.code,{children:`-%}`}),` to control whitespace:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`|`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {%- for item in items -%}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {{item}}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {%- endfor -%}`})}),`\n`]})})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`{%-`}),` removes whitespace before the tag`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`-%}`}),` removes whitespace after the tag`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`common-patterns`,children:`Common Patterns`}),`\n`,_jsxs(_components.p,{children:[`The Python examples below read earlier results with `,_jsx(_components.code,{children:`json.loads(r'''{{steps.\u003cstep_id>.result}}''')`}),`. Pasting a result straight into Python code breaks on JSON values such as `,_jsx(_components.code,{children:`null`}),`, `,_jsx(_components.code,{children:`true`}),` and `,_jsx(_components.code,{children:`false`}),`. `,_jsx(_components.code,{children:`PYTHON_SANDBOX_RUN`}),` uses the value of the last line as its result; set `,_jsx(_components.code,{children:`data_type`}),` to `,_jsx(_components.code,{children:`OBJECT`}),` and end with `,_jsx(_components.code,{children:`json.dumps(...)`}),` to return structured data.`]}),`\n`,_jsx(Heading,{level:`3`,id:`processing-lists`,children:`Processing Lists`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`19`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`19`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`- `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`input_list`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` tool`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`INPUT_JSON`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` input`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`value`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'[{\"id\": 1}, {\"id\": 2}]'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`- `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`process_items`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` tool`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`PYTHON_SANDBOX_RUN`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` needs`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`input_list`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` input`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`code`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`|`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` import json`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` items = json.loads(r'''{{steps.input_list.result}}''')`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` results = [{\"id\": item[\"id\"], \"processed\": True} for item in items]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` json.dumps(results)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`data_type`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`OBJECT`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`conditional-data-selection`,children:`Conditional Data Selection`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`36`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`36`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`- `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`config`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` tool`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`INPUT_JSON`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` input`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`value`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'{\"mode\": \"full\"}'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`- `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`full_data`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` tool`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`INPUT_JSON`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` input`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`value`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'{\"users\": 120, \"orders\": 45, \"revenue\": 9800}'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`- `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`summary_data`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` tool`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`INPUT_JSON`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` input`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`value`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'{\"users\": 120}'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`- `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`select_data`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` tool`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`PYTHON_SANDBOX_RUN`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` needs`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`config`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`full_data`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`summary_data`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` input`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`code`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`|`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` import json`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {%- if steps.config.result.mode == 'full' %}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` data = json.loads(r'''{{steps.full_data.result}}''')`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {%- else %}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` data = json.loads(r'''{{steps.summary_data.result}}''')`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {%- endif %}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` json.dumps(data)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`data_type`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`OBJECT`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`combining-multiple-sources`,children:`Combining Multiple Sources`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`30`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`30`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`- `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`users`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` tool`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`INPUT_JSON`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` input`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`value`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'[{\"name\": \"Alice\"}, {\"name\": \"Bob\"}]'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`- `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`orders`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` tool`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`INPUT_JSON`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` input`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`value`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'[{\"id\": \"A-100\"}, {\"id\": \"A-101\"}]'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`- `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`merge_data`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` tool`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`PYTHON_SANDBOX_RUN`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` needs`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`users`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`orders`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` input`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`code`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`|`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` import json`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` users = json.loads(r'''{{steps.users.result}}''')`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` orders = json.loads(r'''{{steps.orders.result}}''')`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` combined = [`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {\"user\": user[\"name\"], \"order\": order[\"id\"]}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` for user, order in zip(users, orders)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` json.dumps(combined)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`data_type`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`OBJECT`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`zip`}),` here is Python’s, which runs inside the sandbox. In a template, use the `,_jsx(_components.code,{children:`loop.index0`}),` pattern shown under `,_jsx(_components.a,{href:`#built-in-functions`,children:`Built-in Functions`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`filtering-lists`,children:`Filtering Lists`}),`\n`,_jsxs(_components.p,{children:[`Nunjucks does not support Jinja2’s `,_jsx(_components.code,{children:`{% for x in list if condition %}`}),`: it checks the condition once for the whole list, so the loop usually outputs nothing. Put the condition inside the loop instead:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`|`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {%- for entry in steps.get_items.result %}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {%- if entry.status == 'active' %}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` - {{entry.name}}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {%- endif %}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {%- endfor %}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`building-dynamic-prompts`,children:`Building Dynamic Prompts`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`19`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`19`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`- `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`items`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` tool`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`INPUT_JSON`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` input`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`value`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'[{\"name\": \"Widget\", \"description\": \"Compact desk lamp\"}, {\"name\": \"Gadget\", \"description\": \"Wireless charger\"}]'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`- `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`generate_prompt`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` tool`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`OPENAI_INVOKE`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` needs`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`items`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` input`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`prompt`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`|`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` Analyze the following items:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {%- for item in steps.items.result %}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` - {{item.name}}: {{item.description}}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {%- endfor %}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` `})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` Provide insights based on the above data.`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`best-practices`,children:`Best Practices`}),`\n`,_jsx(Heading,{level:`3`,id:`variable-references`,children:`Variable References`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Use descriptive step IDs for clarity`}),`\n`,_jsx(_components.li,{children:`Access only the properties you need`}),`\n`,_jsx(_components.li,{children:`Handle potential null/undefined values with defaults`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`templates`,children:`Templates`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Keep templates readable with proper indentation`}),`\n`,_jsx(_components.li,{children:`Use whitespace control for clean output`}),`\n`,_jsx(_components.li,{children:`Break complex logic into multiple steps`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`secrets`,children:`Secrets`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Never log or expose secret values`}),`\n`,_jsx(_components.li,{children:`Use workspace-level secrets for team sharing`}),`\n`,_jsx(_components.li,{children:`Rotate secrets regularly`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`performance`,children:`Performance`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Avoid deeply nested templates`}),`\n`,_jsx(_components.li,{children:`Limit loop iterations`}),`\n`,_jsx(_components.li,{children:`Pre-process data when possible`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsx(Heading,{level:`3`,id:`common-issues`,children:`Common Issues`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Variable not found or empty`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Check step ID spelling`}),`\n`,_jsxs(_components.li,{children:[`Make sure the referenced step is listed in `,_jsx(_components.code,{children:`needs`})]}),`\n`,_jsxs(_components.li,{children:[`Verify the property path is correct (for `,_jsx(_components.code,{children:`PYTHON_SANDBOX_RUN`}),`, the output is under `,_jsx(_components.code,{children:`result.data`}),`)`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Template syntax error`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Check for balanced braces `,_jsx(_components.code,{children:`{{ }}`})]}),`\n`,_jsxs(_components.li,{children:[`Verify Nunjucks tag syntax `,_jsx(_components.code,{children:`{% %}`})]}),`\n`,_jsx(_components.li,{children:`Look for missing quotes in strings`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Unexpected output`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Use debug steps to inspect intermediate values`}),`\n`,_jsx(_components.li,{children:`Check whitespace handling`}),`\n`,_jsx(_components.li,{children:`Verify data types (string vs object)`}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`[object Object]`}),` means an object was inserted without conversion; add `,_jsx(_components.code,{children:`| json`})]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:_jsx(_components.code,{children:`TemplateSecurityError: ... is not allowed in templates`})})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Templates are flow-authored, so the engine refuses anything that could run code or read files, and the step fails instead of rendering`}),`\n`,_jsxs(_components.li,{children:[`Not allowed: reading `,_jsx(_components.code,{children:`constructor`}),`, `,_jsx(_components.code,{children:`prototype`}),` or `,_jsx(_components.code,{children:`__proto__`}),` on any value (including a result field with that name); `,_jsx(_components.code,{children:`{% asyncEach %}`}),` / `,_jsx(_components.code,{children:`{% asyncAll %}`}),`; names that are not plain identifiers (letters, digits, `,_jsx(_components.code,{children:`_`}),`, `,_jsx(_components.code,{children:`$`}),`) as a variable, loop variable, macro, filter or test`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`{% include %}`}),`, `,_jsx(_components.code,{children:`{% import %}`}),` and `,_jsx(_components.code,{children:`{% extends %}`}),` fail separately with a “template not found” render error, because no template files are loadable from a flow`]}),`\n`,_jsxs(_components.li,{children:[`Ordinary member access, method calls on values such as `,_jsx(_components.code,{children:`{{ steps.x.result.trim() }}`}),`, filters, `,_jsx(_components.code,{children:`range`}),` and macros keep working`]}),`\n`,_jsxs(_components.li,{children:[`Front-end code with its own `,_jsx(_components.code,{children:`{{ }}`}),` interpolation (for example `,_jsx(_components.code,{children:`{{ user?.name }}`}),` in an HTML snippet) must be wrapped in `,_jsx(_components.code,{children:`{% raw %} ... {% endraw %}`})]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`related`,children:`Related`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/en/pages/basics/step-options`,children:`Step Module Options`}),` - forEach, when, needs`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/en/pages/basics/manifest`,children:`YAML Coding Panel`}),` - Complete YAML syntax`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/en/pages/basics/debug`,children:`Debug`}),` - Debugging workflows`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Variables \u0026 Templates","description":"Learn how to use variable placeholders and Nunjucks templates to create dynamic workflows","href":"/en/pages/basics/variables"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Overview","slug":"overview","depth":2,"children":[]},{"title":"Variable Placeholders","slug":"variable-placeholders","depth":2,"children":[{"title":"Basic Syntax","slug":"basic-syntax","depth":3,"children":[]},{"title":"Available Variables","slug":"available-variables","depth":3,"children":[]},{"title":"Accessing Step Results","slug":"accessing-step-results","depth":3,"children":[]},{"title":"Using Secrets","slug":"using-secrets","depth":3,"children":[]}]},{"title":"Nunjucks Templates","slug":"nunjucks-templates","depth":2,"children":[{"title":"Control Structures","slug":"control-structures","depth":3,"children":[]},{"title":"For Loops","slug":"for-loops","depth":4,"children":[]},{"title":"Conditional Statements","slug":"conditional-statements","depth":4,"children":[]},{"title":"Loop with Index","slug":"loop-with-index","depth":4,"children":[]},{"title":"Built-in Functions","slug":"built-in-functions","depth":3,"children":[]},{"title":"Filters","slug":"filters","depth":3,"children":[]},{"title":"Whitespace Control","slug":"whitespace-control","depth":3,"children":[]}]},{"title":"Common Patterns","slug":"common-patterns","depth":2,"children":[{"title":"Processing Lists","slug":"processing-lists","depth":3,"children":[]},{"title":"Conditional Data Selection","slug":"conditional-data-selection","depth":3,"children":[]},{"title":"Combining Multiple Sources","slug":"combining-multiple-sources","depth":3,"children":[]},{"title":"Filtering Lists","slug":"filtering-lists","depth":3,"children":[]},{"title":"Building Dynamic Prompts","slug":"building-dynamic-prompts","depth":3,"children":[]}]},{"title":"Best Practices","slug":"best-practices","depth":2,"children":[{"title":"Variable References","slug":"variable-references","depth":3,"children":[]},{"title":"Templates","slug":"templates","depth":3,"children":[]},{"title":"Secrets","slug":"secrets","depth":3,"children":[]},{"title":"Performance","slug":"performance","depth":3,"children":[]}]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[{"title":"Common Issues","slug":"common-issues","depth":3,"children":[]}]},{"title":"Related","slug":"related","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"jinba","siteName":"jinba","title":"Variables \u0026 Templates - jinba","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/en/pages/basics/variables","matchLevel":0},"jp":{"href":"/ja/pages/basics/variables","matchLevel":1}}},"lastModified":"2026-10-20T20:32:01.483Z","originalFileLocation":"en/pages/basics/variables.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Learn how to use variable placeholders and Nunjucks templates to create dynamic workflows\">\u003cmeta data-mint-head name=\"application-name\" content=\"jinba\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/jinba/gx4vPmTA5xef9Bef/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/jinba/gx4vPmTA5xef9Bef/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/jinba/gx4vPmTA5xef9Bef/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/jinba/gx4vPmTA5xef9Bef/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/jinba/gx4vPmTA5xef9Bef/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/jinba/gx4vPmTA5xef9Bef/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/jinba/gx4vPmTA5xef9Bef/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/jinba/gx4vPmTA5xef9Bef/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/jinba/gx4vPmTA5xef9Bef/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Variables \u0026amp; Templates - jinba\">\u003cmeta data-mint-head property=\"og:description\" content=\"Learn how to use variable placeholders and Nunjucks templates to create dynamic workflows\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"jinba\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.jinba.io/en/pages/basics/variables\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://jinba.mintlify.site/_mintlify/api/og/v2?division=Creating+Flows\u0026amp;title=Variables+%26+Templates\u0026amp;description=Learn+how+to+use+variable+placeholders+and+Nunjucks+templates+to+create+dynamic+workflows\u0026amp;theme=b93e719d3f531f5057d6bfe2\u0026amp;signature=0980cfae79faec04084fdfafdd225700767a0adb62709c078dec1df44152eea6\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Variables \u0026amp; Templates - jinba\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Learn how to use variable placeholders and Nunjucks templates to create dynamic workflows\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://jinba.mintlify.site/_mintlify/api/og/v2?division=Creating+Flows\u0026amp;title=Variables+%26+Templates\u0026amp;description=Learn+how+to+use+variable+placeholders+and+Nunjucks+templates+to+create+dynamic+workflows\u0026amp;theme=b93e719d3f531f5057d6bfe2\u0026amp;signature=0980cfae79faec04084fdfafdd225700767a0adb62709c078dec1df44152eea6\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/jinba/gx4vPmTA5xef9Bef/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"jinba\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#342115\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.jinba.io/en/pages/basics/variables\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/en/pages/basics/variables.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.jinba.io/en/pages/basics/variables\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://docs.jinba.io/ja/pages/basics/variables\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.jinba.io/en/pages/basics/variables\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.jinba.io/#organization\",\"name\":\"jinba\",\"url\":\"https://docs.jinba.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/jinba/7gYdJDDfMS9Bs1rw/logo/jinba_company_lockup.svg?fit=max\u0026auto=format\u0026n=7gYdJDDfMS9Bs1rw\u0026q=85\u0026s=36b484f0e9644585dbf18eb3d0ef2169\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.jinba.io#website\",\"name\":\"jinba\",\"url\":\"https://docs.jinba.io\",\"publisher\":{\"@id\":\"https://docs.jinba.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.jinba.io/en/pages/basics/variables#webpage\",\"url\":\"https://docs.jinba.io/en/pages/basics/variables\",\"name\":\"Variables \u0026 Templates\",\"description\":\"Learn how to use variable placeholders and Nunjucks templates to create dynamic workflows\",\"dateModified\":\"2026-10-20T20:32:01.483Z\",\"isPartOf\":{\"@id\":\"https://docs.jinba.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.jinba.io/en/pages/basics/variables#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.jinba.io/en/pages/basics/variables#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Docs\",\"item\":\"https://docs.jinba.io/en/pages/basics/what-is-jinba-flow\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Creating Flows\",\"item\":\"https://docs.jinba.io/en/pages/basics/choose-flow-editor\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Variables \u0026 Templates\",\"item\":\"https://docs.jinba.io/en/pages/basics/variables\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.jinba.io/en/pages/basics/variables#article\",\"headline\":\"Variables \u0026 Templates\",\"name\":\"Variables \u0026 Templates\",\"description\":\"Learn how to use variable placeholders and Nunjucks templates to create dynamic workflows\",\"url\":\"https://docs.jinba.io/en/pages/basics/variables\",\"mainEntityOfPage\":{\"@id\":\"https://docs.jinba.io/en/pages/basics/variables#webpage\"},\"dateModified\":\"2026-10-20T20:32:01.483Z\",\"publisher\":{\"@id\":\"https://docs.jinba.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.jinba.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"jinba\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"jinba\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/en/pages/basics/variables.md","siteName":"jinba","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"What is Jinba","pages":[{"title":"What is Jinba","href":"/en/introduction"}]},{"tab":"Jinba Flow","icon":"https://mintlify.s3.us-west-1.amazonaws.com/jinba/logo/jinba_logo_no_text.ico","groups":[{"group":"Docs","pages":[{"group":"Getting Started","icon":"rocket","pages":[{"title":"What is Jinba Flow?","href":"/en/pages/basics/what-is-jinba-flow"},{"title":"Build and Run Your First Jinba Flow Workflow","href":"/en/pages/basics/quickstart"},{"title":"Jinba Flow Concepts","href":"/en/pages/basics/core-concepts"}]},{"group":"Product \u0026 Architecture","icon":"building","pages":[{"title":"System Architecture","href":"/en/pages/architecture/system-architecture"},{"title":"Execution Model","href":"/en/pages/architecture/execution-model"}]},{"group":"Workspace","icon":"briefcase","pages":[{"title":"Manage a Jinba Flow Workspace","href":"/en/pages/basics/workspace"},{"title":"Publish a Jinba Flow as an MCP Server","href":"/en/pages/basics/mcp"},{"title":"Credit Costs","href":"/en/pages/basics/credit-costs"},{"title":"Archive Feature","href":"/en/pages/basics/archive"}]},{"group":"Creating Flows","icon":"wand-magic-sparkles","pages":[{"title":"Choose How to Build a Jinba Flow Workflow","href":"/en/pages/basics/choose-flow-editor"},{"title":"Build a Jinba Flow Workflow with the Chat Panel","href":"/en/pages/basics/chat"},{"title":"Build a Jinba Flow Workflow with the Graph Editor","href":"/en/pages/basics/drag_and_drop"},{"title":"Write a Jinba Flow Workflow Manifest in YAML","href":"/en/pages/basics/manifest"},{"title":"Step Module Options","description":"Learn how to use advanced step options like loops (forEach), conditions (when), and dependencies (needs) in your workflows","href":"/en/pages/basics/step-options"},{"title":"Variables \u0026 Templates","href":"/en/pages/basics/variables"}]},{"group":"Managing Flows","icon":"sliders","pages":[{"title":"Publish a Jinba Flow for API or MCP Access","description":"Publish a workflow, understand its published version, and access it through API or MCP.","href":"/en/pages/basics/publish"},{"title":"Debug Failed Jinba Flow Runs","href":"/en/pages/basics/debug"},{"title":"History and Versions","href":"/en/pages/basics/history-versions"},{"title":"Run a Published Jinba Flow with the REST API","href":"/en/pages/basics/api"},{"title":"Install and Use the Jinba Flow CLI","href":"/en/pages/basics/cli"},{"title":"Schedule a Jinba Flow Workflow","href":"/en/pages/basics/scheduling"},{"title":"Create and Use a Knowledge Base in Jinba Flow","href":"/en/pages/basics/knowledge"}]},{"title":"Tools Overview","href":"/en/pages/tools/index"},{"group":"Input/Output Tools","icon":"arrow-right-arrow-left","pages":[{"title":"Fetch Files from URLs in Jinba Flow","icon":"file","href":"/en/pages/tools/files/input"},{"title":"Choose an Event or File Input for Jinba Flow","icon":"file-import","href":"/en/pages/tools/files/choose-input-tool"},{"title":"Receive an HTTP Webhook in Jinba Flow","icon":"file-import","href":"/en/pages/tools/files/receive-webhook"},{"title":"Receive a Slack Event in Jinba Flow","icon":"file-import","href":"/en/pages/tools/files/receive-slack-event"},{"title":"Load an Image URL into a Jinba Flow Workflow","icon":"file-image","href":"/en/pages/tools/files/load-image-url"},{"title":"Read a URL File as Text in Jinba Flow","icon":"file-lines","href":"/en/pages/tools/files/read-file-as-text"},{"title":"Validate JSON Input to a Jinba Flow Workflow","icon":"square-check","href":"/en/pages/tools/validation/input"},{"title":"Create Files and Text Output in Jinba Flow","icon":"file-export","href":"/en/pages/tools/files/output_tools"},{"title":"Validate JSON Output from a Jinba Flow Workflow","icon":"square-check","href":"/en/pages/tools/validation/output"}]},{"group":"AI Tools","icon":"brain","pages":[{"title":"Generate Text and Images with Gemini in Jinba Flow","icon":"robot","href":"/en/pages/tools/ai/gemini"},{"title":"Analyze PDFs, Images, Audio, and Video with Gemini in Jinba Flow","icon":"robot","href":"/en/pages/tools/ai/gemini_with_file"},{"title":"Chat with Grok in Jinba Flow","icon":"robot","href":"/en/pages/tools/ai/grok"},{"title":"Jev (TypeSafe AI)","icon":"robot","href":"/en/pages/tools/ai/typesafe_jev"},{"title":"Invoke Claude, Analyze PDFs and Images, and Run Managed Agents in Jinba Flow","icon":"robot","href":"/en/pages/tools/ai/anthropic"},{"title":"Generate Text, Analyze Files, and Run Research with OpenAI in Jinba Flow","icon":"robot","href":"/en/pages/tools/ai/openai"},{"title":"Parse Files and Query a Llama Cloud Index in Jinba Flow","icon":"cloud","href":"/en/pages/tools/ai/llama_cloud"},{"title":"Generate Text and Analyze Files with Azure OpenAI in Jinba Flow","icon":"microsoft","href":"/en/pages/tools/ai/azure_openai"}]},{"group":"File Processing Tools","icon":"file-lines","pages":[{"title":"Extract Text from Base64 PDF and DOCX Files in Jinba Flow","icon":"file","href":"/en/pages/tools/files/extract"},{"title":"Extract, Convert, and Translate Documents in Jinba Flow","icon":"file-text","href":"/en/pages/tools/files/document_processing"},{"title":"Extract, Highlight, Comment, and Generate Word Documents in Jinba Flow","icon":"file-word","href":"/en/pages/tools/files/word_processing"},{"title":"Build Slide Decks from Markdown with Marp in Jinba Flow","icon":"presentation","href":"/en/pages/tools/files/marp"},{"title":"Generate Diagrams from Mermaid Code in Jinba Flow","icon":"diagram","href":"/en/pages/tools/files/mermaid"},{"title":"Convert a Document URL to Markdown in Jinba Flow","icon":"markdown","href":"/en/pages/tools/validation/markitdown_convert"},{"title":"Validate and Check Data Quality in Jinba Flow","icon":"check-circle","href":"/en/pages/tools/validation/checker_tools"},{"title":"Validate Documents with Jinba Modules Checker V2","icon":"shield-check","href":"/en/pages/tools/validation/jinba_modules_checker_v2"},{"title":"Convert Data Between Formats in Jinba Flow","icon":"arrows-rotate","href":"/en/pages/tools/validation/data_conversion"},{"title":"Parse, Extract, and Split Documents with Reducto in Jinba Flow","icon":"file-magnifying-glass","href":"/en/pages/tools/files/reducto"},{"title":"Parse Subtitle and Transcript Files in Jinba Flow","icon":"closed-captioning","href":"/en/pages/tools/files/vtt_parse"}]},{"group":"External Service Integration Tools","icon":"plug","pages":[{"title":"Automate Issues, Releases, and Actions in GitHub in Jinba Flow","icon":"github","href":"/en/pages/tools/productivity/github"},{"title":"Create Pages, Add Content, and Search in Notion in Jinba Flow","icon":"pen-to-square","href":"/en/pages/tools/productivity/notion"},{"title":"Read and Edit Google Sheets Ranges in Jinba Flow","icon":"table","href":"/en/pages/tools/productivity/google_sheets"},{"title":"Manage Google Sheets Rows and Tabs in Jinba Flow","icon":"table","href":"/en/pages/tools/productivity/google_spreadsheet"},{"title":"Create and Manage Google Forms in Jinba Flow","icon":"google","href":"/en/pages/tools/productivity/google_forms"},{"title":"Create, Read, and Update Excel Files in Jinba Flow","icon":"file-excel","href":"/en/pages/tools/productivity/excel"},{"title":"Create and Find Events in Google Calendar in Jinba Flow","icon":"calendar","href":"/en/pages/tools/productivity/google_calendar"},{"title":"Create, Find, and Update Outlook Calendar Events in Jinba Flow","icon":"calendar","href":"/en/pages/tools/productivity/outlook_calendar"},{"title":"Send Messages and Manage Tasks with Chatwork in Jinba Flow","icon":"comment","href":"/en/pages/tools/productivity/chatwork"},{"title":"Manage SharePoint Files and Sites in Jinba Flow","icon":"folder","href":"/en/pages/tools/productivity/sharepoint"},{"title":"Manage Teams, Channels, and Messages in Microsoft Teams in Jinba Flow","icon":"folder","href":"/en/pages/tools/productivity/teams"},{"title":"Send and Read Email with Gmail in Jinba Flow","icon":"envelope","href":"/en/pages/tools/communication/gmail"},{"title":"Post Messages and Read Threads in Slack in Jinba Flow","icon":"slack","href":"/en/pages/tools/communication/slack"},{"title":"Send Messages and Manage Reactions in Discord in Jinba Flow","icon":"discord","href":"/en/pages/tools/communication/discord"},{"title":"Send Messages, Broadcast, and Read User Data on LINE in Jinba Flow","icon":"line","href":"/en/pages/tools/communication/line"},{"title":"Send Twilio Messages and Receive SMS in Jinba Flow","icon":"comment-sms","href":"/en/pages/tools/communication/twilio"},{"title":"Manage Contacts, Messages, Events, and Conversations in Intercom in Jinba Flow","icon":"comments","href":"/en/pages/tools/communication/intercom"},{"title":"Post, Search, and Read Profiles on X in Jinba Flow","icon":"x-twitter","href":"/en/pages/tools/communication/x"},{"title":"Send and Track Faxes with Faximo in Jinba Flow","icon":"fax","href":"/en/pages/tools/communication/faximo"},{"title":"Manage Files and Folders in Box in Jinba Flow","icon":"box","href":"/en/pages/tools/productivity/box"},{"title":"Create, Update, and Search Jira Issues in Jinba Flow","icon":"jira","href":"/en/pages/tools/productivity/jira"},{"title":"Manage Issues and Teams in Linear in Jinba Flow","icon":"bars-progress","href":"/en/pages/tools/productivity/linear"},{"title":"Look Up Microsoft 365 Users and Managers in Jinba Flow","icon":"folder","href":"/en/pages/tools/productivity/microsoft_users"},{"title":"Manage Employees (Crews) in SmartHR in Jinba Flow","icon":"building","href":"/en/pages/tools/productivity/smarthr"},{"title":"Manage Meetings, Reports, and Recordings in Zoom in Jinba Flow","icon":"video","href":"/en/pages/tools/productivity/zoom"},{"title":"Send and Read Email with Outlook in Jinba Flow","icon":"envelope","href":"/en/pages/tools/communication/outlook_mail"},{"title":"HubSpot","icon":"hubspot","href":"/en/pages/tools/productivity/hubspot"}]},{"group":"Search \u0026 Data Retrieval Tools","icon":"magnifying-glass","pages":[{"title":"Search with SerpAPI in Jinba Flow","icon":"searchengin","href":"/en/pages/tools/search/serpapi"},{"title":"Get Pokémon, Type, and Ability Data in Jinba Flow","icon":"bolt-lightning","href":"/en/pages/tools/search/pokeapi"},{"title":"Get a YouTube Video Transcript in Jinba Flow","icon":"youtube","href":"/en/pages/tools/search/youtube"},{"title":"Ask About an arXiv Paper in Jinba Flow","icon":"book-open","href":"/en/pages/tools/search/arxiv"},{"title":"Search the Web with Exa AI in Jinba Flow","icon":"searchengin","href":"/en/pages/tools/search/exaai"},{"title":"Get a Web Answer with Perplexity in Jinba Flow","icon":"searchengin","href":"/en/pages/tools/search/perplexity"},{"title":"Run Semantic Search and RAG with Pinecone in Jinba Flow","icon":"database","href":"/en/pages/tools/search/pinecone"},{"title":"Run Queries and Vector Search on Teradata in Jinba Flow","icon":"database","href":"/en/pages/tools/search/teradata"},{"title":"Search Company Information with Carnot Search in Jinba Flow","icon":"magnifying-glass","href":"/en/pages/tools/search/carnot_search"},{"title":"Run Text, Vector, and Hybrid Search with Azure AI Search in Jinba Flow","icon":"magnifying-glass","href":"/en/pages/tools/search/azure_ai_search"},{"title":"Run RAG and Sync Documents with AWS Bedrock Knowledge Bases in Jinba Flow","icon":"aws","href":"/en/pages/tools/search/aws_bedrock_knowledge_base"},{"title":"Search, Fetch, and Browse the Web with TinyFish in Jinba Flow","icon":"fish","href":"/en/pages/tools/search/tinyfish"},{"title":"Browser Use (Cloud)","icon":"browser","href":"/en/pages/tools/search/browser_use"}]},{"group":"Database Tools","icon":"database","pages":[{"title":"Run Queries on Snowflake in Jinba Flow","icon":"database","href":"/en/pages/tools/database/snowflake"},{"title":"Run Queries on PostgreSQL in Jinba Flow","icon":"database","href":"/en/pages/tools/database/postgres"}]},{"group":"Extended Tools","icon":"puzzle-piece","pages":[{"title":"Run Python Code in a Jinba Flow Sandbox","icon":"python","href":"/en/pages/tools/sandbox/python_sandbox_run"},{"title":"Automate Browser Tasks in a Sandbox","icon":"browser","href":"/en/pages/tools/sandbox/browser_use_sandbox"},{"title":"Run Local and Remote Tools via MCP in Jinba Flow","icon":"plug","href":"/en/pages/tools/sandbox/mcp_tools"},{"title":"Create and List Products in Shopify in Jinba Flow","icon":"shopify","href":"/en/pages/tools/productivity/shopify"},{"title":"Fetch Categories and Suppliers from Netsea in Jinba Flow","icon":"cart-shopping","href":"/en/pages/tools/productivity/netsea"},{"title":"Generate Videos and Images from Text in Jinba Flow","icon":"video","href":"/en/pages/tools/media/video_generation"},{"title":"Create a WordPress Draft or Post from Jinba Flow","icon":"wordpress","href":"/en/pages/tools/cms/wordpress"},{"title":"Scrape Web Pages into Markdown with Firecrawl in Jinba Flow","icon":"spider","href":"/en/pages/tools/cms/firecrawl"}]},{"group":"Jinba Tools","icon":"toolbox","pages":[{"title":"Run Flows and Manage Files and Tables in Jinba Flow","icon":"cloud","href":"/en/pages/tools/jinba/jinba"},{"title":"Extract, Parse, and Validate Documents with Jinba Modules in Jinba Flow","icon":"cube","href":"/en/pages/tools/jinba/jinba_modules"},{"title":"Run Semantic Search on Knowledge Bases in Jinba Flow","icon":"magnifying-glass","href":"/en/pages/tools/jinba/vector_search"},{"title":"Update and Manage Knowledge Bases in Jinba Flow","icon":"database","href":"/en/pages/tools/jinba/knowledge_base"},{"title":"Jinba Toolbox","icon":"toolbox","href":"/en/pages/tools/jinba/jinba_toolbox"}]},{"group":"Tutorials","icon":"graduation-cap","pages":[{"title":"Building a RAG Chat System","icon":"comments","href":"/en/pages/tutorials/rag-chat-system"}]},{"group":"Credentials","icon":"key","pages":[{"title":"Choose and Configure Credentials for Jinba Flow","href":"/en/pages/credentials/index"},{"title":"Communication Platforms","href":"/en/pages/credentials/communication-platforms"},{"title":"Productivity Tools","href":"/en/pages/credentials/productivity-tools"},{"title":"E-commerce Platforms","href":"/en/pages/credentials/ecommerce-platforms"},{"title":"Anthropic Credentials","href":"/en/pages/credentials/anthropic"},{"title":"Chatwork Credentials","href":"/en/pages/credentials/chatwork"},{"title":"Discord Credentials","href":"/en/pages/credentials/discord"},{"title":"Gemini Credentials","href":"/en/pages/credentials/gemini"},{"title":"GitHub Credentials","href":"/en/pages/credentials/github"},{"title":"Google OAuth Credentials","href":"/en/pages/credentials/google-oauth"},{"title":"Grok Credentials","href":"/en/pages/credentials/grok"},{"title":"HubSpot Credentials","href":"/en/pages/credentials/hubspot"},{"title":"Jira Credentials","href":"/en/pages/credentials/jira"},{"title":"Kling Credentials","href":"/en/pages/credentials/kling"},{"title":"LINE Credentials","href":"/en/pages/credentials/line"},{"title":"Intercom Credentials","href":"/en/pages/credentials/intercom"},{"title":"Llama Credentials","href":"/en/pages/credentials/llama"},{"title":"Luma Credentials","href":"/en/pages/credentials/luma"},{"title":"Microsoft OAuth Credentials","href":"/en/pages/credentials/microsoft-oauth"},{"title":"Netsea Credentials","href":"/en/pages/credentials/netsea"},{"title":"Notion Credentials","href":"/en/pages/credentials/notion"},{"title":"OpenAI Credentials","href":"/en/pages/credentials/openai"},{"title":"Shopify Credentials","href":"/en/pages/credentials/shopify"},{"title":"Slack Credentials","href":"/en/pages/credentials/slack"},{"title":"SmartHR Credentials","href":"/en/pages/credentials/smarthr"},{"title":"Twilio Credentials","href":"/en/pages/credentials/twilio"}]}]}]},{"tab":"Jinba App","icon":"https://mintlify.s3.us-west-1.amazonaws.com/jinba/logo/jinba_app_logo_no_text.svg","pages":[{"title":"Jinba App","href":"/en/pages/jinba_app_neo/introduction"}]},{"tab":"Jinba App (Legacy)","icon":"https://mintlify.s3.us-west-1.amazonaws.com/jinba/logo/jinba_app_logo_no_text.svg","pages":[{"title":"Jinba App (Legacy)","href":"/en/pages/jinba_app/introduction"}]},{"tab":"Jinba Toolbox","icon":"https://mintlify.s3.us-west-1.amazonaws.com/jinba/logo/jinba_toolbox_logo.svg","pages":[{"title":"Jinba Toolbox","href":"/en/pages/toolbox/what-is-jinba-toolbox"}]}]},{"language":"jp","pages":[{"title":"jp","href":"/ja/pages/basics/variables"}]}]},"basePath":"","title":"Variables \u0026 Templates - jinba","buildId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","deploymentId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","dynamics":[],"chunks":[]}