Bryan Meyerovich
04/21/2026, 1:51 PMkapa.ai
04/21/2026, 1:51 PMretriever, requester, url
⦠Value uses the components_values variable, e.g.:
This pulls a value (like an ID or name) from each record returned by the template's endpoint and injects it into the URL of each generated stream. [Stream Templates] Using stream_partition in the URL (Partitioning) If you're using Parameterized Requests or a Parent Stream, you can reference the partition value directly in the URL path using Jinja expressions and the stream_partition variable. For example:
https://connect.squareup.com/v2/quotes/{{ stream_partition['id'] }}/quote_line_groups
This is useful when the stream name or a related value needs to be injected into the URL path. [Custom parameter injection; YAML Reference] In summary: You don't inject the stream name itself directly into the URL, but you can inject dynamic values (like IDs or slugs from a parent/template endpoint) using {{ components_values.<field> }} in Stream Templates or {{ stream_partition['<field>'] }} in partitioned streams. š 0 button š 0 button ā¹ļø Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Bryan Meyerovich
04/21/2026, 1:52 PMBryan Meyerovich
04/21/2026, 1:53 PMkapa.ai
04/21/2026, 1:53 PMJinja macro has undeclared variables: {'components_values'} means that {{ components_values.<field> }} is being used outside of a Stream Template context, where it is not available.
{{ components_values.field_name }} is only valid within the Components Mapping section of a Stream Template ā it references fields from the records returned by the Produce Data for Template endpoint. [Stream Templates]
If your Supplier stream is a regular stream (not a generated stream from a Stream Template), you cannot use {{ components_values.* }} in it. Here are the likely fixes:
1. If you intended to use a Stream Template: Make sure the stream is configured as a generated stream under a Stream Template, not as a standalone stream. The components_values context is only injected into streams generated by a template.
2. If you're trying to inject a dynamic value into the URL from a parent stream: Use {{ stream_partition['field_name'] }} instead, which is the correct interpolation context for partitioned/sub-streams.
3. If you're trying to reference a config value: Use {{ config.field_name }} instead.
The available interpolation contexts outside of Stream Templates are:
⢠{{ config.field_name }} ā connector configuration values
⢠{{ stream_slice.field_name }} ā stream slice information
⢠{{ stream_template_config.field_name }} ā stream template configuration (only in template context)
[Advanced configuration]
Check where {{ components_values.* }} is being used in your Supplier stream and replace it with the appropriate interpolation variable for your use case. š 0 button š 0 button ā¹ļø Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Bryan Meyerovich
04/21/2026, 1:54 PMkapa.ai
04/21/2026, 1:54 PMhttps://api.example.com/{{ config.supplier_name }}/endpoint Option 2: Use Stream Templates with components_values If you have multiple streams (e.g., one per supplier) and the supplier name/ID comes from an API response, use a Stream Template. The template fetches a list of items, and each generated stream gets its URL set via a component mapping:
⢠Field Path: retriever, requester, url
⢠Value: https://api.example.com/{{ components_values.name }}/endpoint
This is the correct way to dynamically vary the URL per stream based on data from another endpoint. [Stream Templates] Option 3: Use stream_partition (for partitioned streams) If you're using a parent stream to drive sub-streams, you can inject the partition value into the URL:
https://api.example.com/{{ stream_partition['name'] }}/endpoint
[Custom parameter injection] In short: There is no variable like {{ stream.name }} available in the interpolation context. You need to either hardcode the value per stream, pull it from config, or use Stream Templates / partitioning to inject dynamic values into the URL. š 0 button š 0 button ā¹ļø Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Bryan Meyerovich
04/21/2026, 1:55 PMkapa.ai
04/21/2026, 1:56 PMJinja macro has undeclared variables: {'components_values'} occurs because {{ components_values.* }} is being used in your Supplier stream, but this variable is only available within Stream Templates (specifically in the Components Mapping section). [Advanced configuration]
To fix it, replace {{ components_values.* }} in your Supplier stream URL with one of the valid interpolation variables:
⢠{{ config.field_name }} ā if the value comes from connector configuration
⢠{{ stream_partition['field_name'] }} ā if the value comes from a parent stream partition
⢠{{ stream_slice.field_name }} ā for stream slice information
For example, if the supplier name is a config value:
https://api.example.com/{{ config.supplier_name }}/endpoint
Or if it comes from a parent stream:
https://api.example.com/{{ stream_partition['name'] }}/endpoint
If you do need the URL to vary based on data fetched from another API endpoint, you'll need to restructure the Supplier stream as a generated stream under a Stream Template, which is the only context where {{ components_values.* }} is valid. š 0 button š 0 button ā¹ļø Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Bryan Meyerovich
04/21/2026, 1:56 PMkapa.ai
04/21/2026, 1:57 PM"Supplier" (the stream name) into the URL instead of using {{ components_values.name }}.
The simplest fix is to just hardcode it directly in the URL ā no Jinja expression needed:
https://{{ config['sap_id'] }}.businessbydesign.cloud.sap/sap/byd/odata/analytics/ds/Supplier.svc/Supplier?$form...
If you want to keep it as a Jinja expression for some reason, you can use $parameters to define it once and reference it:
$parameters:
stream_name: "Supplier"
Then in the URL:
https://{{ config['sap_id'] }}.businessbydesign.cloud.sap/sap/byd/odata/analytics/ds/{{ parameters.stream_name }}.svc/{{ parameters.stream_name }}?$form...
[String Interpolation]
The key point is: there is no built-in variable that automatically exposes the stream's own name. You need to either hardcode it or define it via $parameters. The {{ components_values.name }} you currently have is causing the error because that variable is only available inside Stream Templates, not in a regular standalone stream like Supplier. š 0 button š 0 button ā¹ļø Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.