Fetch the customer context your AI agent needs (plan, order, account state) before every reply, so answers are personalized rather than generic.
An agent that doesn’t know who it’s talking to gives generic answers. User Attributes is how Fini fetches the customer’s context, fresh on every message, so the agent can reference the customer’s actual plan, order, account state, or any other detail you’d otherwise have to look up by hand.
In the dashboard, this page lives under API Setup → Attributes. The list is scoped by the agent selector in the sidebar: with a specific agent selected, the page shows which attributes are available to that agent and whether each one is toggled on.
Source: the native conversation context the attribute starts from. You pick one when you create the attribute: your app’s UI metadata, a signed widget JWT, or a connected integration. The source seeds the attribute with fields; integration sources also include their connection settings.
Fields: what you end up with. Fields arrive from four groups in the Available Data panel: System Attributes, passed-in UI/JWT fields, integration metadata, and fields collected by external API calls. The first three are native (no HTTP call you write); the fourth is an API chain that can reach any endpoint, your internal API, Shopify, anything, independent of the source.
Switches: each field has up to three independent switches that decide who downstream can use it. Toggling a switch doesn’t move data; it exposes the field to that consumer.
At runtime, Fini fetches every attribute attached to the responding agent before each LLM call and exposes the resulting fields as conversation context. The rest of this page walks each decision in order, then shows the pattern applied end-to-end.
For a walkthrough showing how User Attributes feeds into Actions, Rulebook, and Reply Behavior end-to-end, see End-to-end: cancellation flow.
Each attribute has a source, picked when you create it. The source seeds the attribute with a starting set of fields and (for integrations) credentials:
Source
What it seeds the attribute with
Typical use
App UI (ui)
Metadata your app passes when it embeds Fini.
Logged-in user’s id / plan / role from your dashboard.
Widget (widget)
The signed JWT payload your backend hands the widget, plus widget-safe system fields.
Authenticated widget conversations (you sign a JWT with the Widget Signing Key and pass user fields inside it). Widget attributes can also use connection fields from active Zendesk, Salesforce, Front, HubSpot, or Gorgias integrations when making API calls.
The integration’s standard conversation objects, plus its API credentials.
Look up the customer in Zendesk by email, read the ticket’s status, etc.
The source is only the starting point, it seeds native context. Anything the source doesn’t already provide is fetched via external API calls, available to every attribute regardless of source.Sources are gated by what’s connected: integrations show up in the dropdown only if you’ve connected them on the corresponding Deploy page (helpcenter is excluded), and widget only shows up if you have at least one widget created.
Fields arrive from four groups, all in the Available Data panel, which describes itself: “Data your AI can reference. For each field, choose independently whether it’s used as an API input, available in the Rulebook, and shared with the LLM.” Each group shows an enabled-over-total count in its header (e.g., System Attributes 7/8, Conversation 2/11, Collected attributes 44/44) so you can see at a glance how many are switched on.
The first three are native: the data is already in Fini because of how the agent is reached, so there’s no HTTP call you write. The fourth is external: an API chain that fetches anything the source doesn’t already provide. Each group is detailed below.
This section covers two distinct things that share a UI panel when the attribute source is a connected integration: connection settings and conversation-level fields.Connection Settings. When you create an attribute from a connected integration, that integration exposes its Connection Settings group. Toggle Use as Input in API on credential fields, then insert them by their display name into your Data Collection Steps via the $ picker.Conversation-level fields (integration sources only). For an integration source, the same panel also shows fields directly available on the integration’s standard objects (e.g., a Zendesk ticket’s status, a Salesforce case’s priority). No API call needed; Fini reads them as part of the conversation context the integration already provides. Use these when the field is on the conversation object itself (“the customer’s email is on the ticket”); they’re cheaper and more reliable than a custom API step.Widget-source attributes handle connection fields slightly differently. If your workspace has active Zendesk, Salesforce, Front, HubSpot, or Gorgias integrations, the Widget source exposes the integration values it can resolve at runtime as widget system fields. Use those fields as API inputs when a widget conversation needs to call the connected helpdesk or CRM without storing a per-widget integration setting.The full field catalog for every integration is in the integration field catalog at the end of this page. The same list is visible live in the editor when you create an attribute.
The fourth field group, and the only one that costs an HTTP call you write. The distinction that matters:
Native integrations (Zendesk, HubSpot, Salesforce, and the others) are connected once on the Deploy page. Fini knows their object shape, so they come with a pre-built field catalog you just toggle on.
External systems are any other HTTP endpoint, your own internal API, Shopify, a data warehouse, or even a native integration’s REST API. There’s no catalog: you supply the URL, headers, and auth, and declare which response fields to keep. For Redshift, Snowflake, BigQuery, Postgres, and similar systems, expose a scoped HTTPS endpoint in front of the warehouse. See Database and Warehouse Connections.
A multi-step chain of HTTP requests, available to every attribute regardless of source. Each step is one HTTP call; later steps can use any field collected by earlier steps as input. The UI labels this section Attributes from External Systems, with the helper text “Make API calls to fetch additional data. Any field from above, as well as collected attributes from a given API step, can be used as input in subsequent steps.”Steps are configured under Data Collection Steps (“Configure the sequence of API calls that collect the attributes shown above”). Each step has:
A Step Name and Method (GET / POST / PUT / PATCH / DELETE), plus the URL. Type $ in any field to insert a dynamic value.
A Headers block and request body, as JSON. Use the $ picker to interpolate any field from the sections above whose Use as Input in API switch is on, for example, the user’s email in the URL, or an API key in an x-api-key header.
A Save From Response block: the fields to pull out of the response, in "mappedName": "json_path" form.
The fields you map populate the Collected attributes table, where each row shows only Use in Rulebooks and Visible to AI (no input switch) and is labelled with the step that produced it.
Most fields show three independent switches in the editor table. They don’t move data, they expose a field to a downstream consumer:
Use as Input in API: makes the field available to your Data Collection Steps as a dynamic value you can insert into URLs, headers, or request bodies. In any step field, type $ to open the picker; Fini inserts the field by its display name. Turn this on for credentials and identifiers you want to inject into HTTP calls.
Use in Rulebooks: exposes the field as a condition input in Rulebook and Reply Behavior. Off by default; flip on for fields you want to write rules against.
Visible to AI: includes the field in the LLM’s context for that conversation. Off by default; flip on for fields the agent should reference when answering.
The switches are independent. The patterns that recur:
Field kind
Input in API
Rulebooks
Visible to AI
A credential (bearer token, subdomain)
✓
A customer plan / tier
✓
✓
An order / ticket id
✓
✓
✓
Don’t make every field visible to AI. The LLM context window has a budget; fields that aren’t useful for answering questions just dilute the signal. Default to off, flip on the handful of fields that genuinely help the agent personalize its reply.
Fields collected from API responses (the Collected attributes table under Data Collection Steps) only show Use in Rulebooks and Visible to AI: they’re automatically available to subsequent API steps in the same chain by name, so no input switch is needed.
Land on API Setup → Attributes in the sidebar. The list shows every attribute you’ve created so far, scoped to the agent you have selected in the sidebar.
2
Fill in the basics
Name (required): how this attribute shows up in the list and in test logs (e.g., “Customer Plan”, “Recent Orders”).
Description (optional): a sentence about what this attribute fetches. Useful when teammates open the page later.
Source (required): pick from the dropdown. Determines which field-source sections you’ll see in the detail view.
3
Configure Available Data
The detail view opens. Walk through each section: System Attributes, your source’s passed-in or integration-metadata fields, and (if needed) Data Collection Steps for the API chain.
4
Toggle the three switches per field
For each field, decide independently whether it’s Use as Input in API, Use in Rulebooks, Visible to AI, or some combination. Credentials are typically input-only; identifiers like an order id are often all three; sentiment fields are usually rule + AI but not input.
5
Test the chain
Click the Play button at the top of the detail view. The Test panel opens; provide sample inputs and run the chain step by step to confirm fields come back as expected before the agent relies on them. Each Data Collection Step also has its own play button for testing in isolation.
6
Save
Click Save. Subsequent chat messages will fetch this attribute as part of building the agent’s context.
The sidebar has an agent dropdown. With Company level selected, the list shows workspace-level configuration. Picking a specific agent scopes the list to that agent: each attribute row shows whether it is available to the selected agent, plus its field count.
The Always-Get banner at the top of the list is a reminder: every attached attribute runs on every chat message for the selected agent. There’s no “fetch on demand” mode; if it’s attached, it runs.
Each attribute card shows the Chat and Email channel tags it’s currently active on, plus an “Active for [agent name] on Chat & Email”-style status line. Use the checkbox on the card to toggle attachment.
The card also shows the total field count the attribute exposes (system + passed-in + collected).
Click Save in the top-right to commit attachment / channel changes; Cancel discards.
If an agent has no attributes attached, no per-message lookup runs for it. Conversations on that agent get only the defaults the integration already provides (sender email, conversation subject, etc.) plus the System Attributes.
Deleting an attribute also deletes the API steps configured under it. The action is irreversible; the confirmation dialog calls this out. If the attribute is attached to agents, the attachment is removed from those agents automatically.
User attributes attached to the responding agent are fetched on every chat message before the agent composes its reply. The chain runs server-side; the customer doesn’t see anything happen. Because they’re fetched up front, the resulting fields are available to the LLM, Rulebook, and Reply Behavior (under the User Attributes field group), each according to the per-field switches described in Switches.The fetch is per-message, so if a customer’s plan changes mid-conversation, the next message picks up the new value.
Every attribute follows the same shape: create → expose source fields → call an API → toggle collected fields → attach to an agent. The three examples below apply that shape to the three sources. Pick the tab that matches how your agent is deployed, you only need the one.
UI metadata
Widget (JWT)
Connected integration
Order status from UI metadata. Your app embeds the Fini agent and passes a per-conversation order id plus an auth token via UI metadata. Fini calls your order API with those, gets back the order’s status, and exposes it to the agent.
1
Create the attribute
Name:Get Attributes for Fini UI Inbox Conversation. Source:ui.
2
Add the UI Metadata Attributes you'll use
Two passed-in fields, both with all three switches on:
Field
Use as Input in API
Use in Rulebooks
Visible to AI
Token
✓
✓
✓
Order Id
✓
✓
✓
Use as Input in API lets the API step interpolate them; Visible to AI lets the LLM see the order id; Use in Rulebooks lets a rule match on them later.
3
Add a Data Collection Step that calls your order API
Name:Get Order Status. Method:GET. Configure:
URL: https://api.yourstore.com/orders/${Order Id}Headers: {"Authorization": "${Token}"}Save From Response: {"orderStatus": "order.status"}
The ${Order Id} and ${Token} tokens are the passed-in fields by their display name, inserted with the $ picker. The order.status path on the right of Save From Response is the JSON path inside your API’s response.
4
Toggle Collected attributes for orderStatus
The chain produces one collected field, orderStatus. Toggle Visible to AI so the agent can reference it in its reply (“Your order is in transit and will arrive Monday”).
5
Optionally enable a System Attribute for time-based rules
To suppress the agent off-hours, toggle Use in Rulebooks + Visible to AI on Is Weekday (UTC) so a Reply Behavior rule can stay silent when it’s false.
6
Attach to the responding agent on the right channels
Pick the agent from the top-right dropdown, toggle the attribute on, leave Chat + Email tags as-is (or trim to one channel if needed), and click Save.
Business hours from Zendesk via the widget. A widget-source attribute uses the customer’s accountType from the signed JWT, then calls Zendesk’s API, using the connected Zendesk integration values that appear in the Widget source’s system fields, to get the team’s business hours schedules. The agent can then answer “are we open?” without you wiring anything custom.
1
Create the attribute
Name:Get Attributes for Fini Widget Conversation. Source:widget.
2
Toggle the System Attributes you want exposed
Pick the universal fields useful for this agent. A common set turns on Use in Rulebooks + Visible to AI for User Name, User Email, Has Attachment, and Time (UTC).
3
Use Zendesk fields for API calls
Because Zendesk is connected in the workspace, the Widget source includes Zendesk connection fields in System Attributes. Toggle Use as Input in API on:
Field
Use as Input in API
Zendesk Account Subdomain
✓
Zendesk API Access Token
✓
Leave Use in Rulebooks / Visible to AI off. Connection fields should be used only as API inputs, not exposed to rules or the LLM.
4
List the JWT field you'll branch on
Your backend signs a JWT containing an accountType claim and hands it to the widget. List accountType under JWT Token Attributes with Use in Rulebooks + Visible to AI so a Rulebook condition can match on it and the agent knows the tier.
5
Add a Data Collection Step that calls Zendesk
Name:Get Business Hours Schedules from Zendesk. Method:GET. Configure:
URL: https://${Zendesk Account Subdomain}.zendesk.com/api/v2/business_hours/schedules.jsonHeaders: {"Authorization": "Bearer ${Zendesk API Access Token}"}Save From Response: {"schedules": "schedules"}
The ${Zendesk Account Subdomain} and ${Zendesk API Access Token} tokens are the Zendesk fields by their exact catalog label, inserted via the $ picker. The right side of Save From Response is the JSON path in Zendesk’s response, Zendesk returns { schedules: [...] }, so the path is schedules.
6
Toggle Collected attributes
The chain produces schedules (array). Toggle Use in Rulebooks + Visible to AI so the agent can reason about whether the conversation arrived during business hours.
This pattern (widget source + connected integration fields + integration API call) generalizes to any “widget needs data from your helpdesk” case: ticket lookup by JWT user id, last conversation summary, organization details, and so on.
Enriching Zendesk tickets. When the agent replies on Zendesk tickets, you usually want more than the raw ticket subject. A Zendesk-source attribute exposes Zendesk’s standard Ticket fields directly, plus the connection’s credentials so you can call any Zendesk API for richer context.
1
Create the attribute
Name:Get Attributes for Zendesk Tickets. Source:zendesk.
2
Pick standard Ticket fields
Under the Ticket field group, toggle Visible to AI on the fields the agent should reference when answering. A common minimum:
Field
Use in Rulebooks
Visible to AI
Status
✓
✓
Priority
✓
✓
Subject
✓
Type
✓
Group Id
✓
Organization Id
✓
Status and Priority are usually both rule + AI inputs (for triage rules and for the agent to acknowledge urgency). Group Id and Organization Id are typically rule-only, you don’t want the LLM mentioning internal ids. The full set of Ticket fields is in the integration field catalog.
3
Toggle Zendesk credentials for API calls
Under Zendesk Settings, toggle Use as Input in API on:
Field
Use as Input in API
Zendesk Account Subdomain
✓
Zendesk API Access Token
✓
Leave Use in Rulebooks / Visible to AI off; credentials shouldn’t be exposed to rules or the LLM. With these toggled, your Data Collection Steps can insert the Zendesk subdomain and access token by their display names via the $ picker.
4
Add a Data Collection Step to enrich the ticket
A common second step fetches the ticket’s requester profile so the agent knows who’s asking.Name:Get Requester. Method:GET. Configure:
URL: https://${Zendesk Account Subdomain}.zendesk.com/api/v2/users/${Requester Id}.jsonHeaders: {"Authorization": "Bearer ${Zendesk API Access Token}"}Save From Response: { "requesterRole": "user.role", "requesterTags": "user.tags", "requesterOrg": "user.organization_id"}
${Requester Id} is the Ticket field by its catalog label, available because it’s in the Available Data section with Use as Input in API on.
5
Toggle Collected attributes
requesterRole, requesterTags, requesterOrg: pick Use in Rulebooks + Visible to AI for VIP-detection rules and richer responses. Tags is usually the most useful, a customer tagged vip or enterprise is exactly the conversation you want to handle differently.
6
Attach to the responding agent
Pick the agent from the top-right dropdown, toggle the attribute on, leave Email selected (chat tickets in Zendesk are a separate channel; enable both or split into two attributes). Save.
The same pattern works for Intercom, Front, HubSpot, Gorgias, Salesforce, and LiveChat: pick conversation-level fields from Available Data, toggle the integration’s credentials for API inputs, then enrich with API steps as needed. The per-integration field catalog is in the integration field catalog.
The attribute isn't attached to the responding agent
Open the page with that agent selected, confirm the attribute toggle is on, and Save. This is the most common cause.
The field's Visible to AI switch is off
Even if the chain runs and collects the value, the LLM doesn’t see it until the switch is on. The value can still be present for Rulebooks while invisible to the agent.
An API step is failing
Run the Test panel with realistic inputs. A step returning 404 (customer not found) or 401 (token expired) leaves every downstream field blank.
The integration source isn't connected anymore
Re-authorize on the Deploy page for that integration. The attribute can’t fetch from a disconnected source.
The conversation came from a different channel than the attribute is configured for
Check the channel selection on the agent-attribute row. A Chat-only attribute won’t run on an email conversation.
The fields each connected integration exposes. Connection Settings are available when the attribute’s source is that integration. Widget-source attributes expose selected active-integration connection values as widget system fields instead. The object groups (Ticket, Conversation, Case, etc.) are conversation-level fields available only when the attribute’s source is that integration. This same list appears live in the editor.
Zendesk
Connection Settings: credentials, useful as API-step headers and URLs.
Bot bearer token for LiveChat API calls. Toggle Use as Input in API only.
LiveChat exposes only Connection Settings as integration metadata today. To pull conversation- or customer-level fields, use a Data Collection Step, see Attributes from External Systems.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/schema.json","name":"Fini","description":"Documentation for Fini AI (usefini.com): build, deploy and run autonomous AI support agents. Fini is made by Fini Technologies Inc. and is not affiliated with fini.ai.","colors":{"primary":"#C3EE5E","light":"#C3EE5E","dark":"#A8D43E"},"logo":{"light":"https://mintcdn.com/fini/fep-JMymNphpe1DQ/images/shared/logos/fini-light.png?fit=max\u0026auto=format\u0026n=fep-JMymNphpe1DQ\u0026q=85\u0026s=a460ff8bb507876712db2f0fb12c21e4","dark":"https://mintcdn.com/fini/fep-JMymNphpe1DQ/images/shared/logos/fini-dark.png?fit=max\u0026auto=format\u0026n=fep-JMymNphpe1DQ\u0026q=85\u0026s=8a2bf1d8a0e5c590ebb976eadccf26a9"},"favicon":"https://mintcdn.com/fini/fep-JMymNphpe1DQ/images/shared/logos/fini-dark.png?fit=max\u0026auto=format\u0026n=fep-JMymNphpe1DQ\u0026q=85\u0026s=8a2bf1d8a0e5c590ebb976eadccf26a9","footer":{"socials":{"x":"https://x.com/finichatAI","linkedin":"https://www.linkedin.com/company/usefini","youtube":"https://www.youtube.com/@finiai","instagram":"https://www.instagram.com/usefini.official","github":"https://github.com/ask-fini"}},"seo":{"metatags":{"msvalidate.01":"9A9FD7AB87AE2DEA257FE41F07C61E70"}},"styling":{"latex":true},"navigation":{"languages":[{"language":"en","default":true,"href":"en/introduction"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"fini","hasAudioNarration":false,"actualSubdomain":"fini","customDomains":["docs.usefini.com"],"gitSource":{"type":"github","owner":"ask-fini","repo":"fini-docs","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aec58d3aceee0d6e0b02de9","collectionId":"7765aa79-f5eb-4199-929a-5870f77bca01","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aec58d3aceee0d6e0b02de9"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aeda622df45b49db83252af","clientVersion":"0.0.4074","searchFilterCounts":[{"language":"en","tag":"API reference","count":207},{"language":"en","tag":"Documentation","count":56},{"language":"en","tag":"Knowledge","count":40},{"language":"en","tag":"Test Suite","count":31},{"language":"en","tag":"Use cases","count":29},{"language":"en","tag":"Deploy","count":21},{"language":"en","tag":"Intent Rules","count":18},{"language":"en","tag":"Conversations","count":14},{"language":"en","tag":"Integrations","count":14},{"language":"en","tag":"Agent Configuration","count":13}]},"assistantConfig":{"deflection":{"enabled":true,"email":"[email protected]","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","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":"vite-origin","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":"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},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"en/api-reference/attributes","slug":"/en/api-reference/attributes","pageMetadata":{"title":"Overview","description":"Fetch the customer context your AI agent needs (plan, order, account state) before every reply, so answers are personalized rather than generic.","icon":"id-card","href":"/en/api-reference/attributes"},"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: \"Fetch the customer context your AI agent needs (plan, order, account state) before every reply, so answers are personalized rather than generic.\"\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`,em:`em`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,CodeBlock,Frame,Heading,Mermaid,Note,OptimizedImage,ResponseField,Step,Steps,Tab,Table,Tabs,Tip,Warning}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Mermaid)_missingMdxReference(`Mermaid`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!ResponseField)_missingMdxReference(`ResponseField`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`An agent that doesn’t know `,_jsx(_components.em,{children:`who`}),` it’s talking to gives generic answers. `,_jsx(_components.strong,{children:`User Attributes`}),` is how Fini fetches the customer’s context, fresh on every message, so the agent can reference the customer’s actual plan, order, account state, or any other detail you’d otherwise have to look up by hand.`]}),`\n`,_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/fini/wDarz6AVyx_Us1jm/images/en/configuration/attributes/list.png?fit=max\u0026auto=format\u0026n=wDarz6AVyx_Us1jm\u0026q=85\u0026s=71592986354d33096b0aed34807f6345`,alt:`User Attributes page in the Fini Demo workspace showing the selected agent, two configured attributes, field counts, availability toggles, and the New Attribute button`,\"data-og-width\":`1680`,width:`1680`,\"data-og-height\":`1050`,height:`1050`,\"data-path\":`images/en/configuration/attributes/list.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/fini/wDarz6AVyx_Us1jm/images/en/configuration/attributes/list.png?w=280\u0026fit=max\u0026auto=format\u0026n=wDarz6AVyx_Us1jm\u0026q=85\u0026s=9fbcac53f483329f74ac6923c586cfbe 280w, https://mintcdn.com/fini/wDarz6AVyx_Us1jm/images/en/configuration/attributes/list.png?w=560\u0026fit=max\u0026auto=format\u0026n=wDarz6AVyx_Us1jm\u0026q=85\u0026s=464a417d8b89b5b332ff59f2239a2bfd 560w, https://mintcdn.com/fini/wDarz6AVyx_Us1jm/images/en/configuration/attributes/list.png?w=840\u0026fit=max\u0026auto=format\u0026n=wDarz6AVyx_Us1jm\u0026q=85\u0026s=c332af91bc136fd2c02a96c9e1014ae4 840w, https://mintcdn.com/fini/wDarz6AVyx_Us1jm/images/en/configuration/attributes/list.png?w=1100\u0026fit=max\u0026auto=format\u0026n=wDarz6AVyx_Us1jm\u0026q=85\u0026s=9b6f61fd1925040e3f6cbef31d772589 1100w, https://mintcdn.com/fini/wDarz6AVyx_Us1jm/images/en/configuration/attributes/list.png?w=1650\u0026fit=max\u0026auto=format\u0026n=wDarz6AVyx_Us1jm\u0026q=85\u0026s=1fbe3c26a18008b80aecb8cd2db9c254 1650w, https://mintcdn.com/fini/wDarz6AVyx_Us1jm/images/en/configuration/attributes/list.png?w=2500\u0026fit=max\u0026auto=format\u0026n=wDarz6AVyx_Us1jm\u0026q=85\u0026s=6e71a6ff2cd837e953b15cac3e215a67 2500w`})}),`\n`,_jsxs(_components.p,{children:[`In the dashboard, this page lives under `,_jsx(_components.strong,{children:`API Setup → Attributes`}),`. The list is scoped by the agent selector in the sidebar: with a specific agent selected, the page shows which attributes are available to that agent and whether each one is toggled on.`]}),`\n`,_jsx(Heading,{level:`2`,id:`the-model`,children:`The model`}),`\n`,_jsx(_components.p,{children:`An attribute is three decisions:`}),`\n`,_jsx(Mermaid,{chart:`---\ntitle: How an attribute works\n---\nflowchart LR\n SRC[\"1 · SOURCE\u003cbr/>native context\u003cbr/>to start from\"] --> FLD[\"2 · FIELDS\u003cbr/>native + external,\u003cbr/>what you get back\"]\n FLD --> SW[\"3 · SWITCHES\u003cbr/>who downstream\u003cbr/>can see each field\"]\n SW --> LLM[\"The agent\"]\n SW --> RB[\"Rulebook\"]\n SW --> APIN[\"Later API steps\"]`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Source`}),`: the native conversation context the attribute starts from. You pick one when you create the attribute: your app’s UI metadata, a signed widget JWT, or a connected integration. The source seeds the attribute with fields; integration sources also include their connection settings.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Fields`}),`: what you end up with. Fields arrive from four groups in the `,_jsx(_components.strong,{children:`Available Data`}),` panel: System Attributes, passed-in UI/JWT fields, integration metadata, and fields collected by `,_jsx(_components.strong,{children:`external API calls`}),`. The first three are native (no HTTP call you write); the fourth is an API chain that can reach any endpoint, your internal API, Shopify, anything, independent of the source.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Switches`}),`: each field has up to three independent switches that decide `,_jsx(_components.em,{children:`who downstream can use it`}),`. Toggling a switch doesn’t move data; it exposes the field to that consumer.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`At runtime, Fini fetches every attribute attached to the responding agent before each LLM call and exposes the resulting fields as conversation context. The rest of this page walks each decision in order, then shows the pattern applied end-to-end.`}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`For a walkthrough showing how User Attributes feeds into Actions, Rulebook, and Reply Behavior end-to-end, see `,_jsx(_components.a,{href:`/en/walkthroughs/cancellation-flow`,children:`End-to-end: cancellation flow`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`1-·-source-where-data-comes-from`,children:`1 · Source: where data comes from`}),`\n`,_jsxs(_components.p,{children:[`Each attribute has a `,_jsx(_components.strong,{children:`source`}),`, picked when you create it. The source seeds the attribute with a starting set of fields and (for integrations) credentials:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Source`}),_jsx(_components.th,{children:`What it seeds the attribute with`}),_jsx(_components.th,{children:`Typical use`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`App UI`}),` (`,_jsx(_components.code,{children:`ui`}),`)`]}),_jsx(_components.td,{children:`Metadata your app passes when it embeds Fini.`}),_jsx(_components.td,{children:`Logged-in user’s id / plan / role from your dashboard.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Widget`}),` (`,_jsx(_components.code,{children:`widget`}),`)`]}),_jsx(_components.td,{children:`The signed JWT payload your backend hands the widget, plus widget-safe system fields.`}),_jsxs(_components.td,{children:[`Authenticated widget conversations (you sign a JWT with the `,_jsx(_components.a,{href:`/en/deploy/widget#signing-key`,children:`Widget Signing Key`}),` and pass user fields inside it). Widget attributes can also use connection fields from active Zendesk, Salesforce, Front, HubSpot, or Gorgias integrations when making API calls.`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Connected integration`}),` (Zendesk, Intercom, Front, Gorgias, HubSpot, Salesforce, LiveChat)`]}),_jsx(_components.td,{children:`The integration’s standard conversation objects, plus its API credentials.`}),_jsx(_components.td,{children:`Look up the customer in Zendesk by email, read the ticket’s status, etc.`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`The source is only the starting point, it seeds native context. Anything the source doesn’t already provide is fetched via `,_jsx(_components.a,{href:`#attributes-from-external-systems`,children:`external API calls`}),`, available to every attribute regardless of source.`]}),`\n`,_jsxs(_components.p,{children:[`Sources are gated by what’s connected: integrations show up in the dropdown only if you’ve connected them on the corresponding `,_jsx(_components.a,{href:`/en/deploy/overview`,children:`Deploy page`}),` (helpcenter is excluded), and `,_jsx(_components.code,{children:`widget`}),` only shows up if you have at least one widget created.`]}),`\n`,_jsx(Heading,{level:`2`,id:`2-·-fields-what-you-can-fetch`,children:`2 · Fields: what you can fetch`}),`\n`,_jsxs(_components.p,{children:[`Fields arrive from `,_jsx(_components.strong,{children:`four groups`}),`, all in the `,_jsx(_components.strong,{children:`Available Data`}),` panel, which describes itself: `,_jsx(_components.em,{children:`“Data your AI can reference. For each field, choose independently whether it’s used as an API input, available in the Rulebook, and shared with the LLM.”`}),` Each group shows an enabled-over-total count in its header (e.g., `,_jsx(_components.em,{children:`System Attributes 7/8`}),`, `,_jsx(_components.em,{children:`Conversation 2/11`}),`, `,_jsx(_components.em,{children:`Collected attributes 44/44`}),`) so you can see at a glance how many are switched on.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Group`}),_jsx(_components.th,{children:`Available for`}),_jsx(_components.th,{children:`Where it comes from`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`System Attributes`})}),_jsx(_components.td,{children:`Every attribute`}),_jsx(_components.td,{children:`The conversation itself (always present)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Passed-in fields`})}),_jsx(_components.td,{children:`UI / Widget sources`}),_jsx(_components.td,{children:`Your embed metadata or signed JWT`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Integration metadata`})}),_jsx(_components.td,{children:`Integration sources`}),_jsx(_components.td,{children:`A connected native integration`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`External systems`})}),_jsx(_components.td,{children:`Any source`}),_jsxs(_components.td,{children:[`An API chain you configure, see `,_jsx(_components.a,{href:`#attributes-from-external-systems`,children:`below`})]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`The first three are `,_jsx(_components.strong,{children:`native`}),`: the data is already in Fini because of how the agent is reached, so there’s no HTTP call you write. The fourth is `,_jsx(_components.strong,{children:`external`}),`: an API chain that fetches anything the source doesn’t already provide. Each group is detailed below.`]}),`\n`,_jsx(Heading,{level:`3`,id:`system-attributes-always-available`,children:`System Attributes (always available)`}),`\n`,_jsxs(_components.p,{children:[`Every attribute, regardless of source, exposes the same set of universal `,_jsx(_components.strong,{children:`System Attributes`}),` about the conversation itself:`]}),`\n`,_jsx(ResponseField,{name:`User Name`,type:`string`,id:`param-user-name`,children:_jsx(_components.p,{children:`The customer’s display name, when known.`})}),`\n`,_jsx(ResponseField,{name:`User Email`,type:`string`,id:`param-user-email`,children:_jsx(_components.p,{children:`The customer’s email, when known.`})}),`\n`,_jsx(ResponseField,{name:`Channel`,type:`string`,id:`param-channel`,children:_jsx(_components.p,{children:`Whether this conversation arrived on an email channel or a chat channel.`})}),`\n`,_jsx(ResponseField,{name:`Has Attachment`,type:`boolean`,id:`param-has-attachment`,children:_jsx(_components.p,{children:`True if the inbound message has any attachments.`})}),`\n`,_jsx(ResponseField,{name:`Time (UTC)`,type:`string`,id:`param-time-utc`,children:_jsx(_components.p,{children:`Time of the inbound message in UTC.`})}),`\n`,_jsx(ResponseField,{name:`Day (UTC)`,type:`string`,id:`param-day-utc`,children:_jsx(_components.p,{children:`Day of the week of the inbound message in UTC.`})}),`\n`,_jsx(ResponseField,{name:`Is Weekday (UTC)`,type:`boolean`,id:`param-is-weekday-utc`,children:_jsx(_components.p,{children:`True if the inbound message landed Mon-Fri UTC. Useful for “stay silent off-hours” rules.`})}),`\n`,_jsx(ResponseField,{name:`Conversation Source`,type:`string`,id:`param-conversation-source`,children:_jsxs(_components.p,{children:[`The integration the conversation came from, `,_jsx(_components.code,{children:`zendesk`}),`, `,_jsx(_components.code,{children:`intercom`}),`, `,_jsx(_components.code,{children:`widget`}),`, `,_jsx(_components.code,{children:`ui`}),`, and so on.`]})}),`\n`,_jsx(_components.p,{children:`Use these for time- or channel-based rules without needing any external lookup. They’re free to enable; no API call runs.`}),`\n`,_jsx(Heading,{level:`3`,id:`passed-in-fields-ui-/-widget-sources-only`,children:`Passed-in fields (UI / Widget sources only)`}),`\n`,_jsxs(_components.p,{children:[`For the `,_jsx(_components.strong,{children:`App UI`}),` source, fields you’ve passed in via your embed metadata. For the `,_jsx(_components.strong,{children:`Widget`}),` source, fields inside the JWT payload your backend signed.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`These are `,_jsx(_components.strong,{children:`automatically visible to the AI`}),` by default, even if you don’t list them here.`]}),`\n`,_jsxs(_components.li,{children:[`Listing them here gives you two extra abilities:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Reference them in `,_jsx(_components.a,{href:`/en/automations/rulebook`,children:`Rulebook`}),` and `,_jsx(_components.a,{href:`/en/automations/reply-behavior`,children:`Reply Behavior`}),` conditions.`]}),`\n`,_jsx(_components.li,{children:`Use them as inputs to API steps further down (for example, pass a user id from the JWT into a Zendesk API call).`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`integration-metadata-fields`,children:`Integration metadata fields`}),`\n`,_jsxs(_components.p,{children:[`This section covers two distinct things that share a UI panel when the attribute source is a connected integration: `,_jsx(_components.strong,{children:`connection settings`}),` and `,_jsx(_components.strong,{children:`conversation-level fields`}),`.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Connection Settings.`}),` When you create an attribute from a connected integration, that integration exposes its `,_jsx(_components.strong,{children:`Connection Settings`}),` group. Toggle `,_jsx(_components.strong,{children:`Use as Input in API`}),` on credential fields, then insert them by their display name into your Data Collection Steps via the `,_jsx(_components.code,{children:`$`}),` picker.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Conversation-level fields (integration sources only).`}),` For an integration source, the same panel also shows fields directly available on the integration’s standard objects (e.g., a Zendesk ticket’s status, a Salesforce case’s priority). No API call needed; Fini reads them as part of the conversation context the integration already provides. Use these when the field is on the conversation object itself (“the customer’s email is on the ticket”); they’re cheaper and more reliable than a custom API step.`]}),`\n`,_jsx(_components.p,{children:`Widget-source attributes handle connection fields slightly differently. If your workspace has active Zendesk, Salesforce, Front, HubSpot, or Gorgias integrations, the Widget source exposes the integration values it can resolve at runtime as widget system fields. Use those fields as API inputs when a widget conversation needs to call the connected helpdesk or CRM without storing a per-widget integration setting.`}),`\n`,_jsxs(_components.p,{children:[`The full field catalog for every integration is in the `,_jsx(_components.a,{href:`#reference-integration-field-catalog`,children:`integration field catalog`}),` at the end of this page. The same list is visible live in the editor when you create an attribute.`]}),`\n`,_jsx(Heading,{level:`3`,id:`attributes-from-external-systems`,children:`Attributes from External Systems`}),`\n`,_jsx(_components.p,{children:`The fourth field group, and the only one that costs an HTTP call you write. The distinction that matters:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Native integrations`}),` (Zendesk, HubSpot, Salesforce, and the others) are connected once on the Deploy page. Fini knows their object shape, so they come with a `,_jsx(_components.strong,{children:`pre-built field catalog`}),` you just toggle on.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`External systems`}),` are `,_jsx(_components.em,{children:`any other HTTP endpoint`}),`, your own internal API, Shopify, a data warehouse, or even a native integration’s REST API. There’s `,_jsx(_components.strong,{children:`no catalog`}),`: you supply the URL, headers, and auth, and declare which response fields to keep. For Redshift, Snowflake, BigQuery, Postgres, and similar systems, expose a scoped HTTPS endpoint in front of the warehouse. See `,_jsx(_components.a,{href:`/en/api-reference/database-warehouses`,children:`Database and Warehouse Connections`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`A `,_jsx(_components.strong,{children:`multi-step chain of HTTP requests`}),`, available to every attribute regardless of source. Each step is one HTTP call; later steps can use any field collected by earlier steps as input. The UI labels this section `,_jsx(_components.strong,{children:`Attributes from External Systems`}),`, with the helper text `,_jsx(_components.em,{children:`“Make API calls to fetch additional data. Any field from above, as well as collected attributes from a given API step, can be used as input in subsequent steps.”`})]}),`\n`,_jsxs(_components.p,{children:[`Steps are configured under `,_jsx(_components.strong,{children:`Data Collection Steps`}),` (`,_jsx(_components.em,{children:`“Configure the sequence of API calls that collect the attributes shown above”`}),`). Each step has:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`A `,_jsx(_components.strong,{children:`Step Name`}),` and `,_jsx(_components.strong,{children:`Method`}),` (GET / POST / PUT / PATCH / DELETE), plus the `,_jsx(_components.strong,{children:`URL`}),`. Type `,_jsx(_components.code,{children:`$`}),` in any field to insert a dynamic value.`]}),`\n`,_jsxs(_components.li,{children:[`A `,_jsx(_components.strong,{children:`Headers`}),` block and request body, as JSON. Use the `,_jsx(_components.code,{children:`$`}),` picker to interpolate any field from the sections above whose `,_jsx(_components.strong,{children:`Use as Input in API`}),` switch is on, for example, the user’s email in the URL, or an API key in an `,_jsx(_components.code,{children:`x-api-key`}),` header.`]}),`\n`,_jsxs(_components.li,{children:[`A `,_jsx(_components.strong,{children:`Save From Response`}),` block: the fields to pull out of the response, in `,_jsx(_components.code,{children:`\"mappedName\": \"json_path\"`}),` form.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The fields you map populate the `,_jsx(_components.strong,{children:`Collected attributes`}),` table, where each row shows only `,_jsx(_components.strong,{children:`Use in Rulebooks`}),` and `,_jsx(_components.strong,{children:`Visible to AI`}),` (no input switch) and is labelled with the step that produced it.`]}),`\n`,_jsx(Heading,{level:`2`,id:`3-·-switches-who-can-see-each-field`,children:`3 · Switches: who can see each field`}),`\n`,_jsx(_components.p,{children:`Most fields show three independent switches in the editor table. They don’t move data, they expose a field to a downstream consumer:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Use as Input in API`}),`: makes the field available to your Data Collection Steps as a dynamic value you can insert into URLs, headers, or request bodies. In any step field, type `,_jsx(_components.code,{children:`$`}),` to open the picker; Fini inserts the field by its `,_jsx(_components.strong,{children:`display name`}),`. Turn this on for credentials and identifiers you want to inject into HTTP calls.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Use in Rulebooks`}),`: exposes the field as a condition input in `,_jsx(_components.a,{href:`/en/automations/rulebook`,children:`Rulebook`}),` and `,_jsx(_components.a,{href:`/en/automations/reply-behavior`,children:`Reply Behavior`}),`. Off by default; flip on for fields you want to write rules against.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Visible to AI`}),`: includes the field in the LLM’s context for that conversation. Off by default; flip on for fields the agent should reference when answering.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`The switches are independent. The patterns that recur:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field kind`}),_jsx(_components.th,{children:`Input in API`}),_jsx(_components.th,{children:`Rulebooks`}),_jsx(_components.th,{children:`Visible to AI`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`A credential (bearer token, subdomain)`}),_jsx(_components.td,{children:`✓`}),_jsx(_components.td,{}),_jsx(_components.td,{})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`A customer plan / tier`}),_jsx(_components.td,{}),_jsx(_components.td,{children:`✓`}),_jsx(_components.td,{children:`✓`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`An order / ticket id`}),_jsx(_components.td,{children:`✓`}),_jsx(_components.td,{children:`✓`}),_jsx(_components.td,{children:`✓`})]})]})]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Don’t make every field visible to AI.`}),` The LLM context window has a budget; fields that aren’t useful for answering questions just dilute the signal. Default to off, flip on the handful of fields that genuinely help the agent personalize its reply.`]})}),`\n`,_jsxs(_components.p,{children:[`Fields collected from API responses (the `,_jsx(_components.strong,{children:`Collected attributes`}),` table under Data Collection Steps) only show `,_jsx(_components.strong,{children:`Use in Rulebooks`}),` and `,_jsx(_components.strong,{children:`Visible to AI`}),`: they’re automatically available to subsequent API steps in the same chain by name, so no input switch is needed.`]}),`\n`,_jsx(Heading,{level:`2`,id:`creating-a-user-attribute`,children:`Creating a user attribute`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open the Attributes page and click New Attribute`,children:_jsxs(_components.p,{children:[`Land on `,_jsx(_components.strong,{children:`API Setup → Attributes`}),` in the sidebar. The list shows every attribute you’ve created so far, scoped to the agent you have selected in the sidebar.`]})}),_jsxs(Step,{title:`Fill in the basics`,children:[_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Name`}),` (required): how this attribute shows up in the list and in test logs (e.g., “Customer Plan”, “Recent Orders”).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Description`}),` (optional): a sentence about what this attribute fetches. Useful when teammates open the page later.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Source`}),` (required): pick from the dropdown. Determines which field-source sections you’ll see in the detail view.`]}),`\n`]}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/fini/WTh5oQKFufdNh3Hg/images/en/configuration/attributes/create-modal.png?fit=max\u0026auto=format\u0026n=WTh5oQKFufdNh3Hg\u0026q=85\u0026s=c0f64d91ccdec8a37a20bfaa7d48fb69`,alt:`Create New Tool for User Attributes dialog showing Name, Description, Source, Cancel, and Create controls`,\"data-og-width\":`1680`,width:`1680`,\"data-og-height\":`1050`,height:`1050`,\"data-path\":`images/en/configuration/attributes/create-modal.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/fini/WTh5oQKFufdNh3Hg/images/en/configuration/attributes/create-modal.png?w=280\u0026fit=max\u0026auto=format\u0026n=WTh5oQKFufdNh3Hg\u0026q=85\u0026s=96cd3415c3941eb6693dafbdf242aa21 280w, https://mintcdn.com/fini/WTh5oQKFufdNh3Hg/images/en/configuration/attributes/create-modal.png?w=560\u0026fit=max\u0026auto=format\u0026n=WTh5oQKFufdNh3Hg\u0026q=85\u0026s=ef2ca483db4f2220471b59adc6458a50 560w, https://mintcdn.com/fini/WTh5oQKFufdNh3Hg/images/en/configuration/attributes/create-modal.png?w=840\u0026fit=max\u0026auto=format\u0026n=WTh5oQKFufdNh3Hg\u0026q=85\u0026s=8771cd3a6e5e1d3aa6f26164d5c0f1ea 840w, https://mintcdn.com/fini/WTh5oQKFufdNh3Hg/images/en/configuration/attributes/create-modal.png?w=1100\u0026fit=max\u0026auto=format\u0026n=WTh5oQKFufdNh3Hg\u0026q=85\u0026s=ec784f584fc7dfa8d2f6bba146bdd404 1100w, https://mintcdn.com/fini/WTh5oQKFufdNh3Hg/images/en/configuration/attributes/create-modal.png?w=1650\u0026fit=max\u0026auto=format\u0026n=WTh5oQKFufdNh3Hg\u0026q=85\u0026s=29700d2fced2bde01553bd7a65efc366 1650w, https://mintcdn.com/fini/WTh5oQKFufdNh3Hg/images/en/configuration/attributes/create-modal.png?w=2500\u0026fit=max\u0026auto=format\u0026n=WTh5oQKFufdNh3Hg\u0026q=85\u0026s=10e46c76ac3d20401a5abdcea52131a2 2500w`})})]}),_jsxs(Step,{title:`Configure Available Data`,children:[_jsx(_components.p,{children:`The detail view opens. Walk through each section: System Attributes, your source’s passed-in or integration-metadata fields, and (if needed) Data Collection Steps for the API chain.`}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/fini/wDarz6AVyx_Us1jm/images/en/configuration/attributes/detail-ui.png?fit=max\u0026auto=format\u0026n=wDarz6AVyx_Us1jm\u0026q=85\u0026s=9f81ec459f1503f158c5373e66c9a5a0`,alt:`Attribute detail view for a UI source showing the System Attributes, UI Metadata Attributes, Attributes from External Systems, and Data Collection Steps sections`,\"data-og-width\":`1680`,width:`1680`,\"data-og-height\":`1050`,height:`1050`,\"data-path\":`images/en/configuration/attributes/detail-ui.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/fini/wDarz6AVyx_Us1jm/images/en/configuration/attributes/detail-ui.png?w=280\u0026fit=max\u0026auto=format\u0026n=wDarz6AVyx_Us1jm\u0026q=85\u0026s=51e6580897c87bf98281f1b7e56e87bb 280w, https://mintcdn.com/fini/wDarz6AVyx_Us1jm/images/en/configuration/attributes/detail-ui.png?w=560\u0026fit=max\u0026auto=format\u0026n=wDarz6AVyx_Us1jm\u0026q=85\u0026s=edeeaaf58bed1a3c1801c450ebfa7a85 560w, https://mintcdn.com/fini/wDarz6AVyx_Us1jm/images/en/configuration/attributes/detail-ui.png?w=840\u0026fit=max\u0026auto=format\u0026n=wDarz6AVyx_Us1jm\u0026q=85\u0026s=56523d968b2f5b77313a5a16e3fe420f 840w, https://mintcdn.com/fini/wDarz6AVyx_Us1jm/images/en/configuration/attributes/detail-ui.png?w=1100\u0026fit=max\u0026auto=format\u0026n=wDarz6AVyx_Us1jm\u0026q=85\u0026s=5981ba7bb6d50bd9d5a15efe6bb5362c 1100w, https://mintcdn.com/fini/wDarz6AVyx_Us1jm/images/en/configuration/attributes/detail-ui.png?w=1650\u0026fit=max\u0026auto=format\u0026n=wDarz6AVyx_Us1jm\u0026q=85\u0026s=c22ef030f63454bdc03b0cc5006c370e 1650w, https://mintcdn.com/fini/wDarz6AVyx_Us1jm/images/en/configuration/attributes/detail-ui.png?w=2500\u0026fit=max\u0026auto=format\u0026n=wDarz6AVyx_Us1jm\u0026q=85\u0026s=f537dbb0492de1b74d97c8509b33cc61 2500w`})})]}),_jsx(Step,{title:`Toggle the three switches per field`,children:_jsxs(_components.p,{children:[`For each field, decide independently whether it’s `,_jsx(_components.strong,{children:`Use as Input in API`}),`, `,_jsx(_components.strong,{children:`Use in Rulebooks`}),`, `,_jsx(_components.strong,{children:`Visible to AI`}),`, or some combination. Credentials are typically input-only; identifiers like an order id are often all three; sentiment fields are usually rule + AI but not input.`]})}),_jsx(Step,{title:`Test the chain`,children:_jsxs(_components.p,{children:[`Click the `,_jsx(_components.strong,{children:`Play`}),` button at the top of the detail view. The Test panel opens; provide sample inputs and run the chain step by step to confirm fields come back as expected before the agent relies on them. Each Data Collection Step also has its own play button for testing in isolation.`]})}),_jsx(Step,{title:`Save`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Save`}),`. Subsequent chat messages will fetch this attribute as part of building the agent’s context.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`deploying-attributes-for-an-ai-agent`,children:`Deploying attributes for an AI agent`}),`\n`,_jsxs(_components.p,{children:[`The sidebar has an `,_jsx(_components.strong,{children:`agent dropdown`}),`. With `,_jsx(_components.strong,{children:`Company level`}),` selected, the list shows workspace-level configuration. Picking a specific agent scopes the list to that agent: each attribute row shows whether it is available to the selected agent, plus its field count.`]}),`\n`,_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/en/configuration/attributes/deploy-to-agent.png?fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=acaa1f6c63f5efb8cb0c9d90b5a54bf7`,alt:`Attributes page in agent-scoped mode showing attribute cards with availability controls, field counts, and selected-agent status`,\"data-og-width\":`2938`,width:`2938`,\"data-og-height\":`690`,height:`690`,\"data-path\":`images/en/configuration/attributes/deploy-to-agent.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/en/configuration/attributes/deploy-to-agent.png?w=280\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=f852ffd248a59169ef2befe35d1bda03 280w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/en/configuration/attributes/deploy-to-agent.png?w=560\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=68d01e35fee7dd96dfab5de39ee05c6f 560w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/en/configuration/attributes/deploy-to-agent.png?w=840\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=e21adb3193bb3c584ffc91740d9c7e9c 840w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/en/configuration/attributes/deploy-to-agent.png?w=1100\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=6aa126f7576d90028dfda428203ae1b0 1100w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/en/configuration/attributes/deploy-to-agent.png?w=1650\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=ca87b8f754382063406de5c9c0dda594 1650w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/en/configuration/attributes/deploy-to-agent.png?w=2500\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=c27657cb50cc6110ca2f80d429140422 2500w`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.strong,{children:`Always-Get`}),` banner at the top of the list is a reminder: every attached attribute runs on every chat message for the selected agent. There’s no “fetch on demand” mode; if it’s attached, it runs.`]}),`\n`,_jsxs(_components.li,{children:[`Each attribute card shows the `,_jsx(_components.strong,{children:`Chat`}),` and `,_jsx(_components.strong,{children:`Email`}),` channel tags it’s currently active on, plus an “Active for [agent name] on Chat \u0026 Email”-style status line. Use the checkbox on the card to toggle attachment.`]}),`\n`,_jsxs(_components.li,{children:[`The card also shows the total `,_jsx(_components.strong,{children:`field count`}),` the attribute exposes (system + passed-in + collected).`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Save`}),` in the top-right to commit attachment / channel changes; `,_jsx(_components.strong,{children:`Cancel`}),` discards.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`If an agent has no attributes attached, no per-message lookup runs for it. Conversations on that agent get only the defaults the integration already provides (sender email, conversation subject, etc.) plus the System Attributes.`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Deleting an attribute also deletes the API steps configured under it. The action is `,_jsx(_components.strong,{children:`irreversible`}),`; the confirmation dialog calls this out. If the attribute is attached to agents, the attachment is removed from those agents automatically.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`when-attributes-run`,children:`When attributes run`}),`\n`,_jsxs(_components.p,{children:[`User attributes attached to the responding agent are `,_jsx(_components.strong,{children:`fetched on every chat message`}),` before the agent composes its reply. The chain runs server-side; the customer doesn’t see anything happen. Because they’re fetched up front, the resulting fields are available to the LLM, `,_jsx(_components.a,{href:`/en/automations/rulebook`,children:`Rulebook`}),`, and `,_jsx(_components.a,{href:`/en/automations/reply-behavior`,children:`Reply Behavior`}),` (under the `,_jsx(_components.code,{children:`User Attributes`}),` field group), each according to the per-field switches described in `,_jsx(_components.a,{href:`#3--switches-who-can-see-each-field`,children:`Switches`}),`.`]}),`\n`,_jsx(_components.p,{children:`The fetch is per-message, so if a customer’s plan changes mid-conversation, the next message picks up the new value.`}),`\n`,_jsx(Heading,{level:`2`,id:`worked-examples`,children:`Worked examples`}),`\n`,_jsxs(_components.p,{children:[`Every attribute follows the same shape: `,_jsx(_components.strong,{children:`create → expose source fields → call an API → toggle collected fields → attach to an agent.`}),` The three examples below apply that shape to the three sources. Pick the tab that matches how your agent is deployed, you only need the one.`]}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`UI metadata`,id:`ui-metadata`,children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Order status from UI metadata.`}),` Your app embeds the Fini agent and passes a per-conversation order id plus an auth token via UI metadata. Fini calls your order API with those, gets back the order’s status, and exposes it to the agent.`]}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/fini/wDarz6AVyx_Us1jm/images/en/configuration/attributes/detail-ui.png?fit=max\u0026auto=format\u0026n=wDarz6AVyx_Us1jm\u0026q=85\u0026s=9f81ec459f1503f158c5373e66c9a5a0`,alt:`Attribute detail view for a UI source where Token and Order Id UI Metadata Attributes feed a Get Order Status API step that collects orderStatus`,\"data-og-width\":`1680`,width:`1680`,\"data-og-height\":`1050`,height:`1050`,\"data-path\":`images/en/configuration/attributes/detail-ui.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/fini/wDarz6AVyx_Us1jm/images/en/configuration/attributes/detail-ui.png?w=280\u0026fit=max\u0026auto=format\u0026n=wDarz6AVyx_Us1jm\u0026q=85\u0026s=51e6580897c87bf98281f1b7e56e87bb 280w, https://mintcdn.com/fini/wDarz6AVyx_Us1jm/images/en/configuration/attributes/detail-ui.png?w=560\u0026fit=max\u0026auto=format\u0026n=wDarz6AVyx_Us1jm\u0026q=85\u0026s=edeeaaf58bed1a3c1801c450ebfa7a85 560w, https://mintcdn.com/fini/wDarz6AVyx_Us1jm/images/en/configuration/attributes/detail-ui.png?w=840\u0026fit=max\u0026auto=format\u0026n=wDarz6AVyx_Us1jm\u0026q=85\u0026s=56523d968b2f5b77313a5a16e3fe420f 840w, https://mintcdn.com/fini/wDarz6AVyx_Us1jm/images/en/configuration/attributes/detail-ui.png?w=1100\u0026fit=max\u0026auto=format\u0026n=wDarz6AVyx_Us1jm\u0026q=85\u0026s=5981ba7bb6d50bd9d5a15efe6bb5362c 1100w, https://mintcdn.com/fini/wDarz6AVyx_Us1jm/images/en/configuration/attributes/detail-ui.png?w=1650\u0026fit=max\u0026auto=format\u0026n=wDarz6AVyx_Us1jm\u0026q=85\u0026s=c22ef030f63454bdc03b0cc5006c370e 1650w, https://mintcdn.com/fini/wDarz6AVyx_Us1jm/images/en/configuration/attributes/detail-ui.png?w=2500\u0026fit=max\u0026auto=format\u0026n=wDarz6AVyx_Us1jm\u0026q=85\u0026s=f537dbb0492de1b74d97c8509b33cc61 2500w`})}),_jsxs(Steps,{children:[_jsx(Step,{title:`Create the attribute`,children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Name:`}),` `,_jsx(_components.em,{children:`Get Attributes for Fini UI Inbox Conversation`}),`. `,_jsx(_components.strong,{children:`Source:`}),` `,_jsx(_components.code,{children:`ui`}),`.`]})}),_jsxs(Step,{title:`Add the UI Metadata Attributes you'll use`,children:[_jsx(_components.p,{children:`Two passed-in fields, both with all three switches on:`}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Use as Input in API`}),_jsx(_components.th,{children:`Use in Rulebooks`}),_jsx(_components.th,{children:`Visible to AI`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Token`}),_jsx(_components.td,{children:`✓`}),_jsx(_components.td,{children:`✓`}),_jsx(_components.td,{children:`✓`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Order Id`}),_jsx(_components.td,{children:`✓`}),_jsx(_components.td,{children:`✓`}),_jsx(_components.td,{children:`✓`})]})]})]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Use as Input in API`}),` lets the API step interpolate them; `,_jsx(_components.strong,{children:`Visible to AI`}),` lets the LLM see the order id; `,_jsx(_components.strong,{children:`Use in Rulebooks`}),` lets a rule match on them later.`]})]}),_jsxs(Step,{title:`Add a Data Collection Step that calls your order API`,children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Name:`}),` `,_jsx(_components.em,{children:`Get Order Status`}),`. `,_jsx(_components.strong,{children:`Method:`}),` `,_jsx(_components.code,{children:`GET`}),`. Configure:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`http`,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:`http`,children:_jsxs(_components.code,{language:`http`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`URL`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" https://api.yourstore.com/orders/${Order Id}\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Headers`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:' {\"Authorization\": \"${Token}\"}'})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Save From Response: {`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"orderStatus\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"order.status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:\"${Order Id}\"}),` and `,_jsx(_components.code,{children:\"${Token}\"}),` tokens are the passed-in fields by their display name, inserted with the `,_jsx(_components.code,{children:`$`}),` picker. The `,_jsx(_components.code,{children:`order.status`}),` path on the right of Save From Response is the JSON path inside your API’s response.`]})]}),_jsx(Step,{title:`Toggle Collected attributes for orderStatus`,children:_jsxs(_components.p,{children:[`The chain produces one collected field, `,_jsx(_components.code,{children:`orderStatus`}),`. Toggle `,_jsx(_components.strong,{children:`Visible to AI`}),` so the agent can reference it in its reply (“Your order is in transit and will arrive Monday”).`]})}),_jsx(Step,{title:`Optionally enable a System Attribute for time-based rules`,children:_jsxs(_components.p,{children:[`To suppress the agent off-hours, toggle `,_jsx(_components.strong,{children:`Use in Rulebooks`}),` + `,_jsx(_components.strong,{children:`Visible to AI`}),` on `,_jsx(_components.code,{children:`Is Weekday (UTC)`}),` so a `,_jsx(_components.a,{href:`/en/automations/reply-behavior`,children:`Reply Behavior`}),` rule can stay silent when it’s false.`]})}),_jsx(Step,{title:`Attach to the responding agent on the right channels`,children:_jsxs(_components.p,{children:[`Pick the agent from the top-right dropdown, toggle the attribute on, leave Chat + Email tags as-is (or trim to one channel if needed), and click `,_jsx(_components.strong,{children:`Save`}),`.`]})})]})]}),_jsxs(Tab,{title:`Widget (JWT)`,id:`widget-jwt`,children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Business hours from Zendesk via the widget.`}),` A widget-source attribute uses the customer’s `,_jsx(_components.code,{children:`accountType`}),` from the signed JWT, then calls Zendesk’s API, using the connected Zendesk integration values that appear in the Widget source’s system fields, to get the team’s business hours schedules. The agent can then answer “are we open?” without you wiring anything custom.`]}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/fini/om6sJrX2x59JqOyP/images/en/configuration/attributes/detail-widget.png?fit=max\u0026auto=format\u0026n=om6sJrX2x59JqOyP\u0026q=85\u0026s=7742ff0e59c8e9d844672b2b9a33a627`,alt:`Attribute detail view for a Widget source showing System Attributes, JWT Token Attributes, External Systems, and Data Collection Steps`,\"data-og-width\":`1440`,width:`1440`,\"data-og-height\":`1187`,height:`1187`,\"data-path\":`images/en/configuration/attributes/detail-widget.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/fini/om6sJrX2x59JqOyP/images/en/configuration/attributes/detail-widget.png?w=280\u0026fit=max\u0026auto=format\u0026n=om6sJrX2x59JqOyP\u0026q=85\u0026s=c9dce450905071701c29202b34157ba3 280w, https://mintcdn.com/fini/om6sJrX2x59JqOyP/images/en/configuration/attributes/detail-widget.png?w=560\u0026fit=max\u0026auto=format\u0026n=om6sJrX2x59JqOyP\u0026q=85\u0026s=72fb7478e27f7a1a30bee5fd19de908c 560w, https://mintcdn.com/fini/om6sJrX2x59JqOyP/images/en/configuration/attributes/detail-widget.png?w=840\u0026fit=max\u0026auto=format\u0026n=om6sJrX2x59JqOyP\u0026q=85\u0026s=5c0319bfac447dfc4f13f0b7031e5006 840w, https://mintcdn.com/fini/om6sJrX2x59JqOyP/images/en/configuration/attributes/detail-widget.png?w=1100\u0026fit=max\u0026auto=format\u0026n=om6sJrX2x59JqOyP\u0026q=85\u0026s=750e854a6383f5f164f793d9402c75a0 1100w, https://mintcdn.com/fini/om6sJrX2x59JqOyP/images/en/configuration/attributes/detail-widget.png?w=1650\u0026fit=max\u0026auto=format\u0026n=om6sJrX2x59JqOyP\u0026q=85\u0026s=b0e0813e3af98096fd120c77fadd0d02 1650w, https://mintcdn.com/fini/om6sJrX2x59JqOyP/images/en/configuration/attributes/detail-widget.png?w=2500\u0026fit=max\u0026auto=format\u0026n=om6sJrX2x59JqOyP\u0026q=85\u0026s=2c008a74d6fb94fa7303df458a404b15 2500w`})}),_jsxs(Steps,{children:[_jsx(Step,{title:`Create the attribute`,children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Name:`}),` `,_jsx(_components.em,{children:`Get Attributes for Fini Widget Conversation`}),`. `,_jsx(_components.strong,{children:`Source:`}),` `,_jsx(_components.code,{children:`widget`}),`.`]})}),_jsx(Step,{title:`Toggle the System Attributes you want exposed`,children:_jsxs(_components.p,{children:[`Pick the universal fields useful for this agent. A common set turns on `,_jsx(_components.strong,{children:`Use in Rulebooks + Visible to AI`}),` for User Name, User Email, Has Attachment, and Time (UTC).`]})}),_jsxs(Step,{title:`Use Zendesk fields for API calls`,children:[_jsxs(_components.p,{children:[`Because Zendesk is connected in the workspace, the Widget source includes Zendesk connection fields in `,_jsx(_components.strong,{children:`System Attributes`}),`. Toggle `,_jsx(_components.strong,{children:`Use as Input in API`}),` on:`]}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Use as Input in API`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Zendesk Account Subdomain`}),_jsx(_components.td,{children:`✓`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Zendesk API Access Token`}),_jsx(_components.td,{children:`✓`})]})]})]}),_jsx(_components.p,{children:`Leave Use in Rulebooks / Visible to AI off. Connection fields should be used only as API inputs, not exposed to rules or the LLM.`})]}),_jsx(Step,{title:`List the JWT field you'll branch on`,children:_jsxs(_components.p,{children:[`Your backend signs a JWT containing an `,_jsx(_components.code,{children:`accountType`}),` claim and hands it to the widget. List `,_jsx(_components.code,{children:`accountType`}),` under `,_jsx(_components.strong,{children:`JWT Token Attributes`}),` with `,_jsx(_components.strong,{children:`Use in Rulebooks + Visible to AI`}),` so a Rulebook condition can match on it and the agent knows the tier.`]})}),_jsxs(Step,{title:`Add a Data Collection Step that calls Zendesk`,children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Name:`}),` `,_jsx(_components.em,{children:`Get Business Hours Schedules from Zendesk`}),`. `,_jsx(_components.strong,{children:`Method:`}),` `,_jsx(_components.code,{children:`GET`}),`. Configure:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`http`,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:`http`,children:_jsxs(_components.code,{language:`http`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`URL`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" https://${Zendesk Account Subdomain}.zendesk.com/api/v2/business_hours/schedules.json\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Headers`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:' {\"Authorization\": \"Bearer ${Zendesk API Access Token}\"}'})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Save From Response: {`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"schedules\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"schedules\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:\"${Zendesk Account Subdomain}\"}),` and `,_jsx(_components.code,{children:\"${Zendesk API Access Token}\"}),` tokens are the Zendesk fields by their exact catalog label, inserted via the `,_jsx(_components.code,{children:`$`}),` picker. The right side of Save From Response is the JSON path in Zendesk’s response, Zendesk returns `,_jsx(_components.code,{children:`{ schedules: [...] }`}),`, so the path is `,_jsx(_components.code,{children:`schedules`}),`.`]})]}),_jsx(Step,{title:`Toggle Collected attributes`,children:_jsxs(_components.p,{children:[`The chain produces `,_jsx(_components.code,{children:`schedules`}),` (array). Toggle `,_jsx(_components.strong,{children:`Use in Rulebooks + Visible to AI`}),` so the agent can reason about whether the conversation arrived during business hours.`]})})]}),_jsx(Tip,{children:_jsx(_components.p,{children:`This pattern (widget source + connected integration fields + integration API call) generalizes to any “widget needs data from your helpdesk” case: ticket lookup by JWT user id, last conversation summary, organization details, and so on.`})})]}),_jsxs(Tab,{title:`Connected integration`,id:`connected-integration`,children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Enriching Zendesk tickets.`}),` When the agent replies on Zendesk tickets, you usually want more than the raw ticket subject. A Zendesk-source attribute exposes Zendesk’s standard Ticket fields directly, plus the connection’s credentials so you can call any Zendesk API for richer context.`]}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/en/configuration/attributes/create-modal-zendesk.png?fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=e700a96b332a3fde4f1c3a80ce7079cb`,alt:`New Attribute dialog with Source set to zendesk`,\"data-og-width\":`1356`,width:`1356`,\"data-og-height\":`822`,height:`822`,\"data-path\":`images/en/configuration/attributes/create-modal-zendesk.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/en/configuration/attributes/create-modal-zendesk.png?w=280\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=dddb8b769b07d5b1ad99287cc939f380 280w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/en/configuration/attributes/create-modal-zendesk.png?w=560\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=88e0b2f9ba6d95829e02bad51a20afa1 560w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/en/configuration/attributes/create-modal-zendesk.png?w=840\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=561379283fb1a0335eef8ae1c1d28dc9 840w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/en/configuration/attributes/create-modal-zendesk.png?w=1100\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=10458613db4422888dad1aa1a40bfe1d 1100w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/en/configuration/attributes/create-modal-zendesk.png?w=1650\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=3d04543a2b4c8d7c47cb642c006e48b2 1650w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/en/configuration/attributes/create-modal-zendesk.png?w=2500\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=5235f4983a60da635ae0aaceac7a312f 2500w`})}),_jsxs(Steps,{children:[_jsx(Step,{title:`Create the attribute`,children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Name:`}),` `,_jsx(_components.em,{children:`Get Attributes for Zendesk Tickets`}),`. `,_jsx(_components.strong,{children:`Source:`}),` `,_jsx(_components.code,{children:`zendesk`}),`.`]})}),_jsxs(Step,{title:`Pick standard Ticket fields`,children:[_jsxs(_components.p,{children:[`Under the `,_jsx(_components.strong,{children:`Ticket`}),` field group, toggle `,_jsx(_components.strong,{children:`Visible to AI`}),` on the fields the agent should reference when answering. A common minimum:`]}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Use in Rulebooks`}),_jsx(_components.th,{children:`Visible to AI`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Status`}),_jsx(_components.td,{children:`✓`}),_jsx(_components.td,{children:`✓`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Priority`}),_jsx(_components.td,{children:`✓`}),_jsx(_components.td,{children:`✓`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Subject`}),_jsx(_components.td,{}),_jsx(_components.td,{children:`✓`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Type`}),_jsx(_components.td,{children:`✓`}),_jsx(_components.td,{})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Group Id`}),_jsx(_components.td,{children:`✓`}),_jsx(_components.td,{})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Organization Id`}),_jsx(_components.td,{children:`✓`}),_jsx(_components.td,{})]})]})]}),_jsxs(_components.p,{children:[`Status and Priority are usually both rule + AI inputs (for triage rules and for the agent to acknowledge urgency). Group Id and Organization Id are typically rule-only, you don’t want the LLM mentioning internal ids. The full set of Ticket fields is in the `,_jsx(_components.a,{href:`#reference-integration-field-catalog`,children:`integration field catalog`}),`.`]})]}),_jsxs(Step,{title:`Toggle Zendesk credentials for API calls`,children:[_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`Zendesk Settings`}),`, toggle `,_jsx(_components.strong,{children:`Use as Input in API`}),` on:`]}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Use as Input in API`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Zendesk Account Subdomain`}),_jsx(_components.td,{children:`✓`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Zendesk API Access Token`}),_jsx(_components.td,{children:`✓`})]})]})]}),_jsxs(_components.p,{children:[`Leave Use in Rulebooks / Visible to AI off; credentials shouldn’t be exposed to rules or the LLM. With these toggled, your Data Collection Steps can insert the Zendesk subdomain and access token by their display names via the `,_jsx(_components.code,{children:`$`}),` picker.`]})]}),_jsxs(Step,{title:`Add a Data Collection Step to enrich the ticket`,children:[_jsx(_components.p,{children:`A common second step fetches the ticket’s requester profile so the agent knows who’s asking.`}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Name:`}),` `,_jsx(_components.em,{children:`Get Requester`}),`. `,_jsx(_components.strong,{children:`Method:`}),` `,_jsx(_components.code,{children:`GET`}),`. Configure:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`http`,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:`http`,children:_jsxs(_components.code,{language:`http`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`URL`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" https://${Zendesk Account Subdomain}.zendesk.com/api/v2/users/${Requester Id}.json\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Headers`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:' {\"Authorization\": \"Bearer ${Zendesk API Access Token}\"}'})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Save From Response: {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"requesterRole\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"user.role\"`}),_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\":`#9CDCFE`},children:` \"requesterTags\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"user.tags\"`}),_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\":`#9CDCFE`},children:` \"requesterOrg\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"user.organization_id\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsxs(_components.p,{children:[_jsx(_components.code,{children:\"${Requester Id}\"}),` is the Ticket field by its catalog label, available because it’s in the Available Data section with `,_jsx(_components.strong,{children:`Use as Input in API`}),` on.`]})]}),_jsx(Step,{title:`Toggle Collected attributes`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`requesterRole`}),`, `,_jsx(_components.code,{children:`requesterTags`}),`, `,_jsx(_components.code,{children:`requesterOrg`}),`: pick `,_jsx(_components.strong,{children:`Use in Rulebooks + Visible to AI`}),` for VIP-detection rules and richer responses. Tags is usually the most useful, a customer tagged `,_jsx(_components.code,{children:`vip`}),` or `,_jsx(_components.code,{children:`enterprise`}),` is exactly the conversation you want to handle differently.`]})}),_jsx(Step,{title:`Attach to the responding agent`,children:_jsx(_components.p,{children:`Pick the agent from the top-right dropdown, toggle the attribute on, leave Email selected (chat tickets in Zendesk are a separate channel; enable both or split into two attributes). Save.`})})]}),_jsx(Note,{children:_jsxs(_components.p,{children:[`The same pattern works for `,_jsx(_components.strong,{children:`Intercom`}),`, `,_jsx(_components.strong,{children:`Front`}),`, `,_jsx(_components.strong,{children:`HubSpot`}),`, `,_jsx(_components.strong,{children:`Gorgias`}),`, `,_jsx(_components.strong,{children:`Salesforce`}),`, and `,_jsx(_components.strong,{children:`LiveChat`}),`: pick conversation-level fields from Available Data, toggle the integration’s credentials for API inputs, then enrich with API steps as needed. The per-integration field catalog is in the `,_jsx(_components.a,{href:`#reference-integration-field-catalog`,children:`integration field catalog`}),`.`]})})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`why-a-field-isn’t-reaching-the-agent`,children:`Why a field isn’t reaching the agent`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`The attribute isn't attached to the responding agent`,icon:`link-slash`,id:`the-attribute-isnt-attached-to-the-responding-agent`,children:_jsx(_components.p,{children:`Open the page with that agent selected, confirm the attribute toggle is on, and Save. This is the most common cause.`})}),_jsx(Accordion,{title:`The field's Visible to AI switch is off`,icon:`toggle-off`,id:`the-fields-visible-to-ai-switch-is-off`,children:_jsx(_components.p,{children:`Even if the chain runs and collects the value, the LLM doesn’t see it until the switch is on. The value can still be present for Rulebooks while invisible to the agent.`})}),_jsx(Accordion,{title:`An API step is failing`,icon:`triangle-exclamation`,id:`an-api-step-is-failing`,children:_jsxs(_components.p,{children:[`Run the `,_jsx(_components.strong,{children:`Test`}),` panel with realistic inputs. A step returning 404 (customer not found) or 401 (token expired) leaves every downstream field blank.`]})}),_jsx(Accordion,{title:`The integration source isn't connected anymore`,icon:`plug-circle-xmark`,id:`the-integration-source-isnt-connected-anymore`,children:_jsxs(_components.p,{children:[`Re-authorize on the `,_jsx(_components.a,{href:`/en/deploy/overview`,children:`Deploy page`}),` for that integration. The attribute can’t fetch from a disconnected source.`]})}),_jsx(Accordion,{title:`The conversation came from a different channel than the attribute is configured for`,icon:`arrows-split-up-and-left`,id:`the-conversation-came-from-a-different-channel-than-the-attribute-is-configured-for`,children:_jsx(_components.p,{children:`Check the channel selection on the agent-attribute row. A Chat-only attribute won’t run on an email conversation.`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`reference-integration-field-catalog`,children:`Reference: integration field catalog`}),`\n`,_jsxs(_components.p,{children:[`The fields each connected integration exposes. `,_jsx(_components.strong,{children:`Connection Settings`}),` are available when the attribute’s source is that integration. Widget-source attributes expose selected active-integration connection values as widget system fields instead. The object groups (Ticket, Conversation, Case, etc.) are conversation-level fields available only when the attribute’s source is that integration. This same list appears live in the editor.`]}),`\n`,_jsxs(AccordionGroup,{children:[_jsxs(Accordion,{title:`Zendesk`,icon:`https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/zendesk.png?fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=2dca1e05677ef2a48917b60ff688b9d1`,\"data-og-width\":`400`,width:`400`,\"data-og-height\":`400`,height:`400`,\"data-path\":`images/shared/logos/zendesk.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/zendesk.png?w=280\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=ff4e3e111105193bf1645bca132a6356 280w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/zendesk.png?w=560\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=2aadf0e3bac8ae6245326315e08d399d 560w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/zendesk.png?w=840\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=216ec66a86fffa3b35ed3e7363ed3342 840w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/zendesk.png?w=1100\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=56a29582019b37c483d795c2e421c040 1100w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/zendesk.png?w=1650\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=3b19e51112dd7dda60d07b3e998fde44 1650w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/zendesk.png?w=2500\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=caf88da70ed6c208f35f708cae6a73c6 2500w`,id:`zendesk`,children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Connection Settings`}),`: credentials, useful as API-step headers and URLs.`]}),_jsx(ResponseField,{name:`Zendesk Account Subdomain`,type:`string`,id:`param-zendesk-account-subdomain`,children:_jsxs(_components.p,{children:[`Your Zendesk subdomain (the part before `,_jsx(_components.code,{children:`.zendesk.com`}),`). Used to construct API URLs.`]})}),_jsx(ResponseField,{name:`Zendesk API Access Token`,type:`string`,id:`param-zendesk-api-access-token`,children:_jsx(_components.p,{children:`Bearer token for Zendesk API calls. Toggle Use as Input in API only; never expose to Rulebooks or the LLM.`})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Ticket`}),`: fields directly on the current Zendesk ticket.`]}),_jsx(ResponseField,{name:`Ticket Id`,type:`string`,id:`param-ticket-id`,children:_jsx(_components.p,{children:`The ticket’s unique identifier.`})}),_jsx(ResponseField,{name:`Url`,type:`string`,id:`param-url`,children:_jsx(_components.p,{children:`The ticket’s URL in your Zendesk instance.`})}),_jsx(ResponseField,{name:`Title`,type:`string`,id:`param-title`,children:_jsx(_components.p,{children:`The ticket’s title.`})}),_jsx(ResponseField,{name:`Description`,type:`string`,id:`param-description`,children:_jsx(_components.p,{children:`The full description text of the ticket.`})}),_jsx(ResponseField,{name:`Subject`,type:`string`,id:`param-subject`,children:_jsx(_components.p,{children:`The ticket’s subject line.`})}),_jsx(ResponseField,{name:`Assignee Id`,type:`string`,id:`param-assignee-id`,children:_jsx(_components.p,{children:`The id of the assigned agent.`})}),_jsx(ResponseField,{name:`Custom Status Id`,type:`string`,id:`param-custom-status-id`,children:_jsx(_components.p,{children:`Custom status id if your Zendesk uses custom statuses.`})}),_jsx(ResponseField,{name:`External Id`,type:`string`,id:`param-external-id`,children:_jsx(_components.p,{children:`External system id, if your tickets are synced from another source.`})}),_jsx(ResponseField,{name:`From Messaging Channel`,type:`boolean`,id:`param-from-messaging-channel`,children:_jsx(_components.p,{children:`True if the ticket originated from a messaging channel (vs. email).`})}),_jsx(ResponseField,{name:`Group Id`,type:`number`,id:`param-group-id`,children:_jsx(_components.p,{children:`The Zendesk group the ticket is assigned to. Typically rule-only.`})}),_jsx(ResponseField,{name:`Has Incidents`,type:`boolean`,id:`param-has-incidents`,children:_jsx(_components.p,{children:`True if this ticket has child incident tickets.`})}),_jsx(ResponseField,{name:`Organization Id`,type:`number`,id:`param-organization-id`,children:_jsx(_components.p,{children:`The customer’s organization id in Zendesk. Useful for B2B routing.`})}),_jsx(ResponseField,{name:`Priority`,type:`string`,id:`param-priority`,children:_jsxs(_components.p,{children:[`Ticket priority: `,_jsx(_components.code,{children:`low`}),`, `,_jsx(_components.code,{children:`normal`}),`, `,_jsx(_components.code,{children:`high`}),`, or `,_jsx(_components.code,{children:`urgent`}),`.`]})}),_jsx(ResponseField,{name:`Requester Id`,type:`string`,id:`param-requester-id`,children:_jsx(_components.p,{children:`The id of the customer who submitted the ticket. Used as input to fetch the requester’s profile.`})}),_jsx(ResponseField,{name:`Status`,type:`string`,id:`param-status`,children:_jsxs(_components.p,{children:[`Ticket status: `,_jsx(_components.code,{children:`new`}),`, `,_jsx(_components.code,{children:`open`}),`, `,_jsx(_components.code,{children:`pending`}),`, `,_jsx(_components.code,{children:`hold`}),`, `,_jsx(_components.code,{children:`solved`}),`, `,_jsx(_components.code,{children:`closed`}),`.`]})}),_jsx(ResponseField,{name:`Submitter Id`,type:`number`,id:`param-submitter-id`,children:_jsx(_components.p,{children:`The id of whoever submitted the ticket (may differ from the requester).`})}),_jsx(ResponseField,{name:`Type`,type:`string`,id:`param-type`,children:_jsxs(_components.p,{children:[`Ticket type: `,_jsx(_components.code,{children:`problem`}),`, `,_jsx(_components.code,{children:`incident`}),`, `,_jsx(_components.code,{children:`question`}),`, `,_jsx(_components.code,{children:`task`}),`.`]})}),_jsx(ResponseField,{name:`Brand Id`,type:`number`,id:`param-brand-id`,children:_jsx(_components.p,{children:`The Zendesk brand the ticket is on.`})})]}),_jsxs(Accordion,{title:`Intercom`,icon:`https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/intercom.png?fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=a4643b7697ccb0585c9ef764923de625`,\"data-og-width\":`2400`,width:`2400`,\"data-og-height\":`2400`,height:`2400`,\"data-path\":`images/shared/logos/intercom.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/intercom.png?w=280\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=b2047ead3f69c5b46f2ac589a6835865 280w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/intercom.png?w=560\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=47db6a3c8ff0c7aba2519fee613b8ff7 560w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/intercom.png?w=840\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=197e553431c4eccc2d01cf887f7089f5 840w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/intercom.png?w=1100\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=33da3cae086175acb04b5c9f080ceb28 1100w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/intercom.png?w=1650\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=78cec282ec5114a6b998863e4845e350 1650w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/intercom.png?w=2500\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=62b783452d70aac354e09e5800168a15 2500w`,id:`intercom`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Connection Settings`})}),_jsx(ResponseField,{name:`Intercom API Access Token`,type:`string`,id:`param-intercom-api-access-token`,children:_jsx(_components.p,{children:`Bearer token for Intercom API calls. Toggle Use as Input in API only.`})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Conversation`}),`: fields on the current Intercom conversation.`]}),_jsx(ResponseField,{name:`Conversation Id`,type:`string`,id:`param-conversation-id`,children:_jsx(_components.p,{children:`The conversation’s unique identifier.`})}),_jsx(ResponseField,{name:`Type`,type:`string`,id:`param-type-1`,children:_jsx(_components.p,{children:`The conversation type.`})}),_jsx(ResponseField,{name:`Title`,type:`string`,id:`param-title-1`,children:_jsx(_components.p,{children:`The conversation’s title.`})}),_jsx(ResponseField,{name:`Open`,type:`boolean`,id:`param-open`,children:_jsx(_components.p,{children:`True if the conversation is open.`})}),_jsx(ResponseField,{name:`State`,type:`string`,id:`param-state`,children:_jsx(_components.p,{children:`The conversation’s state.`})}),_jsx(ResponseField,{name:`Read`,type:`boolean`,id:`param-read`,children:_jsx(_components.p,{children:`True if the conversation has been read.`})}),_jsx(ResponseField,{name:`Priority`,type:`string`,id:`param-priority-1`,children:_jsx(_components.p,{children:`The conversation’s priority level.`})}),_jsx(ResponseField,{name:`Admin Assignee Id`,type:`string`,id:`param-admin-assignee-id`,children:_jsx(_components.p,{children:`The id of the assigned admin.`})}),_jsx(ResponseField,{name:`Team Assignee Id`,type:`string`,id:`param-team-assignee-id`,children:_jsx(_components.p,{children:`The id of the assigned team.`})}),_jsx(ResponseField,{name:`Tags`,type:`array`,id:`param-tags`,children:_jsx(_components.p,{children:`Tags attached to the conversation.`})}),_jsx(ResponseField,{name:`Contacts`,type:`array`,id:`param-contacts`,children:_jsx(_components.p,{children:`Contacts (customers) on the conversation.`})})]}),_jsxs(Accordion,{title:`HubSpot`,icon:`https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/hubspot.png?fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=544145a79416f94f1d04d01858a457cd`,\"data-og-width\":`108`,width:`108`,\"data-og-height\":`112`,height:`112`,\"data-path\":`images/shared/logos/hubspot.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/hubspot.png?w=280\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=c034ff0a031317bf8b359316572485f6 280w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/hubspot.png?w=560\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=a94e659d1b32d256d4c86953d59e6c38 560w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/hubspot.png?w=840\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=b63828f2f60b44e35e918fefc92204c8 840w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/hubspot.png?w=1100\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=8f41e7f24c09136819a5b0be0b855a83 1100w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/hubspot.png?w=1650\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=2c86ba265e524a0ab1a4870c77494741 1650w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/hubspot.png?w=2500\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=c564cc6277f02defea66985b8aa8fbc6 2500w`,id:`hubspot`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Connection Settings`})}),_jsx(ResponseField,{name:`HubSpot API Access Token`,type:`string`,id:`param-hub-spot-api-access-token`,children:_jsx(_components.p,{children:`Bearer token for HubSpot API calls. Toggle Use as Input in API only.`})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Thread`}),`: the HubSpot conversation thread.`]}),_jsx(ResponseField,{name:`Thread Id`,type:`string`,id:`param-thread-id`,children:_jsx(_components.p,{children:`The thread’s unique identifier.`})}),_jsx(ResponseField,{name:`Status`,type:`string`,id:`param-status-1`,children:_jsx(_components.p,{children:`Thread status.`})}),_jsx(ResponseField,{name:`Original Channel Id`,type:`string`,id:`param-original-channel-id`,children:_jsx(_components.p,{children:`The id of the channel the thread originated on.`})}),_jsx(ResponseField,{name:`Original Channel Account Id`,type:`string`,id:`param-original-channel-account-id`,children:_jsx(_components.p,{children:`The account id within that channel.`})}),_jsx(ResponseField,{name:`Assigned To`,type:`string`,id:`param-assigned-to`,children:_jsx(_components.p,{children:`The agent assigned to the thread.`})}),_jsx(ResponseField,{name:`Spam`,type:`boolean`,id:`param-spam`,children:_jsx(_components.p,{children:`True if the thread is marked as spam.`})}),_jsx(ResponseField,{name:`Archived`,type:`boolean`,id:`param-archived`,children:_jsx(_components.p,{children:`True if the thread is archived.`})}),_jsx(ResponseField,{name:`Inbox Id`,type:`string`,id:`param-inbox-id`,children:_jsx(_components.p,{children:`The inbox the thread lives in.`})}),_jsx(ResponseField,{name:`Associated Contact Id`,type:`string`,id:`param-associated-contact-id`,children:_jsx(_components.p,{children:`The HubSpot contact id linked to the thread.`})}),_jsx(ResponseField,{name:`Ticket Id`,type:`string`,id:`param-ticket-id-1`,children:_jsx(_components.p,{children:`The HubSpot ticket id, if the thread is associated with one.`})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Contact`}),`: the customer record.`]}),_jsx(ResponseField,{name:`Contact Id`,type:`string`,id:`param-contact-id`,children:_jsx(_components.p,{children:`The contact’s unique identifier.`})}),_jsx(ResponseField,{name:`Created At`,type:`string`,id:`param-created-at`,children:_jsx(_components.p,{children:`ISO timestamp when the contact was created.`})}),_jsx(ResponseField,{name:`Updated At`,type:`string`,id:`param-updated-at`,children:_jsx(_components.p,{children:`ISO timestamp of the last update.`})}),_jsx(ResponseField,{name:`Archived`,type:`boolean`,id:`param-archived-1`,children:_jsx(_components.p,{children:`True if the contact is archived.`})}),_jsx(ResponseField,{name:`Properties`,type:`object`,id:`param-properties`,children:_jsx(_components.p,{children:`Full properties bag of the HubSpot contact record.`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Channel Details`})}),_jsx(ResponseField,{name:`Channel Id`,type:`string`,id:`param-channel-id`,children:_jsx(_components.p,{children:`Channel identifier.`})}),_jsx(ResponseField,{name:`Name`,type:`string`,id:`param-name`,children:_jsx(_components.p,{children:`Channel name.`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Ticket`})}),_jsx(ResponseField,{name:`Ticket Id`,type:`string`,id:`param-ticket-id-2`,children:_jsx(_components.p,{children:`HubSpot ticket id.`})}),_jsx(ResponseField,{name:`Archived`,type:`boolean`,id:`param-archived-2`,children:_jsx(_components.p,{children:`True if the ticket is archived.`})})]}),_jsxs(Accordion,{title:`Salesforce`,icon:`https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/salesforce.png?fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=9b742557d0eefb58c8c75eae6d091565`,\"data-og-width\":`1280`,width:`1280`,\"data-og-height\":`896`,height:`896`,\"data-path\":`images/shared/logos/salesforce.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/salesforce.png?w=280\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=02e1ca24e821298d443922eafb2f7ec7 280w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/salesforce.png?w=560\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=923eb2a9c8296527a9fc69ecad7fe05b 560w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/salesforce.png?w=840\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=ed755e022dc5d7308f518fd1c3b4f7e2 840w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/salesforce.png?w=1100\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=520695ad269dc092b435d36d72cb6682 1100w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/salesforce.png?w=1650\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=b63c7c7937fb888b0c5056f95acc5bfd 1650w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/salesforce.png?w=2500\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=9eac9782269a41b49ec6ddae9e55ed9d 2500w`,id:`salesforce`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Connection Settings`})}),_jsx(ResponseField,{name:`Salesforce Account Subdomain`,type:`string`,id:`param-salesforce-account-subdomain`,children:_jsx(_components.p,{children:`Your Salesforce subdomain.`})}),_jsx(ResponseField,{name:`Salesforce API Access Token`,type:`string`,id:`param-salesforce-api-access-token`,children:_jsx(_components.p,{children:`Bearer token for Salesforce API calls. Toggle Use as Input in API only.`})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Case`}),`: the current Salesforce case.`]}),_jsx(ResponseField,{name:`Case Id`,type:`string`,id:`param-case-id`,children:_jsx(_components.p,{children:`The case’s unique identifier.`})}),_jsx(ResponseField,{name:`Master Record Id`,type:`string`,id:`param-master-record-id`,children:_jsx(_components.p,{children:`Master record id (if merged from another case).`})}),_jsx(ResponseField,{name:`Case Number`,type:`string`,id:`param-case-number`,children:_jsx(_components.p,{children:`Human-readable case number.`})}),_jsx(ResponseField,{name:`Contact Id`,type:`string`,id:`param-contact-id-1`,children:_jsx(_components.p,{children:`The customer contact’s id.`})}),_jsx(ResponseField,{name:`Account Id`,type:`string`,id:`param-account-id`,children:_jsx(_components.p,{children:`The customer account’s id.`})}),_jsx(ResponseField,{name:`Asset Id`,type:`string`,id:`param-asset-id`,children:_jsx(_components.p,{children:`Asset id associated with the case, if any.`})}),_jsx(ResponseField,{name:`Source Id`,type:`string`,id:`param-source-id`,children:_jsx(_components.p,{children:`Source id of the case.`})}),_jsx(ResponseField,{name:`Parent Id`,type:`string`,id:`param-parent-id`,children:_jsx(_components.p,{children:`Parent case id, if this is a child case.`})}),_jsx(ResponseField,{name:`Supplied Phone`,type:`string`,id:`param-supplied-phone`,children:_jsx(_components.p,{children:`Phone number the customer supplied.`})}),_jsx(ResponseField,{name:`Supplied Company`,type:`string`,id:`param-supplied-company`,children:_jsx(_components.p,{children:`Company name the customer supplied.`})}),_jsx(ResponseField,{name:`Type`,type:`string`,id:`param-type-2`,children:_jsx(_components.p,{children:`Case type.`})}),_jsx(ResponseField,{name:`Status`,type:`string`,id:`param-status-2`,children:_jsx(_components.p,{children:`Case status.`})}),_jsx(ResponseField,{name:`Reason`,type:`string`,id:`param-reason`,children:_jsx(_components.p,{children:`Case reason (e.g., installation, performance, complaint).`})}),_jsx(ResponseField,{name:`Origin`,type:`string`,id:`param-origin`,children:_jsx(_components.p,{children:`How the case originated (web, phone, email, etc.).`})}),_jsx(ResponseField,{name:`Subject`,type:`string`,id:`param-subject-1`,children:_jsx(_components.p,{children:`Case subject line.`})}),_jsx(ResponseField,{name:`Priority`,type:`string`,id:`param-priority-2`,children:_jsx(_components.p,{children:`Case priority.`})}),_jsx(ResponseField,{name:`Description`,type:`string`,id:`param-description-1`,children:_jsx(_components.p,{children:`Full case description.`})}),_jsx(ResponseField,{name:`Is Closed`,type:`boolean`,id:`param-is-closed`,children:_jsx(_components.p,{children:`True if the case is closed.`})}),_jsx(ResponseField,{name:`Closed Date`,type:`string`,id:`param-closed-date`,children:_jsx(_components.p,{children:`ISO date the case was closed.`})}),_jsx(ResponseField,{name:`Is Escalated`,type:`boolean`,id:`param-is-escalated`,children:_jsx(_components.p,{children:`True if the case has been escalated.`})}),_jsx(ResponseField,{name:`Owner Id`,type:`string`,id:`param-owner-id`,children:_jsx(_components.p,{children:`Case owner’s id.`})}),_jsx(ResponseField,{name:`Created By Id`,type:`string`,id:`param-created-by-id`,children:_jsx(_components.p,{children:`Id of whoever created the case.`})})]}),_jsxs(Accordion,{title:`Front`,icon:`https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/front.png?fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=16890c6c96df3bb3c017fb6bc49be70a`,\"data-og-width\":`200`,width:`200`,\"data-og-height\":`200`,height:`200`,\"data-path\":`images/shared/logos/front.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/front.png?w=280\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=c58bfffdc96d0b92ea227b5befe63ff7 280w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/front.png?w=560\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=1e543fd07565f306b7c449ebdc7d3272 560w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/front.png?w=840\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=9b95011ac600baf46dcccc7438015494 840w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/front.png?w=1100\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=4f4d31ee994ff24d50bb150098504e4f 1100w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/front.png?w=1650\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=c7ce5ea797c406d55c826cfdd4874c18 1650w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/front.png?w=2500\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=b54514ada57bc20f0732ee7d4a32c1d9 2500w`,id:`front`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Connection Settings`})}),_jsx(ResponseField,{name:`Front API Access Token`,type:`string`,id:`param-front-api-access-token`,children:_jsx(_components.p,{children:`Bearer token for Front API calls. Toggle Use as Input in API only.`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Conversation`})}),_jsx(ResponseField,{name:`Conversation Id`,type:`string`,id:`param-conversation-id-1`,children:_jsx(_components.p,{children:`The conversation’s unique identifier.`})}),_jsx(ResponseField,{name:`Subject`,type:`string`,id:`param-subject-2`,children:_jsx(_components.p,{children:`Conversation subject line.`})}),_jsx(ResponseField,{name:`Status`,type:`string`,id:`param-status-3`,children:_jsx(_components.p,{children:`Conversation status.`})}),_jsx(ResponseField,{name:`Is Private`,type:`boolean`,id:`param-is-private`,children:_jsx(_components.p,{children:`True if the conversation is private.`})})]}),_jsxs(Accordion,{title:`Gorgias`,icon:`https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/gorgias.png?fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=8599fc978832bcbfb6a5d0bc0a305fcc`,\"data-og-width\":`500`,width:`500`,\"data-og-height\":`500`,height:`500`,\"data-path\":`images/shared/logos/gorgias.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/gorgias.png?w=280\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=d3f23ae3dd38d2d7277febdb11af1c7c 280w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/gorgias.png?w=560\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=e76d1cc28fda63e774d923740c8f8757 560w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/gorgias.png?w=840\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=3201ec244db3183c84aed9df9d502cad 840w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/gorgias.png?w=1100\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=f92e1774dbf47def32cb1b9d74368241 1100w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/gorgias.png?w=1650\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=cb795fa4e849729576a7205ae9fda60a 1650w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/gorgias.png?w=2500\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=a0414c5c1833f7525a198df815f2f21f 2500w`,id:`gorgias`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Connection Settings`})}),_jsx(ResponseField,{name:`Gorgias Subdomain`,type:`string`,id:`param-gorgias-subdomain`,children:_jsx(_components.p,{children:`Your Gorgias subdomain.`})}),_jsx(ResponseField,{name:`Gorgias API Access Token`,type:`string`,id:`param-gorgias-api-access-token`,children:_jsx(_components.p,{children:`Bearer token for Gorgias API calls. Toggle Use as Input in API only.`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Ticket`})}),_jsx(ResponseField,{name:`Ticket Id`,type:`string`,id:`param-ticket-id-3`,children:_jsx(_components.p,{children:`The ticket’s unique identifier.`})}),_jsx(ResponseField,{name:`Url`,type:`string`,id:`param-url-1`,children:_jsx(_components.p,{children:`The ticket’s URL in your Gorgias instance.`})}),_jsx(ResponseField,{name:`Ticket Channel`,type:`string`,id:`param-ticket-channel`,children:_jsx(_components.p,{children:`Channel the ticket arrived on.`})}),_jsx(ResponseField,{name:`External Id`,type:`number`,id:`param-external-id-1`,children:_jsx(_components.p,{children:`External system id.`})}),_jsx(ResponseField,{name:`Is Agent Message`,type:`boolean`,id:`param-is-agent-message`,children:_jsx(_components.p,{children:`True if the latest message was from an agent (not the customer).`})}),_jsx(ResponseField,{name:`Via`,type:`string`,id:`param-via`,children:_jsx(_components.p,{children:`How the ticket was created.`})}),_jsx(ResponseField,{name:`Status`,type:`string`,id:`param-status-4`,children:_jsx(_components.p,{children:`Ticket status.`})}),_jsx(ResponseField,{name:`Assignee Team Id`,type:`number`,id:`param-assignee-team-id`,children:_jsx(_components.p,{children:`The team the ticket is assigned to.`})}),_jsx(ResponseField,{name:`Language`,type:`string`,id:`param-language`,children:_jsx(_components.p,{children:`Detected language of the ticket.`})}),_jsx(ResponseField,{name:`Subject`,type:`string`,id:`param-subject-3`,children:_jsx(_components.p,{children:`Ticket subject.`})})]}),_jsxs(Accordion,{title:`LiveChat`,icon:`https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/livechat.png?fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=6027349a863d4509a2bd98125f3f1a89`,\"data-og-width\":`1200`,width:`1200`,\"data-og-height\":`1200`,height:`1200`,\"data-path\":`images/shared/logos/livechat.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/livechat.png?w=280\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=1020e019e311bddaadaaec6fdb10703a 280w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/livechat.png?w=560\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=4bf0cc8346497f98e9a1e37224300804 560w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/livechat.png?w=840\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=2092c586efd76aa9b74d59d88635a18c 840w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/livechat.png?w=1100\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=bb4b83c7cc2538aa677044bfe735a7ea 1100w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/livechat.png?w=1650\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=ac5226bfa882d0132673e0bb63656859 1650w, https://mintcdn.com/fini/23DGfNpQi6KZtsEW/images/shared/logos/livechat.png?w=2500\u0026fit=max\u0026auto=format\u0026n=23DGfNpQi6KZtsEW\u0026q=85\u0026s=1ceee64a81681e3cacc63b12eb77f576 2500w`,id:`livechat`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Connection Settings`})}),_jsx(ResponseField,{name:`Bot Bearer Token`,type:`string`,id:`param-bot-bearer-token`,children:_jsx(_components.p,{children:`Bot bearer token for LiveChat API calls. Toggle Use as Input in API only.`})}),_jsxs(_components.p,{children:[`LiveChat exposes only Connection Settings as integration metadata today. To pull conversation- or customer-level fields, use a Data Collection Step, see `,_jsx(_components.a,{href:`#attributes-from-external-systems`,children:`Attributes from External Systems`}),`.`]})]})]})]})}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":"Overview","description":"Fetch the customer context your AI agent needs (plan, order, account state) before every reply, so answers are personalized rather than generic.","icon":"id-card","href":"/en/api-reference/attributes"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"The model","slug":"the-model","depth":2,"children":[]},{"title":"1 · Source: where data comes from","slug":"1-·-source-where-data-comes-from","depth":2,"children":[]},{"title":"2 · Fields: what you can fetch","slug":"2-·-fields-what-you-can-fetch","depth":2,"children":[{"title":"System Attributes (always available)","slug":"system-attributes-always-available","depth":3,"children":[]},{"title":"Passed-in fields (UI / Widget sources only)","slug":"passed-in-fields-ui-/-widget-sources-only","depth":3,"children":[]},{"title":"Integration metadata fields","slug":"integration-metadata-fields","depth":3,"children":[]},{"title":"Attributes from External Systems","slug":"attributes-from-external-systems","depth":3,"children":[]}]},{"title":"3 · Switches: who can see each field","slug":"3-·-switches-who-can-see-each-field","depth":2,"children":[]},{"title":"Creating a user attribute","slug":"creating-a-user-attribute","depth":2,"children":[]},{"title":"Deploying attributes for an AI agent","slug":"deploying-attributes-for-an-ai-agent","depth":2,"children":[]},{"title":"When attributes run","slug":"when-attributes-run","depth":2,"children":[]},{"title":"Worked examples","slug":"worked-examples","depth":2,"children":[]},{"title":"Why a field isn’t reaching the agent","slug":"why-a-field-isn’t-reaching-the-agent","depth":2,"children":[]},{"title":"Reference: integration field catalog","slug":"reference-integration-field-catalog","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"fini","siteName":"Fini","title":"Overview - Fini","relatedPagesConfig":{"enabled":true,"limit":3,"mode":"automatic"},"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/en/api-reference/attributes","matchLevel":0}}},"lastModified":"2026-10-05T17:02:07.484Z","originalFileLocation":"en/api-reference/attributes.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=\"Fetch the customer context your AI agent needs (plan, order, account state) before every reply, so answers are personalized rather than generic.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Fini\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://mintcdn.com/fini/fep-JMymNphpe1DQ/images/shared/logos/fini-dark.png?fit=max\u0026amp;auto=format\u0026amp;n=fep-JMymNphpe1DQ\u0026amp;q=85\u0026amp;s=8a2bf1d8a0e5c590ebb976eadccf26a9\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://mintcdn.com/fini/fep-JMymNphpe1DQ/images/shared/logos/fini-dark.png?fit=max\u0026amp;auto=format\u0026amp;n=fep-JMymNphpe1DQ\u0026amp;q=85\u0026amp;s=8a2bf1d8a0e5c590ebb976eadccf26a9\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://mintcdn.com/fini/fep-JMymNphpe1DQ/images/shared/logos/fini-dark.png?fit=max\u0026amp;auto=format\u0026amp;n=fep-JMymNphpe1DQ\u0026amp;q=85\u0026amp;s=8a2bf1d8a0e5c590ebb976eadccf26a9\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/png\" href=\"https://mintcdn.com/fini/fep-JMymNphpe1DQ/images/shared/logos/fini-dark.png?fit=max\u0026amp;auto=format\u0026amp;n=fep-JMymNphpe1DQ\u0026amp;q=85\u0026amp;s=8a2bf1d8a0e5c590ebb976eadccf26a9\">\u003cmeta data-mint-head property=\"og:title\" content=\"Overview - Fini\">\u003cmeta data-mint-head property=\"og:description\" content=\"Fetch the customer context your AI agent needs (plan, order, account state) before every reply, so answers are personalized rather than generic.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Fini\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.usefini.com/en/api-reference/attributes\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://fini.mintlify.site/_mintlify/api/og/v2?division=Attributes\u0026amp;title=Overview\u0026amp;description=Fetch+the+customer+context+your+AI+agent+needs+%28plan%2C+order%2C+account+state%29+before+every+reply%2C+so+answers+are+personalized+rather+than+generic.\u0026amp;theme=f0910fa1b0920527ac15e186\u0026amp;signature=ba7a2e93077ea08da3a3dc5f5500990fcc8673f5eccf0781fc8745a80afa4c1f\">\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=\"Overview - Fini\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Fetch the customer context your AI agent needs (plan, order, account state) before every reply, so answers are personalized rather than generic.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://fini.mintlify.site/_mintlify/api/og/v2?division=Attributes\u0026amp;title=Overview\u0026amp;description=Fetch+the+customer+context+your+AI+agent+needs+%28plan%2C+order%2C+account+state%29+before+every+reply%2C+so+answers+are+personalized+rather+than+generic.\u0026amp;theme=f0910fa1b0920527ac15e186\u0026amp;signature=ba7a2e93077ea08da3a3dc5f5500990fcc8673f5eccf0781fc8745a80afa4c1f\">\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=\"https://mintlify.s3.us-west-1.amazonaws.com/fini/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Fini\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#C3EE5E\">\u003cmeta data-mint-head name=\"msvalidate.01\" content=\"9A9FD7AB87AE2DEA257FE41F07C61E70\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.usefini.com/en/api-reference/attributes\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/en/api-reference/attributes.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.usefini.com/#organization\",\"name\":\"Fini\",\"url\":\"https://docs.usefini.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/fini/fep-JMymNphpe1DQ/images/shared/logos/fini-light.png?fit=max\u0026auto=format\u0026n=fep-JMymNphpe1DQ\u0026q=85\u0026s=a460ff8bb507876712db2f0fb12c21e4\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.usefini.com#website\",\"name\":\"Fini\",\"url\":\"https://docs.usefini.com\",\"publisher\":{\"@id\":\"https://docs.usefini.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.usefini.com/en/api-reference/attributes#webpage\",\"url\":\"https://docs.usefini.com/en/api-reference/attributes\",\"name\":\"Overview\",\"description\":\"Fetch the customer context your AI agent needs (plan, order, account state) before every reply, so answers are personalized rather than generic.\",\"dateModified\":\"2026-10-05T17:02:07.484Z\",\"isPartOf\":{\"@id\":\"https://docs.usefini.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.usefini.com/en/api-reference/attributes#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.usefini.com/en/api-reference/attributes#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Fini\",\"item\":\"https://docs.usefini.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Overview\",\"item\":\"https://docs.usefini.com/en/api-reference/attributes\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.usefini.com/en/api-reference/attributes#article\",\"headline\":\"Overview\",\"name\":\"Overview\",\"description\":\"Fetch the customer context your AI agent needs (plan, order, account state) before every reply, so answers are personalized rather than generic.\",\"url\":\"https://docs.usefini.com/en/api-reference/attributes\",\"mainEntityOfPage\":{\"@id\":\"https://docs.usefini.com/en/api-reference/attributes#webpage\"},\"dateModified\":\"2026-10-05T17:02:07.484Z\",\"publisher\":{\"@id\":\"https://docs.usefini.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.usefini.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Fini\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Fini","nav":{"global":null,"languages":[{"language":"en","default":true,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/en/introduction"}]},{"tab":"API reference","pages":[{"group":"API Setup","icon":"sliders","pages":[{"title":"API overview","icon":"code-branch","href":"/en/api-reference/overview"},{"title":"API contract","icon":"code","href":"/en/api-reference/api-contract"},{"title":"Static IP Addresses","icon":"address-book","href":"/en/api-reference/static-ip"},{"title":"Database and Warehouse Connections","icon":"database","href":"/en/api-reference/database-warehouses"},{"title":"MCP Connections","icon":"plug","href":"/en/api-reference/connect-mcp"}]},{"group":"LLM Access","icon":"acorn","pages":[{"title":"Coding agents","icon":"robot","href":"/en/api-reference/coding-agents"},{"title":"Claude Plugin","icon":"puzzle-piece","href":"/en/api-reference/claude-connector"}]},{"group":"Agents","public":true,"icon":"robot","pages":[{"title":"Overview","icon":"robot","href":"/en/api-reference/agents"},{"title":"Create agent","api":"POST https://api-prod.usefini.com/v2/bots/public","href":"/en/api-reference/create-agent"},{"title":"List agents","api":"GET https://api-prod.usefini.com/v2/bots/public","href":"/en/api-reference/list-agents"},{"title":"Delete agent","api":"DELETE https://api-prod.usefini.com/v2/bots/{id}/public","href":"/en/api-reference/delete-agent"}]},{"group":"Analytics","public":true,"icon":"chart-line","pages":[{"title":"Overview","icon":"chart-line","href":"/en/api-reference/analytics"},{"title":"Get agent analytics","api":"GET https://api-prod.usefini.com/v2/bots/{id}/hc-analytics/public","href":"/en/api-reference/get-agent-analytics"},{"title":"Get agent analytics section","api":"GET https://api-prod.usefini.com/v2/bots/{id}/hc-analytics/{section}/public","href":"/en/api-reference/get-agent-analytics-section"}]},{"group":"Help Centers","public":true,"icon":"book-open","pages":[{"title":"Overview","icon":"book-open","href":"/en/api-reference/help-centers"},{"title":"List help centers","api":"GET https://api-prod.usefini.com/v2/helpcenter/list/public","href":"/en/api-reference/list-help-centers"},{"title":"Get help center analytics","api":"GET https://api-prod.usefini.com/v2/helpcenter/{id}/analytics/public","href":"/en/api-reference/get-help-center-analytics"},{"title":"Export help center analytics","api":"GET https://api-prod.usefini.com/v2/helpcenter/{id}/analytics/export/public","href":"/en/api-reference/export-help-center-analytics"}]},{"group":"Profile","public":true,"icon":"user","pages":[{"title":"Overview","icon":"user","href":"/en/api-reference/profile"},{"title":"Update my reply alias","api":"PATCH https://api-prod.usefini.com/v2/users/me/public","href":"/en/api-reference/update-my-profile"}]},{"group":"Macros","public":true,"icon":"message","pages":[{"title":"Overview","icon":"message","href":"/en/api-reference/macros"},{"title":"List macros","api":"GET https://api-prod.usefini.com/v2/macros/public","href":"/en/api-reference/list-macros"},{"title":"Get macro","api":"GET https://api-prod.usefini.com/v2/macros/{id}/public","href":"/en/api-reference/get-macro"},{"title":"Create macro","api":"POST https://api-prod.usefini.com/v2/macros/public","href":"/en/api-reference/create-macro"},{"title":"Update macro","api":"PATCH https://api-prod.usefini.com/v2/macros/{id}/public","href":"/en/api-reference/update-macro"},{"title":"Delete macro","api":"DELETE https://api-prod.usefini.com/v2/macros/{id}/public","href":"/en/api-reference/delete-macro"}]},{"group":"Prompts","public":true,"icon":"message","pages":[{"title":"Overview","icon":"message","href":"/en/api-reference/prompts"},{"title":"Get prompts","api":"GET https://api-prod.usefini.com/v2/bots/{id}/hc-prompt/public","href":"/en/api-reference/get-prompts"},{"title":"Get prompt history","api":"GET https://api-prod.usefini.com/v2/bots/{id}/hc-prompt/history/public","href":"/en/api-reference/get-prompt-history"},{"title":"Get prompt version","api":"GET https://api-prod.usefini.com/v2/bots/{id}/hc-prompt/{promptId}/public","href":"/en/api-reference/get-prompt-version"},{"title":"Update prompts","api":"POST https://api-prod.usefini.com/v2/bots/{id}/hc-prompt/public","href":"/en/api-reference/update-prompts"},{"title":"Create prompt draft version","api":"POST https://api-prod.usefini.com/v2/bots/{id}/hc-prompt/versions/public","href":"/en/api-reference/create-prompt-draft-version"},{"title":"Get prompt draft version","api":"GET https://api-prod.usefini.com/v2/bots/{id}/hc-prompt/versions/{versionId}/public","href":"/en/api-reference/get-prompt-draft-version"},{"title":"Publish prompt draft version","api":"POST https://api-prod.usefini.com/v2/bots/{id}/hc-prompt/versions/{versionId}/publish/public","href":"/en/api-reference/publish-prompt-draft-version"},{"title":"Delete prompt draft version","api":"DELETE https://api-prod.usefini.com/v2/bots/{id}/hc-prompt/versions/{versionId}/public","href":"/en/api-reference/delete-prompt-draft-version"},{"title":"List prompt lifecycle versions","api":"GET https://api-prod.usefini.com/v2/bots/{id}/hc-prompt/versions/public","href":"/en/api-reference/list-prompt-versions"},{"title":"Restore prompt version as draft","api":"POST https://api-prod.usefini.com/v2/bots/{id}/hc-prompt/versions/{versionId}/restore-as-draft/public","href":"/en/api-reference/restore-prompt-version-as-draft"}]},{"group":"Actions","public":true,"icon":"wand-magic-sparkles","pages":[{"title":"Overview","icon":"wand-magic-sparkles","href":"/en/api-reference/actions"},{"title":"List actions","api":"GET https://api-prod.usefini.com/v2/hc-tools/public","href":"/en/api-reference/list-actions"},{"title":"Get action","api":"GET https://api-prod.usefini.com/v2/hc-tools/{id}/public","href":"/en/api-reference/get-action"},{"title":"Create action","api":"POST https://api-prod.usefini.com/v2/hc-tools/public","href":"/en/api-reference/create-action"},{"title":"Update action","api":"PATCH https://api-prod.usefini.com/v2/hc-tools/{id}/public","href":"/en/api-reference/update-action"},{"title":"Delete action","api":"DELETE https://api-prod.usefini.com/v2/hc-tools/{id}/public","href":"/en/api-reference/delete-action"},{"title":"Test action","api":"POST https://api-prod.usefini.com/v2/hc-tools/{id}/test-run/public","href":"/en/api-reference/test-action"},{"title":"List agent assignments","api":"GET https://api-prod.usefini.com/v2/hc-tools/{id}/junctions/public","href":"/en/api-reference/list-action-agents"},{"title":"Assign to agents","api":"POST https://api-prod.usefini.com/v2/hc-tools/junctions/public","description":"Add or remove agent assignments for actions.","href":"/en/api-reference/assign-action-agents"}]},{"group":"Attributes","public":true,"icon":"id-card","pages":[{"title":"Overview","icon":"id-card","href":"/en/api-reference/attributes"},{"title":"List attributes","api":"GET https://api-prod.usefini.com/v2/hc-tools/public","description":"List the attributes in the workspace.","href":"/en/api-reference/list-attributes"},{"title":"Get attribute","api":"GET https://api-prod.usefini.com/v2/hc-tools/{id}/public","href":"/en/api-reference/get-attribute"},{"title":"Create attribute","api":"POST https://api-prod.usefini.com/v2/hc-tools/public","href":"/en/api-reference/create-attribute"},{"title":"Update attribute","api":"PATCH https://api-prod.usefini.com/v2/hc-tools/{id}/public","href":"/en/api-reference/update-attribute"},{"title":"Delete attribute","api":"DELETE https://api-prod.usefini.com/v2/hc-tools/{id}/public","href":"/en/api-reference/delete-attribute"},{"title":"Test attribute","api":"POST https://api-prod.usefini.com/v2/hc-tools/{id}/test-run/public","href":"/en/api-reference/test-attribute"},{"title":"List agent assignments","api":"GET https://api-prod.usefini.com/v2/hc-tools/{id}/junctions/public","href":"/en/api-reference/list-attribute-agents"},{"title":"Assign to agents","api":"POST https://api-prod.usefini.com/v2/hc-tools/junctions/public","href":"/en/api-reference/assign-attribute-agents"}]},{"group":"External API calls","public":true,"icon":"plug","pages":[{"title":"Overview","icon":"plug","href":"/en/api-reference/actions-and-attributes"},{"title":"List external API calls","api":"GET https://api-prod.usefini.com/v2/api-function-configs/public","href":"/en/api-reference/list-data-steps"},{"title":"Get external API call","api":"GET https://api-prod.usefini.com/v2/api-function-configs/{id}/public","href":"/en/api-reference/get-data-step"},{"title":"Create external API call","api":"POST https://api-prod.usefini.com/v2/api-function-configs/public","href":"/en/api-reference/create-data-step"},{"title":"Update external API call","api":"PATCH https://api-prod.usefini.com/v2/api-function-configs/{id}/public","href":"/en/api-reference/update-data-step"},{"title":"Delete external API call","api":"DELETE https://api-prod.usefini.com/v2/api-function-configs/{id}/public","href":"/en/api-reference/delete-data-step"},{"title":"Test external API call","api":"POST https://api-prod.usefini.com/v2/api-function-configs/test-run/public","href":"/en/api-reference/test-data-step"}]},{"group":"Intent Rules","public":true,"icon":"route","pages":[{"title":"Overview","icon":"route","href":"/en/api-reference/intent-rules"},{"title":"List intent rules","api":"GET https://api-prod.usefini.com/v2/hc-rules/public","href":"/en/api-reference/list-intent-rules"},{"title":"Get intent rule","api":"GET https://api-prod.usefini.com/v2/hc-rules/{id}/public","href":"/en/api-reference/get-intent-rule"},{"title":"Get intent-rule fields context","api":"GET https://api-prod.usefini.com/v2/hc-rules/fields-context/public","href":"/en/api-reference/get-intent-rule-fields-context"},{"title":"Generate intent-rule draft with AI","api":"POST https://api-prod.usefini.com/v2/hc-rules/generate/public","href":"/en/api-reference/generate-intent-rule-draft"},{"title":"Create intent rule","api":"POST https://api-prod.usefini.com/v2/hc-rules/public","href":"/en/api-reference/create-intent-rule"},{"title":"Update intent rule","api":"PATCH https://api-prod.usefini.com/v2/hc-rules/{id}/public","href":"/en/api-reference/update-intent-rule"},{"title":"List intent-rule versions","api":"GET https://api-prod.usefini.com/v2/hc-rules/{id}/versions/public","href":"/en/api-reference/list-rule-versions"},{"title":"Get intent-rule version","api":"GET https://api-prod.usefini.com/v2/hc-rules/{id}/versions/{versionId}/public","href":"/en/api-reference/get-rule-version"},{"title":"Publish intent-rule draft","api":"POST https://api-prod.usefini.com/v2/hc-rules/{id}/publish/public","href":"/en/api-reference/publish-rule-draft"},{"title":"Unpublish intent rule","api":"POST https://api-prod.usefini.com/v2/hc-rules/{id}/unpublish/public","href":"/en/api-reference/unpublish-intent-rule"},{"title":"Restore intent-rule version as draft","api":"POST https://api-prod.usefini.com/v2/hc-rules/{id}/versions/{versionId}/restore-as-draft/public","href":"/en/api-reference/restore-rule-version-as-draft"},{"title":"Delete intent-rule draft version","api":"DELETE https://api-prod.usefini.com/v2/hc-rules/{id}/versions/{versionId}/public","href":"/en/api-reference/delete-rule-draft-version"},{"title":"Get rule version test paths","api":"GET https://api-prod.usefini.com/v2/hc-rules/{id}/versions/{versionId}/test-paths/public","href":"/en/api-reference/get-rule-version-test-paths"},{"title":"Preview rule test paths","api":"POST https://api-prod.usefini.com/v2/hc-rules/test-paths/config/public","href":"/en/api-reference/preview-rule-test-paths"},{"title":"Run rule version test path","api":"POST https://api-prod.usefini.com/v2/hc-rules/{id}/versions/{versionId}/test-paths/run/public","href":"/en/api-reference/run-rule-version-test-path"},{"title":"Run rule test path from config","api":"POST https://api-prod.usefini.com/v2/hc-rules/test-paths/config/run/public","href":"/en/api-reference/run-rule-test-path-config"},{"title":"Delete intent rule","api":"DELETE https://api-prod.usefini.com/v2/hc-rules/{id}/public","href":"/en/api-reference/delete-intent-rule"}]},{"group":"Guardrails","icon":"shield-check","pages":[{"title":"Overview","icon":"shield-check","href":"/en/api-reference/guardrails"},{"title":"List guardrail check types","api":"GET https://api-prod.usefini.com/v2/guardrail-policies/check-types/public","href":"/en/api-reference/list-guardrail-check-types"},{"title":"List guardrail policies","api":"GET https://api-prod.usefini.com/v2/guardrail-policies/public","href":"/en/api-reference/list-guardrail-policies"},{"title":"Get guardrail policy","api":"GET https://api-prod.usefini.com/v2/guardrail-policies/{id}/public","href":"/en/api-reference/get-guardrail-policy"},{"title":"Create guardrail policy","api":"POST https://api-prod.usefini.com/v2/guardrail-policies/public","href":"/en/api-reference/create-guardrail-policy"},{"title":"Update guardrail policy","api":"PUT https://api-prod.usefini.com/v2/guardrail-policies/{id}/public","href":"/en/api-reference/update-guardrail-policy"},{"title":"Delete guardrail policy","api":"DELETE https://api-prod.usefini.com/v2/guardrail-policies/{id}/public","href":"/en/api-reference/delete-guardrail-policy"},{"title":"List guardrail runs","api":"GET https://api-prod.usefini.com/v2/guardrail-policies/runs/public","href":"/en/api-reference/list-guardrail-runs"},{"title":"Get guardrail hits","api":"GET https://api-prod.usefini.com/v2/guardrail-policies/hits/public","href":"/en/api-reference/get-guardrail-hits"}]},{"group":"Business Rules","public":true,"icon":"briefcase","pages":[{"title":"Overview","icon":"briefcase","href":"/en/api-reference/business-rules"},{"title":"List Business Rules","api":"GET https://api-prod.usefini.com/v2/business-rules/public","href":"/en/api-reference/list-business-rules"},{"title":"Get Business Rule","api":"GET https://api-prod.usefini.com/v2/business-rules/{id}/public","href":"/en/api-reference/get-business-rule"},{"title":"Get Business Rule fields context","api":"GET https://api-prod.usefini.com/v2/business-rules/fields-context/public","href":"/en/api-reference/get-business-rule-fields-context"},{"title":"List default Business Rules","api":"GET https://api-prod.usefini.com/v2/business-rules/default/public","href":"/en/api-reference/list-default-rules"},{"title":"Create Business Rule","api":"POST https://api-prod.usefini.com/v2/business-rules/public","href":"/en/api-reference/create-business-rule"},{"title":"Duplicate Business Rule","api":"POST https://api-prod.usefini.com/v2/business-rules/{id}/duplicate/public","href":"/en/api-reference/duplicate-business-rule"},{"title":"Evaluate Business Rule","api":"POST https://api-prod.usefini.com/v2/business-rules/{id}/evaluate/public","href":"/en/api-reference/evaluate-business-rule"},{"title":"Get Business Rule test fields","api":"GET https://api-prod.usefini.com/v2/business-rules/{id}/test-fields/public","href":"/en/api-reference/get-business-rule-test-fields"},{"title":"Preview Business Rule test fields","api":"POST https://api-prod.usefini.com/v2/business-rules/test-fields/preview/public","href":"/en/api-reference/preview-business-rule-test-fields"},{"title":"Update Business Rule","api":"PATCH https://api-prod.usefini.com/v2/business-rules/{id}/public","href":"/en/api-reference/update-business-rule"},{"title":"Delete Business Rule","api":"DELETE https://api-prod.usefini.com/v2/business-rules/{id}/public","href":"/en/api-reference/delete-business-rule"}]},{"group":"Reply Rules","public":true,"icon":"reply-all","pages":[{"title":"Overview","icon":"reply-all","href":"/en/api-reference/reply-rules"},{"title":"Get reply rules","api":"GET https://api-prod.usefini.com/v2/reply-behavior/public","href":"/en/api-reference/get-reply-rules"},{"title":"Get reply rule fields context","api":"GET https://api-prod.usefini.com/v2/reply-behavior/fields-context/public","href":"/en/api-reference/get-reply-rule-fields-context"},{"title":"Update reply rule","api":"PUT https://api-prod.usefini.com/v2/reply-behavior/{replyType}/public","href":"/en/api-reference/update-reply-rule"}]},{"group":"Tag groups","public":true,"icon":"tag","pages":[{"title":"Overview","icon":"tag","href":"/en/api-reference/tag-groups"},{"title":"List tag groups","api":"GET https://api-prod.usefini.com/v2/tag-groups/public","href":"/en/api-reference/list-tag-groups"},{"title":"Get tag group","api":"GET https://api-prod.usefini.com/v2/tag-groups/{id}/public","href":"/en/api-reference/get-tag-group"},{"title":"Create tag group","api":"POST https://api-prod.usefini.com/v2/tag-groups/public","href":"/en/api-reference/create-tag-group"},{"title":"Update tag group","api":"PUT https://api-prod.usefini.com/v2/tag-groups/{id}/public","href":"/en/api-reference/update-tag-group"},{"title":"Delete tag group","api":"DELETE https://api-prod.usefini.com/v2/tag-groups/{id}/public","href":"/en/api-reference/delete-tag-group"}]},{"group":"Tags","public":true,"icon":"tag","pages":[{"title":"Overview","icon":"tag","href":"/en/api-reference/tags"},{"title":"Get tag","api":"GET https://api-prod.usefini.com/v2/tags/{id}/public","href":"/en/api-reference/get-tag"},{"title":"List tags in group","api":"GET https://api-prod.usefini.com/v2/tag-groups/{id}/tags/public","href":"/en/api-reference/list-tags-in-group"},{"title":"List tags across groups","api":"GET https://api-prod.usefini.com/v2/tag-groups/tags/public","href":"/en/api-reference/list-tags-across-groups"},{"title":"Create tag","api":"POST https://api-prod.usefini.com/v2/tag-groups/{id}/tags/public","href":"/en/api-reference/create-tag"},{"title":"Update tag","api":"PUT https://api-prod.usefini.com/v2/tag-groups/tags/{id}/public","href":"/en/api-reference/update-tag"},{"title":"Delete tag","api":"DELETE https://api-prod.usefini.com/v2/tag-groups/tags/{id}/public","href":"/en/api-reference/delete-tag"}]},{"group":"Conversations","public":true,"icon":"address-book","pages":[{"title":"Overview","icon":"address-book","href":"/en/api-reference/conversations"},{"title":"Sync conversations","api":"POST https://api-prod.usefini.com/v2/hc-interactions/sync/public","href":"/en/api-reference/sync-conversations"},{"title":"List conversations","api":"GET https://api-prod.usefini.com/v2/hc-interactions/public","href":"/en/api-reference/list-conversations"},{"title":"Get conversation","api":"GET https://api-prod.usefini.com/v2/hc-interactions/{id}/public","href":"/en/api-reference/get-conversation"},{"title":"Get conversation memories","api":"GET https://api-prod.usefini.com/v2/hc-interactions/{id}/memories/public","href":"/en/api-reference/get-conversation-memories"},{"title":"Get event metadata","api":"GET https://api-prod.usefini.com/v2/hc-events/{id}/metadata","href":"/en/api-reference/get-event-metadata"},{"title":"Generate Answer","api":"POST https://api-prod.usefini.com/v2/hc-interactions/events/public","href":"/en/api-reference/generate-answer"},{"title":"Send conversation feedback","api":"POST https://api-prod.usefini.com/v2/hc-interactions/{id}/feedback/public","href":"/en/api-reference/send-feedback-conversation"},{"title":"Mark feedback resolved","api":"POST https://api-prod.usefini.com/v2/hc-interactions/{id}/feedback-resolved/public","href":"/en/api-reference/resolve-conversation-feedback"},{"title":"Add feedback note","api":"POST https://api-prod.usefini.com/v2/hc-interactions/{id}/feedback-note/public","href":"/en/api-reference/add-conversation-feedback-note"},{"title":"Add internal note","api":"POST https://api-prod.usefini.com/v2/hc-interactions/{id}/internal-note/public","href":"/en/api-reference/add-conversation-internal-note"},{"title":"Evaluate conversation rule","api":"POST https://api-prod.usefini.com/v2/hc-interactions/{id}/evaluate-rule/{ruleId}/public","href":"/en/api-reference/evaluate-conversation-rule"},{"title":"Delete conversation","api":"DELETE https://api-prod.usefini.com/v2/hc-interactions/{id}/public","href":"/en/api-reference/delete-conversation"},{"title":"Bulk delete conversations","api":"DELETE https://api-prod.usefini.com/v2/hc-interactions/public","href":"/en/api-reference/bulk-delete-conversations"}]},{"group":"Refine with AI","public":true,"icon":"wand-magic-sparkles","pages":[{"title":"Overview","icon":"wand-magic-sparkles","href":"/en/api-reference/refine-with-ai"},{"title":"Create Refine with AI iteration","api":"POST https://api-prod.usefini.com/v2/fix-review/interactions/{id}/events/{eventId}/sessions/iterations/public","href":"/en/api-reference/create-fix-review-iteration"},{"title":"Get active Refine with AI session","api":"GET https://api-prod.usefini.com/v2/fix-review/interactions/{id}/events/{eventId}/session/public","href":"/en/api-reference/get-active-fix-review-session"},{"title":"Get Refine with AI session","api":"GET https://api-prod.usefini.com/v2/fix-review/interactions/{id}/events/{eventId}/sessions/{sessionId}/public","href":"/en/api-reference/get-fix-review-session"}]},{"group":"Replays","public":true,"icon":"arrow-rotate-right","pages":[{"title":"Replays","icon":"arrow-rotate-right","href":"/en/api-reference/replays"},{"title":"Create replay","api":"POST https://api-prod.usefini.com/v2/replays/public","href":"/en/api-reference/create-replay"},{"title":"List replays","api":"GET https://api-prod.usefini.com/v2/replays/interactions/{interactionId}/public","href":"/en/api-reference/list-replays"},{"title":"Get replay","api":"GET https://api-prod.usefini.com/v2/replays/{id}/public","href":"/en/api-reference/get-replay"},{"title":"Get replay events","api":"GET https://api-prod.usefini.com/v2/replays/{id}/events/public","href":"/en/api-reference/get-replay-events"}]},{"group":"Test Suite","public":true,"icon":"vial","pages":[{"title":"Overview","icon":"vial","href":"/en/api-reference/test-suite"},{"title":"List criteria groups","api":"GET https://api-prod.usefini.com/v2/test-suite/criteria-groups/public","href":"/en/api-reference/list-test-suite-criteria-groups"},{"title":"Create criteria group","api":"POST https://api-prod.usefini.com/v2/test-suite/criteria-groups/public","href":"/en/api-reference/create-test-suite-criteria-group"},{"title":"Get criteria group","api":"GET https://api-prod.usefini.com/v2/test-suite/criteria-groups/{id}/public","href":"/en/api-reference/get-test-suite-criteria-group"},{"title":"Update criteria group","api":"PATCH https://api-prod.usefini.com/v2/test-suite/criteria-groups/{id}/public","href":"/en/api-reference/update-test-suite-criteria-group"},{"title":"Add cases to criteria group","api":"POST https://api-prod.usefini.com/v2/test-suite/criteria-groups/{id}/cases/public","href":"/en/api-reference/add-test-suite-group-cases"},{"title":"Remove cases from criteria group","api":"DELETE https://api-prod.usefini.com/v2/test-suite/criteria-groups/{id}/cases/public","href":"/en/api-reference/remove-test-suite-group-cases"},{"title":"Add conversations to criteria group","api":"POST https://api-prod.usefini.com/v2/test-suite/criteria-groups/{id}/conversations/public","href":"/en/api-reference/add-test-suite-group-conversations"},{"title":"Get Test Suite fields context","api":"GET https://api-prod.usefini.com/v2/test-suite/fields-context/public","href":"/en/api-reference/get-test-suite-fields-context"},{"title":"Create library criterion","api":"POST https://api-prod.usefini.com/v2/test-suite/criteria/public","href":"/en/api-reference/create-test-suite-criterion"},{"title":"Get run configuration","api":"GET https://api-prod.usefini.com/v2/test-suite/run-configuration/public","href":"/en/api-reference/get-test-suite-run-configuration"},{"title":"List Action fixtures","api":"GET https://api-prod.usefini.com/v2/test-suite/action-fixtures/public","href":"/en/api-reference/list-test-suite-action-fixtures"},{"title":"List test cases","api":"GET https://api-prod.usefini.com/v2/test-suite/cases/public","href":"/en/api-reference/list-test-suite-cases"},{"title":"Get conversation input","api":"GET https://api-prod.usefini.com/v2/test-suite/conversation-input/public","href":"/en/api-reference/get-test-suite-conversation-input"},{"title":"Create test case","api":"POST https://api-prod.usefini.com/v2/test-suite/cases/public","href":"/en/api-reference/create-test-suite-case"},{"title":"Get test case","api":"GET https://api-prod.usefini.com/v2/test-suite/cases/{id}/public","href":"/en/api-reference/get-test-suite-case"},{"title":"Update test case","api":"PATCH https://api-prod.usefini.com/v2/test-suite/cases/{id}/public","href":"/en/api-reference/update-test-suite-case"},{"title":"Delete test case","api":"DELETE https://api-prod.usefini.com/v2/test-suite/cases/{id}/public","href":"/en/api-reference/delete-test-suite-case"},{"title":"List collections","api":"GET https://api-prod.usefini.com/v2/test-suite/folders/public","href":"/en/api-reference/list-test-suite-collections"},{"title":"Create collection","api":"POST https://api-prod.usefini.com/v2/test-suite/folders/public","href":"/en/api-reference/create-test-suite-collection"},{"title":"Delete collection","api":"DELETE https://api-prod.usefini.com/v2/test-suite/folders/{id}/public","href":"/en/api-reference/delete-test-suite-collection"},{"title":"Add cases to collection","api":"POST https://api-prod.usefini.com/v2/test-suite/folders/{id}/cases/public","href":"/en/api-reference/add-test-suite-collection-cases"},{"title":"Add criteria groups to collection","api":"POST https://api-prod.usefini.com/v2/test-suite/folders/{id}/groups/public","href":"/en/api-reference/add-test-suite-collection-groups"},{"title":"Remove cases from collection","api":"DELETE https://api-prod.usefini.com/v2/test-suite/folders/{id}/cases/public","href":"/en/api-reference/remove-test-suite-collection-cases"},{"title":"Remove criteria groups from collection","api":"DELETE https://api-prod.usefini.com/v2/test-suite/folders/{id}/groups/public","href":"/en/api-reference/remove-test-suite-collection-groups"},{"title":"List runs","api":"GET https://api-prod.usefini.com/v2/test-suite/runs/public","href":"/en/api-reference/list-test-suite-runs"},{"title":"Get Test Suite summary","api":"GET https://api-prod.usefini.com/v2/test-suite/summary/public","href":"/en/api-reference/get-test-suite-summary"},{"title":"Preview run readiness","api":"POST https://api-prod.usefini.com/v2/test-suite/runs/preview/public","href":"/en/api-reference/preview-test-suite-run"},{"title":"Start run","api":"POST https://api-prod.usefini.com/v2/test-suite/runs/public","href":"/en/api-reference/start-test-suite-run"},{"title":"Get run","api":"GET https://api-prod.usefini.com/v2/test-suite/runs/{id}/public","href":"/en/api-reference/get-test-suite-run"},{"title":"Save missing Action mock","api":"POST https://api-prod.usefini.com/v2/test-suite/case-runs/{id}/action-mocks/public","href":"/en/api-reference/save-test-suite-missing-action-mock"}]},{"group":"Knowledge","public":true,"icon":"hexagon-nodes","pages":[{"group":"Sources","icon":"book-open","pages":[{"title":"Overview","icon":"book-open","href":"/en/api-reference/sources"},{"title":"List sources","api":"GET https://api-prod.usefini.com/v2/documents/public","href":"/en/api-reference/list-sources"},{"title":"Get source","api":"GET https://api-prod.usefini.com/v2/documents/public/{id}","href":"/en/api-reference/get-source"},{"title":"List provider resources","api":"GET https://api-prod.usefini.com/v2/documents/public/resources/{provider}","href":"/en/api-reference/list-provider-resources"},{"title":"Register provider resources","api":"POST https://api-prod.usefini.com/v2/documents/public/resources/{provider}","href":"/en/api-reference/register-provider-resources"},{"title":"Ingest sources","api":"POST https://api-prod.usefini.com/v2/documents/public","href":"/en/api-reference/ingest-sources"},{"title":"Crawl links","api":"POST https://api-prod.usefini.com/v2/documents/public/deep-crawl/links","href":"/en/api-reference/deep-crawl-links"},{"title":"Refresh sources","api":"POST https://api-prod.usefini.com/v2/documents/public/refresh","href":"/en/api-reference/refresh-sources"},{"title":"Delete sources","api":"DELETE https://api-prod.usefini.com/v2/documents/public","href":"/en/api-reference/delete-sources"}]},{"group":"Knowledge generation","icon":"wand-magic-sparkles","pages":[{"title":"Overview","icon":"wand-magic-sparkles","href":"/en/api-reference/knowledge"},{"title":"Initialize knowledge folders","api":"POST https://api-prod.usefini.com/v2/knowledge/public/tree/initialize","href":"/en/api-reference/initialize-knowledge-folders"},{"title":"Persist knowledge folders","api":"POST https://api-prod.usefini.com/v2/knowledge/public/tree/persist","href":"/en/api-reference/persist-knowledge-folders"},{"title":"Generate knowledge","api":"POST https://api-prod.usefini.com/v2/knowledge/public","href":"/en/api-reference/generate-knowledge"},{"title":"Bulk generate knowledge","api":"POST https://api-prod.usefini.com/v2/knowledge/public/bulk","href":"/en/api-reference/bulk-generate-knowledge"},{"title":"Check knowledge jobs","api":"POST https://api-prod.usefini.com/v2/knowledge/public/jobs/status","href":"/en/api-reference/check-knowledge-jobs"}]},{"group":"Articles","icon":"book-open","pages":[{"title":"Overview","icon":"book-open","href":"/en/api-reference/manage-knowledge"},{"title":"List articles","api":"GET https://api-prod.usefini.com/v2/hc-articles/public","href":"/en/api-reference/list-articles"},{"title":"Get articles by IDs","api":"POST https://api-prod.usefini.com/v2/hc-articles/ids/public","href":"/en/api-reference/get-articles-by-ids"},{"title":"Create article","api":"POST https://api-prod.usefini.com/v2/hc-articles/public","href":"/en/api-reference/create-article"},{"title":"Update article","api":"PUT https://api-prod.usefini.com/v2/hc-articles/{id}/public","href":"/en/api-reference/update-article"},{"title":"Create article draft","api":"POST https://api-prod.usefini.com/v2/hc-articles/{id}/draft/public","href":"/en/api-reference/create-article-draft"},{"title":"Publish article draft","api":"POST https://api-prod.usefini.com/v2/hc-articles/{id}/publish/public","href":"/en/api-reference/publish-article-draft"},{"title":"List article history","api":"GET https://api-prod.usefini.com/v2/hc-articles/{id}/history/public","href":"/en/api-reference/list-article-history"},{"title":"Get article history version","api":"POST https://api-prod.usefini.com/v2/hc-articles/{id}/history/public","href":"/en/api-reference/get-article-history-version"},{"title":"Revert article version","api":"POST https://api-prod.usefini.com/v2/hc-articles/{id}/revert/public","href":"/en/api-reference/revert-article-version"},{"title":"Delete article","api":"DELETE https://api-prod.usefini.com/v2/hc-articles/{id}/public","href":"/en/api-reference/delete-article"}]},{"group":"Folders \u0026 assignments","icon":"folder","pages":[{"title":"Overview","icon":"folder","href":"/en/api-reference/organize-knowledge"},{"title":"Get knowledge folders","api":"GET https://api-prod.usefini.com/v2/hc-folders/public","href":"/en/api-reference/get-knowledge-folders"},{"title":"Create knowledge folder","api":"POST https://api-prod.usefini.com/v2/hc-folders/public","href":"/en/api-reference/create-knowledge-folder"},{"title":"Update knowledge folder","api":"PUT https://api-prod.usefini.com/v2/hc-folders/{id}/public","href":"/en/api-reference/update-knowledge-folder"},{"title":"Move knowledge folder","api":"PUT https://api-prod.usefini.com/v2/hc-folders/{id}/move/public","href":"/en/api-reference/move-knowledge-folder"},{"title":"Move article","api":"PUT https://api-prod.usefini.com/v2/hc-articles/{id}/move/public","href":"/en/api-reference/move-article"},{"title":"Delete knowledge folder","api":"DELETE https://api-prod.usefini.com/v2/hc-folders/{id}/public","href":"/en/api-reference/delete-knowledge-folder"},{"title":"Assign knowledge to agents","api":"POST https://api-prod.usefini.com/v2/hc-bot-folder-junctions/public","href":"/en/api-reference/assign-knowledge-to-agents"}]}]},{"group":"Updates","icon":"clock-rotate-left","pages":[{"title":"Changelog","icon":"clock-rotate-left","href":"/en/changelog"}]}]},{"tab":"Use cases","pages":[{"title":"Use cases","href":"/en/use-cases/refunds"}]},{"tab":"Trust \u0026 pricing","pages":[{"title":"Trust \u0026 pricing","href":"/en/security/overview"}]}]}]},"basePath":"","title":"Overview - Fini","buildId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","deploymentId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-CK6QbnxT.js","DynamicMarkdown-BKiHAm_d.js","zoom-image-lightbox-CLQdF-Ar.js","lightbox-handle-r17bVUz3.js"]}