{"openSourceLicences":{"title":"Open-source licences","intro":"Uhrwerk.AI is built with open-source software. The components of the web app are listed below. The complete licence texts and notices are in the third-party notices file, and the full component inventory is in the CycloneDX software bill of materials (SBOM).","downloadsLabel":"Notice files","noticesLink":"Third-party notices (text)","sbomLink":"Software bill of materials (CycloneDX JSON)","serverHeading":"Server software (on-premises installations)","serverBody":"Uhrwerk.AI server images (API, Agent, Web server and Sandbox) are built to contain, in the directory /licenses/, a list of all third-party software they include (THIRD_PARTY_NOTICES.txt), a software bill of materials (sbom.cdx.json) and a written offer (WRITTEN_OFFER.md). The offer provides, for at least three years, the complete corresponding source code of every component licensed under the GPL (any version, with or without an exception), LGPL, AGPL, MPL, EPL, CDDL, EUPL or any other licence that requires the source code to be made available, including the Debian operating-system packages of the base images.","sourceRequest":"Requests:","freetypeCredit":"Credits that a licence requires, such as the FreeType Project credit, are part of the notices file.","componentsHeading":"Components of the web app","componentsScope":"The list covers the production dependencies of the web app and the build tools bundled into it. It may include packages that run only on the server.","filterLabel":"Filter components","filterPlaceholder":"Search by name or licence","resultCount":"{shown} of {total} components","resultCountOne":"{shown} of 1 component","loading":"Loading components…","notGenerated":"Notices are generated during the production build.","loadFailed":"The component list could not be loaded.","retry":"Try again","empty":"No components match this filter.","columnName":"Component","columnVersion":"Version","columnLicence":"Licence","columnHomepage":"Homepage","homepageLink":"Homepage of {name} (opens in a new tab)","backToApp":"Back to the app"},"processPermissions":{"sections":"Access settings sections","taskInformation":"Information visible to this team","previewLimited":"This shows task or requester access only. A person with broader process permissions may see more.","dataAccessShortcut":"Looking for submission fields or who can see information? Configure requester and team access in People & access.","draftSaved":"Draft saved","draftUnsaved":"Draft changes not saved","saveDraft":"Save draft","editData":"Add or manage fields in Case information","disclosureBoundary":"These selections describe task and requester access. People with access to all cases can see more. Saving updates the draft; publication applies it to new cases. Existing cases keep their version unless migrated.","teamAccessHint":"Members of this group handle this step. They receive the information selected below for their task and its completed history, without needing access to every case.","stepSummary":"Visible values: {fields} · With source documents: {documents}","requesterSummary":"Form fields: {inputs} · Result fields: {results} · With source documents: {documents}","requesterHint":"They can follow their own case and see what they submitted. Choose the form fields first, then any additional results they should receive.","appliesOnPublish":"Applies after publication","informationHint":"Open the requester or a step below. Set the submission form, assign a responsible team, and choose the values and original documents they may see.","informationTitle":"Who sees which information?","sharingSaved":"Access settings saved","sharingUnsaved":"Access changes not saved","discard":"Discard access changes","legacyStartHint":"Responsible teams from the published process may still start cases. The audience selected above is additional. Remove this existing rule only if starting should depend on the audience above alone.","legacySummary":"Plus responsible teams under the existing start rule","unknownGroup":"Unavailable group ({id})","casesInherited":"Also includes people granted both Edit and Start.","readInherited":"Also includes people allowed to edit or start cases.","publishingAccess":"Publishing & live tests:","alwaysFullAccess":"Always full access:","appliesImmediately":"Applies when saved","actionHint":"Choose an action to set who can use it. Responsible teams are assigned below.","actionTitle":"Who can do what?","selectedTeams":"Selected groups","creatorOnly":"Creator & admins only","taskTextShared":"Task instructions and choice labels are visible to this team.","taskTextPrivate":"Task instructions and choice labels are hidden from this team.","viewDefinitionHint":"View steps, teams and shared information","interactionText":"Share task instructions and choice labels","interactionTextHint":"The responsible team can see task instructions and answer choices. These texts may contain workflow values. Review them before publishing.","taskTextHidden":"The answer choices have not been shared with your team. Ask a process editor to enable task text sharing for this step.","accessRefreshing":"Refreshing access. You will be taken to an available view.","accessUnavailable":"This process is no longer available to you. Previously displayed data has been closed.","viewDefinition":"View process","noSubmissions":"You have not submitted any cases in this process yet.","boundedRunHint":"Only the run status and information shared with this task are shown. Task results appear in the case history.","title":"People & access","privateHint":"Only the creator and workspace administrators.","ownerHint":"The creator and workspace admins. Only they can change these permissions and hold, cancel or undo cases.","readonly":"You can view sharing. Only the creator and workspace administrators can change it.","read":"View the process","readHint":"See how the process is built, without access to case data.","write":"Edit the process","writeHint":"Edit and validate the definition. This also allows viewing the process.","execute":"Start cases","executeHint":"Submit a case through the published entry point. This also allows viewing the process.","readCases":"View all cases","readCasesHint":"See all cases. This does not permit editing the process or answering another team’s tasks.","inherited":"Anyone granted both Edit and Start can also publish, run live tests and view all cases. Documents and linked workflows keep their own access checks.","retireLegacy":"Remove the existing team start rule","saved":"Access saved.","reload":"Reload current access","preview":"Check a perspective","perspective":"Perspective","requester":"People submitting a case","synthetic":"Synthetic preview using your draft’s field selections. No real case data or impersonation.","sampleValue":"Example value","documentAllowed":"Source document allowed","noFields":"Only basic case status is visible. No fields or documents are shared.","publishSummary":"Audience and information sharing","taskSummary":"{count} steps share selected fields with their responsible team.","visibleFields":"Information this team can see","visibleHint":"These fields are visible for this task and remain in its completed history.","documentFields":"Source documents this team can open","documentHint":"Select only documents the team needs. Sharing an extracted value does not share its source document.","inputFields":"Fields on the submission form","inputHint":"Requesters can submit only these fields.","resultFields":"Results visible to the requester","resultHint":"Additional fields the requester can see after submission.","requesterDocuments":"Source documents visible to the requester","myCases":"My cases","myCasesHint":"Your submissions and their status","accessChanged":"Your access has changed. Open the process again to see what is available."},"indexDestination":{"indexedFor":"Indexed for: {audience}","audienceWorkspace":"Everyone in the workspace","audienceOnlyYou":"Only you","audienceOnlyOwner":"Only {owner}","audienceGroupUnknown":"A workspace group","ownerFallback":"the connection owner","reasonShared":"This connection is shared.","reasonSharedMailbox":"Shared mailbox of {owner}.","reasonPrivateConnection":"This connection is not shared.","reasonAlwaysPrivate":"This connector always indexes privately.","reasonWorkspaceDefault":"Workspace default.","reasonYourPrimaryGroup":"Your primary group (workspace default).","reasonOwnerPrimaryGroup":"{owner}'s primary group (workspace default).","reasonPrimaryGroupMissing":"The workspace default is the primary group, but no primary group is set.","existingRealigned":"Already indexed items are updated to match.","existingPreserved":"Already indexed items keep their current audience.","loading":"Checking where indexed items go…"},"visibilityWarning":{"label":"Warning:","fileDefaultOrgOnly":"Everyone in this workspace can read items created this way.","fileDefaultPrimaryGroup":"Members of the responsible person's primary group can read items created this way.","emailIngestionPrivate":"Only you can read the emails and attachments ingested from this mailbox.","emailIngestionOrgOnly":"Everyone in this workspace can read the emails and attachments ingested from this mailbox.","emailIngestionPrivateNoPrimaryGroup":"Only you can read the emails and attachments ingested from this mailbox: the workspace shares them with your primary group, and you have none.","emailIngestionGroup":"Members of {group}, your primary group, can read the emails and attachments ingested from this mailbox.","emailIngestionUnknown":"Workspace admins choose who can read ingested emails and attachments. They may be readable by your whole workspace or your primary group.","knowledgeItemOrgOnly":"Everyone in this workspace can find and read this item.","knowledgeItemGroup":"Members of the selected groups can find and read this item."},"workflowFiles":{"loading":"Loading file…","unavailable":"File unavailable","deleted":"This file is no longer available.","pending":"Preparing preview…","previewFailed":"Preview unavailable. You can still download the file.","noPreview":"No preview is available for this file type.","download":"Download {filename}","expand":"Expand preview of {filename}","open":"Preview {filename}","close":"Close preview","retry":"Try again","zoomIn":"Zoom in","zoomOut":"Zoom out","resetZoom":"Reset zoom","pages":"{count} pages","pageNumber":"Page number","previousPage":"Previous page","nextPage":"Next page","showFields":"Show field labels","fieldsOnPage":"Fields on this page","sourceHighlight":"Source of {field}","page":"{filename}, page {page}","actionFailed":"Could not open the file. Try again."},"appChat":{"offset":"Row offset","pageSize":"Page size","filters":"Filters","sort":"Sort","hiddenYears":"Hidden overlay years","run":"Run","from":"From","to":"To","pools":"Pools","ask":"Ask AI","context":"App context","remove":"Remove context","waitForView":"Wait for the current view to finish loading.","captureFailed":"This view could not be attached. Reduce the selection and try again.","unknown":"Unknown","captured":"Captured","readAt":"Read at","sourceAsOf":"Source as of","dataset":"Dataset","datasets":"Datasets","knowledgeItem":"Knowledge Item","knowledgeItems":"Knowledge Items","visibleExcerpt":"Visible excerpt","visibleRows":"Visible rows","excerptHelp":"This is a captured excerpt, not the full dataset. Chat can use authorized tools to read more or check current data.","truncated":"Some rows or text are omitted. This excerpt may be incomplete.","stale":"This capture has expired. Return to the app to capture the current view, or remove the context.","unavailable":"This app context is unavailable or belongs to another workspace. Remove it or capture the view again.","returnToApp":"Return to app"},"datasetPermissions":{"title":"People & access","owner":"Owner","alwaysAdmitted":"The owner and current workspace owners and administrators always have full access and can change these settings.","read":"Who can view","write":"Who can change","effective":"Effective view access:","processOwned":"Access follows the process that owns this dataset.","private":"Private","privateDescription":"Only the dataset owner and workspace administrators.","workspace":"Whole workspace","workspaceDescription":"All current members of this workspace.","groups":"Groups","groupsDescription":"Members of the selected groups.","label":"Audience","selectedGroups":"Selected groups","noGroups":"No groups available.","groupRequired":"Select at least one group (maximum 100).","save":"Save access","saving":"Saving access…","failed":"Access could not be saved. Your selections are preserved.","conflict":"Access changed elsewhere. Review the current settings and make your selections again.","loading":"Loading access…","loadFailed":"Access settings could not be loaded.","retry":"Retry","saved":"Access saved.","readonly":"You can view these settings. Only the owner or a workspace administrator can change them."},"workflowPermissions":{"title":"Permissions","read":"Read","write":"Write","execute":"Execute","owner":"The workflow owner and current workspace owners and administrators always have full access and can manage permissions.","inherited":"Read includes everyone granted Write or Execute. The direct Read selection stays independent.","effective":"Effective Read:","private":"Private","privateDescription":"Only the workflow owner and workspace administrators.","workspace":"Whole workspace","workspaceDescription":"All current members of this workspace.","groups":"Groups","groupsDescription":"Members of the selected groups.","label":"Audience","selectedGroups":"Selected groups","noGroups":"No groups available.","groupRequired":"Select at least one group (maximum 100).","save":"Save permissions","saving":"Saving permissions…","failed":"Permissions could not be saved. Your selections are preserved.","conflict":"Permissions changed elsewhere. Review the current policy and make your selections again.","loading":"Loading permissions…","loadFailed":"Permissions could not be loaded.","retry":"Retry","saved":"Permissions saved.","readonly":"You can view these permissions. Only the workflow owner or a workspace administrator can change them."},"emailPreferences":{"eyebrow":"Inbox reminders","title":"Email preferences","description":"Choose whether this workspace sends you a scheduled Inbox digest.","loadingAria":"Loading email preferences","workspaceLabel":"Sending workspace","controlLabel":"Inbox digest reminders","controlDescription":"Receive scheduled email reminders when this workspace has new Inbox notifications.","essentialUnaffected":"Essential account, security, invitation, and billing emails are not affected.","deliveryPausedTitle":"Email delivery is paused","deliveryPaused":"Email delivery is paused because of a delivery problem or complaint. The pause may be temporary. Turning reminders on will not clear it.","saving":"Saving your preference…","saved":"Preference saved.","saveFailed":"Your preference could not be saved. Try again.","loadFailed":"This link could not be opened. Try again, or manage notifications after signing in.","unavailable":"This link is invalid, expired, or unavailable.","retry":"Try again","settingsLink":"Open notification settings"},"apps":{"configured":{"element":{"formulaError":"This element could not be shown because its formula failed ({code}).","renderError":"This element could not be shown."},"data":{"loading":"Loading data…","invalid":"This element's data no longer matches its dataset: the field \"{field}\" is missing or has changed.","invalidUnknown":"This element's data no longer matches its dataset.","denied":"You do not have access to this data.","failed":"The data could not be loaded.","empty":"No data yet.","truncated":"Showing the first {count} rows"},"input":{"required":"This field is required.","invalid":"Check this value."},"action":{"failed":"The action could not be run.","forbidden":"You cannot run this action."},"confirm":{"title":"Confirm the changes","description":"This action makes the following changes.","confirm":"Confirm","cancel":"Cancel","pending":"Working…","insert":"Add rows to {dataset}","upsert":"Add or update rows in {dataset}","workflow":"Run the workflow {workflow}","other":"Step {step}","grantAccess":"With the access this app was granted","viewerAccess":"With your access","moreRows":"+{count} more rows","matchOn":"Matched on: {columns}","noInputs":"No inputs","empty":"empty","invalid":"The confirmation expired or something changed. Run the action again.","partial":"{message} Earlier steps may already have been applied."},"run":{"notStarted":"Not run yet.","loadFailed":"The run status could not be loaded.","running":"Running","waiting":"Waiting for an answer","succeeded":"Finished","failed":"Failed","canceled":"Canceled","cancel":"Cancel run","noFiles":"No files yet.","answerElsewhere":"Answer this request on the workflow's Runs page.","approve":"Approve","reject":"Reject","submit":"Submit","answerFailed":"The answer could not be sent."},"result":{"copy":"Copy","copied":"Copied"},"stat":{"up":"Up","down":"Down","flat":"No change"},"table":{"empty":"No rows to show","range":"{from}–{to} of {total}","previous":"Previous page","next":"Next page","open":"Open {name}"},"chart":{"loadFailed":"The chart could not be loaded.","retry":"Try again","label":"Chart: {series}"},"page":{"loading":"Loading the app…","unavailableTitle":"Configured apps are not available","unavailable":"Configured apps are not switched on for this workspace.","deniedTitle":"No access","denied":"This app does not exist or you do not have access to it.","disabledTitle":"App switched off","disabled":"A manager switched this app off.","notPublishedTitle":"Not published yet","notPublished":"This app has no published version yet.","loadFailed":"The app could not be loaded.","retry":"Try again","browse":"Browse apps","draftNotice":"You are viewing the draft. Viewers see the published version.","screens":"Screens"},"manage":{"open":"Manage","title":"Manage app","description":"Versions, availability, sharing and data access of this app."},"versions":{"title":"Versions","version":"Version {version}","published":"Published {date}","restoredFrom":"Restored from version {version}","current":"Current","restore":"Restore","restored":"Version {version} is now published.","restoreFailed":"The version could not be restored.","empty":"No published versions yet.","loadFailed":"The versions could not be loaded."},"status":{"title":"Availability","enabled":"App switched on","description":"When the app is switched off, nobody can open or run it.","failed":"The status could not be changed."},"sharing":{"title":"Sharing","description":"Who may use, edit and manage this app. Editing includes using; managing covers publishing, sharing and data access.","use":"Use","edit":"Edit","manage":"Manage","save":"Save sharing","saving":"Saving…","saved":"Sharing saved.","failed":"Sharing could not be saved.","conflict":"Someone else changed the sharing. Reload the latest settings and try again.","reload":"Reload","loadFailed":"The sharing settings could not be loaded.","private":"Only managers","privateDescription":"Only the people who manage this app.","workspace":"Workspace","workspaceDescription":"Every member of this workspace.","groups":"Groups","groupsDescription":"Members of the selected groups.","label":"Audience","selectedGroups":"Selected groups","noGroups":"No groups yet.","groupRequired":"Choose at least one group."},"access":{"title":"Screen and action access"},"grants":{"title":"Data access","description":"Let the app read or write a dataset on behalf of its users. You can grant only access you hold yourself.","dataset":"Dataset","permission":"Access","read":"Read","write":"Write","add":"Grant access","adding":"Granting…","revoke":"Revoke","revokeGrant":"Revoke {permission} access to {dataset}","empty":"This app has no data access yet.","noDatasets":"No datasets you can read.","unknownDataset":"Dataset {id}","failed":"The data access could not be changed.","loadFailed":"The data access could not be loaded."},"admin":{"name":"Configured apps","description":"Apps that members build in Uhrwerk.AI from screens, data views and actions."},"settings":{"title":"Configured apps","description":"Switch the apps you manage on or off.","empty":"No configured apps you can edit.","enable":"Switch {name} on","open":"Open {name}","failed":"The app could not be switched.","loadFailed":"The configured apps could not be loaded."}},"admin":{"title":"Enabled apps","description":"Choose which apps this organisation can use. Each app also requires access to its underlying capabilities and data.","custom":"App availability is managed directly for this organisation.","package":"App availability follows the assigned package and explicit exceptions.","capabilityMissing":"Needs {features}, switched on in the Features tab. Enabling the app does not switch it on.","loadFailed":"App settings could not be loaded.","saveFailed":"The app setting could not be saved. The current settings have been refreshed.","retry":"Try again","loading":"Loading app settings…","archived":"Archived organisations cannot be changed."},"access":{"title":"View access","description":"Choose who can open each view. Views only control what the app shows; the data stays protected by its datasets' own access.","default":"Default","defaultHint":"Not changed from the app's built-in setting.","cancel":"Cancel","summaryView":"{count} view","summaryViews":"{count} views","summaryGroups":"{count} for groups","summaryAdmins":"{count} administrators only","summaryWorkspace":"all open to the whole workspace","private":"Administrators only","privateDescription":"Only workspace owners and administrators.","workspace":"Whole workspace","workspaceDescription":"All current members of this workspace.","groups":"Groups","groupsDescription":"Members of the selected groups.","label":"Audience","selectedGroups":"Selected groups","noGroups":"No groups available.","groupRequired":"Select at least one group (maximum 100).","save":"Save","saving":"Saving…","saved":"Access saved.","failed":"Access could not be saved. Your selections are preserved.","conflict":"Access changed elsewhere. Review the current settings and make your selections again.","loading":"Loading view access…","loadFailed":"View access could not be loaded.","retry":"Retry"},"historyAction":"History","historyDescription":"Reopen saved work in this workspace.","closeHistory":"Close history","dropHint":"Drop a file here or choose one.","oneFileOnly":"Choose one file at a time.","research":{"new":"New research","showExcerpt":"Show excerpt","exampleQuestion":"What are practical ways to reduce energy use in an office?","more":"Load older research","noAnswer":"No answer was completed. You can run this research again.","name":"Research","description":"A question or a public URL. An answer with sources.","mode":"Research input","question":"Question","url":"Public URL","questionLabel":"Your question","urlLabel":"Page URL","questionPlaceholder":"What would you like to find out?","urlPlaceholder":"https://…","scope":"Ordinary web research using the sources available to this workspace.","submit":"Research","working":"Researching…","loading":"Loading research…","loadFailed":"Research could not be loaded.","submitFailed":"Research could not be started. Try again to safely recover the request.","invalidUrl":"Enter a public HTTPS URL without credentials.","invalidQuestion":"Enter a question of up to 4,000 characters.","background":"Research continues in the background. You can reopen this result from your history.","stop":"Stop research","stopFailed":"Research could not be stopped. Please try again.","failed":"Research failed. The source or research service may be unavailable.","answer":"Answer","sources":"Sources","noSources":"No readable sources were retrieved.","copy":"Copy answer","copied":"Copied","copyFailed":"The answer could not be copied. You can download it instead.","download":"Download Markdown","empty":"Ask a focused question or read a specific page to begin.","history":"Recent research","emptyHistory":"Your research will appear here."},"emailDrafter":{"name":"Email Drafter","description":"Replies, outreach and follow-ups that follow your saved rules.","new":"New email","history":"Recent drafts","loading":"Loading…","noHistory":"Your drafts will appear here.","loadMore":"Load older drafts","historyLoadError":"Older drafts could not be loaded. Try again.","retry":"Retry","refreshStatus":"Refresh status","statusUnavailable":"The draft status could not be loaded. Refresh to check the result.","compose":"Compose email","scenario":"Type of email","groups":{"general":"General","sales":"Sales","recruiting":"Recruiting","service":"Service"},"scenarios":{"reply":"Reply to an email","new":"New email","follow_up":"Follow-up","meeting_request":"Meeting request","thank_you":"Thank you","introduction":"Introduction","status_update":"Status update","cold_outreach":"Cold outreach","demo_follow_up":"Demo follow-up","quote_follow_up":"Quote follow-up","re_engagement":"Re-engage a contact","candidate_outreach":"Candidate outreach","interview_invitation":"Interview invitation","candidate_rejection":"Candidate rejection","offer_email":"Job offer","complaint_response":"Response to a complaint"},"incomingProminent":"Email you are replying to","incomingOptional":"Add the original email (optional)","incomingEmail":"Original email","incomingPlaceholder":"Paste the email you received…","instructions":"What should the email say?","instructionsPlaceholder":"Key points, facts and the outcome you want, for example: confirm Thursday, 10:00, ask for the signed contract…","recipient":"Recipient (optional)","recipientName":"Name","recipientRole":"Role","recipientCompany":"Company","tone":"Tone","tones":{"professional":"Professional","friendly":"Friendly","formal":"Formal","direct":"Direct","persuasive":"Persuasive","empathetic":"Empathetic"},"length":"Length","lengths":{"short":"Short","medium":"Medium","long":"Long"},"language":"Language","sameAsInput":"Same as input","addressForm":"Form of address","addressForms":{"auto":"Automatic","formal":"Formal (Sie)","informal":"Informal (Du)"},"variants":"Number of drafts","variantOne":"1 draft","variantMany":"{count} drafts","rulesTitle":"Your writing rules","manageRules":"Manage rules","manageRulesItem":"Manage rules…","ruleSet":"Rule set","noRules":"No rules","ruleSetsUnavailable":"Saving rule sets is not available right now. You can still add rules for this email below.","ruleSetsError":"Your rule sets could not be loaded.","rulesForEmail":"Rules and signature for this email","rulesCopiedFrom":"Copied from","rulesCopiedHint":"Changes here apply to this email only.","rulesOneOffHint":"These rules apply to this email only. Save them as a rule set to reuse them.","rulesLabel":"Rules","rulesPlaceholder":"For example: Never use exclamation marks. Always propose two time slots.","signatureLabel":"Signature","signaturePlaceholder":"Sign-off and signature, added exactly as written","invalid":"Add what the email should say or paste the email you are replying to.","failed":"The draft could not be completed. Your input is retained. Retry, or check your workspace access.","endedWithoutResult":"This draft ended without a result. Your input is retained.","needsInput":"Describe the email or paste the one you are replying to.","draft":"Draft email","stop":"Stop","result":"Drafts","processing":"Drafting…","background":"Once submitted, you can leave and reopen this draft from history.","empty":"Your drafts appear here","emptyHint":"Choose the type of email, add your key points, and draft. Refine any result until it fits.","draftN":"Draft","draftSingle":"Draft","earlierDrafts":"Earlier drafts","subject":"Subject","copied":"Copied","copyEmail":"Copy email","copyBody":"Copy body","openInMail":"Open in email app","refine":"Refine","mailtoTruncated":"Long drafts are shortened in the email app link. Use Copy for the full text.","copyError":"The text could not be copied. Select it and copy manually.","refineChips":{"shorter":"Shorter","moreFormal":"More formal","friendlier":"Friendlier","morePersuasive":"More persuasive","callToAction":"Add a clear call to action","grammar":"Fix grammar only"},"refineInput":"Describe a change","refinePlaceholder":"Or describe your own change…","applyRefine":"Refine","close":"Close","manageTitle":"Rule sets","manageDescription":"Save your writing rules, signature and defaults once and reuse them for every email.","newRuleSet":"New rule set","editRuleSet":"Edit rule set","duplicateRuleSet":"Duplicate rule set","deleteRuleSet":"Delete rule set","ruleSetName":"Name","nameRequired":"Enter a name.","nameTaken":"A rule set with this name already exists.","defaultsHint":"Defaults are applied to the form when you choose this rule set.","keepCurrent":"Keep current","ruleSetSaveError":"The rule set could not be saved. Please try again.","saveRuleSet":"Save rule set","cancel":"Cancel","startersTitle":"Start from an example","startersHint":"Examples are only suggestions. Nothing is saved until you save it.","starters":{"general":{"name":"General business","rules":"Be clear and polite. Lead with the main point. Use short paragraphs. Never use exclamation marks.","signature":"Kind regards"},"sales":{"name":"Sales","rules":"Keep it short and personal. Open with something relevant to the recipient. End with one clear next step and offer two time slots. No pressure, no buzzwords.","signature":"Best regards"},"recruiting":{"name":"Recruiting","rules":"Be warm, respectful and transparent. Mention the role and the next step. Never give reasons that could be discriminatory. Answer within a clear time frame.","signature":"Kind regards"}},"savedRuleSets":"Your rule sets","noRuleSets":"You have no saved rule sets yet.","copySuffix":"copy","deleteTitle":"Delete this rule set?","deleteDescription":"Emails already drafted are not affected.","deleteConfirm":"Delete"},"documentGenerator":{"name":"Document Generator","description":"New documents, or Word files filled, revised or reused.","history":"Recent documents","loading":"Loading…","retry":"Try again","noHistory":"Your documents will appear here.","historyLoadError":"Older documents could not be loaded. Try again.","loadMore":"Load older documents","new":"New document","setup":"Document","mode":"What would you like to do?","modeCreate":"New document","modeFill":"Fill a template","modeRevise":"Revise a document","modeReuse":"Reuse a layout","help_create":"Describe the document and get a finished Word or PDF file.","help_fill":"Upload a Word template and the empty fields and placeholders are filled in for you.","help_revise":"Upload a Word document and change its wording while the formatting stays as it is.","help_reuse":"Turn last month's offer into a new one with the same look.","documentType":"Document type","type_offer":"Offer","type_letter":"Letter","type_report":"Report","type_proposal":"Proposal","type_meeting_minutes":"Meeting minutes","type_job_description":"Job description","type_job_reference":"Job reference","type_contract_draft":"Contract draft","type_cover_letter":"Cover letter","type_one_pager":"One-pager","type_press_release":"Press release","type_process_description":"Process description","type_other":"Other","instructions_create":"What should the document contain?","instructions_fill":"Which information should be filled in?","instructions_revise":"What should change?","instructions_reuse":"What is the new document about?","placeholder_offer":"Customer, products or services, quantities and prices, delivery time, validity of the offer…","placeholder_letter":"Recipient, subject, the key message and what you expect in return…","placeholder_report":"Topic, period, key findings, figures and the conclusions to draw…","placeholder_proposal":"Client, the problem to solve, your approach, schedule and budget…","placeholder_meeting_minutes":"Date, attendees, topics discussed, decisions and open tasks with owners…","placeholder_job_description":"Position, team, responsibilities, requirements and what you offer…","placeholder_job_reference":"Name, position, period of employment, tasks, performance and conduct…","placeholder_contract_draft":"Parties, subject of the contract, term, remuneration and special terms…","placeholder_cover_letter":"Position and company, your relevant experience and why you are a fit…","placeholder_one_pager":"Topic, audience, three key points and a call to action…","placeholder_press_release":"Announcement, who is involved, date, quotes and contact for enquiries…","placeholder_process_description":"Process name, purpose, steps in order, roles and tools involved…","placeholder_other":"Describe what the document should contain…","placeholder_fill":"For example: customer name, address, date and the amounts to enter…","placeholder_revise":"For example: replace the old product name, shorten the introduction, update the date…","placeholder_reuse":"For example: the same offer for a new customer, with these items and prices…","chooseTemplate":"Choose Word document","templateHint":"Word documents (.docx) up to 10 MB.","retained":"This Word document is kept from your last run. Choose another to replace it.","formatError":"Only Word documents (.docx) are supported.","sizeError":"This file is larger than 10 MB.","templateRequired":"Choose a Word document to continue.","sourceMaterial":"Source material (optional)","sourceHint":"Paste notes, an email thread or a transcript the document should draw on.","docTitle":"Title (optional)","titlePlaceholder":"Leave empty to let the title follow the content","language":"Language","languageAuto":"Detect automatically","tone":"Tone","length":"Length","outputFormat":"File format","tone_professional":"Professional","tone_friendly":"Friendly","tone_formal":"Formal","tone_direct":"Direct","tone_persuasive":"Persuasive","tone_empathetic":"Empathetic","length_short":"Short","length_medium":"Medium","length_long":"Long","format_docx":"Word","format_pdf":"PDF","format_both":"Both","styleRules":"Style rules","styleNone":"No saved style rules","manageStyles":"Manage","styleRulesInline":"Style rules for this document","styleRulesExample":"For example: Company: ACME GmbH. Always formal address. DIN 5008 letter structure. Currency EUR.","stylesUnavailable":"Saving style rules is not available here, so they apply to this document only.","stylesTitle":"Style rules","stylesDescription":"Saved house rules you can apply to any document. They are private to you.","styleName":"Name","styleNamePlaceholder":"For example: Company letters","addStyle":"New style rules","noStyles":"No style rules saved yet.","edit":"Edit","delete":"Delete","save":"Save","cancel":"Cancel","styleSaveError":"The style rules could not be saved. Try again.","generate":"Create document","stop":"Stop","processing":"Preparing your document…","uploading":"Uploading","background":"This can take a moment. You can stop it at any time.","failed":"The document could not be created. Check your input and try again.","endedWithoutResult":"The run ended without a document. Try again with more detail.","statusUnavailable":"The status of this run is unavailable right now.","refreshStatus":"Refresh status","result":"Result","empty":"Your document will appear here","emptyHint":"Choose what to create, add your details and start.","download":"Download","downloadError":"The files could not be downloaded. Try again.","reloadDownloads":"Reload files","useAsTemplate":"Use as template","startNew":"Start new"},"translator":{"formatDetails":"Document formatting","fixGlossary":"Check incomplete or duplicate terms","loadMore":"Load older translations","historyLoadError":"Older translations could not be loaded. Try again.","refreshStatus":"Refresh status","statusUnavailable":"Translation status could not be loaded. Refresh to check the result.","reloadDownloads":"Reload downloads","endedWithoutResult":"This translation ended without a result. Your input is retained.","name":"Translator","description":"Text, documents and terminology — ready to share onward.","new":"New translation","sourceLanguage":"Source language","targetLanguage":"Target language","detect":"Detect automatically","source":"Original","text":"Text","document":"Document","sourceText":"Source text","placeholder":"Paste the text you want to translate…","characters":"characters","chooseDocument":"Choose document","formats":"TXT, Markdown (.md) and DOCX · up to 5 MiB and 120,000 characters · UTF-8 text files.","structure":"Documents download in their original format. DOCX keeps paragraph and table structure; translated paragraphs use their first text style. Pagination and inline formatting can change. Text in images is not translated. Font-specific symbols, equations, embedded chart text, tracked deletions and embedded documents are rejected. PDF is not supported.","reselect":"The saved document will be reused. Choose another file to replace it.","result":"Translation","translatedText":"Translated text","uploading":"Uploading","processing":"Translating…","background":"All text is processed. Once submitted, you can leave and reopen this translation from history.","empty":"Ready for another language","emptyHint":"Add text or a document, choose your language, and translate.","glossary":"Your terminology","glossaryHint":"Up to 100 exact, case-sensitive terms. Longer matches take priority. Each source term must be unique.","addTerm":"Add term","sourceTerm":"Source term","targetTerm":"Target term","removeTerm":"Remove term","formatError":"Choose a TXT, Markdown (.md) or DOCX file. PDF is not supported.","sizeError":"Choose a document no larger than 5 MiB.","copyError":"The text could not be copied. Select it in the result and copy manually.","downloadError":"The download could not be prepared. Please try again.","failed":"Translation could not be completed. Your input is retained. Retry, or check the document format and workspace access.","retry":"Retry","translate":"Translate","stop":"Stop","copy":"Copy text","copied":"Copied","download":"Download","history":"Recent translations","loading":"Loading translations…","noHistory":"Your completed and running translations will appear here."},"imageGenerator":{"examplePrompt":"A simple illustration for a team workshop","tryExample":"Try a description","stop":"Stop generation","stopFailed":"Could not stop this generation. Please try again.","more":"Load older images","name":"Image Generator","description":"Describe an image, add a reference, and explore your variations.","new":"New image","prompt":"Description","placeholder":"A quiet lakeside cabin at sunrise, soft watercolor textures…","reference":"Reference image (optional)","referenceHint":"PNG, JPEG or WebP · up to 50 MB. The reference is used when editing the image.","savedReference":"Saved reference image","removeReference":"Remove reference","invalidFile":"Choose a PNG, JPEG or WebP image up to 50 MB.","generate":"Generate image","retrySubmission":"Retry submission","submitFailed":"The request could not be confirmed. Retry to check the same submission.","personal":"Your history and images are private to you in this workspace.","history":"History","loading":"Loading…","loadFailed":"Could not load your images.","noHistory":"Your image sessions will appear here.","results":"Images and variations","working":"Generating your image. You can return to this app later.","generationFailed":"This generation failed. Earlier images remain available. Reuse the input to try again.","emptyTitle":"Your next image starts here","emptyDescription":"Describe what you have in mind. Each generation creates one image and keeps it in your history.","reuse":"Reuse input","variationHint":"Generate again to create another variation.","preview":"Preview image","download":"Download","fileFailed":"This image could not be opened."},"meetings":{"billingDenied":"Processing is paused by the workspace billing limit. Try again after the limit is resolved.","previous":"Previous meetings","next":"Next meetings","uploadIncomplete":"The upload was not completed. Return to New meeting to upload your file.","name":"Meetings","description":"Audio, video or a live recording — your transcript and summary in one place.","record":"Record a meeting","recording":"Recording","requesting":"Waiting for microphone permission…","results":"Meeting results","stop":"Stop recording","cancel":"Cancel recording","recordHint":"Microphone only · up to 60 minutes. Upload before leaving this page to save your recording.","permission":"Allow microphone access in your browser, then try again.","microphoneError":"The microphone could not be opened. Check the selected input device and browser permissions.","unsupported":"Microphone recording requires a supported browser and a secure connection.","tooShort":"Record at least one second before stopping.","tooLarge":"This recording is too large. Please use a shorter recording.","newMeeting":"New meeting","upload":"Choose audio or video","start":"Create transcript and summary","limits":"MP3, M4A, WAV, OGG, WebM, MP4 and MOV. Up to 75 MiB on cloud storage; 25 MiB on other storage. Long media is processed in parts within the server’s configured limits.","selected":"Selected file","remove":"Remove file","recent":"Recent meetings","empty":"Your saved meetings will appear here.","transcript":"Transcript","summary":"Summary","copy":"Copy","copied":"Copied","download":"Download","copyFailed":"Could not copy. Use Download instead.","retry":"Try again","loading":"Loading meeting…","uploading":"Uploading: {progress}%","processing":"Processing your meeting…","saved":"The upload is saved. Processing continues if you leave this page.","failed":"This meeting could not be processed.","loadFailed":"Meetings could not be loaded. Please try again.","invalidFile":"Choose a supported audio or video file within the upload limit.","noSpeech":"No transcript was produced. Check that the recording contains audible speech.","summaryUnavailable":"A summary could not be created. Your transcript is still available.","status":{"pending":"Queued","processing":"Processing","processed":"Ready","failed":"Failed"},"stage":{"downloading":"Preparing media","probing":"Checking media","compressing":"Preparing audio","transcribing":"Transcribing","summarizing":"Summarizing"},"parts":"Part {current} of {total}"},"fleetKpi":{"name":"Fleet KPI","description":"Monthly fleet and pool evaluation from the analysis datasets.","intro":"Every figure comes from the invoice lines of one analysis run. Each invoice line is matched through its plate to a vehicle and that vehicle’s pool. Start at a company’s total and open it up step by step – by pool, customer, article or vehicle – down to the single invoice lines.","loading":"Loading fleet data…","states":{"deniedTitle":"No access to the fleet datasets","denied":"The datasets could not be read with your current access. Ask a workspace owner or admin, then retry.","failedTitle":"Fleet data could not be loaded","failed":"The request failed, so no figures are shown. Please retry.","notConfiguredTitle":"Fleet datasets are not set up","notConfigured":"These datasets are missing in this workspace. Create them; the analysis team then pushes the run.","notConfiguredMember":"These datasets are missing in this workspace. A workspace owner or admin can create them.","provisioningTitle":"Datasets are being prepared","provisioning":"The following datasets are still being provisioned. This view refreshes automatically.","failedDatasetsTitle":"Some fleet datasets are unusable","failedDatasets":"These datasets reported an error or are being removed. Contact a workspace owner or admin; the app cannot repair them.","noRunTitle":"No run loaded yet","noRun":"The datasets exist but contain no analysis run yet. The evaluation appears here once a run has been pushed.","emptyTitle":"Nothing for this filter","empty":"The run has no invoice lines for the selected company, months and pools.","chartUnavailable":"The chart could not be rendered."},"setup":{"action":"Create datasets","done":"Fleet datasets created. They are being provisioned.","failed":"Creating the fleet datasets failed. Already created datasets are kept."},"run":{"label":"Analysis run","id":"Run","rules":"Rule set version","dataUntil":"Data until","createdAt":"Run produced","note":"As of the analysis run, not the time you opened the page"},"filters":{"company":"Company","gesamt":"Combined","months":"Months","poolsAll":"All pools","poolsSelected":"{count} pools","reset":"Reset filters"},"tabs":{"pools":"Pools","residual":"Excluded from evaluation","explorer":"Explorer","history":"History"},"views":{"pools":"Pools","residual":"Excluded from evaluation","explorer":"Explorer","history":"History"},"noViewsTitle":"No views available","noViews":"You don't have access to any Fleet KPI views.","frame":{"pools":"Revenue of the company's own fleet — the vehicles it owns.","residual":"Revenue the company invoiced – whoever’s vehicle did the work."},"export":"Export to Excel","exportMore":"More export formats","exportCsv":"Export as CSV","exportTruncated":"Export stopped at {limit} of {total} invoice lines. Narrow the period for a complete export.","exportFailed":"The export failed. Retry, or narrow the filter.","tiles":{"revenue":"Revenue","vehicleDays":"Vehicle-days","utilisation":"Utilisation","revenuePerVehicleWorkday":"Revenue per vehicle-workday","assignmentRate":"Assignment rate","assignmentTarget":"Target > 98 %"},"chart":{"title":"Trend per pool","summary":"Monthly {metric} per pool for the selected filter","metric":{"revenue_eur":"Revenue","utilisation":"Utilisation","revenue_per_vehicle_workday":"Revenue per vehicle-workday","revenue_per_hour":"€/h net"},"subcontractors":"Subcontractors","reference":{"utilisation":"Full utilisation","target":"Target {value}"}},"table":{"views":{"months":"Months","period":"Period"},"viewLabel":"Table view","group":{"vehicles":"{count} vehicles"},"useHoursBilled":"{share} on days with an invoice","useHoursMeasured":"Hours basis {share} measured","columns":{"company":"Company","pool":"Pool","month":"Month","monthsActive":"Months","vehicleDays":"Vehicle-days","vehiclesBasis":"Vehicles","utilisation":"Utilisation","idleDays":"Idle days","weekendDays":"Weekend days","weekendShare":"Weekend share","revenuePerVehicleWorkday":"Rev./vehicle-workday","targetRatio":"Target","revenuePerTonne":"Revenue per tonne","tonnageCoverage":"Tonnage coverage","revenuePerHour":"Rev./hour","hours":"Hours","km":"km","revenuePerKm":"Rev./km","unbilledDays":"Movement days without invoice","unbilledKm":"km without invoice","linesHours":"Hours (allocated)","linesKm":"km (allocated)","hoursBasis":"Hours basis","ampel":"Ampel","rankRevenue":"Rank revenue/vehicle","rankDays":"Rank days/vehicle","rankScore":"Rank sum (guide)","change":"vs. previous month","trend":"Trend","plate":"Plate","serviceDate":"Service date","docType":"Type","docNo":"Document","customer":"Customer","article":"Article","description":"Description","quantity":"Quantity","unit":"Unit","tonnage":"Tonnage","listEurT":"Price list €/t","listDriveTime":"Price list driving time","listKm":"Price list km","listTollKm":"Price list toll km","revenue":"Revenue","reason":"Reason","reasonCode":"Reason code","lineCount":"Lines","siteLoading":"Loading site","siteUnloading":"Unloading site"}},"lines":{"exportScope":"The export holds every invoice line of the filter at the top and of the selected scope; column filters apply to the table only.","visibleSum":"Sum of the visible invoice lines: {revenue} · {tonnage} t ({shown} of {total})","filterByDocument":"Filter the table by this document","copy":"Copy","copied":"Copied","exportColumns":{"lineId":"Line ID","invoicingCompany":"Company (invoice)","ownerCompany":"Company (vehicle)","customerNo":"Customer number","trailer":"Trailer","plateKind":"Plate kind","inKpi":"In the evaluation","customerGroup":"Customer group","isFreight":"Freight article","templateMatched":"In the price list","tours":"Tours","modelHours":"Price-list hours","revenueWithHours":"Revenue with hours","realHours":"Measured hours","revenueWithRealHours":"Revenue with measured hours","calcRevenue":"Price-list revenue","calcModelHours":"Price-list hours (for €/h price list)","sourceFile":"Source file","sourceRow":"Source row"}},"residual":{"summary":"Revenue not in the evaluation, by reason","lines":"Invoice lines outside the pool evaluation","linesHint":"These invoice lines belong to no pool vehicle – subcontractors, own trailers, special vehicles and lines without a plate – so they cannot be measured against the fleet.","assigned":"Assigned revenue","denominator":"Revenue to be assigned"},"excluded":{"title":"Revenue not in the evaluation, by month","subtitle":"These reasons lie outside the pool evaluation under rule set version {version}. A plate listed in several pools would appear here as a reason of its own.","summary":"Monthly revenue outside the evaluation, stacked by reason and company","other":"Other reasons","reasonFilter":"Reason {reason}","clearReason":"Clear reason filter"},"explorer":{"root":"Explorer","backToOverview":"Back to overview","breadcrumb":"Explorer path","view":"View","dimensions":{"customers":"Customers","articles":"Articles","loading_sites":"Loading sites","unloading_sites":"Unloading sites","pools":"Pools","vehicles":"Vehicles","belege":"Documents"},"types":{"customer":"Customer","article":"Article","loading_site":"Loading site","unloading_site":"Unloading site","pool":"Pool","vehicle":"Vehicle"},"stationNone":{"loading":"No loading site","unloading":"No unloading site"},"stationArticles":"{count} articles","vehicleType":{"silo":"Silo","kipper":"Tipper"},"loadLines":"{type} · {count} invoice lines with tonnage","fewHours":"only {hours}","fewHoursHint":"Under 5 hours: the figure is not reliable.","stationsUnavailable":"Loading and unloading sites are missing for this run: the article list with loading sites was not pushed or could not be loaded.","sort":"Sort","order":"Order","groupedBy":"Grouped by","item":"Entry","priceListCoverage":"Revenue by the price list: {share} of invoiced revenue","tonnageCoverage":"{share} of revenue billed in tonnes","shown":"{shown} of {total}","showMore":"Load more","concentration":"Top 3: {top3} of revenue · Top 10: {top10}","withoutValue":"(not specified)","empty":"No invoice lines in the selected scope. Widen the company, period or pool filters.","includeResidual":"Include lines outside the pools","includeResidualPoolFiltered":"Lines outside the pools (clear the pool filter to include them)","search":"Find a customer, article, loading or unloading site, pool or plate","searchPlaceholder":"At least two characters; several words in any order…","noMatches":"No matches","searchResults":"Search results","truncated":"Showing the first {count} entries; more exist but were not loaded.","lastLevel":"Deepest level: these entries do not open further.","crumbShare":"({share})","scope":{"share":"{share} of {parent}","frameOwner":"Fleet owned by {company}","frameOwnerGesamt":"Fleet owned by both companies","frameInvoiced":"Invoiced by {company}","frameInvoicedGesamt":"Invoiced by both companies"},"tiles":{"shareOfScope":"{share} of the scope","hoursUncovered":"{share} of revenue without hours","tollHint":"Toll deducted: {rate} €/h · from the price list","tollHintMeasured":"Toll deducted: {rate} €/h · {share} from Toll Collect","loadedLines":"{count} invoice lines with tonnage","loadedLinesSplit":"{silo} silo and {kipper} tipper invoice lines with tonnage"},"months":"Monthly trend","chartRevenue":"Revenue","chartTarget":"Target","noLines":"no documents","noLinesMonth":"{month}: no documents","lines":"Invoice lines","askAi":"Ask the AI (coming soon)"},"history":{"search":"Find a customer or article","searchPlaceholder":"Type to search…","searchResults":"Search results","noMatches":"No matches","subject":{"label":"Subject","all":"Whole business","customers":"Customers","articles":"Articles"},"measure":{"label":"Measure","revenue_eur":"Revenue","tonnes":"Tonnage","eur_per_tonne":"€ per tonne"},"years":"Years in the overlay","noYears":"No years selected. Pick at least one year for the overlay.","noHistory":"{item} has no revenue history.","noHistoryForCompany":"{item} has no revenue history for {company}.","unavailableTitle":"History is not available yet","unavailable":"The revenue history has not been pushed yet. This tab becomes active once these datasets exist:","views":{"overlay":"Every year over Jan–Dec","overlaySummary":"Monthly {measure} of the selected subject, one line per year over the twelve months","share":"Year totals and share","shareSummary":"{measure} per year, split into the selected subject and everything else","profile":"Seasonal profile","profileNote":"Each month’s share of its year, averaged over the complete years, against this year’s own shares.","profileSummary":"Each month's mean share of the year, with the running year's own shares over it","profileIndex":"Seasonal price index","profileIndexNote":"Each month's € per tonne against its own year's average price — 100 % is that year's average, not a share of the year.","profileIndexSummary":"Each month's mean price index against the year's average price, with the running year's own index over it"},"rest":"Everything else","total":"Total","profile":{"mean":"Usual share","explanation":"Each bar is the share of the full year this calendar month usually takes, averaged over {years}. The line is {year}’s own shares — a point above the bar means that month ran stronger than usual, below it weaker.","partial":"{year} scaled from {months} months to a full year","partialIndex":"{year} so far: {months} months","unavailable":"A seasonal profile needs at least two complete years."}},"trendValues":{"steigend":"rising","stabil":"stable","fallend":"falling"},"basis":{"label":"Hours basis: {share}","measuredShare":"{share} measured","priceListOnly":"price list only","mostlyPriceList":"mostly price list","rate":"{rate} €/h","title":"Hours basis","measured":"Measured by Webfleet · {hours} h","priceList":"Price list · {hours} h","explanation":"Measured means Webfleet recorded the day, and that day’s usage time counts. On days without Webfleet, the hours the price list sets for the tour count.","footer":"Below 50 % measured the bar turns red: the value then rests mostly on the price list.","toll":{"title":"Toll deduction","toll":"Toll","value":"{rate} €/h · {share}","basis":"Toll estimated from the price list (Kunden-Templates), not measured by Toll Collect","measured":"Toll measured by the Toll Collect journey list","partial":"Toll measured by Toll Collect for {share} of the revenue with hours · estimated from the price list for the remaining revenue"}},"score":{"label":"Score {score}","band":{"top":"Score {top} or above","mid":"Score {critical} to below {top}","critical":"Score below {critical}"},"price":"Price","utilisation":"Utilisation","priceContext":"{net} €/h net ÷ {target} €/h target","measured":"{share} of the hours measured by Webfleet","utilisationContext":"{days} vehicle days ÷ {capacity} possible working days","formula":"Score = ({price} + {utilisation}) ÷ 2 × 10 = {score}","capped":"{score} (capped)","bands":"Tick = target 100 % · green from {top} · amber {critical} to below {top} · red below {critical}","tileHint":"Price {price} · Utilisation {utilisation}"},"source":"Source","formula":"Formula","definitionFor":"Definition of {metric}","metrics":{"revenue":{"label":"Revenue","name":"Revenue","explanation":"The invoiced amount of the invoice lines. Credit notes are deducted.","formula":"Sum of “Gesamtpreis bereinigt” over the invoice lines","sources":"Selectline revenue export"},"share":{"label":"Share","name":"Share of revenue","explanation":"Which part of the revenue of the level above falls to this entry. The violet bar under the name shows the same.","formula":"Revenue of the entry ÷ revenue of the level above","sources":"Selectline revenue export"},"tonnage":{"label":"Tonnage","name":"Tonnage","explanation":"The tonnes of the invoice lines billed in tonnes. Credit notes are deducted. A price supplement on a tour counts no tonnes, so the tour does not count twice.","formula":"Sum of the tonnes of the invoice lines in tonnes","sources":"Selectline revenue export"},"avgLoad":{"label":"Avg. tonnage loaded","name":"Average tonnage loaded","explanation":"How many tonnes an invoice line bills on average, i.e. how full the vehicles run on average. Only invoice lines with a tonnage above 0 count; credit notes, price supplements and lines without tonnes do not. Silo and tipper are shown apart: silo means the vehicles of the DE-CEM pools, tipper those of the DE-AGG pools. A type appears only where there are invoice lines of it with tonnage. The column sorts by the average over both.","formula":"Tonnage of the invoice lines with tonnage ÷ the number of these invoice lines, per vehicle type","sources":"Selectline revenue export"},"eurT":{"label":"€/t","name":"Revenue per tonne","explanation":"The average price per tonne. Only invoice lines billed in tonnes count. The hint on hover shows which part of the revenue that is.","formula":"Revenue of the invoice lines in tonnes ÷ the tonnes of these invoice lines","sources":"Selectline revenue export"},"eurh":{"label":"€/h revenue","name":"Revenue per hour","explanation":"What the vehicles earn per hour, toll not deducted. The hours are the usage time Webfleet measured; on days without Webfleet, the hours the price list sets for the tour apply. The bar shows which part of these hours is measured. If the figure rests on fewer than 5 hours, the Explorer greys it out with “only … h” and sorts it last: a few minutes of Webfleet time can make it arbitrarily large.","formula":"Revenue of the invoice lines with hours ÷ the hours of these invoice lines; credit notes and reversals do not count","sources":"Selectline revenue export, Webfleet, Kunden-Templates"},"eurhNet":{"label":"€/h net","name":"Revenue per hour net of toll","explanation":"Like €/h revenue, but without toll. The toll comes from Toll Collect where its journey list measures it, else from the price list. This figure is compared with the 85 €/h target. If the figure rests on fewer than 5 hours, the Explorer greys it out with “only … h” and sorts it last: a few minutes of Webfleet time can make it arbitrarily large.","formula":"(Revenue − toll) of the invoice lines with hours ÷ the hours of these invoice lines","sources":"Selectline revenue export, Webfleet, Kunden-Templates, Toll Collect journey list"},"eurhDrive":{"label":"€/h driving","name":"Revenue per driving hour net of toll","explanation":"What the vehicles earn per hour of pure driving time, toll deducted. Webfleet measures the driving time; only days Webfleet recorded count. A day’s driving time is split across the invoice lines like the day’s hours. Loading, unloading and standing time do not count, so the figure is well above €/h net and is not compared with the target. If the figure rests on fewer than 5 hours of driving time, the Explorer greys it out with “only … h” and sorts it last: a few minutes of Webfleet time can make it arbitrarily large.","formula":"(Revenue − toll) of the measured invoice lines ÷ the driving time of these invoice lines","sources":"Selectline revenue export, Webfleet, Kunden-Templates, Toll Collect journey list"},"calcEurh":{"label":"€/h price list","name":"Revenue per hour by the price list","explanation":"What the price list, the in-house freight price calculation per customer and article, provides per hour: calculated with the tonnage actually loaded and without toll. Counts only for invoice lines in tonnes whose article is in the price list.","formula":"(“€/t aktuell” − “Maut €/t neu”) × tonnage ÷ “Zeit gesamt” of the tour","sources":"Selectline revenue export, Kunden-Templates"},"priceDev":{"label":"Price vs. list","name":"Price against the price list","explanation":"How far the invoiced price deviates from the price by the price list, both without toll. Plus means above the price list. Only invoice lines for which the price list has a price.","formula":"(Revenue − toll) ÷ revenue by the price list − 1","sources":"Selectline revenue export, Kunden-Templates, Toll Collect journey list"},"timeDev":{"label":"Time vs. list","name":"Time against the price list","explanation":"How much more or less time the tours took than the price list assumes. Plus means longer than calculated. Only days with Webfleet can deviate; without Webfleet the price list’s hours apply.","formula":"Hours ÷ hours by the price list − 1","sources":"Selectline revenue export, Webfleet, Kunden-Templates"},"noHoursShare":{"label":"Revenue without hours","name":"Revenue without hours","explanation":"The part of the revenue that no €/h includes: invoice lines for which neither Webfleet nor the price list supplies hours, plus credit notes and reversals. Because credit notes reduce revenue, the share can drop to 0 %.","formula":"1 − revenue of the invoice lines with hours ÷ revenue, at least 0","sources":"Selectline revenue export, Webfleet, Kunden-Templates"},"vehicleDays":{"label":"Vehicle-days","name":"Vehicle-days","explanation":"Days on which a vehicle has at least one invoice. Weekends and public holidays count. If a vehicle drove for two customers on one day, the day counts for each customer, but only once in the total.","formula":"Number of distinct days per plate","sources":"Selectline revenue export"},"utilisation":{"label":"Utilisation","name":"Utilisation","explanation":"How many of the possible working days the vehicles were in operation. Working days are Monday to Friday without public holidays. Operations on weekends and public holidays still count and can lift utilisation above 100 %. For a single vehicle, the working days run from its first to its last month with an invoice.","formula":"Vehicle-days ÷ (vehicles × working days)","sources":"Selectline revenue export, Fixed vehicle count, Holiday calendar"},"rpvw":{"label":"Rev./vehicle-workday","name":"Revenue per vehicle and working day","explanation":"What a vehicle brings in on average per possible working day; days without work are included.","formula":"Revenue ÷ (vehicles × working days)","sources":"Selectline revenue export, Fixed vehicle count, Holiday calendar"},"eurKm":{"label":"€/km","name":"Revenue per kilometre","explanation":"Revenue per kilometre driven, only from days for which Webfleet measured kilometres. Toll is not deducted.","formula":"Revenue of the measured days ÷ the kilometres of these days","sources":"Selectline revenue export, Webfleet"},"km":{"label":"km","name":"Kilometres","explanation":"The kilometres Webfleet measured on days with an invoice. Only for pools and vehicles, because a day’s kilometres cannot be split reliably across customers.","formula":"Sum of the Webfleet kilometres","sources":"Webfleet"},"weekendDays":{"label":"Weekend/holiday days","name":"Vehicle-days on weekends and public holidays","explanation":"Vehicle-days on Saturdays, Sundays and public holidays.","formula":"Number of vehicle-days on these days","sources":"Selectline revenue export, Holiday calendar"},"idleDays":{"label":"Idle days","name":"Idle days","explanation":"Possible working days on which the vehicles have no invoice. Work on weekends and public holidays is offset and reduces them.","formula":"Vehicles × working days − vehicle-days, at least 0","sources":"Selectline revenue export, Fixed vehicle count, Holiday calendar"},"score":{"label":"Score","name":"Score from price and utilisation","explanation":"Combines price and utilisation in one number from 0 to 10; each counts for half. 10 means 85 €/h net and work on every working day. Green from 8.0, amber from 7.0 to below 8.0, red below 7.0. The Score is capped at 10.","formula":"(€/h net ÷ 85 + utilisation) ÷ 2 × 10","sources":"Selectline revenue export, Webfleet, Kunden-Templates, Toll Collect journey list, Fixed vehicle count, Holiday calendar, Rule set"},"vehiclesBasis":{"label":"Vehicles","name":"Vehicles (basis)","explanation":"The pool’s fixed vehicle count from the “Fixe Fahrzeuganzahl” file. Where the month is missing there, such as July and August, the highest count the file gives for the pool applies. Where the file does not list the pool at all, the pool’s plates with invoices in that month count.","formula":"Mean of the monthly values in the period, rounded","sources":"Selectline revenue export, Fixed vehicle count"},"unbilledDays":{"label":"Days without invoice","name":"Movement days without invoice","explanation":"Days on which Webfleet saw a vehicle drive but no invoice exists for it on that day, such as empty runs, workshop visits or an invoice on the neighbouring day.","formula":"Webfleet days with kilometres and no invoice","sources":"Selectline revenue export, Webfleet"},"lines":{"label":"Invoice lines","name":"Invoice lines","explanation":"Number of invoice lines, i.e. the single items on the invoices.","formula":"Count","sources":"Selectline revenue export"},"monthsActive":{"label":"Months","name":"Months with values","explanation":"How many months of the period the pool has values for.","formula":"Number of months","sources":"Selectline revenue export"},"weekendShare":{"label":"Weekend share","name":"Share of weekend/holiday days","explanation":"Which part of the vehicle-days falls on weekends and public holidays.","formula":"Weekend/holiday days ÷ vehicle-days","sources":"Selectline revenue export, Holiday calendar"},"targetRatio":{"label":"Target attainment","name":"Target attainment","explanation":"€/h net relative to the 85 €/h target.","formula":"€/h net ÷ 85","sources":"Selectline revenue export, Webfleet, Kunden-Templates, Toll Collect journey list, Rule set"},"tonnageCoverage":{"label":"Tonnage coverage","name":"Tonnage coverage","explanation":"Which part of the revenue sits on invoice lines in tonnes and is therefore in the €/t.","formula":"Revenue of the invoice lines in t ÷ revenue","sources":"Selectline revenue export"},"hours":{"label":"Hours","name":"Measured hours","explanation":"The usage time Webfleet measured on the vehicle-days with an invoice, from the first start to the last stop of the day.","formula":"Sum of the usage time","sources":"Webfleet"},"useHours":{"label":"Usage time","name":"Usage time by Webfleet","explanation":"How long the vehicles were in use by Webfleet, from the first start to the last stop of each day, on days with and without an invoice. Vehicles without Webfleet do not count. Below it: which part falls on days with an invoice, and how much of the €/h hours basis is measured. Where that part is small, Webfleet is missing for many vehicles and the usage time is incomplete.","formula":"Usage time of the Webfleet days with an invoice + usage time of the Webfleet days without one","sources":"Selectline revenue export, Webfleet"},"unbilledKm":{"label":"km without invoice","name":"Kilometres without invoice","explanation":"The kilometres of the days without an invoice.","formula":"Sum of the Webfleet kilometres of these days","sources":"Selectline revenue export, Webfleet"},"unbilledToll":{"label":"Toll without invoice","name":"Measured toll on days without an invoice","explanation":"Toll that Toll Collect charged for a vehicle on a day on which the vehicle has no invoice, such as empty runs, trips to the workshop or an invoice on the neighbouring day. This toll is deducted from no invoice line. It counts, per month, for the pool the vehicle runs in most often.","formula":"Sum of the toll by the journey list on the vehicle's days without an invoice","sources":"Selectline revenue export, Toll Collect journey list"},"rankRevenue":{"label":"Rank revenue/vehicle","name":"Rank by revenue per vehicle","explanation":"The pool’s place by revenue per vehicle; 1 is the best.","formula":"Rank of revenue ÷ vehicles","sources":"Selectline revenue export, Fixed vehicle count, Evaluation guide"},"rankDays":{"label":"Rank days/vehicle","name":"Rank by vehicle-days per vehicle","explanation":"The pool’s place by vehicle-days per vehicle; 1 is the best.","formula":"Rank of vehicle-days ÷ vehicles","sources":"Selectline revenue export, Fixed vehicle count, Evaluation guide"},"rankScore":{"label":"Rank sum (guide)","name":"Rank sum per the evaluation guide","explanation":"The rank sum of the original evaluation guide; lower is better. Replaced by the Score in the evaluation.","formula":"Rank revenue/vehicle + rank days/vehicle","sources":"Selectline revenue export, Fixed vehicle count, Evaluation guide"},"change":{"label":"vs. previous month","name":"Change from the previous month","explanation":"How revenue per vehicle and working day changed against the previous month.","formula":"Value of the month ÷ value of the previous month − 1","sources":"Selectline revenue export, Fixed vehicle count, Holiday calendar"},"trend":{"label":"Trend","name":"Trend","explanation":"Rising, stable or falling, by revenue per vehicle and working day. Up to ±5 % against the previous month counts as stable.","formula":"Classification of “vs. previous month”","sources":"Selectline revenue export, Fixed vehicle count, Holiday calendar"},"lineRates":{"label":"€/h revenue, €/h net, €/h price list, €/km","name":"Figures of one invoice line","explanation":"The same figures for a single invoice line, with the hours and kilometres that fall to it.","formula":"Revenue of the invoice line ÷ the hours of the invoice line; likewise for the others","sources":"Selectline revenue export, Webfleet, Kunden-Templates, Toll Collect journey list"},"listFacts":{"label":"Price list values","name":"Values from the price list","explanation":"What the price list sets for the invoice line's article: the current freight price per tonne (€/t aktuell), the driving time one way, the kilometres and the toll kilometres. The price list of the company that invoiced the line applies. Empty where the article is not in it.","formula":"none","sources":"Kunden-Templates"},"sites":{"label":"Loading and unloading site","name":"Loading and unloading site by the article list","explanation":"Where the invoice line’s article is loaded and unloaded, by the article list with loading sites: the name and town of the loading and of the unloading site. The list of the company that invoiced the line applies. A dash where the list names no site.","formula":"none","sources":"Article list with loading sites"},"lineHours":{"label":"Hours (allocated)","name":"Hours of the invoice line","explanation":"The hours that fall to this invoice line. On days with Webfleet the day’s measured hours are split: by the hours the price list sets for the tour, and for invoice lines without a price list by their share of the day’s revenue. Without Webfleet the price list’s hours apply. Credit notes get no hours.","formula":"Hours of the day × share of the invoice line","sources":"Selectline revenue export, Webfleet, Kunden-Templates"},"lineKm":{"label":"km (allocated)","name":"Kilometres of the invoice line","explanation":"The day’s kilometres, split across the invoice lines in the same proportion as the hours.","formula":"Kilometres of the day × share of the invoice line","sources":"Selectline revenue export, Webfleet, Kunden-Templates"},"hoursBasis":{"label":"Hours basis","name":"Origin of the hours","explanation":"MESSUNG: Webfleet recorded the day, the hours are measured. MODELL: no Webfleet that day, the price list’s hours apply. STORNOPAAR: a line with negative revenue and its counter-booking on the same day for the same customer, both without hours. KORREKTUR: any other line with negative revenue, whatever its Belegtyp, without hours. OHNE ZEITMODELL: neither Webfleet nor the price list supplies hours, for instance for waiting time.","formula":"none","sources":"Selectline revenue export, Webfleet, Kunden-Templates"},"toll":{"label":"Toll","name":"Toll of the invoice line","explanation":"The toll deducted from the invoice line. In months in which Toll Collect charges the vehicle's trips, it is the day's measured toll, shared among the vehicle's invoice lines of that day by the toll the price list sets for each. If the vehicle drives no toll road on such a day, the toll is 0. In the other months the toll by the price list applies. An invoice line that bills only toll, such as “Maut pauschal”, takes its share like any other on measured days; on the other days it counts entirely as toll.","formula":"Measured: the vehicle-day's toll × the invoice line's price-list toll ÷ the price-list toll of all invoice lines of that vehicle-day; otherwise tonnage × “Maut €/t neu”; when billed per tour: tours × “To” × “Maut €/t neu”","sources":"Selectline revenue export, Kunden-Templates, Toll Collect journey list"},"basisBar":{"label":"Bar under €/h","name":"Share of measured hours","explanation":"The bar shows which part of the hours Webfleet measured. The price list sets the rest. Below 50 % measured it turns red.","formula":"Measured hours ÷ all hours","sources":"Webfleet, Kunden-Templates"},"scoreCard":{"label":"Score on hover","name":"Score breakdown","explanation":"Shows the two parts of the Score: price as €/h net against the 85 €/h target, with how much of the hours Webfleet measured, and utilisation as vehicle-days against the possible working days. Only the Score is capped at 10; the two parts can exceed 100 %.","formula":"Score = (price + utilisation) ÷ 2 × 10","sources":"Selectline revenue export, Webfleet, Kunden-Templates, Toll Collect journey list, Fixed vehicle count, Holiday calendar, Rule set"},"assignmentRate":{"label":"Assignment rate","name":"Assignment rate","explanation":"Which part of the vehicle revenue is assigned to a pool. Not counted: revenue between GmbH and KG, subtotals, non-vehicle articles, revenue without a plate, placeholders such as “DIVERSE”, subcontractors, special vehicles, own trailers, revenue a rule excludes (such as DE-CEM West of the GmbH before March) and invoice lines outside the period. The target is above 98 %.","formula":"Assigned revenue ÷ attributable revenue","sources":"Selectline revenue export, Rule set"}}},"disponentenVorschau":{"name":"Dispatcher preview","description":"Estimated revenue per vehicle and tour from the Zonda plan, before the tours are assigned.","loading":"Loading model data…","noViewsTitle":"No access","noViews":"You have no access to this app. An administrator can grant it.","states":{"deniedTitle":"No access to the model data","denied":"Your account may not read the model data of this app.","failedTitle":"Could not load","failed":"The model data could not be loaded.","noDataTitle":"No model data yet","noData":"The preview's datasets have not been pushed to this organisation yet.","provisioningTitle":"Preparing","provisioning":"The model data are being prepared.","failedDatasetsTitle":"Model data unavailable","failedDatasets":"These datasets failed to provision:","noRunTitle":"No model data yet","noRun":"The preview's datasets hold no run yet."},"upload":{"label":"Drop a Zonda tour plan or choose a file","hint":"Excel (.xlsx) or CSV, unchanged from Zonda","basis":"Data basis: run {run}","lookup":"Relations from Zonda data up to {day}: {count} known","nothingStored":"Nothing is stored: when you leave this page, the upload is gone.","other":"Other file","reading":"Reading the file…"},"errors":{"unreadable":"The file could not be read as xlsx or CSV.","tooLarge":"The file is larger than 5 MB.","tooManyRows":"The file has {rows} rows; the limit is 5,000.","missingColumns":"Columns missing: {columns}","quantity":"Quantities outside 0–60 t or 0–5 trucks, or turned into a date, in rows {rows}. Upload the file as Zonda exports it.","empty":"The file holds no tours."},"day":"Delivery day","dayOption":"{day} · {tours} tours","pool":"Pool","allPools":"All","tiles":{"toursHint":"{estimated} estimated ({share})","revenueHint":"net {net} after toll","rateHint":"target {target} €/h · {share}","openHint":"without a vehicle · {revenue}"},"tabs":{"vehicles":"Vehicles ({count})","open":"Open orders ({count})","unmatched":"Not matched ({count})"},"columns":{"toll":"Toll","hours":"Hours"},"metrics":{"plate":{"label":"Plate","name":"Plate","explanation":"The vehicle according to the tour plan, written as in the evaluation: without the “HSG” prefix and spaces; for a tractor and trailer the tractor counts. “unknown vehicle”: the plate has no invoice in the period.","formula":"Column “LKW Kennzeichen”, normalised","sources":"Zonda tour plan"},"pool":{"label":"Pool","name":"Pool of the vehicle","explanation":"The pool in which the vehicle last invoiced.","formula":"Pool of the plate’s latest invoice line","sources":"Invoicing (Selectline), Vehicle list"},"tours":{"label":"Tours (usual)","name":"Estimated and planned tours, usual tours per day","explanation":"How many of the day’s planned tours have an estimate, and in brackets how many tours the vehicle drives on an average working day.","formula":"Matched of planned tours; in brackets tours ÷ vehicle-days in the period","sources":"Zonda tour plan, Zonda exports, Invoicing (Selectline)"},"revenue":{"label":"Estimated revenue","name":"Estimated revenue of the day","explanation":"What the day’s matched tours are expected to bring in, toll included. With a price per tonne the loaded quantity counts, else the ordered one, else the article’s usual one; with a price per tour the number of trucks. Tours not matched are missing from the sum.","formula":"Per tour: quantity × revenue ÷ tonnage of the article, or trucks × revenue ÷ tours of the article; sum of the matched tours","sources":"Zonda tour plan, Zonda exports, Invoicing (Selectline)"},"dayRevenue":{"label":"Day revenue","name":"Estimated day revenue in comparison","explanation":"The delivery day’s estimated revenue with toll, against the vehicle’s usual day revenues (purple, middle half {period}); the line, the delivery day, is red below and green above that band, dark within it. Hovering shows the card, with the pool’s usual band in grey.","formula":"“Usual” = 25th to 75th percentile of the vehicle’s day revenues; the pool likewise over the working days of the vehicles of the same pool and company","sources":"Zonda tour plan, Zonda exports, Invoicing (Selectline), Vehicle list"},"dayHours":{"label":"Hours","name":"Estimated hours of the day","explanation":"How many hours the vehicle’s planned tours are expected to take on the delivery day, with the return trip, loading and waiting. Purple: the vehicle’s usual day (middle half of the vehicle’s working days {period}, from the first start to the last stop); the bar is red below and green above that band, dark within it. Hatched: tours without an estimate, their hours are missing. Hovering shows the card, with the pool’s usual band in grey.","formula":"Sum of the hours of the matched tours, per tour hours ÷ tours of the relation × trucks; “usual” = 25th to 75th percentile of the vehicle’s daily hours","sources":"Zonda tour plan, Zonda exports, Invoicing (Selectline), Vehicle data (Webfleet), Costing per article"},"rate":{"label":"€/h net","name":"Estimated revenue per hour net of toll","explanation":"What the delivery day’s tours are expected to earn per working hour, without toll. A tour’s hours are how long a tour of this relation has taken on average so far, with the return trip, loading and waiting. Below, small: the vehicle’s average {period}. ▼ ● ▲: below, within, above the vehicle’s usual day. Green from 85 €/h, red below 64 €/h. Hovering shows the card with the pool: there the vehicle’s usual band is purple, the pool’s grey.","formula":"(Revenue − toll) of the tours with hours ÷ their hours; “usual” = 25th to 75th percentile of the €/h net of the vehicle’s working days","sources":"Zonda tour plan, Zonda exports, Invoicing (Selectline), Vehicle data (Webfleet), Costing per article"},"vehicleRate":{"label":"Vehicle avg.","name":"The vehicle’s revenue per hour net of toll, {period}","explanation":"What the vehicle earned per working hour on average {period}, without toll, from the invoiced tours and the measured hours. For comparison with the delivery day; not an estimate.","formula":"(Revenue − toll) of the invoice lines with hours ÷ their hours","sources":"Invoicing (Selectline), Vehicle data (Webfleet), Costing per article"},"tourRate":{"label":"€/h net","name":"Estimated revenue per hour net of toll of the tour","explanation":"What the tour is expected to earn per working hour, without toll. A tour’s hours are how long a tour of this relation has taken on average so far, with the return trip, loading and waiting. Green from 85 €/h, red below 64 €/h.","formula":"(Revenue − toll) of the tour ÷ its hours","sources":"Zonda tour plan, Zonda exports, Invoicing (Selectline), Vehicle data (Webfleet), Costing per article"},"order":{"label":"Order","name":"Order number","explanation":"Order number and position from the plan.","formula":"Columns “Auftragsnummer” and “Auftragsposition Nr.”","sources":"Zonda tour plan"},"relation":{"label":"Loading → unloading","name":"Relation","explanation":"Loading and unloading point of the tour, as written in the plan.","formula":"Columns “Versand-/Empfangsstelle” and “Versand an”","sources":"Zonda tour plan"},"article":{"label":"Article","name":"Matched article","explanation":"The article this relation is invoiced under, learned from the Zonda exports and the invoices of the same vehicle-days. “without the vehicle’s company”: matched by the relation alone, because the vehicle is unknown or the relation has no article for the vehicle’s company. “company from the plan”: the vehicle is unknown or missing, the company comes from the known vehicles of the same pool in the plan.","formula":"Most frequent article of the relation and vehicle company, at least 80 % of its orders","sources":"Zonda exports, Invoicing (Selectline)"},"basis":{"label":"Quantity basis","name":"Quantity of the estimate","explanation":"Which quantity the estimate takes: loaded if the truck has already loaded, else ordered, else the usual quantity of a tour of the article.","formula":"Loaded quantity, else ordered quantity, else tonnage ÷ tours of the article × trucks","sources":"Zonda tour plan, Zonda exports, Invoicing (Selectline)"},"tourAmounts":{"label":"Revenue / toll / hours","name":"Estimated revenue, toll and hours of the tour","explanation":"Revenue and toll in proportion of the quantity to the article’s average. The hours: how long a tour of this relation has taken on average so far, with the return trip, loading and waiting.","formula":"As estimated revenue; toll and hours likewise from the article’s sums","sources":"Zonda tour plan, Zonda exports, Invoicing (Selectline), Vehicle data (Webfleet), Costing per article"},"reason":{"label":"Reason","name":"Why not matched","explanation":"“relation not known”: there is no learned article yet for this loading and unloading point. “plate without an invoice in the period, relation also not known without a company”: the plate has no invoice in the period, and without a company the relation is not known either. “no delivery day”: the plan names no day.","formula":"—","sources":"Zonda tour plan, Zonda exports"},"tileTours":{"label":"Tours with a vehicle","name":"Tours with a vehicle","explanation":"The day’s tours already assigned to a vehicle, and how many of them have an estimate.","formula":"Number of trucks with a plate; of which matched","sources":"Zonda tour plan, Zonda exports"},"tileRevenue":{"label":"Estimated revenue","name":"Estimated revenue of the day","explanation":"Sum of the estimates of all vehicles of the day (in the selected pool), toll included; below it net after toll.","formula":"Sum of estimated revenue","sources":"as Estimated revenue"},"tileRate":{"label":"€/h net","name":"Estimated revenue per hour net of toll, all vehicles","explanation":"Like €/h net of the vehicle table, over all vehicles of the day.","formula":"(Revenue − toll) of the tours with hours ÷ their hours","sources":"as €/h net"},"tileOpen":{"label":"Open orders","name":"Open orders","explanation":"The day’s tours without a vehicle, i.e. not yet assigned, or with a placeholder such as “DIVERSE”; below it their estimated revenue.","formula":"Number of trucks without a plate","sources":"Zonda tour plan, Zonda exports, Invoicing (Selectline)"}},"toursValue":"{estimated} of {planned}","unknownVehicle":"unknown vehicle","toggleTours":"Tours of {plate}","basis":{"loaded":"loaded {tonnes} t","ordered":"ordered {tonnes} t","average":"avg. {tonnes} t"},"status":{"matched":"matched","matchedPlanCompany":"matched, company from the plan","matchedNoCompany":"matched without the vehicle's company","unmatched":"not matched"},"reasons":{"relationUnknown":"relation not known","vehicleUnknown":"plate without an invoice in the period, relation also not known without a company","noDay":"no delivery day"},"verdict":{"up":"above usual","mid":"usual","down":"below usual"},"dayCompare":{"metric":{"revenue":"Day revenue","hours":"Hours","rate":"€/h net"},"aria":"{metric} {plate}: {value}, {verdict}","none":"no comparison","title":"{metric} · {plate} · delivery day {day}","day":"Delivery day","estimated":"estimated · {estimated} of {planned} tours","vehicle":"Vehicle usual","pool":"Pool usual","avg":"avg. {value}","verdict":{"up":"{distance} above the vehicle’s usual day","mid":"within the vehicle’s usual range","down":"{distance} below the vehicle’s usual day"},"partial":"{missing} of {planned} tours without an estimate: their revenue and hours are missing from the delivery day.","usual":"“Usual” = middle half of the invoiced days {period}. Avg. = average over all these days."},"hoursUsual":"usual {from}–{to} h","withoutEstimate":"+{count} tours without an estimate","withoutEstimateOne":"+1 tour without an estimate","avgLine":"Veh. avg. {rate}","lookupNote":"Relations from Zonda data up to {day}","fleetLink":"Open in Fleet KPI","emptyDay":"No tours with a vehicle on this day.","emptyOpen":"No open orders on this day.","emptyUnmatched":"Every tour of this day is matched.","export":"Export Excel","exportFailed":"The export failed.","sheet":"Preview","exportColumns":{"article":"Artikel","label":"Bezeichnung","match":"Zuordnung","basis":"Mengenbasis","tonnes":"Menge t","revenue":"Umsatz €","toll":"Maut €","net":"Netto €","hours":"Stunden","rate":"€/h netto","vsVehicle":"ggü. Fzg.-Tag","vsPool":"ggü. Pool-Tag","verdictVehicle":"Urteil Fzg.","verdictPool":"Urteil Pool","dayHours":"Stunden Fzg.-Tag","verdictHours":"Urteil Stunden","dayRate":"€/h netto Fzg.-Tag","verdictRate":"Urteil €/h"}},"vonSaldernPruefung":{"name":"von Saldern · Review","description":"Review and decide working time, places and diesel","loading":"Loading data…","noViewsTitle":"No access","noViews":"You have no access to this app. An administrator can grant it.","states":{"deniedTitle":"No access to the review data","denied":"Your account may not read the review data of this app.","failedTitle":"Could not load","failed":"The review data could not be loaded.","noDataTitle":"No review data yet","noData":"These datasets do not exist in this organisation yet:","provisioningTitle":"Preparing","provisioning":"The review data are being prepared:","failedDatasetsTitle":"Review data unavailable","failedDatasets":"These datasets failed to provision:","noRunTitle":"No run yet","noRun":"The review data hold no run yet.","truncated":"Not every row was loaded; the figures are incomplete."},"month":"Month","wholePeriod":"Whole period","thePeriod":"the period","currentRun":"current run: ","runStamp":"Run {date}","areas":{"orte":"Places","arbeitszeit":"Working time","zuordnung":"Mapping","diesel":"Diesel"},"lists":{"standstill":"Standstills","dwell":"Dwell times","shift":"Clock in/out","drivers":"Per driver","places":"Places","events":"Findings","mapping":"Mapping"},"chains":{"arbeitszeit":"Working-time check","diesel":"Diesel check"},"scopes":{"orte":{"blocking":"With cases in {month}","open":"To decide","all":"All"},"zuordnung":{"blocking":"With findings","open":"Uncertain","all":"All"}},"layouts":{"list":"List","map":"Map"},"levels":{"uncertain":"uncertain","one_route":"one route"},"unknownDriver":"Driver unknown","unknownDriverVehicle":"Driver unknown (vehicle {vehicle})","banners":{"waiting":"{waiting} of {standstills} standstills ({share} of the minutes) wait for a place decision at {places} places.","waitingLink":"Decide the places ›","unconfirmed":"{unconfirmed} of {open} findings rest on a fill whose vehicle is not confirmed. Their {keys} keys are in the mapping; a decision there takes effect from the next run.","unconfirmedLink":"Check the mapping first ›","changed":"{count} findings hang on mappings changed since the run; the next run re-evaluates them.","placesStanding":"Places apply across months","noArbeitszeitMonth":"There is no working-time check for {month} yet.","noDieselMonth":"There is no diesel run for {month}; the run covers {from} – {to}."},"card":{"title":"Decision","placeTitle":"Decision on the place","proposalTag":"Proposal","system":"System: {answer}","systemNone":"System: no proposal","saveNext":"Save & next: {answer}","saveAndNext":"Save & next ›","saveOnly":"Save","note":"Note without a decision","commentOptional":"Comment (optional)","commentAgainst":"Reason · required, as it goes against the proposal","commentRequired":"Reason · required","reasonPlaceholder":"Reason …","requiredTag":"required","missing":"{field} missing","radiusRange":"Radius 75–3,000 m","keys":"{keys} choose · ↵ save & next · ↑ ↓ switch case","decided":"Decided: {answer}","provisionalShort":"provisional","provisional":"provisional, until the next run takes the decision over","undo":"Undo ({seconds} s)","reopen":"Reopen","openPlace":"Open the place (map, radius, name) ›","extend":"Extend {place}: radius {from} →","newPlace":"a new place at this position","radius":"New radius (m)","extendEffect":"Effect: {cases} cases in {month} go provisionally ({vehicles} vehicles, {minutes} min of work).","newPlaceEffect":"Effect: this case goes; the {cases} cases at this spot wait, after the next places build, for the decision on the place it suggests there.","where":"Which work place","placeChanged":"{place} changed since the run: the next run re-evaluates this case, a decision now applies to the old state."},"compact":{"count":{"standstill":"{n} standstills","dwell":"{n} dwells","shift":"{n} shifts","places":"{n} places","events":"{n} findings","mapping":"{n} keys"},"filters":{"open":"open","decided":"decided","all":"all"},"waits":"place","noPlace":"no place","near":"no place · {place} {km} km","usual":"usual {minutes}","sides":{"activityBefore":"Activity before clock-in","kommenBefore":"Clock-in before first activity","activityAfter":"Activity after clock-out","gehenAfter":"Clock-out after last activity"},"kommen":"Clock in {kommen}, first {first}","gehen":"Clock out {gehen}, last {last}","part":"Part of the period","eventsFoot":"{events} findings, {parts} parts · {position}","placeChanged":"Place changed · re-evaluated"},"effects":{"standstill":{"explained":"There is a reason. The {minutes} min do not count for the driver.","anomaly":"Not right. The {minutes} min count for the driver in {month}.","work_place":"Work is done here. The position becomes a work place; its cases go."},"dwell":{"explained":"There is a reason, a queue for instance. The {minutes} min over usual leave „dwell time over usual“.","anomaly":"Not right. The {minutes} min over usual stay as a deviation."},"shift":{"explained":"There is a reason. The deviation of {minutes} min counts as settled.","anomaly":"Not right. The deviation of {minutes} min stays as a deviation."},"place":{"yes":"Work is done here. The {cases} cases in {month} go; their {minutes} min do not count.","no":"No work is done here. The {cases} cases in {month} count and are decided one by one ({minutes} min)."},"diesel":{"explained":"There is a reason. The {litres} l count as settled.","anomaly":"Not right. The {litres} l stay in question.","misbooking":"The fill went into another vehicle; from the next run it counts there."},"mapping":{"confirm":"{key} belongs to {plate}; from the next run its fills count there, unflagged.","reject":"{plate} is wrong for {key}; the routes keep looking for the vehicle.","takeProposal":"{key} belongs to {proposed} from {from}; takes effect from the next run.","keepList":"The list stands: {key} stays with {plate}, the proposal {proposed} goes.","end":"The pairing ends on the chosen day; after it the routes look for the vehicle.","change":"From the chosen day {key} belongs to another vehicle."}},"method":{"title":"How this comes about","orte":{"p1":"The basis is every standstill of every vehicle since January 2026 from Webfleet, plus short halts from the GPS track. We pull the Webfleet data regularly and rebuild the place list from them.","p2":"Halts close together (about 150 m) form a place when vehicles stood there on at least 3 days or at least 2 vehicles did; a spot without a known address only from 5 days.","p3":"Name and kind come from the Webfleet address book, the article lists, the unloading points of the Zonda orders and the own filling stations. The radius holds 95 % of the halts, 75 m to 1 km, plus 25 m for GPS scatter.","p4":"Confirmed are places from the address book, stations with a clear role and work places decided here. Only there does standing without a break count as work.","p5":"Where at least 80 % of the logged time at an unknown place is break, it is a rest stop automatically, so no work place; the other unknown places are suggested.","p6":"A decision on a place recomputes its cases at once (provisionally): with work place they go, with no work place they are decided one by one. The next places build takes over name, kind, role and radius (75 m to 3 km); the place keeps its number.","p7":"Not covered: places are not written back to Webfleet or Selectline; the check does not recognise traffic jams on the road yet."},"arbeitszeit":{"p1":"The GmbH is checked: its vehicles and the persons of its ATOS export, matched to a Webfleet driver by name. A month is computed once its ATOS export is in; driver card, stops and trips come from Webfleet.","p2":"Standstill outside a work place: minutes the driver logs as other work or availability while standing, outside confirmed work places. A case from 15 min. Every such minute counts in the month's sum, after 5 free minutes per working day; over 120 min a month the driver is over the limit.","p3":"Dwell time over usual: at loading and unloading points and other work places (not at own sites) the time at the halt not logged as break. A case above the place's 95 % value and at least 30 min over its median of the twelve months before. Where other vehicles wait there at the same time, the system proposes „explained“. Does not count in the monthly limit.","p4":"Clock in/out: ATOS clock-in against the first, ATOS clock-out against the last activity (driver card or trip), tolerance 15 min. The check does not compare breaks; ATOS holds none.","p5":"Every decision applies at once in lists, sums and tiles (provisionally) and becomes final with the next run. A case a new run no longer finds goes, with its reason. „Work place“ on a standstill puts the position into the next places build.","p6":"Not covered: the KG; traffic jams; notifying the drivers and corrections in ATOS."},"zuordnung":{"p1":"Every fill needs a vehicle. The statement names it only through a key: vehicle number and PIN at the own stations, the fuel card at DKV and Hoyer.","p2":"Four routes look for the vehicle independently: the list, PIN/driver (who drove which vehicle at the fill time per Webfleet), the card (where its other fills belong) and Webfleet (a refuel event at the station at a fitting time and amount).","p3":"The list holds unless two other routes agree on another vehicle. A fill is confirmed when at least two routes name the same vehicle and none contradicts.","p4":"From the fills the app proposes a vehicle per key. A pairing confirmed here holds within its validity before every route. Where from a day more than half of a confirmed key's fills (at least 3, over at least 14 days) point to another vehicle, a change proposal appears; a single deviating fill changes nothing.","p5":"A decision here changes the diesel findings only with the next run; until then they say „rescored at the next run“.","p6":"Not covered: LNG; fills whose statements are missing (Bremen/Arsten, Rethwisch, Sauensiek, Hoyer after 15 Sep)."},"diesel":{"p1":"The basis is the diesel statements of the own filling stations, of Hoyer and of DKV, of both companies, and from Webfleet refuel events, trips with consumption, GPS and tank volume. Currently checked: 16 Jul – 30 Sep 2026; Webfleet refuel events exist only since mid-July.","p2":"Every fill gets its vehicle from the mapping; the refuel events are converted per vehicle with the factor k.","p3":"Less in the tank: refuel event ÷ k at least 25 % and 50 l below the bill. Not at the pump (own stations): vehicle over 2 km away, or another vehicle fuelled the amount there within 30 min after, without a fill of its own.","p4":"More than fits: over 5 % more than the tank volume, also several fills within 3 h. Bought more than burned: in the month more than 1.05 × consumption plus one tank, then against the refuel events ÷ k.","p5":"The system proposes a misbooking where the data name another vehicle, else a deviation. A decision applies at once (provisionally); a misbooking books the fill to the named vehicle from the next run. Where a decided finding's data change, it is open again.","p6":"What lies in the data themselves is no case: scattering tank gauges, telematics that hardly report, refuel events too short.","p7":"Not covered: LNG, missing statements, fills on the road for „not at the pump“."}},"metrics":{"tileOutside":{"label":"Time outside work places","name":"Time outside work places, after free minutes","explanation":"How much time the drivers logged as work in the month while standing outside a work place (other work or availability on the driver card), after 5 free minutes per working day. Every such standstill counts, also under 15 min; cases decided explained or work place drop out, standstills at suggested places wait for the place. Below it „before deduction“: the same time without the deduction.","formula":"Sum over drivers and days: the day's minutes − 5 on a working day, at least 0","sources":"Webfleet driver card, Webfleet stops, Place list, Rule set, Decisions"},"tileDriversOver":{"label":"Drivers over the limit","name":"Drivers over the monthly limit","explanation":"How many drivers are more than 120 min over the free minutes in the month, of all drivers with standstills outside work places. A vehicle whose driver card Webfleet could not match to a driver counts as an entry of its own.","formula":"Number of drivers with time after free minutes over 120 min","sources":"Webfleet driver card, Webfleet stops, Place list, Rule set, Decisions"},"tileShift":{"label":"Clock in/out outside tolerance","name":"Clock in and out outside the tolerance","explanation":"Open shifts in which clock-in or clock-out per ATOS differs by more than 15 min from the driver's first or last activity. The tile counts the larger of the two deviations per shift; below it shifts and persons.","formula":"Sum over open cases: the larger deviation of clock-in and clock-out, each only when over 15 min","sources":"ATOS time records, Webfleet driver card, Webfleet trips, Rule set, Decisions"},"tileDwell":{"label":"Dwell time over usual","name":"Dwell time over the usual","explanation":"How much longer work went on at loading and unloading points than is usual there, summed over the open cases; below it halts and places. Usual is the median of this place and role over the twelve months before the month. This time does not count in the drivers' monthly limit.","formula":"Sum over open cases: work time at the place − usual median","sources":"Webfleet driver card, Webfleet stops, Place list, Selectline revenue export, Article lists, Rule set, Decisions"},"tileWaiting":{"label":"Waiting for a place decision","name":"Waiting for a place decision","explanation":"Standstill cases at suggested places nobody has decided yet; below it cases and places, a click opens Places. Their minutes do not count for the drivers yet: if the place becomes a work place the cases go; if not, they are decided one by one.","formula":"Sum of the min. work of the standstill cases at suggested places","sources":"Webfleet driver card, Webfleet stops, Place list, Decisions"},"tileToDecide":{"label":"Places to decide","name":"Places to decide","explanation":"Suggested places and automatically recognised rest stops with at least one standstill case in the month that nobody has decided yet. Only these places move the month's result.","formula":"Number of such places; below it suggested · rest stops","sources":"Webfleet driver card, Webfleet stops, Place list, Decisions"},"tileOpenCases":{"label":"Cases at open places","name":"Cases at open places","explanation":"The month's cases at these places. At suggested places they wait for the place; at rest stops they count already and are decided one by one, unless the rest stop is declared a work place.","formula":"Sum of the month's cases at the open places","sources":"Webfleet driver card, Webfleet stops, Place list, Decisions"},"tileConfirmed":{"label":"Standstills at confirmed work places","name":"Share of standstills at confirmed work places","explanation":"Which part of all standstills since January, of all vehicles, lies within a confirmed work place; there standing without a break counts as work. Confirmed are places from the Webfleet address book, stations with a clear role and work places decided here.","formula":"Standstills in confirmed work places ÷ all standstills","sources":"Webfleet stops, Place list"},"tileOutsideAll":{"label":"Outside every place","name":"Share of standstills outside every place","explanation":"Standstills at spots stood at too rarely to be a place (under 3 days and only one vehicle; without a known address under 5 days). Minutes logged as work there always count for the driver. Since January, all vehicles.","formula":"Standstills without a place ÷ all standstills","sources":"Webfleet stops, Place list, Rule set"},"tileAtStake":{"label":"Litres in question","name":"Litres in question","explanation":"The litres at stake in the month's open findings. A fill that is also part of an open period counts once, in the period.","formula":"Sum of „litres in question“ of the open findings","sources":"Fuel statements, Webfleet trips, Webfleet refuel events, Webfleet vehicle data, Mapping, Rule set, Decisions"},"tileLargest":{"label":"Largest single case","name":"Largest single case","explanation":"The open finding with the most litres in question; a click opens it.","formula":"Largest „litres in question“ of the open findings","sources":"Fuel statements, Webfleet trips, Webfleet refuel events, Webfleet vehicle data, Mapping, Rule set, Decisions"},"tileUnconfirmed":{"label":"Vehicle not confirmed","name":"Vehicle not confirmed","explanation":"Open findings with at least one fill without a confirmed vehicle: the routes contradict each other, or only one route found the vehicle. Such findings are often settled through their key in the mapping; a click opens the keys concerned there.","formula":"Number of open findings with a fill „uncertain“ or „one route“, of all open ones","sources":"Fuel statements, Station vehicle list, PIN and card list, Webfleet trips, Webfleet refuel events, Mapping"},"tileCoverage":{"label":"Coverage","name":"Coverage with a confirmed vehicle","explanation":"Which part of the billed diesel litres falls on fills whose vehicle at least two routes name alike and none contradicts. Fills only one route gives a vehicle do not count. Over the whole run (its period is below), both companies.","formula":"Litres of confirmed fills ÷ all diesel litres","sources":"Fuel statements, Station vehicle list, PIN and card list, Webfleet trips, Webfleet refuel events, Mapping"},"bannerWaiting":{"label":"Waiting standstills","name":"—","formula":"—","sources":"—","explanation":"Counted are the month's open standstill cases and of them those waiting at suggested places for the place decision (cases at rest stops do not count among them); the share is their share of the min. work. The link opens Places on „with cases in the month“."},"bannerUnconfirmed":{"label":"Findings with an unconfirmed vehicle","name":"—","formula":"—","sources":"—","explanation":"Counted are the month's open findings and of them those with a fill „uncertain“ or „one route“; the link opens the mapping on „with findings“."},"dependsOnPlace":{"label":"Depends on the place","name":"—","formula":"—","sources":"—","explanation":"The standstill lies at a place still to be decided; the decision there applies to all its cases of the month."},"rescored":{"label":"Rescored","name":"—","formula":"—","sources":"—","explanation":"A decision in the mapping changes the fills' vehicles only in the next run."},"provisional":{"label":"Provisional","name":"—","formula":"—","sources":"—","explanation":"The app computes lists, sums and tiles at once with the decisions since the last run. Counted are the cases, places, findings and mappings they change, and of them those with a decision of their own; the others are cases a place decision moved along. The next run takes them over: decisions stand, places go into the next places build, mappings into the vehicles of the fills; it re-evaluates the cases at a changed place and the findings on a changed mapping, and where the data of a decided case or finding change, its decision opens again."},"reopenedStale":{"label":"Open again","name":"—","formula":"—","sources":"—","explanation":"The finding's statement, litres, plate or checks have changed since the decision."},"placesStanding":{"label":"Places apply across months","name":"—","formula":"—","sources":"—","explanation":"A decided place applies to every month; the month only filters the cases beside it."},"colStart":{"label":"Start","name":"Start of the standstill","explanation":"Day and time the vehicle stopped.","formula":"Start of the stop","sources":"Webfleet stops"},"colDriverPlate":{"label":"Driver · plate","name":"Driver and vehicle","explanation":"The driver whose card was in the vehicle longest during the standstill, the plate below. „Driver unknown“: Webfleet could not match the card to a driver; the case then counts for the vehicle.","formula":"Driver card with the longest overlap","sources":"Webfleet driver card, Webfleet stops, Webfleet vehicle data"},"colPlace":{"label":"Place","name":"Place of the standstill","explanation":"The place within whose circle the vehicle stood; „no place“ when the spot belongs to no place. Below it a hint, such as „at a suggested place“ or the nearest work place with its distance.","formula":"—","sources":"Webfleet stops, Place list"},"colWorkMinutes":{"label":"Min. work","name":"Minutes logged as work while standing","explanation":"How many minutes of the standstill the driver logged on the card as other work or availability. Break, driving and time without a card do not count. A case arises from 15 min.","formula":"Minutes of other work and availability of this card during the standstill, at most its duration","sources":"Webfleet driver card, Webfleet stops, Rule set"},"colProposal":{"label":"Proposal","name":"The system's proposal","explanation":"The first check: what the system proposes. For standstills it is always deviation today; the case names the reason, such as the nearest work place.","formula":"—","sources":"Place list, Rule set"},"colStatus":{"label":"State","name":"State of the case","explanation":"open · waits for place · explained, deviation or work place (decided) · „provisional“ until the next run takes the decision over · provisionally gone (the place became a work place) · gone (a new run no longer finds the case, with its reason).","formula":"—","sources":"Decisions"},"filterHideWaiting":{"label":"Hide waiting","name":"Hide cases without a place decision","explanation":"Hides standstills at suggested places; they are decided through the place.","formula":"—","sources":"Place list"},"colPlaceRole":{"label":"Place (role)","name":"Place and role of the halt","explanation":"The loading or unloading point and whether loading or unloading happened here. At plants that are both, the day's statements decide: is the place the loading point of the billed articles, loading; their unloading point, unloading; otherwise there is no case. Own sites (von Saldern, HSG, Gleimius) are not checked for dwell time.","formula":"—","sources":"Place list, Selectline revenue export, Article lists, Rule set"},"colWorkAtPlace":{"label":"Min. at place","name":"Work time at the place","explanation":"How long during the halt no break was logged in the vehicle, on every card, driving included; below it the usual value. A case arises above this place's 95 % value and at least 30 min over the median.","formula":"Minutes of every card other than break during the halt, together at most its duration","sources":"Webfleet driver card, Webfleet stops, Rule set"},"colUsual":{"label":"usual","name":"Usual work time at this place","explanation":"The median of this place's and role's halts with at least 2 min of work, from the twelve months before the month; only for places with at least 20 such halts. A later data pull no longer changes it.","formula":"Median, in the case also the 95 % value","sources":"Webfleet driver card, Webfleet stops, Place list, Rule set"},"colDwellProposal":{"label":"Proposal","name":"The system's proposal","explanation":"„explained: queue at the place (n more vehicles)“ when other vehicles worked there as long at the same time (median + 30 min); else deviation.","formula":"—","sources":"Webfleet driver card, Webfleet stops, Place list, Rule set"},"colStatusNoPlace":{"label":"State","name":"State of the case","explanation":"open · explained or deviation (decided) · „provisional“ until the next run takes the decision over · gone (a new run no longer finds the case, with its reason).","formula":"—","sources":"Decisions"},"colByPlaceCases":{"label":"Cases","name":"Dwell cases at the place","explanation":"Every dwell case of the month at this place, queues and decided ones included.","formula":"Number","sources":"Webfleet driver card, Webfleet stops, Rule set"},"colByPlaceQueues":{"label":"of them queues","name":"of them proposed as a queue","explanation":"Cases in which other vehicles waited there at the same time.","formula":"Number","sources":"Webfleet driver card, Webfleet stops, Rule set"},"colByPlaceExcess":{"label":"Sum over usual (min)","name":"Sum over the usual","explanation":"How much longer than usual work went on at this place, over all cases; shows where plants keep vehicles waiting.","formula":"Sum (work time at the place − median)","sources":"Webfleet driver card, Webfleet stops, Rule set"},"colDay":{"label":"Day","name":"Day of the shift","explanation":"The day the shift starts per ATOS; it may end the next day.","formula":"—","sources":"ATOS time records"},"colPerson":{"label":"Person","name":"Person per ATOS","explanation":"The person from ATOS, matched to a Webfleet driver by name.","formula":"—","sources":"ATOS time records, Webfleet driver card"},"colKommen":{"label":"Clock in","name":"Clock-in and first activity","explanation":"Clock-in per ATOS, below it the first activity: driving, other work or availability on the card, or a trip of the vehicle without another card that joins the own card. Searched from 3 h before clock-in.","formula":"—","sources":"ATOS time records, Webfleet driver card, Webfleet trips"},"colGehen":{"label":"Clock out","name":"Clock-out and last activity","explanation":"Clock-out per ATOS, below it the last activity, searched up to 3 h after clock-out.","formula":"—","sources":"ATOS time records, Webfleet driver card, Webfleet trips"},"colDeviation":{"label":"Deviation in min","name":"Largest deviation over the tolerance","explanation":"The larger of the two deviations when it exceeds 15 min. The case says which side: clock-in before the first activity, activity before clock-in, clock-out after the last activity or activity after clock-out.","formula":"Larger of (first activity − clock-in) and (clock-out − last activity), by amount, only when over 15 min","sources":"ATOS time records, Webfleet driver card, Webfleet trips, Rule set"},"colDriver":{"label":"Driver","name":"Driver","explanation":"The Webfleet driver; „Driver unknown (vehicle …)“ where Webfleet could not match the card. Unfolding shows the days and the months.","formula":"—","sources":"Webfleet driver card"},"colWorkingDays":{"label":"Working days","name":"Working days","explanation":"Days of the month with driving, other work or availability on the card.","formula":"Number of days with card activity","sources":"Webfleet driver card"},"colRawMinutes":{"label":"Min. outside (total)","name":"Minutes outside work places, total","explanation":"Every minute of the month logged as work while standing outside a work place, also from standstills under 15 min, before the free minutes are deducted. Cases decided explained or work place are left out.","formula":"Sum of the min. work of every counting standstill","sources":"Webfleet driver card, Webfleet stops, Place list, Decisions"},"colOverMinutes":{"label":"over free minutes","name":"Minutes over the free minutes","explanation":"The same minutes after deducting 5 free minutes per working day; a day does not go below zero.","formula":"Sum per day: minutes − 5 on a working day, at least 0","sources":"Webfleet driver card, Webfleet stops, Place list, Rule set, Decisions"},"colAgainstLimit":{"label":"against limit","name":"Standing against the monthly limit","explanation":"The bar fills up to 120 min; beyond it the driver is over the limit.","formula":"Minutes over free minutes ÷ 120","sources":"Rule set"},"colCaseCounts":{"label":"Cases open / deviation / explained","name":"The driver's standstill cases","explanation":"Still open (also waiting for a place) · decided as deviation · decided as explained or work place.","formula":"Number per state","sources":"Decisions"},"colDays":{"label":"Minutes per day","name":"Minutes per day","explanation":"One bar per day with the counted minutes; the line is the 5 free minutes.","formula":"—","sources":"Webfleet driver card, Webfleet stops, Place list, Decisions"},"scopeBlocking":{"label":"With cases in the month","name":"Places with cases in the month","explanation":"Places still to decide (suggested places and automatic rest stops) with cases in the chosen month, the most first.","formula":"—","sources":"Webfleet driver card, Webfleet stops, Place list"},"scopeOpen":{"label":"To decide","name":"Every open place","explanation":"Every suggested place and every automatic rest stop, also without a case in the month.","formula":"—","sources":"Place list"},"scopeAll":{"label":"All","name":"Every place","explanation":"Every place, also confirmed and decided ones.","formula":"—","sources":"Place list"},"layout":{"label":"List · map","name":"View","explanation":"The same places as a list or on the map, coloured by state.","formula":"—","sources":"Place list"},"colPlaceName":{"label":"Place","name":"Name of the place","explanation":"Name from the Webfleet address book, the article lists or the address; below it why the place is suggested so, such as „automatic: 92 % break, rest stop“.","formula":"—","sources":"Place list"},"colPlaceProposal":{"label":"Proposal","name":"Proposal with kind and role","explanation":"A suggested place is proposed as a work place, with kind (loading/unloading point, depot, workshop, filling station, other work place) and role; an automatically recognised rest stop as no work place.","formula":"—","sources":"Place list"},"colPlaceCases":{"label":"Cases in the month","name":"Cases at this place in the month","explanation":"Standstill and dwell cases of the chosen month at this place.","formula":"Number","sources":"Webfleet driver card, Webfleet stops, Place list"},"colPlaceVehicles":{"label":"Vehicles (since January)","name":"Vehicles at this place since January","explanation":"How many different vehicles stood here since January, all vehicles.","formula":"Number of vehicles","sources":"Webfleet stops, Place list"},"colPlaceMinutes":{"label":"Min. work","name":"Minutes of the cases logged as work","explanation":"Sum of the min. work of these cases in the month; this much the decision on the place moves.","formula":"Sum of min. work","sources":"Webfleet driver card, Webfleet stops, Place list"},"colPlaceStatus":{"label":"State","name":"State of the place","explanation":"to decide · rest stop (automatic) · work place · no work place; „provisional“ until the next places build takes the decision over.","formula":"—","sources":"Place list, Decisions"},"keyScopeBlocking":{"label":"With findings","name":"Keys with open findings","explanation":"Keys whose fills without a confirmed vehicle sit in an open diesel finding of the month.","formula":"—","sources":"Mapping, Decisions"},"keyScopeUncertain":{"label":"Uncertain","name":"Uncertain keys","explanation":"Keys fuelled on several vehicles or with fills without a confirmed vehicle.","formula":"—","sources":"Fuel statements, Mapping"},"keyScopeAll":{"label":"All","name":"Every key","explanation":"Every key of the run and every maintained pairing.","formula":"—","sources":"Fuel statements, Mapping"},"colKey":{"label":"Key","name":"Key","explanation":"What the statement ties a fill to: vehicle number (no.) and PIN at the own stations, the fuel card (card) at DKV and Hoyer.","formula":"—","sources":"Fuel statements"},"colListSays":{"label":"The list says","name":"Vehicle per the list","explanation":"The plate the station's vehicle list gives the number, or the plate on the statement or the card list for the card. For a PIN „–“: a PIN belongs to a driver, not a vehicle.","formula":"—","sources":"Fuel statements, Station vehicle list, PIN and card list"},"colDataSay":{"label":"The data say","name":"Vehicle per Webfleet","explanation":"Which vehicles this key's fills got through the Webfleet routes (PIN/driver, refuel event, card), without the list, with counts. A decided misbooking counts with the named vehicle.","formula":"Per fill the vehicle of these routes; counted per plate","sources":"PIN and card list, Webfleet trips, Webfleet refuel events, Decisions"},"colKeyFills":{"label":"Fills","name":"Fills with this key","explanation":"The run's diesel fills with this key; for a maintained pairing those within its validity.","formula":"Number","sources":"Fuel statements, Mapping"},"colTwoRoutes":{"label":"2 routes","name":"Share two routes back","explanation":"For which part of these fills at least two routes name the same vehicle and none contradicts. 0 % means: no fill is backed by a second route.","formula":"Confirmed fills ÷ fills","sources":"Fuel statements, Station vehicle list, PIN and card list, Webfleet trips, Webfleet refuel events, Mapping"},"colKeyCases":{"label":"Cases","name":"Cases with these fills","explanation":"The diesel cases (C numbers, per vehicle and month) holding a fill of this key.","formula":"—","sources":"Fuel statements, Mapping"},"colKeyStatus":{"label":"State","name":"State of the pairing","explanation":"proposed (from the fills, not decided yet) · confirmed · ended · change proposal (from a day the fills point to another vehicle) · several vehicles (fuelled on 3 or more vehicles without a confirmation).","formula":"—","sources":"Mapping, Rule set, Decisions"},"colWhen":{"label":"When","name":"Time","explanation":"Time of the fill, for two fills of one finding both („12:30 + 14:35“); a period as a month or days („July“, „16–31/07“). A period is listed in every month it touches; its fills are listed under it.","formula":"—","sources":"Fuel statements"},"colPlateDriver":{"label":"Plate · driver","name":"Vehicle and driver","explanation":"The vehicle the fill is placed on; below it the driver per Webfleet at the fill time, else the holder of the PIN or card, marked „(per PIN)“ or „(per card)“.","formula":"—","sources":"Fuel statements, PIN and card list, Webfleet trips, Mapping"},"colCheck":{"label":"Check","name":"Which check fired","explanation":"One of the four checks; below it a line on what happened, and for a proposed misbooking the other vehicle.","formula":"—","sources":"Rule set"},"colLevel":{"label":"Vehicle","name":"How certain the vehicle is","explanation":"„uncertain“: the routes contradict each other, or only the list or only the refuel event found the vehicle. „one route“: only PIN/driver or only the card found it. No mark: two routes confirm the vehicle, or a confirmed pairing or a decided misbooking fixes it. With several fills the weakest counts.","formula":"—","sources":"Fuel statements, Station vehicle list, PIN and card list, Webfleet trips, Webfleet refuel events, Mapping"},"colAtStake":{"label":"Litres in question","name":"Litres in question","explanation":"The litres at stake, per check. Where several checks fire, the largest amount counts, not the sum. A fill that stands out only as part of a period carries its own gap.","formula":"Largest amount of the checks that fired","sources":"Fuel statements, Webfleet trips, Webfleet refuel events, Webfleet vehicle data, Mapping, Rule set"},"colBefundStatus":{"label":"State","name":"State of the finding","explanation":"open · open again (the data changed since the decision, or it was reopened) · explained, deviation or „misbooking → <plate>“ · „provisional“ until the next run takes over · gone (a new run no longer finds the finding).","formula":"—","sources":"Decisions"},"checkNotAtPump":{"label":"Not at the pump","name":"Vehicle not at the pump","explanation":"Own stations only, from 16 Jul 2026. The vehicle was more than 2 km from the station at the fill time, and no refuel event of the vehicle lay there. Or: there is no refuel event of the vehicle for the fill, but another vehicle had a refuel event there within 30 min after without a fill of its own that fits the amount; the system then proposes a misbooking to that vehicle, and the finding's subtitle reads „another vehicle fuelled“.","formula":"Distance over 2 km without an own refuel event there, or another vehicle's refuel event 0–30 min after with litres ÷ k within ±25 %; in question: the billed litres","sources":"Fuel statements, Station vehicle list, Webfleet trips, Webfleet refuel events, Mapping, Rule set"},"checkTankShort":{"label":"Less in the tank","name":"Less arrived in the tank than billed","explanation":"The fill's refuel event shows, converted with k, at least 25 % and at least 50 l less than billed. Only vehicles with a reliable k and fills whose vehicle is clear also without the refuel event. No case when the refuel events from 3 h before to 4 h after the fill suffice together, or when the vehicle's telematics hardly report in the month.","formula":"Billed − refuel event ÷ k","sources":"Fuel statements, Webfleet trips, Webfleet refuel events, Mapping, Rule set"},"checkOverTank":{"label":"More than fits","name":"More fuelled than the tank holds","explanation":"A fill, or all of the vehicle's fills within 3 h together, lie more than 5 % above the tank volume. Tank volume per Webfleet, or Webfleet ÷ k where that differs by more than 15 % and k is reliable. No check with an unreliable tank gauge.","formula":"Sum of the fills − tank volume","sources":"Fuel statements, Webfleet refuel events, Webfleet vehicle data, Mapping, Rule set"},"checkBoughtBurned":{"label":"Bought more than burned","name":"Bought more than burned (period)","explanation":"Per vehicle and month more billed than 1.05 × the consumption per Webfleet plus one tank. Then what arrived in the tank per refuel events ÷ k counts: where the bill is at most 15 % above it, the diesel arrived and there is no case; else „fuelled but not arrived in the tank“, with every fill with a gap of its own of 25 l or more as a part. Without refuel events or a reliable k: „bought more than the consumption explains“. Only months with consumption on 90 % of the kilometres; vehicles with a 170 l tank (LNG) excluded.","formula":"With refuel events: billed − refuel events ÷ k; without: billed − (1.05 × consumption + tank)","sources":"Fuel statements, Webfleet trips, Webfleet refuel events, Webfleet vehicle data, Mapping, Rule set"},"k":{"label":"Factor k","name":"Factor k of the tank gauge","explanation":"Webfleet recognises a fill by the rise of the tank gauge and reports it as a refuel event in litres. The gauge measures differently per vehicle, depending on sender, tank shape and stored tank volume, but fairly evenly: at k 1.063 Webfleet reports about 6 % more than was billed. k is learned per vehicle from its own certain fills (from 50 l, vehicle clear also without the refuel event, routes without contradiction) as the median of refuel event over billed litres; for the fill checked, without itself. „Rise ÷ k“ is then what arrived in the tank. Reliable means: at least 5 such fills, and the middle half of their ratios lies at most 0.2 apart. No reliable factor: fewer than 5 such fills, or they scatter more. Then the app shows the rise raw, „less in the tank“ does not check the vehicle, „bought more than burned“ compares with the consumption only, the mapping through refuel events compares raw litres, and with a strongly scattering gauge „more than fits“ is dropped too.","formula":"k = median (refuel event ÷ billed litres) over at least 5 certain fills from 50 l; reliable when 75th − 25th percentile ≤ 0.2; arrived = refuel event ÷ k; tank volume ÷ k replaces the Webfleet tank volume where it differs by more than 15 %","sources":"Fuel statements, Station vehicle list, PIN and card list, Webfleet trips, Webfleet refuel events, Webfleet vehicle data, Mapping, Rule set"}},"diesel":{"period":"{from} – {to}","runStamp":"Run {run}","oldFormatTitle":"Diesel data in the old format","oldFormat":"The Diesel data are still in the old format; the next run updates them.","missingTitle":"Diesel data missing","missing":"These datasets of the diesel check do not exist in this organisation yet:","tiles":{"atStake":"Litres in question","atStakeHint":"{month} · in {count} open findings","largest":"Largest single case","largestHint":"{month} · {plate} · {when}","unconfirmed":"Vehicle not confirmed","unconfirmedValue":"{count} of {total}","unconfirmedHint":"{month} · → mapping","coverage":"Coverage","coverageHint":"in the run {from}–{to} · of the litres with a confirmed vehicle"},"status":{"open":"open","reopened":"reopened","decided":"decided","gone":"gone"},"checks":{"not_at_pump":"Not at the pump","tank_short":"Less in the tank","over_tank":"More than fits","bought_burned":"Bought more than burned"},"misbookingTo":"Misbooking → {plate}","changed":"Mapping changed","changedLong":"Mapping changed · re-evaluated","mappingTabs":{"all":"All","deviation":"Change proposals","proposed":"Proposed","confirmed":"Confirmed"},"mappingStatus":{"proposed":"proposed","confirmed":"confirmed","ended":"ended","deviation":"Change proposal","many":"several vehicles","rejected":"rejected"},"keyTypes":{"vehicle_no":"Vehicle no.","card":"Card","pin":"PIN"},"valid":{"from":"since {from}","to":"until {to}","range":"{from} – {to}"},"columns":{"time":"When","plate":"Plate","driver":"Driver","kind":"Check","summary":"Note","level":"Vehicle","key":"Key","listSays":"The list says","dataSay":"The data say","twoRoutes":"2 routes","cases":"Cases","atStake":"Litres (in question)","status":"State","actions":"Action","pinCard":"PIN/card","plateDriver":"Plate · driver","confirmedOf":"{share} confirmed","valid":"valid","fills":"Fills","confirmedShare":"of them confirmed"},"filters":{"kind":"Check","vehicle":"Vehicle","driver":"Driver","keyType":"Key type","unconfirmed":"Vehicle not confirmed"},"actions":{"confirm":"confirm","change":"change","end":"end","keepList":"Confirm the list as it is","reject":"Reject the proposal","takeProposal":"Take proposal","pdf":"Finding as PDF"},"record":{"atStake":"{litres} l in question","difference":"{litres} l difference","cases":"Case {cases}","fuelledBy":"fuelled by","pickVehicle":"Pick a vehicle","glance":"At a glance","tank":"Tank","who":"Who","month":"Month","span":"Period","partOf":"Part of {period}","consumed":"since the last fill ~{litres} l used (Webfleet)","loading":"Loading the references…","refs":"References","history":"History","staleNote":"The decision “{answer}” was taken on older data; the finding is open again.","keyChanged":"Mapping of {key} changed on {day}{to}. The next run re-evaluates this finding; a decision now applies to the old state.","keyTo":" (→ {plate})","keyChangedBar":"{key} changed since the run: if the next run changes this finding, the decision opens again.","unconfirmed":"Vehicle not confirmed for the fill at {time}.","keyLink":"{key} in the mapping ›"},"facts":{"station":"Station","company":"Company","source":"Source"},"glance":{"abweichung":"speaks for a discrepancy","dagegen":"speaks against it","fehlbuchung":"speaks for a misbooking (other vehicle)"},"tank":{"billed":"billed","rise":"rise per Webfleet","suggested":"{plate} (proposal)","tankLine":"Tank {litres} l","over":"+{litres} l over the tank","litres":"litres","question":"{litres} l in question","questionOver":"{litres} l in question · over the tank","questionWhole":"{litres} l in question: the whole fill","raw":"raw {raw} l · ÷ k {k}","uncalibrated":"raw, no k","noEvent":"no refuel event","otherNote":"{time} · raw {raw} l · ÷ k {k}","otherRaw":"raw · {time} · k unknown","noTank":"Tank volume unknown: no tank outline.","noK":"No reliable factor k (sensor: {sensor}): the rise is raw.","none":"No litres billed.","legend":{"tank":"Tank volume","billed":"billed (statement)","over":"more than the tank holds","rise":"rise per Webfleet, calibrated (÷ k)","riseRaw":"rise per Webfleet, raw","other":"the other vehicle's refuel event","question":"in question","why":{"tank_short":"billed, did not arrive in the tank","over_tank":"more than the tank holds","not_at_pump":"the whole fill"}}},"sensor":{"reliable":"reliable","unreliable":"unreliable","none":"none"},"who":{"pinCard":"PIN / card","pin":"{fills} fills on {vehicles} vehicles, {own} of them on this one","pinAll":"{fills} fills, all on this vehicle","driver":"Driver","other":"Refuel event {time}, {litres} l raw · {booked}","notBooked":"no booking of its own","noEvents":"reports no refuel events this month"},"eventTypes":{"fill":"Fill","period":"Period"},"refs":{"lines":"Statement lines","sha":"File checksum","listEntry":"Vehicle list","wfEvents":"Webfleet refuel events","wfTrip":"Webfleet trip","pulls":"Pulls","run":"Run","rules":"Rules version","cases":"Cases","checks":"Checks","hash":"Data state","fills":"Fills"},"mapping":{"evidence":"Evidence","listSays":"The list says","dataSay":"The data say","since":"Change since","proposed":"proposed","cases":"Cases","seen":"first / last fill","holder":"Holder","reviewed":"reviewed","changeTitle":"Change the pairing","vehicle":"Vehicle","from":"valid from","to":"until","badDates":"The date does not fit this pairing's validity.","samePlate":"The same vehicle would only move the start: use “Confirm the list as it is” or “end”.","proposalLine":"Proposal: {plate} from {from}","validity":"Validity","now":"now","state":"State","current":"now: {plate}, {valid}","findings":"Findings with this key","noFindings":"No finding with a fill on this key.","litres":"Litres","atStake":"in question","case":"Case","otherKeys":"Other keys of the same holder","listSaysValue":"list says {plate}","fillsValue":"{fills} fills, {share} confirmed","open":"open ›"},"history":{"runNote":"Run: {note}","mapping":"{status}: {plate} ({range})","misbooking":" → {plate}"},"empty":"Nothing for this selection."},"dieselRecord":{"facts":{"title":"Facts","vehicle":"Vehicle","vehicleValue":"{plate} · Webfleet object {vehicle}","tank":"Tank","tankValue":"{litres} l · k {k} ({sensor})","tankNoK":"{litres} l · no reliable factor k (sensor: {sensor})"},"sources":{"tank":"Fuel statements, Webfleet refuel events, Webfleet vehicle data","fills":"Fuel statements, Station vehicle list, PIN and card list, Webfleet trips, Webfleet stops, Webfleet refuel events, Mapping","map":"Webfleet trips, Webfleet stops, Webfleet refuel events","period":"Fuel statements, Webfleet refuel events, Mapping"},"fills":{"title":"The fills one by one","columns":{"fill":"Fill","key":"Key","routes":"Vehicle found by","position":"Position at the time"},"event":"Refuel event {time} · {litres} l","eventRaw":"Refuel event {time} · {litres} l raw","atPump":"at the pump, {km} km","away":"{km} km away","awayState":"{km} km away, {state}","moving":"driving","standing":"standing","lastStop":"last stop {time}","noPosition":"no position","others":"At the pump: {list}","other":"{plate} {km} km {time}","moved":"Misbooking → {plate}"},"routes":{"list":"List","holder":"PIN/driver","card":"Card","event":"Webfleet","mapping":"Mapping","correction":"Misbooking","decision":"Decision","label":"Routes:","level":"Level"},"why":{"not_listed":"not on the list","no_vehicle":"no vehicle for it","no_holder":"no holder known","not_road":"road only","no_usual":"no usual vehicle","no_event":"no refuel event","several":"refuel events of several vehicles","none":"no vote"},"reason":{"says":{"list":"the list assigns {key} to {plate}","holder":"{holder} belongs to the driver of {plate}","card":"the card usually fuels {plate}","event":"the refuel event reports {plate}","mapping":"the mapping names {plate}","correction":"the misbooking names {plate}"},"but":{"list":"but the list assigns {key} to {plate}","holder":"but {holder} belongs to the driver of {plate}","card":"but the card usually fuels {plate}","event":"but the refuel event reports {plate}","mapping":"but the mapping names {plate}","correction":"but the misbooking names {plate}"},"holder":{"pin":"the PIN","card":"the card"},"fill":"the fill","conflict":"{says}, {but}.","single":"{says}; no second route confirms it.","none":"No route names a vehicle.","short":{"conflict":"{route}: {plate}","single":"{route} only","none":"no route"}},"map":{"title":"Map","none":"No position of the station or the vehicle at the time of the fill.","oneFill":"fill {list}","fills":"fills {list}","fill":"{time} · {litres} l","and":" and ","at":"at {time}","km":"{km} km","atPump":"at the pump · {km} km · {time}","line":"Distance to the pump","notAtPump":"{km} km: from here Not at the pump","pumpRadius":"{km} km: at the pump","inCorner":"in the corner map","inset":"at the pump · {from}–{to}"},"period":{"arrived":"Fuelled, but not arrived in the tank","consumption":"More fuelled than the consumption explains","counts":"{fills} fills, {events} refuel events","panel":"Fills, refuel events and their sum","billedAxis":"Invoice","billedUnit":"↑ litres","eventsAxis":"Webfleet","eventsUnit":"↓ litres ÷ k","sumAxis":"Sum","sumSince":"since {day}","after":"→ {time} · {litres} l","summary":"{fills} fills, billed {billed} l; arrived in the tank {arrived} l; difference {difference} l","summaryBilled":"{fills} fills, billed {billed} l","legendTop":"Top, per fill:","legendBottom":"Bottom, summed up:","legend":{"withEvent":"invoice with event","withoutEvent":"invoice without event","unconfirmed":"vehicle not confirmed","eventWithFill":"Webfleet event with invoice","eventWithoutFill":"Webfleet event without invoice","late":"event later, the vehicle stood until then","billed":"billed {litres} l","arrived":"arrived in the tank (Webfleet ÷ k) {litres} l","gap":"gap at the end = difference"},"table":"Row by row","columns":{"time":"Time","billed":"Invoice","key":"Key","event":"Webfleet event (÷ k)","difference":"Difference","hint":"Note"},"sum":"Sum","hints":{"fits":"fits","noEvent":"no refuel event","far":"vehicle {km} km away","late":"event later, the vehicle stood until then","after":"event after the period","loose":"without a fill","raw":"raw, no k","part":"own finding ›"},"offBy":"The rows differ from the difference in the header by {litres} l.","consumptionNote":"Without refuel events or a reliable k the check compares with the consumption; the rows show the invoice."},"variant":{"receiver":"Another vehicle took the fuel"},"card":{"misbookingMany":"One or more fills went into another vehicle; from the next run on they count there.","replacesMisbooking":"Note: a new decision replaces the misbooking; the fill then moves back at the next run.","stays":"stays with {plate}","staysShort":"stays","suggested":"suggested","fill":"{time} · {litres} l","moved":"{moved} of {total} moved"},"metrics":{"tankVolume":{"label":"Tank volume","name":"Tank volume","explanation":"The outline is the vehicle's tank volume: per Webfleet, or Webfleet ÷ k where that differs by more than 15 % and k is reliable. „Tank volume unknown“: no outline.","formula":"—","sources":"Webfleet vehicle data, Webfleet refuel events"},"tankBilled":{"label":"billed","name":"Billed, per fill","explanation":"Each fill a segment with its time and litres; hatched, what goes beyond the tank volume.","formula":"Sum of the fills","sources":"Fuel statements"},"tankRise":{"label":"Rise per Webfleet (÷ k)","name":"Arrived in the tank per Webfleet","explanation":"What the refuel events of these fills measured, converted with the vehicle's factor k; below it raw and k. „no refuel event“: Webfleet reported no rise for any of these fills.","formula":"Sum of refuel events ÷ k","sources":"Webfleet refuel events"},"tankOther":{"label":"other vehicle","name":"Refuel event of another vehicle","explanation":"A refuel event of the suggested vehicle at the same time at the same station, without a fill of its own, ÷ its k.","formula":"Refuel event ÷ k","sources":"Webfleet refuel events"},"fillTime":{"label":"Fill","name":"Fill","explanation":"Time and billed litres of the fill.","formula":"—","sources":"Fuel statements"},"fillKey":{"label":"Key","name":"Key with level","explanation":"Number, PIN or card of the fill; beside it „uncertain“, „one route“ or nothing.","formula":"—","sources":"Fuel statements"},"fillRoutes":{"label":"Vehicle found by","name":"Routes to the vehicle","explanation":"Per route ✓ and the plate where it names this vehicle; ✗ and the other plate where it contradicts; – and why none (no refuel event, number not on the list).","formula":"—","sources":"—"},"fillPosition":{"label":"Position at the time","name":"Where the vehicle was","explanation":"Distance to the station and whether the vehicle was driving or standing, from the GPS track ±10 min, else the last stop. Other vehicles standing within 0.3 km ±15 min with no fill of their own within ±30 min, the three nearest, with time and distance.","formula":"Distance vehicle – station","sources":"Webfleet trips, Webfleet stops, Webfleet refuel events"},"routeList":{"label":"List","name":"Route: list","explanation":"The station's vehicle list (number → plate), a plate on the DKV statement or a card that belongs to a vehicle per the card list. Where the list names a plate no vehicle carries that day, the Webfleet vehicle of that name counts.","formula":"exactly one vehicle with this plate that day","sources":"—"},"routeHolder":{"label":"PIN/driver","name":"Route: PIN/driver","explanation":"The holder of the PIN or card, matched by name to a Webfleet driver, and the vehicle he drove closest to the fill; else a vehicle named after him in Webfleet.","formula":"at most 3 h between trip and fill","sources":"—"},"routeCard":{"label":"Card","name":"Route: card","explanation":"The vehicle the card's other fills mostly belong to, if it was driving around the time of the fill. DKV and Hoyer only.","formula":"at least 2 fills, at least 80 % on this vehicle, a trip within 3 h","sources":"—"},"routeEvent":{"label":"Webfleet","name":"Route: Webfleet","explanation":"A refuel event at this station at a fitting time and amount. No vote where refuel events of several vehicles fit.","formula":"own stations −10 to +45 min, on the road −5 to +20 min (later where the vehicle stood until then, at most 7 days); within 1 km of the station; litres ÷ k within ±25 %","sources":"—"},"routeDecision":{"label":"Decision","name":"Decision between the routes","explanation":"The list holds unless two other routes agree on another vehicle; without a list the most votes, on a tie PIN/driver before Webfleet before card. A confirmed pairing holds before every route, a decided misbooking fixes the fill.","formula":"—","sources":"—"},"weakFill":{"label":"Vehicle not confirmed","name":"—","explanation":"Names the finding's weakest fill and why, e.g. „The list assigns No. 3028 to H-SG872, but the PIN belongs to the driver of H-SG382.“","formula":"—","sources":"—"},"periodHead":{"label":"Difference","name":"Difference in the period","explanation":"In the header „Fuelled, but not arrived in the tank“, the company, the number of fills and refuel events, and the difference large. A period is a calendar month, cut to the run's period.","formula":"Σ billed − Σ refuel events ÷ k","sources":"Fuel statements, Webfleet refuel events, Mapping"},"periodTop":{"label":"Top, per fill","name":"Fills and refuel events","explanation":"Each fill a bar up at its time (dark with a refuel event, red without, outlined where the vehicle is not confirmed); each refuel event ÷ k a bar down, linked to its fill or marked „without a fill“. Weekends grey.","formula":"—","sources":"Fuel statements, Webfleet refuel events"},"periodBottom":{"label":"Bottom, summed up","name":"Billed and arrived, summed up","explanation":"Two lines since the start of the period: billed and arrived in the tank (Webfleet ÷ k). The gap at the end is the difference.","formula":"running sums","sources":"Fuel statements, Webfleet refuel events"},"periodTable":{"label":"Row by row","name":"Table","explanation":"One row per fill and per refuel event without a fill: time, billed, key with level, refuel event (time, litres ÷ k), difference, note. The sum gives the figures in the header.","formula":"Row difference = billed − refuel event ÷ k; without a fill negative","sources":"Fuel statements, Webfleet refuel events, Mapping"},"periodOffBy":{"label":"Discrepancy","name":"—","explanation":"Shows only where the sum of the rows does not give the difference in the header (a data error).","formula":"—","sources":"—"}}},"statusFilter":{"open":"Open","decided":"Decided","all":"All"},"filters":{"driver":"Driver","vehicle":"Vehicle","day":"Day","place":"Place","search":"Search…","any":"all","hideWaiting":"Hide waiting","byPlace":"per place","byCase":"per case","overLimit":"Over the limit","allDrivers":"All","kind":"Kind","placeStatus":"Status"},"tiles":{"outside":"Time outside work places","outsideHint":"{month} · {current}after {allowance} free minutes per working day · before deduction {raw}","driversOver":"Drivers over the limit","driversOverValue":"{count} of {total}","driversOverHint":"{month} · more than {limit} min over the free minutes","driversOverHintAll":"Driver-months in the period · {current}more than {limit} min over the free minutes","shift":"Clock in/out outside tolerance","shiftHint":"{month} · {cases} shifts of {persons} persons","dwell":"Dwell time over usual","dwellHint":"{month} · {cases} halts at {places} places · not in the monthly limit","waiting":"Waiting for a place decision","waitingHint":"{month} · {cases} cases at {places} places → Places","toDecide":"Places to decide","toDecideHint":"{month} · {suggested} suggested · {rest} rest stops","cases":"Cases at open places","casesHint":"{month} · {suggested} at suggested places, {rest} at rest stops","confirmed":"Standstills at confirmed work places","confirmedHint":"since January, all vehicles · {count} work places","outsideAll":"Outside every place","outsideAllHint":"since January, all vehicles · always count for the driver","provisional":" · provisional"},"provisionalNote":"provisional: {count} changes since the last run ({decisions} of them decisions)","answers":{"explained":"explained","anomaly":"Deviation","work_place":"Work place","misbooking":"Misbooking"},"placeAnswers":{"yes":"Work place","no":"No work place"},"status":{"open":"open","reopened":"reopened","waiting":"waits for place","decided":"decided","provisionallyGone":"provisionally gone","gone":"gone"},"kinds":{"station":"Loading/unloading point","depot":"Depot","workshop":"Workshop","filling_station":"Filling station","work_site":"Other work place"},"roles":{"load":"Loading point","unload":"Unloading point","both":"Loading and unloading point"},"checks":{"standstill":"Standstill outside a work place","dwell":"Dwell time over usual","shift":"Clock in/out outside tolerance"},"queue":"explained: queue at the place","noPlace":"– no place –","automatic":"automatic","actions":{"takeProposal":"✓ Proposal","more":"More actions","open":"Open","pdf":"Case as PDF","refs":"References","openPlace":"Open place","reopen":"reopen","saveNext":"Save & next","saveNote":"Save note","undo":"Undo","saved":"Saved","saveFailed":"Saving failed","cases":"Cases ▸","confirmPlace":"✓ Work place","rejectPlace":"No work place","takePlaceProposal":"✓ {answer}","save":"Save","cancel":"Cancel"},"comment":{"label":"Comment","required":"Comment (required for this answer)","optional":"Comment (optional)","note":"Note (does not change the state)"},"columns":{"start":"Start","driver":"Driver","driverPlate":"Driver · plate","place":"Place","workMinutes":"Min. work","proposal":"Proposal","status":"State","actions":"Action","workAtPlace":"Min. at place","usualValue":"usual {minutes}","day":"Day","person":"Person","kommen":"Clock in","firstAt":"first {time}","lastAt":"last {time}","gehen":"Clock out","deviation":"Deviation in min","workingDays":"Working days","rawMinutes":"Min. outside (total)","overMinutes":"over free minutes","againstLimit":"against limit","caseCounts":"Cases open / deviation / explained","month":"Month","events":"Cases","queues":"of them queues","excess":"Sum over usual (min)","cases":"Cases","minutes":"Minutes","kind":"Kind","role":"Role","placeRole":"Place (role)","casesIn":"Cases in {month}","vehiclesSince":"Vehicles (since January)","workMinutesShort":"Min."},"record":{"title":"Case","labels":{"arbeitszeit":"Case","orte":"Place","zuordnung":"Key","diesel":"Finding"},"position":"{n} of {total}","prev":"Previous","next":"Next","figure":"{minutes} min","figureNote":{"standstill":"logged as work · {stop} min standstill","dwell":"work at the place · usual {usual} min","shift":"deviation"},"dependsOnPlace":"Depends on the place {name} ({status}). {count} cases are decided with it.","openPlaceLink":"Open the place ›","source":"Source: {sources}","goneAtPlace":"Provisionally gone: {place} {change} on {day}.","goneInCircle":"Provisionally gone: {place} {change} on {day}; this standstill now lies inside it.","goneDecided":"With the next run the decision “{answer}” goes too.","placeChanged":"Place changed: {place} {change} on {day}. The next run re-evaluates this case; a decision now applies to the old state.","openNamedPlace":"Open {place} ›","changes":{"yes":"decided a work place","no":"decided no work place","open":"reopened","grown":"extended ({from} → {to} m)","shrunk":"made smaller ({from} → {to} m)","kind":"kind: {kind}","role":"role: {role}"},"staleNote":"The decision “{answer}” was taken on older data; the case is open again.","explanation":"Proposal: {answer}.","noProposal":"No proposal.","decision":"Decision","workPlaceAsk":"This is a work place: the position goes into the next places build.","noPosition":"Work place needs the standstill's position, which this case lacks.","waitsForPlace":"This standstill is decided through its place.","timeline":"Course of the day","ownPlace":"This standstill's place","why":"Why","atPlace":"At the place: {name}","roleHere":"Role here","dwellMonth":"{cases} dwell cases · {minutes} min","person":{"title":"This person in {month} · {count} shifts with a case","day":"Day","before":"Activity before clock-in","after":"Activity after clock-out","note":"Minutes; red: over {tolerance} min tolerance; “–”: activity only after clock-in or before clock-out.","sources":"ATOS time records, Webfleet driver card, Webfleet trips"},"refs":"References","history":"History","close":"Close"},"facts":{"vehicle":"Vehicle","objectno":"Webfleet object","driver":"Driver","atosNo":"ATOS personnel number","driverNo":"Webfleet driver","start":"Start","end":"End","position":"Position","mapLink":"Map ↗","address":"Webfleet address","kommenGehen":"ATOS clock in · out"},"refs":{"stop":"Webfleet stop","segments":"Segments","trips":"Trips","pullDate":"Pulled","run":"Run","rules":"Rules version"},"tagesverlauf":{"loading":"Loading the course of the day…","none":"No course of the day for this case.","sources":"ATOS time records, Webfleet driver card, Webfleet stops, Webfleet trips, Place list","whole":"Shift {range}","zoomed":"Window {range} · double-click: whole shift","chart":"Course of the day {range}","overview":"Overview","overviewHelp":"Overview: drag the window or its edges; a click moves it there","hint":"The mouse wheel over the chart zooms around the pointer, dragging pans, a double-click shows the whole shift again; the overview below shows the window.","lanes":{"atos":"ATOS","card":"Driver card","vehicle":"Vehicle"},"states":{"drive":"Driving","work":"Other work","standby":"Availability","pause":"Break","unknown":"Unknown"},"noActivity":"no activity","kommen":"Clock-in {time}","gehen":"Clock-out {time}","atosBar":"ATOS clock-in to clock-out {range}","first":"first activity {time}","last":"last activity {time}","atosFollows":"ATOS {day} to follow","atosFollowsShort":"to follow","atosNone":"no ATOS times","trip":"Trip (ignition on) {range} · {duration}","stop":"Stop {place} · {range} · {duration}","noPlace":"outside every place","thisCase":"this case","gap":"without activity","gapTip":"{duration} without activity, {range}","piece":"{state} {range} · {minutes} min · {counts}","legend":{"case":"Case","atos":"Clock-in to clock-out","trip":"Trip (ignition on)","stop":"Stop","caseStop":"This case's standstill","band":"The case's time","counts":"counts"},"how":"How the {minutes} min come about","cols":{"time":"Time","state":"State","minutes":"Min.","counts":"counts"},"shiftRows":{"kommen":"Clock-in → first activity","gehen":"last activity → clock-out"},"reasons":{"work":"yes: {state} while standing","at_place":"yes: work at the place","pause":"no: break","drive":"no: driving","driveArrival":"no: driving (arrival)","driveDeparture":"no: driving (departure)","other_card":"no: another card","none":"no: no activity","shiftYes":"yes: more than {tolerance} min","shiftNo":"no: within the tolerance"},"sum":{"standstill":"Sum","dwell":"Sum","shift":"Counted: the larger"},"info":{"atos":{"label":"ATOS","name":"ATOS clock-in to clock-out","explanation":"A bar from clock-in to clock-out as ATOS records them, both times on it; the driver's first and last activity marked beneath. „ATOS 01.09. to follow“: this month's ATOS export is not loaded yet.","formula":"—","sources":"ATOS time records, Webfleet driver card, Webfleet trips"},"card":{"label":"Driver card","name":"Driver card","explanation":"What the driver's card reports: driving, other work, availability, break. Empty means no card inserted. More than 2 h without activity (only break or no card) while the vehicle stands show as a narrow gap with its length („14 h 00 without activity“).","formula":"—","sources":"Webfleet driver card"},"vehicle":{"label":"Vehicle","name":"Vehicle","explanation":"Trips with the ignition on, stops with their place's name, and this case's standstill, for the case's vehicle only: where the driver drove another one in between, its trips are not shown here.","formula":"—","sources":"Webfleet trips, Webfleet stops, Place list"},"band":{"label":"Case","name":"The case and what counts","explanation":"The light band is the case's time across all lanes; only the minutes that count are outlined and labelled.","formula":"—","sources":"—"},"colTime":{"label":"Time","name":"From–to","explanation":"A piece of the case's time, with the date across midnight.","formula":"—","sources":"—"},"colState":{"label":"State","name":"State on the driver card","explanation":"Driving, other work, availability, break or „no activity“.","formula":"—","sources":"—"},"colMinutes":{"label":"Min.","name":"Minutes","explanation":"The piece's length.","formula":"—","sources":"—"},"colCounts":{"label":"counts","name":"Does it count?","explanation":"„yes“ or „no“ with the reason, by the check's rule.","formula":"—","sources":"—"},"sumStandstill":{"label":"Sum","name":"Sum of the counting minutes","explanation":"Gives the figure in the case's header. Other work and availability count on the card of the driver whose card was in longest during the standstill; not break, driving, time without activity or other cards.","formula":"Minutes of other work and availability of this card in the standstill, at most its duration","sources":"Webfleet driver card, Webfleet stops, Rule set"},"sumDwell":{"label":"Sum","name":"Sum of the counting minutes","explanation":"Gives the figure in the case's header. The minutes of every card except break count during the stop, driving included; the header shows the usual time and the minutes over it beside them.","formula":"Minutes of every card except break during the stop, together at most its duration","sources":"Webfleet driver card, Webfleet stops, Rule set"},"sumShift":{"label":"Counted","name":"The larger deviation","explanation":"Gives the figure in the case's header: clock-in → first activity and last activity → clock-out; a deviation counts beyond 15 min, else it lies within the tolerance.","formula":"The larger of the two deviations","sources":"ATOS time records, Webfleet driver card, Webfleet trips, Rule set"}}},"usual":{"title":"How usual is this halt?","thisHalt":"This halt","thisHaltValue":"{minutes} min · {place}","usualHere":"Usual here","usualValue":"{p25}–{p75} min · median {median}","from":"Case from","fromValue":"{minutes} min (median + {excess}; 95% up to {p95})","legendThis":"this halt","legendUsual":"usual here","legendFrom":"case from","verdict":"{minutes} min above the usual here","axis":"{minutes} min","footnote":"“Usual” = the middle half of the halts with work here, in the 12 months before."},"articles":{"title":"What the vehicles billed on the days here","stopDays":"{n} stop-days","stopDaysOne":"1 stop-day","vehicles":"{n} vehicles","vehiclesOne":"1 vehicle","withoutLine":"{share} without a freight line","articles":"{n} articles","articlesOne":"1 article","columns":{"article":"Article","customer":"Customer","days":"Days","vehicles":"Veh.","tonnes":"Tonnes","station":"Station"},"share":"{share} of the stop-days","tonnes":"{tonnes} t","km":"{km} km","here":{"L":"Loading point here","E":"Unloading point here"},"role":{"load":"loading point","unload":"unloading point","both":"loading and unloading point"},"hint":{"station":"Points to a {role}: {n} of {of} articles load or unload here.","stationOne":"Points to a {role}: 1 of {of} articles loads or unloads here.","routine":"One vehicle, mostly article {article}: a routine.","parking":"No article loads or unloads here: points to a parking place."},"hintLabel":"Hint","listed":"The first {n} of {total} articles, by days","listedAll":"{n} articles, by days","listedAllOne":"1 article, by days","sources":"Webfleet stops, Place list, Selectline revenue export, Article lists","none":"No billing for these days yet.","noLines":"No freight line on these days.","info":{"summary":{"label":"Stop-days","name":"How this comes about","explanation":"A stop-day is a vehicle (plate) on a day with a halt at this place, within the period of the revenue export; a halt overnight counts every day it touches. To these come the billing's freight lines with the same plate and day (Selectline dates a line on the delivery day), without credits and price supplements. Vehicles: the vehicles behind these stop-days; articles: every article billed on them, the table shows the first 10. Per article: on how many stop-days it occurs, with how many vehicles, how many tonnes. “Loading point here”: the article's loading or unloading point by the article list lies in this place; otherwise the distance to the nearer one. The months run from the first to the last day with a line in the list.","formula":"without a freight line = stop-days without a freight line ÷ stop-days","sources":"Webfleet stops, Place list, Selectline revenue export, Article lists"}},"hintInfo":{"station":{"label":"Hint","name":"—","formula":"—","sources":"—","explanation":"A hint from the billing, not a decision. Rule: at least one article of the list loads or unloads here (its loading or unloading point lies in this place). A hint only from 10 stop-days with a freight line."},"routine":{"label":"Hint","name":"—","formula":"—","sources":"—","explanation":"A hint from the billing, not a decision. Rule: no article of the list loads or unloads here, and on more than half of the stop-days with a freight line one vehicle drove the same article. A hint only from 10 stop-days with a freight line."},"parking":{"label":"Hint","name":"—","formula":"—","sources":"—","explanation":"A hint from the billing, not a decision. Rule: no article of the list loads or unloads here, and no vehicle drove the same article on more than half of the stop-days with a freight line. A hint only from 10 stop-days with a freight line."}}},"nearPlace":{"title":"Nearest place","head":"{name} · {km} km","line":"{km} km","kind":"Kind","radius":"Radius","since":"Since January","spot":"At this spot","confirmed":", confirmed","provisional":", provisional","radiusValue":"{radius} m","sinceValue":"{stops} stops · {vehicles} vehicles","spotValue":"{cases} cases · {vehicles} vehicles · {time}","hint":"→ in the decision: „Work place“, extend {place}","info":{"head":{"label":"Nearest place","name":"Nearest work place","explanation":"The nearest confirmed work place and the distance to its centre; on the map both, with a line.","formula":"Distance standstill – centre of the place","sources":"Webfleet stops, Place list"},"kind":{"label":"Kind","name":"Kind and state","explanation":"For example „Work place, confirmed (Depot)“.","formula":"—","sources":"Place list"},"radius":{"label":"Radius","name":"Radius","explanation":"How far the place reaches; standing outside it counts as a standstill outside a work place.","formula":"—","sources":"Place list"},"since":{"label":"Since January","name":"Activity at the place","explanation":"Stops and vehicles at this place since January, all vehicles.","formula":"Count","sources":"Webfleet stops, Place list"},"spot":{"label":"At this spot","name":"Cases at the same spot","explanation":"How many cases of the month lie at the same spot as this one, with vehicles and hours; extending the place would take them all in.","formula":"Count and sum of the work minutes of the open standstills outside every place up to 150 m from this one, the distance within which the place list joins stops into one place","sources":"Webfleet driver card, Webfleet stops, Place list"}}},"history":{"system":"System","detected":"detected (run {run}) · proposal: {answer}","decided":"decided: {answer}","proposalTaken":" (proposal taken)","note":"Note","reopened":"reopened","undo":"Undo","undone":"taken back","runDecision":"Decision the run knows: {answer}","gone":"gone: {reason}"},"place":{"why":"Why suggested","facts":"Facts","id":"Place","proposal":"Proposal","monthValue":"{cases} cases · {minutes} min","mapSync":"⇄ in sync with the map","stop":"Standstill","asWork":"as work","cases":"Cases at this place ({month})","mapHint":"Drag the circle's edge = radius · the value also stands in the bar below","proposedRadius":"suggested {radius} m","affects":"affects {count} cases (provisionally at once)","name":"Name","kind":"Kind","role":"Role","radius":"Radius (m)","stats":"{stops} standstills, {vehicles} vehicles, {days} days since January","radiusInRecord":"Radius outside {min}–{max} m: set it in the place's record","noCases":"No cases at this place this month.","status":{"toDecide":"to decide","work":"Work place","none":"No work place","rest":"Rest stop (automatic)"}},"drivers":{"limitLine":"{current}{allowance} free minutes per working day · limit {limit} min a month","chart":"Minutes outside per day, the line is the free minutes","months":"Months","overLimit":"over the limit","rawNote":"before deduction {raw} min"},"map":{"loading":"Loading map…","failed":"The map could not be loaded.","label":"Map","circle":"{name} · {status} · {radius} m","stop":"{time} · {minutes} min","legend":"Legend","outside":"outside the map","more":"+ {n} more","stops":"{n} stops at this spot","median":"median {d}","thisStandstill":"this standstill","thisHalt":"this halt","spot":"more cases at this spot","halts":"more halts of {plate} here on {day}","toNearest":"to the nearest work place","extended":"{place} extended","placeRadius":"{name} {radius} m","thisPlace":"this place","caseStop":"standstill with a case","otherStop":"other standstill","since":"since January","nearest":"nearest place","chip":"{name} · {status} · {km} km","overviewHint":"Dots: the centre of each place; from zoom level 12 circles with their radius · a click opens the place"},"export":{"button":"Export Excel","failed":"The export failed.","yes":"yes","no":"no","columns":{"start":"Start","end":"End","driver":"Driver","atosNo":"ATOS no.","plate":"Plate","objectno":"Webfleet object","place":"Place","detail":"Note","minutes":"Minutes","workMinutes":"Min. work","role":"Role","usualMedian":"usual (median)","usualP95":"usual (p95)","day":"Day","person":"Person","kommen":"Clock in","firstActivity":"first activity","lastActivity":"last activity","gehen":"Clock out","diffStart":"Dev. start (min)","diffEnd":"Dev. end (min)","flag":"Note","proposal":"Proposal","proposalReason":"Reason","status":"State","decision":"Decision","comment":"Comment","decidedBy":"by","decidedAt":"at","key":"Key","month":"Month","workingDays":"Working days","rawMinutes":"Min. outside (total)","overMinutes":"over free minutes","overLimit":"over the limit","open":"open","anomaly":"Deviation","explained":"explained","kind":"Kind","reason":"Reason","cases":"Cases","radius":"Radius (m)","lat":"Latitude","lon":"Longitude","placeId":"Place id","time":"Date","company":"Company","source":"Source","station":"Station","pinCard":"PIN/card","litres":"Litres invoiced","atStake":"Litres in question","checks":"Checks","explanation":"Explanation","suggestedPlate":"Proposed vehicle","correctedPlate":"fuelled by","keyType":"Key type","holderKey":"PIN/card/vehicle no.","validFrom":"valid from","validTo":"valid until","fills":"Fills","confirmedShare":"of them confirmed","since":"Change since","proposedPlate":"proposed vehicle","listSays":"The list says","dataSay":"The data say","eventType":"Finding type","periodStart":"Period from","periodEnd":"Period to","arrived":"Litres arrived (÷ k)","restFills":"Rest fills","restLitres":"Rest litres","unmatchedLitres":"Refuel events without a fill (l, ÷ k)","glance":"At a glance","pinFills":"Fills of the PIN/card","pinVehicles":"Vehicles of the PIN/card","pinOnVehicle":"of them on this one","consumedSinceLast":"used since the last fill (l)","parent":"Part of (key)"}},"print":{"printed":"Printed {date}"},"empty":"No cases for this selection."},"title":"Apps","description":"Open an app or pin it to your sidebar. Workspace pins are shared with your team.","browse":"Browse apps","open":"Open","openApp":"Open {name}","pinForMe":"Pin for me","unpinForMe":"Unpin for me","pinForWorkspace":"Pin for workspace","unpinForWorkspace":"Unpin for workspace","pinAppForMe":"Pin {name} for me","unpinAppForMe":"Unpin {name} for me","pinAppForWorkspace":"Pin {name} for workspace","unpinAppForWorkspace":"Unpin {name} for workspace","workspacePinned":"Pinned for workspace","emptyTitle":"No apps available yet","emptyDescription":"Apps will appear here when they are available for your workspace.","noPins":"Use + to find and pin apps.","loadingPins":"Loading pinned apps…","pinsLoadFailed":"Pinned apps could not be loaded.","pinSaveFailed":"Your pin could not be saved. Please try again.","retry":"Try again","unavailableTitle":"App unavailable","unavailable":"This app requires a feature that is not enabled for your workspace.","checkingAvailability":"Checking app availability…"},"selfServiceBilling":{"includedTotal":"Of {amount} included this period","saveBeforePayment":"Save or discard your billing changes before continuing to payment.","features":{"agent:knowledge":"Knowledge Base","agent:workflows":"Workflows","agent:email":"Email","agent:research":"Research","agent:file":"Files","agent:mcp":"Connected tools","agent:integrations":"Integrations","agent:code_execution":"Code execution","agent:dataset":"Datasets","agent:feedback_capture":"Feedback"},"title":"Plan and usage credits","included":"Included credits","purchased":"Purchased credits","available":"Available","reserved":"Reserved for work in progress: {amount}","allowanceOrder":"Included credits are used first at the provider’s base rate. Further usage uses purchased credits at your package’s usage rate.","carryForward":"Purchased credits carry forward. They do not renew your monthly subscription.","resets":"Current included allowance expires on {date}. Renewal requires a successful monthly payment.","loadFailed":"Payment status could not be loaded. Try again before making a purchase.","sessionRefreshFailed":"Payment is confirmed, but your session could not be refreshed. Refresh the page to continue.","accountChanged":"The active account changed. Open billing again in the account you want to use.","profileRequired":"Complete and save your billing details before continuing to payment.","taxUnavailable":"We cannot confirm the tax details for this payment yet. Check your billing details and try again later.","actionFailed":"The payment request could not be completed. You can retry safely.","stale":"Payment information could not be refreshed. Refresh the status before making changes.","waiting":"Waiting for payment confirmation. If Checkout was not completed, choose a package again. You can safely return later.","paymentApplied":"Payment confirmed. Your workspace balance is being refreshed.","paymentFailed":"This payment was not completed. You can start again below.","orderFailed":"This payment could not be checked for the current workspace. Refresh its status or return to billing.","paidThrough":"Current paid period ends on {date}.","cancelsAt":"Your subscription ends on {date}. It will not renew.","memberGuidance":"Ask a workspace owner or admin to manage payments and usage credits.","paymentMethod":"Manage payment method","cancelSubscription":"Cancel subscription","billingDetails":"Billing details","offersFailed":"Available purchase options could not be loaded. Please try again.","noOffers":"No purchase options are available right now.","monthlyNet":"per month, excluding tax","oneTimeNet":"one-time, excluding tax","offerIncluded":"Includes {amount} for monthly usage.","offerCredit":"Adds {amount} to your purchased balance.","seats":"Up to {count} members","choose":"Choose {name}","buy":"Buy {name}","refresh":"Refresh payment status","cancelTitle":"Cancel monthly renewal?","cancelDescription":"Your paid package remains available until {date}. Purchased credits stay in your workspace and can be used with an active subscription.","keepSubscription":"Keep subscription","confirmCancellation":"Cancel renewal","status":{"disabled":"Online payment is currently unavailable. You can sign out and return later.","pending_payment":"Choose a monthly package to activate your workspace.","processing":"We are processing your payment. Your workspace will become available after confirmation.","active":"Your subscription is active.","past_due":"Your renewal payment needs attention. Update your payment method to restore access.","ended":"Your monthly subscription has ended. Choose a package to continue. Your purchased credits are retained."},"reason":{"disabled":"Online payment is currently unavailable.","payment_required":"A paid monthly package is required to continue.","payment_processing":"Payment is still being confirmed.","payment_past_due":"Your renewal payment needs attention.","subscription_ended":"Your monthly subscription has ended.","allowance_exhausted":"Your included and purchased credits are exhausted. Buy a top-up to continue.","capacity_reserved":"Available credits are reserved for work in progress. Wait for it to finish or add credits.","funding_reversed":"A payment needs investigation. Contact support before continuing.","usage_reconciliation":"Usage needs investigation. Contact support before continuing."},"shelfTitle":"Usage credits","shelfManage":"Manage usage credits","blockedPlaceholder":"Payment or usage credits are required to continue…","errors":{"paymentRequired":"Payment is required. Open Plan & statements or ask a workspace owner or admin to restore access.","exhausted":"Usage credits are exhausted. Open Plan & statements or ask a workspace owner or admin to add credits.","reserved":"Usage credits are reserved for work in progress. Wait for it to finish and try again.","unavailable":"Paid usage is temporarily unavailable. Your work has not been started; try again later."}},"meta":{"title":"Uhrwerk.AI","description":"Chat-first workspace"},"packageBuilder":{"seats":{"minimumPrepaid":"Minimum prepaid seats","minimumPrepaidHelp":"This is the minimum paid quantity. Fewer members may be assigned; only the maximum limits invitations.","includedThenPaid":"{count} seats included in the base price, then {price} per additional seat"}},"language":{"label":"Language","english":"English","german":"German","short":{"en":"EN","de":"DE"},"updateFailed":"Failed to update language preference."},"common":{"open":"Open","download":"Download","attachedFile":"Attached file","noLinkAvailable":"No link available","notAvailable":"N/A","cancel":"Cancel","loading":"Loading…","remove":"Remove","rename":"Rename","save":"Save","dismiss":"Dismiss","optional":"optional","breadcrumbRoot":"Workspace"},"accountTransition":{"switchingTitle":"Switching account","starting":"Preparing a safe account switch…","activating":"Activating the selected account…","validating":"Verifying the active account…","completing":"Finishing the account switch…","waitingForPeer":"Waiting for the other tab to finish…","recovering":"Recovering your account session…","failedTitle":"Account switch needs attention","retry":"Retry target account","chooseAccount":"Choose another account","returnPrevious":"Return to previous account","signIn":"Sign in","phaseLabel":"Phase","referenceLabel":"Transition reference","requestIdLabel":"Request ID"},"dataTable":{"noResults":"No results.","resizeColumn":"Resize column","columns":{"button":"Columns","heading":"Toggle columns","reset":"Reset"},"filterBar":{"and":"and","addFilter":"Add filter","clearAll":"Clear all","apply":"Apply","valuePlaceholder":"Value…"},"boolean":{"true":"True","false":"False"},"operators":{"text":{"contains":"contains","notContains":"not contains","equals":"equals","notEqual":"not equal","startsWith":"starts with","endsWith":"ends with"},"number":{"equals":"=","notEqual":"!=","greaterThan":">","greaterThanOrEqual":">=","lessThan":"<","lessThanOrEqual":"<="},"date":{"equals":"=","greaterThan":"after","lessThan":"before"},"boolean":{"equals":"is"},"select":{"equals":"is"}},"pagination":{"rowsPerPage":"Rows per page","ofTotal":"of {total}","pageOf":"Page {page} of {total}","rowCount":{"one":"{count} row","other":"{count} rows"}}},"sidebar":{"brandName":"Uhrwerk.AI","brandSubtitle":"Workspace","expandSidebar":"Expand sidebar","collapseSidebar":"Collapse sidebar","newChat":"New chat","searchChats":"Search chats","chatsHeading":"Chats","pinnedChatsHeading":"Chats","searchChatsPlaceholder":"Search chats...","loadMoreChats":"Load more chats","loadingMoreChats":"Loading more chats...","nav":{"inbox":"Inbox","workflows":"Workflows","myTasks":"My tasks","processes":"Processes","knowledge":"Knowledge","tools":"Tools","manageWorkspace":"Manage Workspace","myProfile":"My Profile","workspaceSettings":"Workspace settings"},"loadingConversations":"Loading conversations...","noConversations":"No conversations yet.","groups":{"today":"Today","yesterday":"Yesterday","previous7Days":"Previous 7 Days","previous30Days":"Previous 30 Days","older":"Older","pinned":"Pinned"},"sessionStatus":{"processing":"Processing","failed":"Failed","ready":"Ready","archived":"Archived","success":"Completed","inputRequired":"Input required","approvalRequired":"Approval required","awaitingExternalApproval":"Awaiting external approval"},"marker":{"needsYou":"Needs you","working":"Working…","ready":"Ready","couldntFinish":"Couldn't finish"},"contentLabels":{"workflow":"Workflow","files":"Files","knowledge":"Knowledge","tools":"Tools"},"menu":{"sessionActions":"Conversation actions","rename":"Rename","delete":"Delete","pin":"Pin","unpin":"Unpin"},"deleteConfirm":{"title":"Delete conversation","description":"This conversation will be permanently deleted. This action cannot be undone."},"errors":{"renameFailed":"Failed to rename conversation.","deleteFailed":"Failed to delete conversation."},"account":{"label":"Account","loading":"Loading account...","fallback":"No email available","menuLabel":"Account options","switchAccount":"Switch account","currentAccount":"Current account","addAccount":"Add account","showPet":"Show pet","hidePet":"Hide pet","signInAgain":"Sign in again","removeFromBrowser":"Remove from this browser","logoutCurrent":"Log out","limitReached":"Remove an account before adding another.","activationFailed":"Could not switch accounts. Try again.","identityRefreshFailed":"Switched accounts. Refreshing current identity failed.","switchOrg":"Switch organization","platformAdmin":"Platform Admin","settings":"Settings","logout":"Logout","loggingOut":"Logging out..."}},"chat":{"capacity":{"usage":"Usage left","buttonLabel":"Usage left {usage}","usageCaption":"{scope} · resets {date}","scopes":{"user":"Personal limit","group":"Group limit","org":"Workspace limit"},"noUsage":"Usage unavailable","unlimited":"No monthly limit","usageStale":"Couldn’t refresh usage. Showing the last reading."},"budgetShelf":{"scopes":{"user":"Personal monthly budget","group":"Group monthly budget","org":"Workspace monthly budget"},"left":"{percent}% left","resets":"resets {date}","runningLow":"Running low.","limitReached":"Limit reached.","memberGuidance":"Contact your workspace admin to increase the limit.","adminGuidance":"Review the limit in Usage & billing.","reviewLimit":"Review limit","disabledPlaceholder":"Usage limit reached","announcement":"{scope}. {remaining}% left. {used}% used. {status} {guidance}"},"approvalItems":{"header":"{count} actions need approval","headerSingular":"{count} action needs approval","legend":"Choose the actions to approve","selectedCount":"{selected} of {total} selected","approveSelected":"Approve selected ({count})","approveAll":"Approve all","rejectAll":"Reject all","rejectAllReason":"Reason for rejecting all actions","showParameters":"Show parameters","resultsHeading":"Actions","status":{"done":"Done","failed":"Failed","notApproved":"Not approved","inProgress":"In progress","approved":"Approved"}},"approvalChanges":{"badgePrefix":"Approval","calendarScopeLabel":"Scope","calendarSeriesLabel":"Series","calendarEffectLabel":"Effect","calendarScopeSeriesCount":"Entire series — all {count} events","calendarScopeSeriesMore":"Entire series — more than {count} events","calendarScopeSeriesUnavailable":"Entire series — event count unavailable","calendarScopeSingle":"Only this event","calendarEffectCancel":"Cancellation, can be undone","calendarEffectDelete":"Permanent deletion, cannot be undone","calendarEffectChange":"Change, not undone automatically","calendarGuestListLabel":"Guest list","calendarGuestListKept":"{count} attendees, unchanged apart from your answer","calendarInviteAddedLabel":"Adding","calendarInviteKept":"{count} guests already invited, all kept","calendarRsvpAccountLabel":"Connected account","calendarRsvpResponseLabel":"Response","calendarRsvpAccepted":"Accepted","calendarRsvpDeclined":"Declined","calendarRsvpTentative":"Tentative","calendarRsvpNeedsAction":"Needs action","calendarScopeUnknown":"Scope could not be determined","calendarAlreadyCancelled":"This event is already cancelled in Google Calendar.","trigger":"Request changes","humanApprovalRequired":"Human approval required","reviewAction":"Review action","reviewCount":"Review {count} actions","reviewCountSingular":"Review {count} action","showFullDetails":"Show full details","approve":"Approve","approveCount":"Approve {count} actions","approveCountSingular":"Approve {count} action","approving":"Approving…","approved":"Approved","decline":"Decline","declineAction":"Decline action","declined":"Declined","requestChanges":"Request changes","submittingRequest":"Submitting request…","submitRejection":"Submit rejection","submittingRejection":"Submitting rejection…","batchCancellationReason":"Batch cancellation reason","processing":"Processing","actionDetails":"Action details","technicalDetails":"Technical details","externalDataProcessing":"External data processing","processor":"Processor","dataShared":"Data shared","acknowledgeExternalProcessing":"I acknowledge this action sends the listed data to {processorName}","invalidExternalProcessingTitle":"External processing details unavailable","invalidExternalProcessingDescription":"The external data-processing disclosure is invalid. Decline or request changes; this action cannot be approved.","showBoundedJson":"Show bounded preview","showCompleteJson":"Show complete JSON","completeJsonUnavailable":"Complete JSON could not be displayed safely.","showFewerFields":"Show fewer fields","additionalFieldOmitted":"{count} additional field omitted from preview. Show all","additionalFieldsOmitted":"{count} additional fields omitted from preview. Show all","fieldWithoutValueHidden":"{count} field without a value is hidden ({names}). Show all","fieldsWithoutValueHidden":"{count} fields without a value are hidden ({names}). Show all","fullBody":"Full body","bodyPreview":"Body preview","truncatedBodyOnly":"The source provided only a truncated body preview.","requestInput":"Request input","decisionContext":"Decision context","workflowGraph":"Workflow preview","resolved":"Changes requested","noLongerPending":"No longer pending","instructionHeading":"Requested changes","textareaLabel":"Change request","help":"Describe what should be revised before this action can be approved.","validation":"Enter a change request before submitting.","cancel":"Cancel","submit":"Submit request","retryError":"The change request could not be submitted. Your draft is saved; try again.","sizeError":"This request is too large to submit. Shorten it and try again."},"home":{"recentlyFinished":"Recently finished","recentDocuments":"Recent documents","recentWorkflows":"Recent workflows","runState":{"completed":"Completed","failed":"Failed","cancelled":"Cancelled","pending":"Running","resuming":"Resuming"},"attentionToast":"{count} chats need your attention","seeAll":"See all ({count})","seeLess":"Show less","templatesHeading":"Templates","templates":{"summarizeDoc":{"title":"Summarize a document","prompt":"Summarize this document: "},"compareFiles":{"title":"Compare two files","prompt":"Compare these two files and list the key differences: "},"statusUpdate":{"title":"Draft a status update","prompt":"Draft a short status update about: "}}},"outcome":{"documentGenerated":"Document generated","workflowCompleted":"Workflow completed","workflowFailed":"Workflow failed","calculationCompleted":"Calculation completed","calculationFailed":"Calculation failed","processCompleted":"Completed","processFailed":"Process failed"},"header":{"newChat":"New chat","retryStream":"Retry stream","continueStream":"Continue","breadcrumbRoot":"Chats"},"errors":{"waitForStreamingBeforeAttachments":"Please wait for the current response before sending attachments.","failedToUploadAttachments":"Failed to upload one or more attachments. Please retry.","failedToSendMessage":"Failed to send message","steerUnavailable":"The response cannot accept a steer right now. The message remains queued.","liveUpdatesStopped":"Live updates stopped because this page is out of date. Reload the page to continue.","processAttachedFiles":"Please process attached files.","byokFallbackConfirm":"Tenant provider failed ({reasonCode}). Use platform fallback for this one request?","billingLimitReached":"The monthly usage limit has been reached, so this message was not sent. An owner or admin can raise it under Settings → Usage & limits; otherwise the allowance resets at the start of the next billing period.","billingLimitChanged":"The usage budget was being updated while sending. Please try again.","billingReservationInvalid":"Usage accounting for this message could not be verified, so it was not sent. Please try again.","billingCapacityExceeded":"Too many requests are in flight right now, so this message was not sent. Please try again in a moment."},"notSent":{"messageNotice":"Your message wasn't sent. Check your connection and try again.","retry":"Retry","checkFailed":"Couldn't check whether your message arrived. Check your connection and try again.","deliveryUnknown":"Connection lost while sending. Your message may still be delivered — we'll update this chat when it arrives.","firstMessageNotice":"No messages were saved in this chat. If you sent one, it didn't arrive — please send it again."},"welcome":{"subtitle":"What do you want to figure out today?","greeting":{"morning":"Good morning","afternoon":"Good afternoon","evening":"Good evening"},"suggestionCards":{"searchKnowledgeBase":{"title":"Search knowledge base","description":"Find answers from your connected documents","query":"Search my knowledge base for "},"researchTopic":{"title":"Research a topic","description":"Deep dive into any subject with web research","query":"Research "},"buildWorkflow":{"title":"Build a workflow","description":"Create an automated multi-step process","query":"Help me create a workflow that "},"draftEmail":{"title":"Draft an email","description":"Compose and send professional emails","query":"Draft an email to "}}},"input":{"placeholder":"Ask something...","actionsMenu":"Files, people, and shortcuts","menuAttach":"Attach file","menuReferenceFile":"Reference a file or folder","menuMentionTeammate":"Mention a teammate","menuRunShortcut":"Run a shortcut","menuUseSkill":"Use a skill","menuSaveShortcut":"Save chat as skill","menuBack":"Back","menuSearchFiles":"Search files and folders…","menuSearchTeammates":"Search teammates…","menuSearchShortcuts":"Search shortcuts…","menuSearchSkills":"Search skills…","loadingConversation":"Loading conversation...","waitingApprovals":"Waiting for required decisions...","uploadingAttachments":"Uploading attachments...","typeToQueue":"Type to queue...","queued":"Queued","clearAll":"Clear all","sendQueuedNow":"Send queued message now","steerQueued":"Steer active response","steerTextOnly":"Only text-only queued messages can steer","editQueued":"Edit queued message","removeQueued":"Remove queued message","queuedWaitingForTurn":"Waiting for the current response to finish...","queuedAttachments":{"one":"{count} attachment","other":"{count} attachments"},"disclaimer":"Results can contain generated content. Validate before execution.","sendMessage":"Send message","stopGenerating":"Stop generating","counterOverCap":"too long to send","sendDisabledOverCap":"Message exceeds {max} characters","petCommandHelp":"Use /pet, /pet show, /pet hide, or /pet reset."},"mentions":{"loadFailed":"Could not load these choices. Close and reopen the menu to try again.","noMatches":"No files match.","loading":"Loading files...","groupKnowledge":"Files","groupFolders":"Folders","groupWorkspaceGroups":"Workspace Groups","groupPeople":"People","groupMemberCountOne":"{count} member","groupMemberCountMany":"{count} members","findSponsor":"Find someone with the right access","folderLimit":"You can reference up to {max} folders in one message.","fallback":{"upload":"Uploaded file","onedrive":"OneDrive item","googledrive":"Google Drive item","notion":"Notion page","onenote":"OneNote page","unknown":"Knowledge item"}},"voice":{"record":"Record voice input","microphone":"Microphone","microphoneDefault":"System default","microphoneChoose":"Choose microphone","microphoneCurrent":"Microphone: {name}","microphoneFallbackLabel":"Microphone {n}","microphonePermissionHint":"Start a recording once to allow microphone access, then your microphones appear here.","microphoneUnavailable":"Selected microphone unavailable — using the system default","stop":"Stop recording","cancel":"Cancel recording","uploading":"Uploading recording...","transcribing":"Transcribing...","completed":"Transcription complete.","transcriptAttached":"The transcript was too long for the message and was attached as a text file.","transcriptTooLongError":"The transcript is too long for the message and could not be attached.","noSpeech":"No speech detected. Please try again.","micDenied":"Microphone permission denied","micUnsupported":"Microphone not supported in this browser","error":"Transcription failed. Please try again."},"message":{"steering":"Steering…","processing":"Processing...","routing":"Thinking...","documents":"Searching documents...","context":"Synthesizing context...","toolCall":"Executing tools...","answer":"Generating answer...","activity":{"searching":"Searching","searchingKnowledge":"Searching knowledge","reading":"Reading","running":"Running code","charting":"Building a chart","analyzing":"Analyzing data","researching":"Researching","sending":"Sending","validating":"Validating","usingTools":"Using tools","datasets":"Working with datasets","email":"Working on email","files":"Working with files","workflows":"Working on workflows","integrations":"Working on integrations","systems":"Accessing systems","working":"Working"},"toolUnitOne":"tool","toolUnitOther":"tools","viewSources":"View Sources ({count})","suggestedQueries":"Suggested queries","usedToolsOne":"Used 1 tool","usedToolsOther":"Used {count} tools","viewReasoning":"View reasoning","reasoningLabel":"Reasoning","liveReasoningLabel":"Live reasoning","actionCopy":"Copy","actionCopied":"Copied","actionHelpful":"Helpful","actionNotHelpful":"Not helpful","actionFeedback":"Feedback","feedbackModalTitle":"Send feedback","feedbackTextLabel":"Comment","feedbackTextPlaceholder":"Add a short note...","feedbackCategoryLabel":"Category","feedbackSharingNotice":"When you submit, workspace admins and platform admins can see your name and email, this chat's title, the message this feedback is about, and your comment.","feedbackCancel":"Cancel","feedbackSubmit":"Submit","feedbackEmptyError":"Add a note before submitting.","feedbackSubmitted":"Feedback submitted","feedbackAlreadySubmitted":"Feedback already submitted","feedbackSubmitFailed":"Couldn't send feedback.","memoryUpdated":"Updated memory","memoryTooltip":"What the assistant learned to improve future chats."},"sources":{"title":"Knowledge Sources","description":"References and context used to generate this response.","tabs":{"documents":"Documents ({count})","quotes":"Quotes ({count})","synthesis":"Synthesis"},"contextSynthesis":"Context Synthesis","documentFallbackTitle":"Document {index}","types":{"chatHistory":"Past chat"},"chatHistory":{"roles":{"user":"You","assistant":"Assistant"},"metadataSeparator":"·"},"empty":{"documents":"No documents were returned for this answer.","quotes":"No extracted quotes were returned.","synthesis":"No synthesis text was returned."}},"messageContent":{"longResponseNotice":"Long response ({size} KB). Only the beginning is shown.","showAll":"Show all","showLess":"Show less"},"attachments":{"attachedFiles":"Attached files","generatedFiles":"Generated files","downloadFailed":"Failed to download file","extractionPending":"Extraction queued","extractionProcessing":"Extraction in progress","extractionProcessed":"Extraction ready","extractionFailed":"Extraction failed","processingAttachments":"Processing attachments…","indexingProgress":"Indexing {done} of {total} files","filePendingProcessing":"{filename} is still processing…","filePendingReady":"{filename} is ready — Continue","filePendingFailed":"{filename} — extraction failed","transcribingPending":"Transcription queued","transcribing":"Transcribing…","transcriptReady":"Transcript ready","transcriptionFailed":"Transcription failed","compressing":"Compressing…","transcribingPart":"Transcribing part {current} of {total}…","mediaNoAudioTrack":"This file has no audio track to transcribe","mediaNormalizationFailed":"The file could not be decoded","mediaTooLong":"The recording is too long to transcribe","mediaToolingUnavailable":"Transcription is temporarily unavailable","mediaNormalizationTimeout":"Processing took too long, retrying…","pdfPasswordRequired":"This PDF is password-protected. A workspace admin can add its password under Settings → Data privacy.","transcript":"Transcript","transcriptDialogTitle":"Transcript","openImagePreview":"Open image preview for {filename}"},"secretInput":{"submitButton":"Submit","submittedBadge":"Secret provided","placeholder":"Paste the value","transmittedSecurely":"Sent securely and never shown in the chat.","emptyError":"Please enter a value."},"userPrompt":{"somethingElse":"Something else","customAnswerLabel":"Your answer","waitingReason":"The chat is waiting for your answer before it can continue.","answerHint":"You can edit this answer. Submit answer sends the text shown here and continues the chat.","submitting":"Submitting answer…","submitButton":"Submit answer","submittedBadge":"Answer sent","placeholder":"Enter your answer...","emptyError":"Please enter a value."},"saveShortcut":{"title":"Save as workflow shortcut","description":"Choose the steps to include.","cancel":"Cancel","save":"Save shortcut","saving":"Saving…","saved":"Shortcut saved","cancelled":"Shortcut not saved"},"structuredCards":{"chart":{"loading":"Loading chart…","retry":"Retry chart","viewData":"View data","hideData":"Hide data","summary":"{chartType} with {categoryCount} categories and {seriesCount} series ({seriesNames}). Ranges: {seriesRanges}.","scatterSummary":"{chartType} with {pointCount} points across {seriesCount} series ({seriesNames}). X range: {xRange}. Y range: {yRange}.","source":"Source","category":"Category","series":"Series","xValue":"X","yValue":"Y","types":{"bar":"Bar chart","line":"Line chart","area":"Area chart","pie":"Pie chart","doughnut":"Doughnut chart","horizontal_bar":"Horizontal bar chart","stacked_bar":"Stacked bar chart","stacked_area":"Stacked area chart","combo":"Combo chart","scatter":"Scatter plot"}},"chartPreview":"Preview","previewFailed":"Preview unavailable.","connectionReauth":"Connection Sign-In","connectionReauthButton":"Reauthenticate","manageConnection":"Manage connection","connectionReauthExpired":"The sign-in session for this connection has expired.","connectionReauthFailed":"Could not start reauthentication. Please try again.","fileDownload":"File Download","tableOutput":"Table Output","previews":"Previews"},"deepResearch":{"planTitle":"Deep research plan","sources":"Sources","success":"Success","scope":"Scope","budget":"Budget","approvePlan":"Approve plan","requestEdits":"Request edits","startPlanning":"Start planning","planEditPlaceholder":"Ask for a plan change","clarificationDetailsPlaceholder":"Add details"},"toolCard":{"searchingPrefix":"Searching","pastChats":{"searching":"Searching past chats for: {query}","recent":"Looking through recent chats","reading":"Reading a past chat","readingTitle":"Reading past chat: {title}"},"status":{"building":"Building...","ready":"Ready","running":"Running","done":"Done","error":"Error","unknown":"Unknown"},"aria":{"collapseDetails":"Collapse details","expandDetails":"Expand details"},"sections":{"input":"Input","parameters":"Parameters","request":"Request","response":"Response","result":"Result","error":"Error"}},"planning":{"title":"Planning"},"summarizer":{"title":"Generating response","description":"Summarizing results into a final response."},"suggestions":{"title":"Generating suggestions","description":"Generating follow-up suggestions based on the conversation."},"fileUpload":{"attachFiles":"Attach files","attach":"Attach","dropFiles":"Drop files to attach"}},"archiveDrop":{"summaryOne":"{count} file, {size}","summaryOther":"{count} files, {size}","folderNameLabel":"Folder name","destinationInto":"Uploads into “{folderName}”","visibleTo":"Visible to: {audience}","audiencePrivate":"only you","audiencePrimaryGroup":"your primary group","audienceOrgOnly":"everyone in the workspace","workspaceDefaultAudience":"the workspace default for uploads","skippedHeading":"Skipped {count}","upload":"Upload to Knowledge Hub","inspecting":"Reading archive…","dialogLabel":"Archive drop","uploadingCount":"Uploading {done} of {total}","indexingCount":"Indexing {done} of {total}","entry":{"indexing":"Indexing","indexed":"Ready","failed":"Failed"},"chip":{"readyOne":"1 file","readyOther":"{count} files","indexing":"indexing {done}/{total}","partial":"{done}/{total} ready","remove":"Remove {folderName}"},"skipReason":{"directory":"Folder entry","empty":"Empty file","unsafePath":"Unsafe path","symlink":"Symbolic link","nestedArchive":"Archive inside an archive","unsupportedType":"Unsupported file type","entryTooLarge":"File too large"},"error":{"tooManyEntries":"This archive contains too many files to unpack here.","totalTooLarge":"The contents of this archive exceed the size limit.","ratioExceeded":"This archive expands too much to be processed safely.","archiveTooLarge":"This archive file is too large to unpack here.","unreadable":"The archive could not be read.","unknownFormat":"Only ZIP, TAR and TAR.GZ archives can be unpacked here.","inspectFailed":"The archive could not be inspected.","folderNotCreated":"The folder could not be created, so nothing was uploaded.","uploadIncomplete":"The folder \"{folderName}\" was created and some files may already have been uploaded. Check the folder in the Knowledge Hub before retrying.","oneAtATimeOne":"Drop one archive at a time. {name} was skipped.","oneAtATimeOther":"Drop one archive at a time. {name} and {count} more were skipped."}},"inboxPage":{"filtersLabel":"Filters","backToList":"Back to approvals","errors":{"listTitle":"Approval requests could not be loaded","detailTitle":"Approval details could not be loaded"},"search":{"placeholder":"Search approvals","ariaLabel":"Search approval requests","clear":"Clear search"},"statusFilters":{"pending":"Pending","all":"All","approved":"Approved","denied":"Denied","expired":"Expired"},"list":{"previousPage":"Previous page","nextPage":"Next page","empty":{"title":"No approvals in this view","description":"Requests from chats and workflows will appear here."}},"request":{"status":{"pending":"Pending","approved":"Approved","denied":"Denied","expired":"Expired","executed":"Executed","executing":"Executing","consumed":"Consumed","failed_after_approval":"Failed after approval"},"source":{"chatThread":"Chat thread {threadId}","workflowRun":"Workflow run #{workflowRunId}"}},"toasts":{"approvalAllowed":"Approval allowed","approvalDenied":"Approval denied","submitFailed":"Failed to submit approval decision"},"emptyState":{"title":"Select an approval","description":"Open a request to review the requested action, affected systems, and optional decision history."},"notFound":{"title":"Approval not found","description":"This request may no longer be assigned to you or may have been removed."},"notifications":{"loading":"Loading Inbox","search":{"label":"Search notifications","placeholder":"Search title or message"},"moreActions":"More actions","markAllRead":"Mark all as read","views":{"label":"View","needsYou":"Needs you","inbox":"Inbox","archived":"Archived"},"unreadOnly":"Unread only","unreadOnlyUnavailable":"Only available in Inbox","sort":{"label":"Sort","newest":"Newest","oldest":"Oldest"},"date":{"label":"Date","from":"From","to":"To","invalidRange":"The end date must be after the start date."},"kinds":{"label":"Notification type","notifications":"Notifications","workflows":"Workflows","mentions":"Mentions","remove":"Remove filter {kind}"},"groups":{"today":"Today","yesterday":"Yesterday","thisWeek":"This week","earlier":"Earlier"},"recipient":{"user":"Direct notification","groupNamed":"{name} group","groupFallback":"Group {groupId}","sharedGroupState":"Shared for everyone in this group."},"category":{"workflow_step_approval":"Needs approval","workflow_step_input":"Needs input","workflow_run_failed":"Run failed","workflow_run_triggered":"Workflow triggered","sponsor_approval":"Approval requested","chat_mention":"Mentioned you in chat"},"workflowRun":{"triggeredBy":"This workflow was triggered by \"{trigger}\".","stepWaitingInput":"Step \"{step}\" is waiting for your input.","stepWaitingApproval":"Step \"{step}\" is waiting for your approval.","stepWaitingSponsor":"Step \"{step}\" is waiting for a colleague's approval.","stepFailed":"Step \"{step}\" failed.","resolvedAt":"Resolved {time}","resolved":"Resolved","viewWorkflow":"View workflow","openRun":"Open run","unavailable":"This run is no longer available.","process":{"openInProcess":"Open in process","decideInProcess":"Decide this step in its process task.","decidedBy":"{decision} by {person} at {time}","you":"you"}},"sponsorApproval":{"heading":"Approval requested","approvedAtBy":"Approved at {date} by {user}","deniedAtBy":"Denied at {date} by {user}","userFallback":"User #{userId}","unavailable":"This approval request is no longer available.","reason":"Reason (optional)","reasonLabel":"Reason","optional":"Optional","approve":"Approve","deny":"Deny","approveConfirmation":"This approval will be recorded and the action may proceed. Continue?","denyConfirmation":"This action will be denied and your decision recorded. Continue?","details":{"scope":"Scope","targetSystem":"Target system","operation":"Operation","resolvedInput":"Resolved input","sequence":"Approval sequence","riskReasons":"Risk reasons","borrowedConnectors":"Borrowed connectors","evidence":"Evidence","thirdPartyProcessing":"Third-party processing","decisionHistory":"Decision history","noDecisions":"No decision recorded yet.","approved":"Approved","denied":"Denied"},"toasts":{"allowed":"Approval allowed","denied":"Approval denied","failed":"Failed to submit approval decision"}},"list":{"empty":{"title":"No notifications in this view","description":"Notifications matching this filter will appear here."},"emptyNeedsYou":{"title":"Nothing needs you right now","description":"Approvals, inputs and actions waiting on you appear here."},"emptyArchived":{"title":"No archived notifications","description":"Archived notifications appear here."},"unread":"Unread","actionCountOne":"{count} action","actionCountMany":"{count} actions","hasAttachments":"Includes attachments","hasAction":"Includes an action","loadMore":"Load more","loadingMore":"Loading more…","verbs":{"approve":"Approve","answer":"Answer","act":"Action needed"}},"actions":{"markRead":"Mark as read","markUnread":"Mark as unread","archive":"Archive","restore":"Restore","more":"More actions"},"backToList":"Back to notifications","emptyState":{"title":"Select a notification","description":"Open a trusted action to review its context and choose the next step."},"notFound":{"title":"Notification not found","description":"This notification may have been archived, removed, or assigned elsewhere."},"errors":{"listTitle":"Notifications could not be loaded","listDescription":"Try loading the notification list again.","detailTitle":"Notification details could not be loaded","detailDescription":"Try loading this notification again.","loadMore":"More notifications could not be loaded","retry":"Try again"},"detail":{"attachments":"Attachments","actions":"Actions","knowledgeItem":"Knowledge item {itemId}","from":"From:","workflow":"Workflow:","nextActions":"Next actions","waitingForYou":"Waiting for you"},"actionReview":{"technicalDetails":"Details","actionDetails":"Action Details","requestedBy":"Requested by","technicalSource":"Source","viewRun":"View run","type":"Type","risk":"Risk","executionScope":"Execution scope","expires":"Expires","types":{"acknowledgement":"Acknowledgement","continueInChat":"Continue in chat","openWorkspacePage":"Open workspace page","openBrowserExtension":"Open browser extension","runWorkflow":"Run workflow","retiredAutomation":"Retired automation"},"risks":{"passive":"Records a confirmation only","handoff":"Opens another workspace","navigation":"Opens a page","execution":"Starts automated work"},"scopes":{"firstGroupMember":"First group member only","eachRecipient":"Each recipient separately"},"acknowledge":"Acknowledge","acknowledgementWarning":"This acknowledgement will be recorded and it's irreversible. Continue?","acknowledgedAtBy":"Acknowledged at {date} by {user}","workflow":"Workflow","input":"Input","runWorkflow":"Run Workflow","workflowWarning":"This action will be recorded and it's irreversible. Continue?","workflowRanByAt":"Workflow ran by {user} at {date}","sendToChat":"Send to chat","chatHandoffWarning":"The message below will be sent to the AI Chat, and this action will be recorded. Continue?","chatHandoffMessageLabel":"Prompt","chatHandoffSent":"Message was sent to chat at {date} by {user}","byYou":"you","yes":"Yes","no":"No","draftPrompt":"Draft prompt","attachments":"Attachments","none":"None","sourceContext":"Source context","messages":"messages","registeredRoute":"Registered route","registeredCommand":"Registered command","fallbackRoute":"Fallback route","pinnedTarget":"Pinned target","revision":"Revision","targetDigest":"Target digest","safeInputPreview":"Safe input preview","redactions":"Redactions","exactPrompt":"Exact prompt","writeImpact":"Write impact","capabilities":"Capabilities","workspace":"workspace","external":"external","confirmDescription":"Confirm only after reviewing the exact server-prepared action.","cancel":"Cancel","confirmAction":"Confirm action","revoked":"Revoked","execution":"Execution","claimedBy":"claimed by"},"execution":{"handoffUnavailable":"This Inbox chat handoff is unavailable.","title":"Execution status","actor":"Actor","scope":"Scope","attempts":"Attempts","updated":"Updated","claimant":"Claimant","nextAttempt":"Next attempt","acknowledged":"Acknowledged","continueChat":"Continue in chat","openDestination":"Open destination","openExtension":"Open extension","workflowRunLinked":"Workflow run linked","workflowStarting":"Starting workflow…","workflowRunning":"Workflow is running.","workflowLaunchFailed":"Could not start the workflow.","workflowFailed":"The workflow run failed.","workflowCancelled":"Workflow action cancelled.","retiredDestination":"This destination is no longer available.","retiredAction":"This legacy action is retired and cannot be opened.","retry":"Retry","release":"Release claim","history":"Execution history","earlierEvents":"Earlier events are retained on the server."},"severity":{"info":"Info","success":"Success","warning":"Warning","error":"Error"},"source":{"system":"System notification","api":"API notification","workflow":"Workflow notification","agent":"Assistant notification","chat":"Chat notification","extension":"Extension notification","other":"Notification"},"actionResult":{"in_progress":"Running","succeeded":"Completed","failed":"Failed"},"toasts":{"actionCompleted":"Action completed","actionFailed":"Action failed","markedRead":"Notification marked as read","markedUnread":"Notification marked as unread","archived":"Notification archived","restored":"Notification restored","markedAllRead":"Matching notifications marked as read","deliveryUpdateFailed":"Notification could not be updated","extensionNoFallback":"The extension is unavailable and no reviewed fallback is available.","extensionFailureReportFailed":"The extension failure could not be recorded. Try again."}}},"workflows":{"pageTitle":"Workflows","runErrors":{"service_unavailable":"A service this workflow uses was briefly unavailable. Your inputs are saved — try again.","timeout":"A step took too long to answer. Your inputs are saved — try again.","rate_limited":"A service this workflow uses is getting too many requests right now. Try again in a minute.","invalid_input":"Something in the input didn't fit this step. Check your inputs and try again.","permission_denied":"You or the connected account lacks access to something this workflow needs. Ask an admin.","not_found":"Something this workflow needs no longer exists. Ask the workflow owner to check it.","unknown":"The workflow stopped because of an error."},"runFailure":{"title":"{workflowName} failed","showRawDetails":"Show raw details","hideDetails":"Hide details","dismiss":"Dismiss","dismissLabel":"Dismiss shortcut error","retry":"Retry","retrying":"Retrying…","retryFailed":"The retry could not be started.","genericError":"The operation returned an error."},"runCard":{"status":{"needsInput":"Needs input","running":"Running","completed":"Completed","failed":"Failed","cancelled":"Cancelled"},"expandSteps":"Expand steps","collapseSteps":"Collapse steps"},"extensionApprovalExecutor":"Executor","extensionApprovalIdentityUnavailable":"Approval unavailable: the destination identity is missing or invalid. Cancel this run and try again.","extensionApprovalConnectedApiDestination":"Connected API destination","approval":{"nodeNeedsApproval":"Node \"{node}\" needs approval","headline":"Approve step \"{step}\"?","wantsTo":"is paused and wants to: {action}","why":"Your workspace policy requires approval for this step.","whyDestructive":"This step deletes or overwrites data. Your workspace policy requires approval.","showDetails":"Show details ({count})","hideDetails":"Hide details","makeChanges":"Edit","doneEditing":"Done","destination":"Destination","approve":"Approve","approving":"Approving…","accept":"Accept","accepting":"Accepting…","rejectWithFeedback":"Reject with feedback","feedbackHint":"Feedback will be sent to \"{node}\" and the workflow will continue from there","feedbackDiscardsEdits":"Any edits to the input will be discarded.","feedbackLabel":"Feedback","feedbackPlaceholder":"What should be different?","sendFeedback":"Send feedback","sendingFeedback":"Sending…","cancelRun":"Cancel run","cancelling":"Cancelling…","cancelConfirm":"This stops the whole run.","cancelYes":"Yes, cancel run","cancelNo":"Keep waiting","callApi":"call {method} {host}","itemCountOne":"1 item","itemsCount":"{count} items"},"userInput":{"nodeNeedsInput":"Node \"{node}\" needs input","headline":"\"{step}\" needs a choice","wantsOption":"is paused and wants an option","pickOne":"Pick one","filterPlaceholder":"Type to filter…","noMatches":"No matches.","noItems":"No items available"},"capturedPage":{"label":"Captured page"},"continueWithoutFile":"Continue without file","continuingWithoutFile":"Continuing…","pageDescription":"Mocked workflow implementation UI with builder, runs, and settings.","libraryTitle":"Workflow Library","workflowsCount":"{count} workflows","new":"New","searchPlaceholder":"Search workflows...","noWorkflowsFound":"No workflows found","noWorkflowsHint":"Try a different query or create a new workflow.","updatedLabel":"Updated {value}","selectWorkflowTitle":"Select a workflow to start editing","selectWorkflowDescription":"Choose one from the library or create a new workflow.","ownerAndUpdated":"Owner: {owner} • Updated {updated}","actions":{"pause":"Pause","activate":"Activate","duplicate":"Duplicate","runTest":"Run test","addStep":"Add step","simulateRun":"Simulate Run"},"stats":{"totalRuns":"Total Runs","successRate":"Success Rate","connectedIntegrations":"Connected Integrations"},"tabs":{"builder":"Builder","runs":"Runs","settings":"Settings"},"graph":{"title":"Workflow Graph","description":"Mocked node flow for frontend implementation."},"executionPolicy":{"title":"Execution Policy","retries":"Retries","retriesValue":"3 attempts","timeout":"Timeout","timeoutValue":"45 seconds","approvalMode":"Approval Mode","approvalModeValue":"High-risk only"},"test":{"title":"Test Playground","description":"Paste sample payload and run a mocked execution.","outputTitle":"Simulation output","defaultOutput":"Ready to test. Run simulation to generate structured workflow output.","successOutput":"Simulation completed. Classified as Billing and routed to Tier-1 queue.","failedOutput":"Simulation failed at integration step: temporary upstream timeout."},"integrations":{"title":"Connected Integrations","connected":"Connected"},"runs":{"title":"Run History","description":"Latest executions for this workflow.","noRuns":"No runs yet","noRunsHint":"Use \"Run test\" to generate a mock execution.","table":{"run":"Run","status":"Status","duration":"Duration","started":"Started","tokens":"Tokens"},"detailTitle":"Run Detail","detailHint":"Select a run to inspect input and output previews.","input":"Input","output":"Output","duration":"Duration","tokens":"Tokens"},"settings":{"variablesTitle":"Environment Variables","variablesDescription":"Mocked configuration values for this workflow.","noVariables":"No variables defined yet.","secretValue":"Secret value","governanceTitle":"Governance","governance":{"requireApproval":"Require approval","requireApprovalHint":"For high-risk branches","automaticRetries":"Automatic retries","automaticRetriesHint":"Up to 3 attempts","executionLogging":"Execution logging","executionLoggingHint":"Store input/output snapshots"}},"status":{"active":"active","draft":"draft","paused":"paused","success":"success","running":"running","failed":"failed","waiting":"waiting"},"kinds":{"trigger":"Trigger","ai":"AI","integration":"Integration","approval":"Approval","output":"Output"},"relative":{"minutesAgo":"{count}m ago","hoursAgo":"{count}h ago","daysAgo":"{count}d ago","inMinutes":"in {count}m","inHours":"in {count}h","inDays":"in {count}d"},"newWorkflow":{"name":"New Workflow","description":"Describe your automation intent and wire steps in the builder.","owner":"Unassigned","triggerLabel":"Manual","schedule":"On demand","integrationNone":"None","stepTitle":"Define trigger","stepDetail":"Add the event, webhook, or schedule that starts this workflow."},"duplicateSuffix":"Copy"},"workflowsBuilder":{"pageTitle":"Workflow Builder","pageDescription":"Canvas-based automation studio for audit-grade workflow design, validation, and simulation.","retry":"Retry","mainTabs":{"build":"Build","runs":"Runs","settings":"Settings"},"library":{"title":"Workflow Library","popoverTitle":"Workflows","searchPlaceholder":"Search workflows...","create":"Create","loading":"Loading workflows...","empty":"No workflows found.","showAttention":"Show workflows needing attention","showAll":"Show all workflows","attentionEmpty":"No matching workflows need attention.","attentionOne":"{count} run needs your attention","attentionMany":"{count} runs need your attention"},"toolbar":{"askAi":"Ask AI","runNow":"Run Now","runNowPending":"Running","setActive":"Set workflow active","setInactive":"Set workflow inactive","switching":"Switching workflow…","newNode":"New Node","issues":"Issues","publishToChat":"Publish to chat…","publishAsExtensionShortcut":"Publish as extension shortcut…","dirty":"Unsaved changes","saved":"Saved","save":"Save","saving":"Saving...","undo":"Undo","redo":"Redo","validate":"Validate","validating":"Validating...","run":"Run","running":"Running...","simulate":"Simulate","simulating":"Simulating...","duplicate":"Duplicate","archive":"Archive","delete":"Delete","moreActions":"More workflow actions","exportPackage":"Export package","exportPackageRequiresSaved":"Save changes before export","importPackage":"Import package","importPackageRequiresSaved":"Save changes before import","deleted":"Workflow deleted","deleteFailed":"Couldn't delete the workflow"},"triggerHealth":{"title":"Connector trigger","showDetails":"Show trigger details","labels":{"active":"Trigger active","inactive":"Trigger inactive","paused":"Trigger paused","error":"Trigger error","unavailable":"Trigger unavailable","notConfigured":"Trigger not configured","loading":"Checking trigger","requestError":"Trigger status unavailable"},"descriptions":{"subscriptionActive":"The saved trigger subscription is active and ready to receive new events.","workflowInactive":"The saved workflow is inactive, so its connector trigger is not listening.","subscriptionPaused":"The trigger subscription is paused and will not start new workflow runs.","subscriptionError":"The trigger subscription has an error and is not listening for new events.","subscriptionMissing":"No subscription matches the connector trigger in the saved workflow.","triggerConfigIncomplete":"The saved connector trigger configuration is incomplete or cannot be resolved.","notConfigured":"The saved workflow does not contain a connector trigger.","loading":"Checking the saved trigger subscription…","requestError":"Trigger health could not be loaded. It will retry automatically."},"fields":{"workflow":"Saved workflow","subscription":"Subscription","lastSucceeded":"Last successful poll","lastPolled":"Last poll attempt","lastError":"Last known error","schedule":"Schedule","nextRun":"Next run"},"schedule":{"title":"Schedule trigger","descriptions":{"subscriptionActive":"The saved schedule is active. The next run starts at the time shown below.","workflowInactive":"The saved workflow is inactive, so its schedule will not start runs.","subscriptionPaused":"The schedule is paused and will not start new workflow runs.","subscriptionError":"The schedule stopped after a run could not be started. Save the workflow again to resume it.","subscriptionMissing":"No schedule exists for the saved workflow yet.","triggerConfigIncomplete":"The saved schedule is incomplete, so no runs are planned.","notConfigured":"The saved workflow does not contain a schedule trigger."}},"statuses":{"draft":"Inactive","active":"Active","archived":"Archived","paused":"Paused","error":"Error"},"notYet":"Not yet","none":"None","unsavedNote":"Showing the last saved configuration. Save changes to refresh trigger health."},"deleteDialog":{"title":"Delete workflow?","description":"\"{name}\" will be removed from your workspace and its triggers will stop. You can't undo this here.","cancel":"Cancel","confirm":"Delete"},"archiveDialog":{"title":"Archive workflow?","description":"\"{name}\" will stop appearing as runnable. Workflows that use it can no longer start new runs.","cancel":"Cancel","confirm":"Archive"},"callersWarning":{"title":"This workflow is currently used by the following workflows:","inaccessible":"{count} additional workflows you cannot view"},"packageDialog":{"export":{"title":"Export workflow package","description":"Prepare a portable workflow package with its graph and dependency manifest.","selectWorkflow":"Select a workflow to export.","preparing":"Preparing package","retry":"Retry export"},"import":{"title":"Import workflow package","description":"Preview a workflow package before importing it as a draft.","chooseFile":"Choose package file","readingFile":"Reading {name}","pasteJson":"Paste package JSON","previewPackage":"Preview package","importedWorkflowName":"Imported workflow name","importedWorkflowDescription":"Description","importedToast":"Workflow imported","alphaplanTitle":"ALPHAPLAN 5 target connections","alphaplanHelp":"Choose a connection for each ALPHAPLAN step. Each change refreshes the preview before import.","alphaplanConnection":"ALPHAPLAN 5 connection for {node}","connectorTitle":"Connector target connections","connectorHelp":"Choose a connection for each group of connector steps. A single ready connection is selected automatically. Each change refreshes the preview before import.","connectorConnection":"{connector} connection for {nodes}","connectorSelectConnection":"Select a connection…","noConnectorConnections":"Connect {connector} in Knowledge sources to use these steps.","noGrantedConnectorConnections":"Reconnect {connector} with write access in Knowledge sources to use these steps.","mcpTitle":"MCP target servers","mcpHelp":"Choose a server for each group of MCP steps. It must offer every tool the steps call. A single matching server is selected automatically. Each change refreshes the preview before import.","mcpServer":"Server for {server} (tools: {tools})","mcpSelectServer":"Select a server…","noMcpServers":"Connect an MCP server that offers {tools} under Tools, and turn on \"Enable for workflows\", to use these steps."},"actions":{"close":"Close","cancel":"Cancel","copied":"Copied","copyJson":"Copy JSON","downloadPackage":"Download package","importAsDraft":"Import as draft"},"summary":{"title":"Package summary","workflowName":"Workflow name","packageSchema":"Package schema","graphVersion":"Graph version","compileStatus":"Compile status","dependencies":"Dependencies","noDependencies":"No dependencies","compileErrors":"Compile errors","diagnostics":"Diagnostics"},"preview":{"title":"Preview summary","suggestedWorkflowName":"Suggested workflow name","resolvedDependencies":"Resolved dependencies","needsSetup":"Needs setup after import","compileErrorBlockers":"Compile-error blockers: {count}"},"compileStatus":{"valid":"Valid","invalid":"Invalid"},"previewStatus":{"ready":"Ready to import","attention":"Needs attention","blocked":"Cannot import"},"metadata":{"severity":"severity","branch":"branch","mapping":"mapping","details":"details"},"dependencyKinds":{"connected_api":"Connected APIs","knowledge_connector":"Knowledge connectors","connector_trigger":"Connector triggers","knowledge_item":"Knowledge items","llm_model":"LLM models","dataset":"Datasets","feature_flag":"Feature flags"},"errors":{"emptyPackageJson":"Enter workflow package JSON.","invalidJson":"Invalid JSON: {message}","invalidPackage":"This file is not a workflow package.","packageTooLarge":"Workflow package is too large. Maximum size is {max}.","exportFailed":"Could not export package.","previewFailed":"Could not preview package.","importFailed":"Could not import package.","fileReadFailed":"Could not read package file."}},"palette":{"title":"Palette","nodeTypes":"Node Types","tools":"Tool Calls","connectedApis":"Connected APIs","knowledgeConnections":"Knowledge Connections","mcpActions":"MCP Actions","planned":"Planned","dragHint":"Drag nodes/tools to the canvas or click to insert.","addFromTool":"Add","searchPlaceholder":"Search…","showUnavailable":"Show unavailable nodes","newConnectedApiTool":"New Connected REST API tool…","sections":{"triggers":"Triggers","actions":"Actions","controlFlow":"Control Flow","userInputs":"User Inputs","connections":"Connections","mcpServers":"MCP Servers"},"nodeCountOne":"{count} node","nodeCountOther":"{count} nodes","allCategories":"All nodes","backToNode":"Back to node","replaceTitle":"Replace: {label}","backToNodes":"Back to nodes","categories":{"trigger":"Start the workflow by hand, on a schedule or on an event","action":"Use AI, files, datasets, connected apps and MCP tools","control_flow":"Branch, merge, loop or end the flow","user_input":"Ask a person for approval, a choice, text or a file"},"groups":{"ai":"AI","browser":"Browser","datasets":"Datasets","files":"Files","einvoice":"E-Invoicing","inbox":"Inbox","research":"Research","validation":"Validation","exchange_onprem":"Exchange Server","connected_api":"Connected API","gmail":"Gmail","logic":"Logic"}},"nodeTypes":{"start":"Start","end":"End","condition":"Condition","for_each":"For Each","while":"While","tool_call":"Tool Call","send_email":"Send Email","upload_file":"Upload File","call_api":"Call API","delay":"Delay","llm_call":"LLM Call","get_page_context":"Get Page Context","transform":"Transform","generate_document":"Generate Document","user_input_select":"User Input (Select)","user_input_file":"User Input (File)","manual_trigger":"Manual trigger","connector_trigger":"Connector trigger","schedule_trigger":"Schedule trigger","get_page_content":"Get page content","validate_iban":"Validate IBAN","validate_address":"Validate address","web_search":"Web search","web_crawl":"Read web page","query_dataset_rows":"Query dataset rows","upsert_dataset_rows":"Upsert dataset rows","create_inbox_notification":"Create inbox notification","create_inbox_chat_handoff":"Create inbox chat handoff","create_inbox_route":"Create inbox route","create_inbox_extension_handoff":"Create inbox extension handoff","create_inbox_workflow_trigger":"Create inbox workflow trigger","extract_pdf_form_fields":"Extract PDF form fields","extract_docx_template_fields":"Extract DOCX template fields","validate_xml_against_xsd":"Validate XML against XSD","json_to_xml":"Convert JSON to XML","calculate":"Calculate","extract_document":"Extract document","extract_text":"Extract Text","fill_pdf_form":"Fill PDF form","fill_docx_template":"Fill DOCX template","edit_docx_text":"Edit DOCX text","generate_xml_from_xsd":"Generate XML file","to_text_file":"To text file","to_csv_file":"To CSV file","parse_csv_file":"Parse CSV file","list_files":"List files","download_file":"Download file","einvoice_create":"Create e-invoice","einvoice_read":"Read e-invoice","einvoice_validate":"Validate e-invoice"},"extractDocument":{"description":"Extract evidence-backed structured data from every page of a PDF, including handwriting and stamps.","file":{"label":"PDF file","description":"Map a PDF file from an earlier workflow step or enter a Knowledge Hub item ID.","placeholder":"{{nodes.upload.output.file}} or Knowledge Hub item ID"},"instructions":{"label":"Instructions","description":"Describe the facts to extract. Workflow variables are supported; only evidence in the PDF is returned.","placeholder":"Extract the invoice number, total amount, and gross weight…"},"intelligence":{"label":"Intelligence","description":"Choose a fixed quality, latency, and credit usage profile for this extraction.","options":{"fast":"Fast","balanced":"Balanced","high_accuracy":"High accuracy","adaptive":"Adaptive","extreme_accuracy":"Extreme accuracy"},"optionDescriptions":{"fast":"One fast visual pass over every page.","balanced":"Balanced visual extraction with targeted ambiguity checks.","high_accuracy":"Higher-resolution extraction with evidence verification.","adaptive":"Balanced by default, with high-accuracy work where needed.","extreme_accuracy":"Multiple independent passes and strongest verification."},"extremeWarning":"Extreme accuracy runs multiple full-document passes and can be materially slower and more expensive."},"languages":{"label":"Languages","description":"Select the languages expected in the PDF. Keep both selected for mixed-language documents.","options":{"en":"English","de":"German"},"oneRequired":"At least one language must remain selected."},"fields":{"label":"Output fields","description":"Define the top-level values to extract when no advanced response schema is set.","ignored":"Ignored while a response schema is set.","fieldCard":"Output field {count}","name":"Name","namePlaceholder":"invoice_number","type":"Type","descriptionLabel":"Description","descriptionPlaceholder":"What this field contains","required":"Required","add":"Add field","remove":"Remove field","itemType":"Item type","nestedProperties":"Properties of {name}","nestedProperty":"Property {count}","nestedNamePlaceholder":"part_number","addProperty":"Add property","removeProperty":"Remove property"},"responseSchema":{"label":"Response schema","description":"Advanced JSON Schema object. When set, it replaces Output fields.","placeholder":"{\"type\": \"object\", \"properties\": {...}}","invalidJson":"Not applied: enter valid JSON.","nonObject":"Not applied: schema must be a JSON object."}},"alphaplan":{"connection":"ALPHAPLAN 5 connection","selectConnection":"Select a connection…","connectionHelp":"Choose your ALPHAPLAN 5 connection for this operation.","adminHelp":"This operation requires a connection with admin credentials.","noConnections":"Connect an ALPHAPLAN 5 account in Knowledge sources to use this operation.","noAdminConnections":"Connect an ALPHAPLAN 5 account with admin credentials in Knowledge sources to use this operation.","changed":"This connection has changed. Select it again to confirm the current connection before running this node.","unavailable":"The saved connection is unavailable. Select an enabled ALPHAPLAN 5 connection before running this node.","adminRequired":"The saved connection has no admin credentials. Select a connection with admin credentials before running this node."},"mcpTool":{"schemaReview":{"title":"Tool inputs changed","help":"The tool no longer takes these values. Remap each one to an input of the tool, copy it, or remove it.","remap":"Remap","remapLabel":"Remap ({field})","noRemapTarget":"No inputs with the same type ({type})","copy":"Copy","copyLabel":"Copy the value of {field}","copyFailed":"Could not copy the value. Open Edit as JSON to copy it.","remove":"Remove","removeLabel":"Remove {field}","valueDoesNotFit":"This value does not fit the tool's input. Check it against the field."},"savedInput":"Saved input","noInputs":"This tool takes no input parameters.","reselect":"Re-select","binding":{"missing":"This MCP server no longer exists or is no longer shared with you.","off":"{server} is turned off for workflows. Turn it on in its server details.","reconnect":"{server} needs a new sign-in. Reconnect it in its server details.","stale":"{server} was reconnected with another account. Re-select it to run this step with the new account."}},"connectorOperation":{"connection":"{connector} connection","selectConnection":"Select a connection…","connectionHelp":"Choose your own or a shared {connector} connection. The connector determines which account runs the step; some shared targets require your own sign-in.","noConnections":"Connect {connector} in Knowledge sources to use this node.","shared":"Shared","reconnectRequired":"Reconnect required","grantRequired":"Reconnect with write access","stale":"This connection was reconnected after it was selected. Select it again before this node runs.","reselect":"Re-select","unavailable":"The saved connection can't run this node. Select an available {connector} connection.","loading":"Loading node definition…","externalProcessing":{"title":"{processor} processes the data this step sends","required":"This step runs only after you acknowledge it. The acknowledgement is yours and applies to every workflow you run with {processor}.","acknowledge":"Acknowledge","acknowledged":"You have acknowledged {processor}'s third-party processing.","error":"The acknowledgement could not be saved. Try again.","statusError":"Couldn't check your {processor} acknowledgement."},"nestedMode":{"label":"Input mode for {field}","fields":"Fields","mapping":"One mapping","mappingHelp":"One workflow mapping, such as $nodes.<id>.output, supplies the whole object. Entering one replaces the individual fields."},"groups":{"pathParameters":"Path parameters","queryParameters":"Query parameters","payload":"Payload","body":"Request body"}},"scheduleTrigger":{"repeat":{"label":"Repeat","daily":"Daily","weekly":"Weekly","monthly":"Monthly"},"days":"Days","monthly":{"mode":"Monthly mode","byDate":"By date","byWeekday":"By weekday","date":"Date","selectDay":"Select a day…","shortMonths":"Shorter months run on their last day.","occurrence":"Occurrence","weekday":"Weekday","select":"Select…"},"weekdays":{"monday":{"short":"Mon","long":"Monday"},"tuesday":{"short":"Tue","long":"Tuesday"},"wednesday":{"short":"Wed","long":"Wednesday"},"thursday":{"short":"Thu","long":"Thursday"},"friday":{"short":"Fri","long":"Friday"},"saturday":{"short":"Sat","long":"Saturday"},"sunday":{"short":"Sun","long":"Sunday"}},"occurrences":{"first":"First","second":"Second","third":"Third","fourth":"Fourth","last":"Last"},"time":{"label":"Time","help":"Local time in the selected timezone, 24-hour clock.","hour":"Hour","minute":"Minute"},"timezone":{"label":"Timezone","help":"Keeps the chosen local time through daylight-saving changes.","placeholder":"Select timezone…","search":"Search timezones…","empty":"No matching timezone."},"nextRuns":{"label":"Next runs","calculating":"Calculating…","fixFields":"Fix the highlighted fields to preview upcoming runs.","unavailable":"Preview unavailable right now.","shownIn":"Times shown in {timezone}.","deviceZone":"Your device is in {deviceZone}."}},"inspector":{"enumField":{"select":"Select…","notSet":"Not set","useMapping":"Use a mapping…","chooseValue":"Choose from the list"},"idPrefix":"id","kinds":{"apiCall":"API Call","mcpToolCall":"MCP Tool Call","connectorAction":"Connector Action"},"facts":{"mcpServer":"Server","tool":"Tool","connector":"Connector","action":"Action","api":"API","approval":"Approval","approvalNeeded":"Approval needed","approvalNeededHelp":"The workflow stops at this step and asks for approval with the Notification Message."},"model":{"label":"Model","default":"{tier} (default)","tiers":{"light":"Instant","flash":"Fast","reasoning":"Balanced","heavy":"Heavy"}},"title":"Node Inspector","noSelection":"Select a node to edit configuration.","nodeId":"Node ID","label":"Label","config":"Configuration","configHelp":"Edit JSON config for this node.","invalidJson":"Invalid JSON format.","name":"Workflow Name","description":"Workflow Description","formView":"Form","advancedJson":"JSON","inbox":{"unavailableReason":"Inbox workflow nodes are disabled for this workspace.","nodes":{"acknowledgement":{"name":"Create inbox acknowledgement","description":"Create an Inbox item with one acknowledgement action."},"chatHandoff":{"name":"Create inbox chat handoff","description":"Continue an Inbox item in chat with reviewed context."},"route":{"name":"Create inbox route","description":"Open a supported workspace destination from Inbox."},"extensionHandoff":{"name":"Create inbox extension handoff","description":"Open a versioned browser-extension command from Inbox."},"workflowTrigger":{"name":"Create inbox workflow trigger","description":"Start a reviewed workflow from Inbox."}},"fields":{"recipient":"Recipient","title":"Title","body":"Body","severity":"Severity","attachments":"Attachments","actionId":"Action id","actionLabel":"Action label","actionDescription":"Action description","requestedExpiry":"Requested expiry","executionScope":"Execution scope","chatPrefill":"Chat prefill","chatAttachmentRefs":"Chat attachment refs","sourceContext":"Chat source context","destination":"Destination","extensionCommand":"Extension command","fallbackDestination":"Fallback destination","workflowTarget":"Workflow target","workflowInput":"Workflow input"},"help":{"attachments":"Ordered Inbox attachments; maximum 20.","chatSourceContext":"Optional reviewed source session and up to 50 ordered source messages.","fallback":"Used only after a durable extension failure has been reported."},"validation":{"positiveId":"Enter a positive numeric id.","uuid":"Enter a canonical UUID.","jsonObject":"Value must be a non-secret JSON object."},"errors":{"invalidJson":"Not applied: enter a valid JSON object.","attachmentLimit":"Inbox items support at most 20 attachments.","sourceMessageLimit":"Chat source context supports at most 50 messages."}},"generateDocument":{"systemPrompt":"System Prompt","model":"Model","contextSources":"Context Sources","pinnedDocuments":"Pinned Documents","knowledgeSearch":"Knowledge Hub Search","searchQuery":"Search Query","scopeData":"Scope Data","tools":"Tools","deepResearch":"Deep Research","template":"Template","output":"Output","outputPath":"Knowledge Hub Folder Path"},"startNode":{"inputParameters":"Input Parameters","inputParametersHelp":"Define inputs that users provide when running this workflow.","key":"Key","label":"Label","type":"Type","required":"Required","defaultValue":"Default Value","placeholder":"Placeholder","description":"Description","acceptFilter":"Accept (MIME filter)","addParameter":"Add Parameter"},"fileInput":{"mapping":"From an earlier step","knowledgeItem":"Or a Knowledge Hub file","search":"Search the Knowledge Hub…"}},"actions":{"replaceNode":"Replace","deleteNode":"Delete"},"simulation":{"inputTitle":"Simulation Input","errorTitle":"Error details","complete":"Simulation complete — {count} step(s)","failed":"Simulation failed","paused":"Simulation paused — it needs input to continue"},"settings":{"metadataTitle":"Metadata","generate":"Generate","generateName":"Generate name","generateDescription":"Generate description","statusTitle":"Status","advanced":"Advanced settings","advancedHelp":"Execution guardrails for this workflow. Empty fields use the platform defaults.","timeout":"Timeout (seconds)","timeoutHelp":"Maximum total runtime in seconds before the run is stopped. Default {default}, maximum {max}.","maxIterations":"Max loop iterations","maxIterationsHelp":"Upper bound for control-flow loop iterations in one run. Default {default}, maximum {max}.","maxExecutedSteps":"Max executed steps","maxExecutedStepsHelp":"Upper bound for total executed node steps in one run. Default {default}, maximum {max}.","exceedsLimit":"Exceeds the platform maximum of {max} — validation will fail until it is lowered."},"validation":{"title":"Validation","noIssuesTitle":"No issues","refreshHint":"Validate or simulate the workflow to refresh this panel.","validationIssuesTitle":"Validation Issues","simulationIssuesTitle":"Simulation Issues","noSimulationIssues":"No simulation issues.","noIssues":"No validation issues.","valid":"No issues found — this workflow is ready to run.","failed":"Couldn't validate workflow","fixWithAi":"Fix with AI"},"trace":{"title":"Run Trace","empty":"No runs yet. Simulate the workflow to generate a trace.","running":"Running"},"graph":{"dropHint":"Drag from palette to canvas"},"run":{"failed":"Workflow run failed.","complete":"Run complete — {count} step(s)","paused":"Run paused — it needs approval or input to continue"},"runs":{"emptyTitle":"No runs yet","emptyHint":"Run the workflow or wait for an active trigger.","noMatches":"No runs match these filters.","loadMore":"Load more","loadingMore":"Loading…","retryLoadMore":"Try loading more again","selectRun":"Select a run to see its steps.","date":"Date","sortOldestFirst":"Sort runs oldest first","sortNewestFirst":"Sort runs newest first","allStatuses":"All statuses","preview":{"viewDetails":"View details","openWorkflow":"Open in workflows","close":"Close run details","description":"Status, results and steps of this workflow run.","startedAt":"Started {date}","lastStep":"Last step: {step}","currentStep":"Current step: {step}","loading":"Loading run details…","unavailable":"Run details are unavailable. The run may have been removed or you may no longer have access.","reload":"Try again"},"statuses":{"success":"Success","failed":"Failed","cancelled":"Cancelled","running":"Running","queued":"Queued","interrupted":"Interrupted","rejected":"Rejected with feedback","creating":"Creating run","startFailed":"Failed to start","needsInput":"Needs input","waitingApproval":"Waiting approval"},"started":"Started {relative}","simulation":"Simulation","cancelRun":"Cancel run","cancelling":"Cancelling…","creatingRun":"Creating run…","runError":"Run error","failedToStartRun":"Failed to start run","openIssuesInBuilder":"View issues in Builder","errorCode":"Code","viewStep":"View step","fixWithAi":"Fix with AI","askAiAboutRun":"Ask AI about this run","stepTimeline":"Step timeline","collapseAllSteps":"Collapse all steps","expandTimeline":"Expand","notification":"Notification","feedback":"Feedback","chooseRun":"Choose a run","runFiles":"Files","runFilesRetention":"Generated files linked in results or notifications remain available after the run finishes. Other temporary files are deleted.","fileSourceInput":"Input","fileSourceUploaded":"Uploaded at \"{node}\"","fileSourceGenerated":"Generated by \"{node}\"","earlierStepsOmitted":"{count} earlier steps omitted. This run's trace exceeded its storage limit, so only the newest steps are kept.","earlierStepsOmittedOne":"1 earlier step omitted. This run's trace exceeded its storage limit, so only the newest steps are kept.","expandStepIcon":"Expand step icon: {title}","collapseStepIcon":"Collapse step icon: {title}","expandStepDetails":"Expand step details: {title}","collapseStepDetails":"Collapse step details: {title}","stepStatus":"Step status: {status}","openFullInspector":"Open full inspector","input":"Input","output":"Output","steps":"Steps","subWorkflowRun":"Runs {name}","configuration":"Configuration","details":"Details","noResolvedInput":"No resolved input.","cancelledNoOutput":"This step was cancelled before it produced output.","noOutputYet":"No output yet — the step is still running.","noOutput":"No output.","stepDialogDescription":"Input, configuration, and output for this step.","datasetImport":{"reviewButton":"Review import","loading":"Checking import status…","unavailable":"Import status unavailable","status":{"queued":"Import queued","needs_review":"Import needs review","running":"Import running","succeeded":"Import complete","failed":"Import failed"}}},"branches":{"true":"True","false":"False","item":"Item","done":"Done","loop":"Loop","exit":"Exit","reject":"Rejected","approved":"Approved","rejected":"Rejected","partial":"Partially approved","clarification":"Clarification"},"canvas":{"tidyUp":"Tidy up","model":"Model: {model}"},"inspectorTabs":{"input":"Input","output":"Output","advanced":"Advanced","editAsJson":"Edit as JSON"},"outputFields":{"treeLabel":"Output fields","item":"item:","oneOf":"One of","valueOne":"1 value","valueMany":"{count} values","moreValues":"and {count} more","copyReference":"Copy reference {reference}","copied":"Copied","expand":"Expand {name}","collapse":"Collapse {name}","noSchema":"This node has no output schema. Use its whole output instead.","onRejection":"On rejection","onRejectionHelp":"These fields only exist if this action is rejected.","onRejectionFields":"On rejection fields","feedbackDescription":"The reviewer's feedback.","rejectedInputDescription":"The input the reviewer rejected.","listOf":"list of {items}","types":{"string":"string","number":"number","integer":"integer","boolean":"boolean","object":"JSON object","list":"list","enum":"one of fixed values","file":"file","any":"any value"},"typesPlural":{"string":"strings","number":"numbers","integer":"integers","boolean":"booleans","object":"JSON objects","list":"lists","enum":"fixed values","file":"files","any":"values"}},"transformFields":{"description":"Description","removeField":"Remove field"},"messageEditor":{"description":"Edit the Markdown or preview its formatting. Pick a run to preview references with that run's data.","runData":"Run data","noRunData":"No run data"},"statuses":{"draft":"Draft","active":"Active","archived":"Archived","completed":"Completed","failed":"Failed"},"tabs":{"palette":"Palette","inspector":"Inspector","settings":"Settings"},"emptyState":{"noWorkflow":"No workflows yet","noWorkflowHint":"Create your first workflow to get started.","noSelection":"No node selected","noSelectionHint":"Click a node on the canvas to inspect it.","createNew":"Create Workflow"},"defaults":{"newWorkflowName":"New Workflow","newWorkflowDescription":"Design your automation flow.","duplicateSuffix":"Copy"}},"auth":{"registration":{"signInRequired":"This identity already has an account or an existing workspace invitation. Sign in to continue.","createAccount":"Create an account","title":"Create your workspace","description":"Verify your identity to create a workspace. Payment is required before you can use it.","workspaceName":"Workspace name","protectionUnavailable":"Signup is temporarily unavailable. Please try again later; existing sign-in is unaffected.","tooManyAttempts":"Too many signup attempts. Please wait before trying again.","loading":"Loading…","disabled":"Public registration is currently unavailable. You can still sign in to an existing account.","policyUnavailable":"Registration cannot be completed right now because the required registration checks are unavailable. Try again later.","expired":"This registration attempt has expired. Start again, or sign in if your account was already created.","failed":"Registration could not be completed. Try again, or sign in to recover an account that was already created.","verifyEmail":"Verify your email address to continue your Microsoft registration.","code":"Verification code","codeSent":"Enter the code sent to","resend":"Send another code","retryCompletion":"Complete registration","processing":"Please wait…","restart":"Start again","signIn":"Sign in to an existing account","paymentRequired":"Payment required","paymentDescription":"Your workspace is registered. Payment is required before you can use chat, workflows, or connected sources.","paymentUnavailable":"Online payment is not available yet. You can sign out and return later.","stateFailed":"We could not load your workspace status. Try again.","signOutFailed":"Sign-out failed. Please try again.","retry":"Try again","signOut":"Sign out"},"otpInput":{"paste":"Paste","noDigits":"The clipboard does not contain a code.","clipboardUnavailable":"Clipboard access is unavailable. Use your device’s paste action on the code field instead."},"legal":{"label":"Legal information","privacy":"Privacy policy","privacyNewTabLabel":"Privacy policy (opens in a new tab)","imprint":"Legal notice","imprintNewTabLabel":"Legal notice (opens in a new tab)","openSource":"Open-source licences","openSourceNewTabLabel":"Open-source licences (opens in a new tab)"},"login":{"brandTag":"EU-hosted · Private Cloud · On-Prem","heroLineOne":"Sovereign AI workflows","heroLineTwo":"that act inside your systems.","heroDescription":"Not just another AI chatbot: Uhrwerk.AI connects your existing systems, orchestrates processes across departments, and turns your request into controlled system actions.","flowStepOne":"Your request","flowStepTwo":"Orchestrator","flowStepThree":"Approval","flowStepFour":"System action","featureOneTitle":"Sovereign in your infrastructure","featureOneText":"EU-hosted, in your cloud, or on-prem: data, permissions, budgets, and credits stay under your control.","featureTwoTitle":"AI-elastic adapters","featureTwoText":"Connects ERP, CRM, DMS, Office, and niche line-of-business systems — no big bang, no migration project.","featureThreeTitle":"Observable workflows","featureThreeText":"Permissions, approvals, logs, credit limits, and audit records surface controlled actions for review.","featureFourTitle":"Four-eyes principle","featureFourText":"You decide what runs automatically and what needs confirmation — with human approval at critical steps.","trustBadgeGdpr":"GDPR compliant","trustBadgeAiAct":"EU AI Act-ready","trustBadgeMadeInGermany":"Made in Germany","badge":"Authentication","title":"Sign in to Uhrwerk.AI","subtitle":"Choose your preferred access method.","checkingSession":"Checking existing session...","redirecting":"Redirecting to your workspace...","emailLabel":"Email","emailPlaceholder":"you@company.com","codeLabel":"6-digit code","otpStepOneLabel":"Step 1 · Request code","otpStepTwoLabel":"Step 2 · Verify code","codeSentTo":"Code sent to {email}","resendOtp":"Resend code","resendCooldown":"Resend in {seconds}s","changeEmail":"Change email","ssoLabel":"Single Sign-On","requestOtp":"Send code","sendingOtp":"Sending code...","verifyOtp":"Verify and continue","verifying":"Verifying...","google":"Continue with Google","microsoft":"Continue with Microsoft","testLogin":"Continue with Test Login","privacyNote":"Authentication tokens stay on this device and are refreshed after successful login.","notices":{"otpSent":"Code sent. Enter the 6-digit code from your email — sign-in starts automatically.","otpLoginSuccess":"Logged in successfully with email code.","testLoginSuccess":"Logged in as test user.","loginSuccess":"Login successful. Redirecting...","reauthMismatch":"Different account signed in.","sessionExpired":"Session expired."},"addAccountTitle":"Add account","addAccountSubtitle":"Sign in with another account without replacing the current one.","reauthTitle":"Sign in again","reauthSubtitle":"Refresh this account session to keep using it.","securityChangeTitle":"Confirm your identity","securityChangeSubtitle":"Sign in again before changing your security settings.","errors":{"enterEmail":"Enter an email address first.","invalidEmail":"Enter a valid email address.","emailAndCodeRequired":"Email and code are required.","requestOtpFailed":"Failed to request the code.","verifyOtpFailed":"Failed to verify the code.","rateLimited":"Too many code requests. Please wait a moment and try again.","testLoginFailed":"Failed to login as test user.","platformUserMustUseGoogle":"Platform users must sign in with Google.","signInNotAllowed":"This email address can't sign in. Ask a workspace admin for an invitation."}},"mfa":{"title":"Confirm it’s you","description":"Complete your configured second step before this sign-in can continue.","chooseMethod":"Choose a verification method","chooseMethodDescription":"Choose how you want to verify this sign-in.","useSomethingElse":"Use something else","verifyContinue":"Verify and continue","verifying":"Verifying…","trustDevice":"Trust this device for {days} days","method":{"totp":"Authenticator code","passkey":"Passkey"},"totp":{"title":"Authenticator code","description":"Enter the current code from your authenticator app.","codeLabel":"Authenticator code","codeHint":"Enter exactly six digits."},"passkey":{"title":"Passkey","description":"Use a saved passkey, device unlock, or compatible security key.","use":"Use a passkey","waiting":"Waiting for passkey…"},"enrollment":{"title":"Protect your account","description":"Your workspace requires multi-factor authentication. Set up either an authenticator code or passkey to finish signing in.","setUpAuthenticator":"Set up authenticator app","createPasskey":"Create passkey","totpQrAlt":"QR code for authenticator enrollment","manualKey":"Manual setup key","passkeyName":"Passkey name","passkeyNamePlaceholder":"This device"},"errors":{"failed":"Verification could not be completed. Try again.","incomplete":"The verification did not complete the sign-in.","expired":"This verification has expired. Start the sign-in again.","verificationFailed":"That code or passkey wasn't accepted. Try again.","methodUnavailable":"This MFA method is temporarily unavailable. Try another method or try again later.","passkeyNameConflict":"A passkey with that name already exists.","passkeyLimit":"The maximum number of passkeys has been reached.","passkeyCancelled":"Passkey verification was cancelled. You can try again or use another method."}},"guard":{"checkingTitle":"Checking authentication","checkingDescription":"Verifying workspace access before loading this page.","unavailableTitle":"Authentication could not be checked","unavailableDescription":"The service did not respond as expected. You have not been signed out; try again in a moment.","retry":"Try again","signOut":"Sign out","redirecting":"Redirecting to login..."},"callback":{"title":"Auth Callback","processing":"Processing authentication callback...","preparing":"Preparing login callback...","microsoftLink":{"loadingTitle":"Finishing sign-in","processing":"Securely returning you to your workspace…","eyebrow":"One last security check","title":"Check your email","description":"Microsoft sign-in succeeded. Confirm the email address for this workspace to finish securely.","progress":{"label":"Sign-in progress","microsoft":"Microsoft","email":"Email","workspace":"Workspace","complete":"Complete","current":"Current step"},"whyTitle":"Why this extra check?","whyDescription":"This protects your existing workspace account when Microsoft and workspace identities have not been connected before.","codeLabel":"6-digit code","codeHint":"Enter the six digits from the email.","sentTo":"We sent a 6-digit code to {destination}.","verify":"Verify and continue","verifying":"Verifying…","resendPrompt":"Didn't get it?","resend":"Send a new code","resending":"Sending…","resendSuccess":"A new code was sent to {destination}.","restart":"Back to sign in","unableToContinueTitle":"We couldn't continue sign-in","proofVerifiedTitle":"Email confirmed","proofVerified":"Finishing your sign-in. This usually takes a moment.","retryContinue":"Try again","errors":{"invalidCode":"That code isn't right. Check the email and try again.","locked":"For your security, this check is locked after too many attempts. Start sign-in again.","expired":"This security check has expired. Start sign-in again.","deliveryFailed":"We couldn't send a new code. Return to sign-in and try again.","rateLimited":"You've requested several codes. Wait a moment before trying again.","mfaUnavailable":"We couldn't continue to the next security step. Try again.","platformRequiresMfa":"Secure this account with an authenticator app or passkey before connecting Microsoft.","signInNotAllowed":"This account isn't allowed to sign in.","identityConflict":"This Microsoft account is already connected to another account.","statusUnavailable":"This sign-in step is temporarily unavailable. Try again or return to sign in.","generic":"We couldn't continue sign-in. Try again or return to sign in."}},"errors":{"missingTicket":"We couldn't continue sign-in. Start the sign-in again.","conflictingCredentials":"This sign-in request isn't valid. Start the sign-in again.","authenticationFailed":"We couldn't complete sign-in. Try again."}}},"oauth":{"processingCallback":"Processing OAuth callback...","missingParams":"Missing OAuth parameters. Please try connecting again.","connectingWorkspace":"Connecting workspace...","connected":"Successfully connected {workspaceName}. Redirecting...","failedConnect":"Failed to connect knowledge source. Please try again.","connectingTitle":"Connecting...","successTitle":"Connection Complete","failedTitle":"Connection Failed"},"feedback":{"card":{"cancelled":"Feedback cancelled","submitted":"Feedback submitted","reviewPrompt":"Please review and edit your feedback below.","textAriaLabel":"Feedback text","textPlaceholder":"Describe your feedback...","categoryAriaLabel":"Feedback category","categoryPlaceholder":"Select a category","cancel":"Cancel","submit":"Submit feedback","emptyTextError":"Please enter your feedback before submitting.","sharingNotice":"When you submit, workspace admins and platform admins can see your name and email, this chat's title, the message this feedback is about, and your comment."},"categories":{"incorrect_answer":"Incorrect answer","missing_info":"Missing info","unhelpful":"Unhelpful","bug":"Bug","other":"Other"}},"knowledge":{"alphaplan":{"title":"Connect ALPHAPLAN 5","description":"Use the full ALPHAPLAN 5 webservice in chat: records, files, inventory, accounting, and administration.","privacy":"This connection is private. Writes, deletions, SQL, and administration require your approval. File and API-key results are delivered as private downloads.","name":"Connection name","url":"Server URL","urlHelp":"Enter the HTTPS webservice base URL approved by your administrator, including its base path.","token":"API key","tokenHelp":"Use an API key without surrounding spaces, with StatusMonitore access for verification and permission for the operations you need. Reconnecting replaces your saved credentials.","adminPassword":"Administration password (optional)","adminHelp":"Enable API-key and user administration with the webservice admin password. Leave empty to connect without administration access; reconnecting without it removes saved administration access.","instructions":"ALPHAPLAN 5 webservice documentation","cancel":"Cancel","connect":"Connect ALPHAPLAN 5","connecting":"Connecting ALPHAPLAN 5…","failure":"Could not connect to ALPHAPLAN 5. Please try again.","connected":"ALPHAPLAN 5 connected"},"alphaplan6":{"title":"Connect ALPHAPLAN 6","description":"Read live ERP data from ALPHAPLAN 6 and approve changes, deletes, document actions, and file or email operations.","privacy":"This connection is private and uses your API key’s permissions. Read results are available in your chat.","name":"Connection name","url":"Server URL","urlHelp":"Enter the ALPHAPLAN 6 HTTPS webservice base URL approved by your administrator, including its base path.","token":"API key","tokenHelp":"Create a new ALPHAPLAN 6 API key. ALPHAPLAN 5 keys cannot be reused. Enter it without surrounding spaces, with StatusMonitore access for verification and permission for the reads and approved actions you need. Reconnecting replaces your saved version 6 key.","instructions":"ALPHAPLAN 6 webservice documentation","cancel":"Cancel","connect":"Connect ALPHAPLAN 6","connecting":"Connecting ALPHAPLAN 6…","failure":"Could not connect to ALPHAPLAN 6. Please try again.","connected":"ALPHAPLAN 6 connected"},"sevdesk":{"title":"Connect sevdesk","description":"Search contacts, invoices, orders, receipts, products, and bank records live.","privacy":"This connection is private and uses the permissions of your sevdesk API token. Contact changes and new invoice or quote drafts require approval. Sending, booking payments, and deleting records are unavailable.","name":"Connection name","token":"API token","tokenHelp":"Enter the 32-character token from sevdesk. Your account needs API access. Reconnecting replaces your saved token.","instructions":"Find your sevdesk API token","cancel":"Cancel","connect":"Connect sevdesk","connecting":"Connecting…","failure":"Could not connect to sevdesk. Please try again.","connected":"sevdesk connected"},"superoffice":{"title":"Connect SuperOffice","description":"Search companies, persons, sales, follow-ups and documents in SuperOffice CRM Online live, and read documents in chat.","privacy":"You sign in with your own SuperOffice user, so the assistant sees exactly what you may see. The connection is private. Creating documents, filing files, new versions, follow-ups and sale changes require your approval.","adminNote":"A SuperOffice administrator must approve the app once for your company before anyone can connect.","connect":"Connect SuperOffice","connecting":"Connecting…","cancel":"Cancel","failure":"Could not start the SuperOffice sign-in. Please try again.","disconnected":"SuperOffice disconnected","connectedAs":"Signed in as {displayName} · {contextId}"},"lexwareOffice":{"title":"Connect Lexware Office","description":"Search contacts, articles, invoices, quotations, open items and payments live.","privacy":"This connection is private and uses the permissions of your Lexware Office API key. New contacts and invoice or quotation drafts require approval. Finalizing, sending and deleting documents are unavailable.","planNote":"The Lexware API requires the Lexware Office XL plan. API keys are valid for at most 24 months; reconnect with a new key when yours expires.","name":"Connection name","token":"API key","tokenHelp":"Create a key in Lexware Office under Einstellungen → Erweiterungen → Public API. Reconnecting replaces your saved key.","instructions":"Create your Lexware Office API key","cancel":"Cancel","connect":"Connect Lexware Office","connecting":"Connecting…","failure":"Could not connect to Lexware Office. Please try again.","connected":"Lexware Office connected"},"copilotEvents":{"title":"Connect co*pilot","description":"Read live events, series, and contacts from co*pilot (copilot.events) event and venue management.","privacy":"This connection is private and uses your API key's permissions. Creating, changing, or deleting records requires your approval.","name":"Connection name","url":"Server URL","urlHelp":"Enter your co*pilot API base URL in the form https://copilot.events/<tenant>/api, replacing <tenant> with your co*pilot tenant name.","token":"API key","tokenHelp":"Enter the API key from your co*pilot account without surrounding spaces. Reconnecting replaces your saved key.","instructions":"Generate an API key in your co*pilot account settings.","cancel":"Cancel","connect":"Connect co*pilot","connecting":"Connecting co*pilot…","failure":"Could not connect to co*pilot. Check that the server URL matches https://copilot.events/<tenant>/api and that the API key is valid, then try again.","connected":"co*pilot connected"},"personio":{"title":"Connect Personio","description":"Read live HR data from Personio — people, employment, absences, attendance, and recruiting — in chat and workflows.","privacy":"This connection is private and uses the permissions of your Personio API credentials. Creating or changing records requires your approval.","name":"Connection name","clientId":"Client ID","clientSecret":"Client secret","credentialFormat":"Enter the value exactly as Personio shows it: at most 1024 characters, without spaces or accented letters.","secretHelp":"Reconnecting replaces your saved credentials.","instructions":"In Personio, open Marketplace > Connected integrations and create a custom integration (requires the Core Pro plan). Enable Read or Write for each area you want to use and select the readable employee attributes; attributes you do not select stay hidden.","helpLink":"How to create Personio API credentials","cancel":"Cancel","connect":"Connect Personio","connecting":"Connecting Personio…","failure":"Could not connect to Personio. Check the client ID and client secret, then try again.","connected":"Personio connected"},"sapBusinessOne":{"title":"Connect SAP Business One","reconnectTitle":"Reconnect {name}","description":"Read live ERP data from SAP Business One in chat and workflows, and approve every change.","privacy":"This connection is private: you sign in with your own SAP Business One user, so your SAP Business One permissions apply. Your password is stored encrypted, and changes in SAP Business One always need your approval.","name":"Connection name","url":"Service Layer URL","urlHelp":"Enter the HTTPS address of your Service Layer, for example https://b1.example.com:50000. OData v4 (/b1s/v2) is added automatically; /b1s/v1 is not supported.","companyDb":"Company database","companyDbHelp":"The database name of the company (CompanyDB), for example SBODEMODE.","reconnectFixedHint":"To use another Service Layer or company database, use Add company database instead.","userName":"User name","password":"Password","passwordHelp":"Each pair of Service Layer URL and company database is one connection. Connecting again with a pair you already use replaces that connection's saved login.","certificate":"Self-signed certificate (optional)","certificatePem":"Certificate (PEM)","certificateHelp":"Only needed if your Service Layer uses a self-signed certificate or one issued by your own certificate authority. Paste the PEM text, including the BEGIN and END lines.","savedCertificateHint":"This connection used a certificate (SHA-256 {fingerprint}). Paste it again if your Service Layer still uses it.","cancel":"Cancel","connect":"Connect SAP Business One","connecting":"Connecting SAP Business One…","reconnect":"Reconnect","reconnecting":"Reconnecting…","failure":"Could not connect to SAP Business One. Please try again.","connected":"SAP Business One connected","reconnected":"SAP Business One reconnected","addCompanyDb":"Add company database","companyDbCount":"{count} company databases","errors":{"invalidBaseUrl":"This is not a valid Service Layer address. Enter its HTTPS address, for example https://b1.example.com:50000. OData v4 (/b1s/v2) is added automatically; /b1s/v1 is not supported.","targetNotAllowed":"This server can't be used. If it's on a private network, your platform admin can allow it for your organisation; some addresses, such as this platform's own services, can never be allowed.","hostUnresolved":"The server name could not be resolved. Check the Service Layer URL.","unreachable":"The Service Layer could not be reached. Check the address, port, and network access.","tlsUntrusted":"The server’s certificate is not trusted. If your Service Layer uses a self-signed certificate, paste it under “Self-signed certificate”.","tlsHostnameMismatch":"The server's certificate was issued for a different host name. Use the host name the certificate names in the Service Layer URL.","certificateInvalid":"The pasted certificate could not be read. Paste the PEM text, including the BEGIN and END lines.","credentialsRejected":"SAP Business One rejected the company database, user name, or password.","loginFailed":"SAP Business One login failed. Please try again later.","loginEndpointNotFound":"The Service Layer login endpoint was not found. Check the address, including any reverse-proxy prefix, for example https://server:50000 or https://erp.example.com/sl.","loginRedirected":"The Service Layer redirected the login. Check the URL: use the Service Layer's own HTTPS address, for example https://server:50000, or your reverse-proxy address.","validation":"Check your entries: the company database and user name can have up to 100 characters and no control characters, and the password up to 254 characters.","connectorDisabled":"Your administrator has turned off SAP Business One for this workspace."}},"pageTitle":"Knowledge Hub","pageDescription":"Connect Notion and import pages into your workspace knowledge base","notices":{"loadedConnectionSuccess":"Successfully connected {connected}.","loadConnectionsFailed":"Failed to load knowledge source connections.","loadKnowledgeFailed":"Failed to load knowledge items.","loadAvailableFailed":"Failed to load available Notion items.","connectionFailed":"Knowledge source connection failed. Please try again.","connectInitFailed":"Failed to initiate Notion connection.","sourceDisconnected":"Source disconnected.","disconnectFailed":"Failed to disconnect source.","importedItems":"Imported {count} item(s) to Files.","importFailed":"Failed to import selected items.","resyncComplete":"Resync complete: {synced} synced, {deprecated} deprecated, {failed} failed.","resyncFailed":"Failed to resync knowledge items.","refreshOpenConnectionFirst":"Open a connection first to refresh available items.","updateVisibilityFailed":"Failed to update item visibility.","removeItemFailed":"Failed to remove knowledge item.","uploadIndexed":"Uploaded and indexed: {filename}","uploadFailed":"Failed to upload file."},"overview":{"connectedSourcesTitle":"Connected Sources","connectedSourcesEmptyHint":"Connect Notion to start importing","connectedSourcesActiveHint":"Active integrations","indexedItemsTitle":"Indexed Items","indexedItemsHint":"Documents available to AI"},"tabs":{"connectors":"Connectors","library":"Library","datasets":"Datasets","generated":"Generated"},"breadcrumb":{"knowledge":"Knowledge Hub"},"subtitle":"Manage your organisation's knowledge sources and library","subtitleWithDatasets":"Manage your organisation's knowledge sources, datasets, and library","typedColumns":{"types":{"text":"Text","number":"Number","boolean":"Boolean","date":"Date","timestamp":"Timestamp","enum":"Enum"},"operators":{"equals":"Equals","notEquals":"Not equals","greaterThan":"Greater than","greaterThanOrEqual":"Greater than or equal to","lessThan":"Less than","lessThanOrEqual":"Less than or equal to","contains":"Contains","hasValue":"Has a value"},"values":{"clear":"Clear","clearColumn":"Clear {column}","noValue":"No value","true":"True","false":"False","saving":"Saving…"},"validation":{"validNumber":"Enter a valid number.","validDate":"Enter a valid date.","validTimestamp":"Enter a valid date and time.","validValue":"Enter a valid value.","validDays":"Enter a whole number of days from 0 to 36500.","saveFailed":"Unable to save this value."},"relative":{"mode":"Value mode","exactDate":"Exact date","exactTimestamp":"Exact time","relativeToToday":"Relative to today","days":"Days","direction":"Direction","past":"days ago","future":"days from now","today":"today","now":"now","daysAgo":"{count} days ago","daysAgoOne":"1 day ago","inDays":"in {count} days","inDaysOne":"in 1 day"},"searchDefault":{"title":"Search default","help":"Applied to Knowledge search for everyone. Items without a value are still shown.","badge":"Search default","none":"No search default","set":"Set search default","edit":"Edit search default","save":"Save default","cancel":"Cancel","remove":"Remove default","operator":"Operator","adminOnly":"Only workspace owners and admins can change the search default.","failed":"The search default could not be saved. Please try again."},"help":{"dateUtc":"Dates are stored as calendar dates in UTC.","timestampUtc":"Timestamps require a timezone and are stored in UTC."},"definition":{"key":"Key","keyPlaceholder":"e.g. review_status","label":"Label","labelPlaceholder":"e.g. Review status","prompt":"Extraction prompt","promptPlaceholder":"Describe what to extract from documents…","type":"Type","enumOptions":"Enum options","enumOptionsPlaceholder":"One option per line, or separated by commas","add":"Add column","save":"Save","validation":{"check":"Check this column definition.","enumRequired":"Enum columns require at least one option","enumUnique":"Enum options must be unique"}},"filters":{"trigger":"Filters","triggerAria":"Filter columns","title":"Column filters","description":"Narrow the items shown in this view.","count":"Clear filters ({count})","clear":"Clear","clearAria":"Clear filters","add":"Add filter","apply":"Apply filters","column":"Column","operator":"Operator","value":"Value","noValueNeeded":"No value needed","selectValue":"Select value","remove":"Remove filter","removeNamed":"Remove filter {filter}","summary":"{column} {operator} {value}","summaryExists":"{column} has a value","containsShort":"contains","missingDefinition":"A filtered column is no longer available. Clear or update the filters."},"migration":{"title":"Migrate {column}","description":"Existing field values are checked before this type change is applied.","newConfiguration":"New configuration","enumConfiguration":"Enum: {options}","checking":"Checking existing values…","totalValues":"{count} values found","totalValuesLabel":"values found","convertibleValues":"{count} can be converted","convertibleValuesLabel":"can be converted","emptyValues":"{count} empty values","emptyValuesLabel":"empty values","invalidValues":"{count} needs attention","invalidValuesLabel":"needs attention","affectedItems":"Affected item IDs:","requiresAdmin":"Changing this column's type converts values across the workspace. Ask a workspace owner or admin to run the migration.","inaccessibleItems":"These counts cover only items you can open. On items you cannot open, this column is handled separately in the background: its value is moved to quarantine and the column re-extracted.","invalidPolicy":"How should invalid values be handled?","failPolicy":"Stop if any value is invalid","clearPolicy":"Clear invalid values without re-extracting","clearAndReextractPolicy":"Clear invalid values and re-extract them","queued":"Migration queued","inProgress":"Migration in progress","progress":"{processed} of {total} values processed","failed":"Migration could not be completed. Try again or contact support.","requestFailed":"The migration request failed. Please try again.","cancelled":"Migration cancelled. No further values will be changed.","completed":"Migration completed.","cancel":"Cancel migration","cancelling":"Cancelling…","close":"Close","start":"Start migration","starting":"Starting…"}},"sourceTypes":{"notion":"Notion","onedrive":"OneDrive","googledrive":"Google Drive","exchange":"Exchange Online","exchange_onprem":"Exchange Server","gmail":"Gmail","upload":"Upload","agent_generated":"AI Generated"},"sources":{"title":"Sources","description":"Connect integrations and import content into Files","adminDisabled":"Disabled by your administrator","operations":{"button":"Tools","buttonLabel":"Manage {name} tools","title":"{name} tools","description":"Choose which of this connector's tools your workspace may use.","note":"Turning a tool off removes it from chat and the workflow palette. Saved workflows that use it fail their check and their runs.","loading":"Loading tools…","loadFailed":"Could not load this connector's tools.","saveFailed":"Could not change this tool.","empty":"This connector has no individual tools.","groups":{"read":"Read","write":"Write","destructive":"Destructive"}},"exchangeConnect":{"title":"Connect Microsoft Exchange","description":"Sign in with your Microsoft account. Leave the field empty to use your own mailbox.","targetLabel":"Shared mailbox (optional)","targetHint":"Reads and sends then go to this mailbox instead of your own. Your account needs Full Access to it, and Send As for sending. An administrator must consent to the shared-mailbox permissions once.","cancel":"Cancel","connect":"Continue to Microsoft","failed":"Failed to start Microsoft Exchange authorization","viaAccount":"{mailbox} (via {account})","addTitle":"Add mailbox","addMailbox":"Add mailbox","mailboxCount":"{count} mailboxes","defaultBadge":"Default","needsReconnect":"Needs reconnect","reconnectMailbox":"Reconnect {mailbox}","disconnectMailbox":"Disconnect {mailbox}","disconnectTitle":"Disconnect {mailbox}?","disconnectDescription":"Chats and workflows can no longer read or send from this mailbox. Your other mailboxes stay connected.","disconnectConfirm":"Disconnect","disconnected":"Mailbox disconnected"},"googleCalendarGrantWriteAccess":"Grant write access to Google Calendar","reconnect":"Reconnect","reconnectRequired":{"title":"Reconnect required","description":"{name} can no longer sign in, so chats and workflows cannot use it. Reconnect to restore access."},"reconnectConnection":"Reconnect {name}","integrationsTitle":"Integrations","integrationsDescription":"Connect a source to start importing. Additional integrations will be added soon.","notionCardDescription":"Sync Notion pages into your workspace files","onedriveCardDescription":"Browse OneDrive files and shared libraries","googledriveCardDescription":"Browse Google Drive files from My Drive and shared drives","exchangeCardDescription":"Connect your Microsoft 365 mailbox via Microsoft Graph API","exchangeOnpremCardDescription":"Connect your on-premise Exchange Server mailbox via IMAP/SMTP","gmailCardDescription":"Connect your Gmail mailbox for search, read, and send tools","connectedCount":"{count} connected","connectedWorkspacesTitle":"Connected Workspaces","uploadFile":"Upload File","connectNotion":"Connect Notion","connectOneDrive":"Connect OneDrive","connectGoogleDrive":"Connect Google Drive","connectExchange":"Connect Exchange Online","connectExchangeOnprem":"Connect Exchange Server","connectGmail":"Connect Gmail","disconnectExchange":"Disconnect Exchange Online","disconnectExchangeOnprem":"Disconnect Exchange Server","disconnectGmail":"Disconnect Gmail","connecting":"Connecting...","loadingConnections":"Loading connections...","noConnectionsTitle":"No connections yet","noConnectionsHint":"Connect Notion, OneDrive, Google Drive, Exchange, Gmail, or Exchange Server to add a knowledge source","connectedOn":"{source} • Connected {date}","browse":"Browse","hide":"Hide","availableItemsTitle":"Available Items","availableItemsDescription":"Select items to add to your knowledge base","driveSelectorLabel":"Drive or library","noDrives":"No drives available","breadcrumbsLabel":"Folder path","rootFolder":"Root","searchItemsPlaceholder":"Search items...","searchOneDrivePlaceholder":"Search OneDrive files...","searchGoogleDrivePlaceholder":"Search Google Drive files...","loadingItems":"Loading available items...","noItemsFound":"No items found","folderType":"Folder","fileType":"File","table":{"title":"Title","type":"Type","lastModified":"Last Modified"},"addSelected":"Add {count} to Files"},"folderRail":{"allItems":"All items","newFolder":"New folder","sources":"Sources","root":"Root","treeAriaLabel":"Knowledge folders","expand":"Expand","collapse":"Collapse","folderActions":"Folder actions","newSubfolder":"New subfolder","manageColumns":"Manage columns","edit":"Edit","delete":"Delete","folderNamePlaceholder":"Folder name","noFolderColor":"No folder color","folderColor":"Folder color {color}","save":"Save","cancel":"Cancel","columnsSheet":{"title":"Columns: {folderName}","inherited":"Inherited","from":"from {folderName}","thisFolder":"This folder","noColumnsYet":"No columns yet.","addColumn":"Add column","keyPlaceholder":"key (e.g. department)","labelPlaceholder":"Label","promptPlaceholder":"Extraction prompt: describe what the LLM should extract"},"editDialog":{"title":"Edit folder","description":"Update the folder name, color, parent, and position in the knowledge library.","name":"Name","namePlaceholder":"Folder name","color":"Color","parentFolder":"Parent folder","position":"Position"},"deleteDialog":{"title":"Delete \"{name}\"?","counting":"Counting files…","countError":"Couldn't count this folder's files.","empty":"This folder is empty.","contains":"This folder contains {contents}. Choose what happens to the contents.","contentsBoth":"{files} and {subfolders}","filesOne":"1 file","filesOther":"{count} files","subfoldersOne":"1 subfolder","subfoldersOther":"{count} subfolders","keepFiles":"Keep files","keepFilesHelp":"Files move to the library root; subfolders move up one level.","keepSubfolders":"Keep subfolders","keepSubfoldersHelp":"Subfolders move up one level.","deleteAll":"Delete folder and files","deleteAllSubfolders":"Delete folder and subfolders","deleteAllHelp":"Permanently deletes {contents}.","deleteAllLimit":"Too many files to delete at once (limit {limit}). Delete some files in the library first.","deleteEmpty":"Delete folder","deleting":"Deleting…"}},"library":{"title":"Files","description":"Manage uploaded files and imported source content","uploadFile":"Upload File","uploadFiles":"Upload Files","uploadingFile":"Uploading...","uploadingFiles":"Uploading {current}/{total}...","bulkUploadProgress":"{complete}/{total} complete","bulkUploadFailed":"{failed} failed","uploadComplete":"Uploaded and indexed","retryUpload":"Retry","dismissUploads":"Dismiss","uploadStages":{"pending":"Pending","preparing":"Preparing","uploading":"Uploading","complete":"Complete","error":"Failed"},"resync":"Resync","searchPlaceholder":"Search by title, tags, or summary...","loadingItems":"Loading files...","noItemsTitle":"No files yet","noItemsHint":"Upload a file or import from a source to get started","noSearchMatch":"No files match your search","showingResults":"Showing {filtered} of {total} files","deprecated":"Deprecated","noSummary":"No summary available yet.","lastSynced":"Last synced {date}","downloadOriginal":"Download original file","downloadFailed":"Failed to download original file.","visibility":{"org_only":"Organization Only","private":"Private"},"audience":{"label":"Visibility","private":"Private","privateDescription":"Only you can find and use this item.","workspace":"Workspace","workspaceDescription":"Everyone in the workspace can find and use this item.","groups":"Groups","groupsDescription":"Only members of the selected groups can find and use this item.","selectedGroups":"Selected groups","noGroups":"You do not belong to any groups.","groupRequired":"Select at least one group.","loading":"Loading visibility…","loadFailed":"Visibility could not be loaded."},"uploadQueue":{"title":"Uploads","status":{"pending":"Waiting","preparing":"Preparing","uploading":"Uploading {progress}%","processing":"Processing","complete":"Done","error":"Failed"},"retry":"Retry {filename}","remove":"Remove {filename}"},"itemsTable":{"headers":{"title":"Title","source":"Source","tags":"Tags","visibility":"Visibility","created":"Created"},"sourceLabels":{"notion":"Notion","onedrive":"OneDrive","googledrive":"Google Drive","upload":"Upload","gmail":"Gmail","exchange":"Exchange","exchange_onprem":"Exchange On-Prem","agent_generated":"AI Generated","email_auto_ingest":"Email Auto-Ingest"},"status":{"processing":"Processing","failed":"Failed","reembedding":"Re-embedding","reembedFailed":"Re-embed failed","partial":"Partial"},"actions":{"edit":"Edit","download":"Download","convertToDataset":"Convert to Dataset","retryProcessing":"Retry processing","delete":"Delete"},"visibility":{"orgOnly":"Org only","private":"Private","groups":"Groups"},"emptyState":{"title":"No items yet","description":"Drag and drop files here to upload to the knowledge base","uploadFiles":"Upload files"},"none":"None","justNow":"Just now","pagesIndexed":"{pagesExtracted} of {pages} pages indexed"},"itemsToolbar":{"searchPlaceholder":"Search items…","allSources":"All sources","allVisibility":"All visibility","view":"View","upload":"Upload","manageColumns":"Manage columns","moreActions":"More actions","reembedding":"Re-embedding: {done}/{total}","reembedFailed":"Re-embedding failed. Please try again. If the problem persists, contact your administrator.","reembed":"Re-embed","reembedWithCount":"Re-embed ({count})","retryFailedWithCount":"Retry {count} failed"}},"generated":{"title":"Generated Files","description":"Files created by the AI assistant during conversations","searchPlaceholder":"Search generated files...","noItemsTitle":"No generated files yet","noItemsHint":"Files created by the assistant will appear here automatically"}},"tools":{"pageTitle":"Tools","pageDescription":"MCP servers and REST APIs the assistant can call in chat. Each one stays private to the person who added it until it is shared with the workspace.","submenu":{"connectedApis":"Connected APIs","mcpServers":"MCP servers"},"notices":{"loadFailed":"Failed to load connected APIs.","created":"Connected API created.","updated":"Connected API updated.","saveFailed":"Failed to save connected API.","deleted":"Connected API deleted.","deleteFailed":"Failed to delete connected API.","removedFromProvider":"API removed from provider.","updateProviderFailed":"Failed to update API provider assignment.","invalidRequired":"Name and endpoint URL are required.","invalidHeaders":"Credential headers must include both key and value, with unique keys.","invalidGetParams":"Default GET params must be valid JSON object.","invalidPostParams":"Default POST params must be valid JSON object.","invalidGetParamsMethod":"Default GET params are allowed only for GET method.","invalidPostParamsMethod":"Default POST params are allowed only for POST/PUT/PATCH/DELETE methods.","invalidQueryParamsSchema":"Parameters schema must be a JSON array of {name, required, description, inferredType, credentialCandidate} objects.","invalidPathParamsSchema":"Path parameters schema must be a JSON array of {name, required, description, inferredType, credentialCandidate} objects.","invalidFilePayloadPolicy":"File payload policy must include valid JSON paths, at least one format, and positive max bytes values.","connectorManaged":"This API belongs to a connection in Knowledge sources and can only be changed there."},"sharing":{"sharedLabel":"Shared with workspace","privateLabel":"Just me","shareAria":"Share connector with workspace","unshareAria":"Unshare connector from workspace","sharedViaProvider":"Shared via provider","shareConfirmTitle":"Share connector with workspace?","shareConfirmDescription":"Sharing makes this connector available to the workspace. Members may be able to browse, sync, index, or use triggers where supported.","shareConfirmOdooDescription":"Sharing gives workspace members live access to Odoo. Shared reads and approved mutations run through the connection owner’s Odoo account, API credential, and Odoo permissions. This live-only source is not available for Knowledge Hub browsing, syncing, or indexing.","sharedOdooExecutionNotice":"This Odoo connection is shared with you. It provides live access only, with no Knowledge Hub browsing, syncing, or indexing. Reads and approved mutations use the connection owner’s Odoo account, API credential, and Odoo permissions.","shareConfirmMailboxDescription":"Sharing the Exchange on-prem mailbox {mailbox} makes mailbox data and actions available to the workspace, including browsing, syncing, indexing, and triggers where supported.","shareConfirmCancel":"Cancel","shareConfirmAction":"Share with workspace","unshareConfirmTitle":"Make connector private?","unshareConfirmDescription":"Only you will be able to use this connector. Other workspace members lose access, and their workflows or chats that use it may stop working.","unshareConfirmNotOwnerDescription":"You don’t own this connector. Making it private removes it from your list and from everyone else’s. Only its owner will still see it and can share it again.","unshareConfirmAction":"Make private","unshareConfirmToolOwner":"Only you will be able to use “{name}”. Other workspace members lose access, and their workflows or chats that use it may stop working.","unshareConfirmToolOther":"You don’t own “{name}”. Making it private means only its owner can use it. Everyone else, including you, loses access.","sharedNotice":"Connector shared with workspace.","privateNotice":"Connector is now private.","updateFailed":"Failed to update connector sharing.","sharingDisabled":"A platform administrator has turned off connector sharing for this workspace. Existing shares can still be removed."},"list":{"clearSearch":"Clear search","owner":{"label":"Owner","all":"Everyone","me":"Only mine","former":"People who left ({count})","people":"People"},"access":{"label":"Access","all":"All","private":"Private","shared":"Shared"},"ownerYou":"You","ownerUnknown":"Unknown","ownerLeft":"Left the workspace","accessPrivate":"Private","accessShared":"Workspace","range":"{from}–{to} of {total}","previousPage":"Previous page","nextPage":"Next page","selection":{"label":"Selection","count":"{count} selected","clear":"Clear","row":"Select {name}"},"status":{"label":"Status","all":"Any status","healthy":"Reachable","unhealthy":"Unreachable","unknown":"Not tested","off":"Off","reconnect":"Reconnect needed"},"columns":{"owner":"Owner","access":"Access","status":"Status","actions":"Actions"},"summary":{"formerOne":"1 owned by someone who left","formerOther":"{count} owned by people who left"},"adminNote":"As an admin you see every tool in this workspace. Private tools work in chat only for the person who added them. Share one to make it available to everyone.","noMatches":"Nothing matches these filters.","clearFilters":"Clear filters","retry":"Try again","rowActions":"Actions for {name}","viewDetails":"View details","makePrivate":"Make private","shareWithWorkspace":"Share with workspace","deleting":"Deleting…","never":"Never","close":"Close","bulk":{"deleted":"Deleted {count}.","failed":"{count} could not be changed."}},"apis":{"intro":"Connected APIs let the assistant call REST endpoints directly. APIs imported from documentation are grouped under their provider.","searchPlaceholder":"Search APIs, providers, URLs or owners","countOne":"1 API","countOther":"{count} APIs","countFiltered":"{count} of {total} APIs","columns":{"api":"API"},"actions":{"add":"Add API"},"selectGroup":"Select all APIs in {name}","shareProvider":"Share provider with workspace","makeProviderPrivate":"Make provider private","connectorManaged":"Managed by its connection in Knowledge sources","authStatus":{"ok":"Connected","missing_connection":"Needs a connection","refresh_failed":"Sign-in expired","provider_removed":"Provider removed","insufficient_scope":"Missing permissions"},"shareConfirm":"Everyone in the workspace will be able to use “{name}” in chat, with its stored credentials.","delete":{"title":"Delete API?","titleMany":"Delete {count} APIs?","single":"“{name}” will be removed and chats can no longer call it.","singleOther":"It belongs to {owner}, who will lose it too.","singleShared":"It is shared with the workspace, so everyone loses access.","many":"{count} APIs will be removed and chats can no longer call them.","manyOthers":"Some of them ({count}) belong to other people, who will lose them too.","manyShared":"{count} are shared with the workspace."}},"carousel":{"title":"Add Cards","description":"Create and configure connected REST APIs for your organisation.","addCardTitle":"Add new API","addCardHint":"Configure method, endpoint, keywords, and credential headers.","addAction":"Open setup form"},"connected":{"title":"Connected APIs","description":"All connected APIs available for keyword-based planner hints in chats.","loading":"Loading connected APIs...","emptyTitle":"No connected APIs","emptyHint":"Connect a REST endpoint so the assistant can look up or change data in another system.","noKeywords":"No keywords configured","headers":"{count} credential header(s)","queryParams":"{count} credential query param(s)","getParams":"{count} GET param(s)","postParams":"{count} POST param(s)","pathParams":"{count} path param(s)","updatedAt":"Updated: {value}"},"exchange":{"title":"Exchange Online (Microsoft 365)","description":"Connect your Microsoft 365/Exchange Online mailbox to enable Graph email tools in chat and workflows.","loading":"Loading Exchange Online connection...","mailboxUnavailable":"No mailbox connected","displayNameUnavailable":"Mailbox identity unavailable","lastRefresh":"Last refresh: {value}","status":{"connected":"Connected","error":"Error","notConnected":"Not connected"},"actions":{"connect":"Connect","reconnect":"Reconnect","disconnect":"Disconnect"},"notices":{"loadFailed":"Failed to load Exchange connection status.","connectFailed":"Failed to start Exchange connection.","connected":"Microsoft Exchange mailbox connected.","connectionFailed":"Failed to connect Microsoft Exchange mailbox.","disconnected":"Microsoft Exchange mailbox disconnected.","disconnectFailed":"Failed to disconnect Microsoft Exchange mailbox."},"oauth":{"processing":"Processing Microsoft Exchange OAuth callback...","missingParams":"Missing OAuth parameters. Please reconnect Microsoft Exchange.","connecting":"Connecting your Microsoft Exchange mailbox...","connected":"Mailbox connected successfully. Redirecting...","failed":"Failed to connect Microsoft Exchange mailbox.","connectingTitle":"Connecting...","successTitle":"Connection Complete","failedTitle":"Connection Failed"}},"exchange_onprem":{"title":"Exchange Server Connector","description":"Connect your on-premise Exchange Server mailbox via IMAP/SMTP for email tools in chat and workflows.","form":{"email":"Email Address","username":"Username (e.g. DOMAIN\\user)","password":"Password","advancedSettings":"Advanced Settings","trustSelfSigned":"Trust self-signed certificates","imapHost":"IMAP Server","imapPort":"IMAP Port","smtpHost":"SMTP Server","smtpPort":"SMTP Port","security":"Security","connecting":"Discovering server settings...","connect":"Connect"},"notices":{"connected":"Exchange Server mailbox connected.","connectionFailed":"Failed to connect Exchange Server mailbox.","autodiscoverFailed":"Could not autodiscover server settings. Please enter them manually.","disconnected":"Exchange Server mailbox disconnected.","disconnectFailed":"Failed to disconnect Exchange Server mailbox."}},"gmail":{"title":"Gmail Connector","description":"Connect your Gmail mailbox to enable search, read, and send tools in chat and workflows.","loading":"Loading Gmail connection...","mailboxUnavailable":"No mailbox connected","displayNameUnavailable":"Mailbox identity unavailable","lastRefresh":"Last refresh: {value}","status":{"connected":"Connected","error":"Error","notConnected":"Not connected"},"actions":{"connect":"Connect","reconnect":"Reconnect","disconnect":"Disconnect"},"notices":{"loadFailed":"Failed to load Gmail connection status.","connectFailed":"Failed to start Gmail connection.","connected":"Gmail mailbox connected.","connectionFailed":"Failed to connect Gmail mailbox.","disconnected":"Gmail mailbox disconnected.","disconnectFailed":"Failed to disconnect Gmail mailbox."}},"providers":{"providerLabel":"Provider","manualLabel":"Manual","manualTitle":"Unassigned APIs","docsIngested":"Docs ingest","apiCount":"{count} API(s)","showApis":"Show APIs","hideApis":"Hide APIs","addApi":"Add API","lastIngestedAt":"Last ingested: {value}"},"dialog":{"createTitle":"Add new API","createDescription":"Only you can use it until you share it with the workspace.","editTitle":"Edit API","editDescription":"Update endpoint, keyword routing, and credential header handling."},"form":{"name":"API name","namePlaceholder":"e.g. CRM Customer Lookup","method":"Method","provider":"Provider","providerNone":"No provider (manual)","providerHelp":"Group this API under a provider or keep it unassigned.","endpoint":"Endpoint URL","endpointPlaceholder":"https://api.example.com/v1/customers/{customerId}","endpointHelp":"Use {name} placeholders for path parameters, e.g. /networks/{network}/tokens/{address}. The assistant fills them at runtime.","keywords":"Keywords (comma separated)","keywordsPlaceholder":"customer, crm, lookup","getParams":"Default GET params (JSON)","getParamsPlaceholder":"{\"include\":\"profile\"}","getParamsHelp":"Optional JSON object merged into query params at runtime.","getParamsDisabledHelp":"Available only when method is GET.","postParams":"Default POST params (JSON)","postParamsPlaceholder":"{\"status\":\"active\"}","postParamsHelp":"Optional JSON object merged into request body at runtime.","postParamsDisabledHelp":"Available only when method is POST/PUT/PATCH/DELETE.","queryParamsSchema":"Parameters schema (JSON)","queryParamsSchemaPlaceholder":"[\n\t{\n\t\t\"name\": \"limit\",\n\t\t\"required\": false,\n\t\t\"description\": \"Max results to return\",\n\t\t\"inferredType\": \"integer\",\n\t\t\"credentialCandidate\": false\n\t}\n]","queryParamsSchemaHelp":"One entry per parameter the endpoint accepts. Each entry: name, required (bool), description, inferredType (string | number | integer | boolean | array | object), credentialCandidate (bool, true if the value is a secret like an API key).","pathParamsSchema":"Path parameters schema (JSON)","pathParamsSchemaPlaceholder":"[\n\t{\n\t\t\"name\": \"network\",\n\t\t\"required\": true,\n\t\t\"description\": \"Chain id, e.g. eth\",\n\t\t\"inferredType\": \"string\",\n\t\t\"credentialCandidate\": false\n\t},\n\t{\n\t\t\"name\": \"address\",\n\t\t\"required\": true,\n\t\t\"description\": \"Token contract address\",\n\t\t\"inferredType\": \"string\",\n\t\t\"credentialCandidate\": false\n\t}\n]","pathParamsSchemaHelp":"One entry per {name} placeholder in the endpoint URL. Same shape as the query parameters schema. Use this to document each path parameter (description, type, required); the assistant uses these hints when calling the API.","filePayloadsSection":"File payloads","filePayloadsHelp":"Allow attached chat files to be inserted only at specific JSON body paths.","filePayloadsEnable":"Allow file payload placeholders","filePayloadsEnableHelp":"Runtime calls still require a matching attached file and user approval before bytes leave the workspace.","filePayloadPath":"JSON path","filePayloadPathPlaceholder":"$.file","filePayloadFormats":"Formats","filePayloadFormat":{"base64":"base64","data_uri":"data URI"},"filePayloadMimeTypes":"MIME types","filePayloadMimeTypesPlaceholder":"image/png, application/pdf","filePayloadMaxBytes":"Max bytes","filePayloadMaxBytesPlaceholder":"5242880","addFilePayloadField":"Add file field","headersSection":"Credential headers","headerWriteOnly":"Header values are write-only. Saved values are never shown again.","existingHeaderKeys":"Configured header keys: {keys}","headerModeLabel":"Header update mode","headerModeKeep":"Keep existing headers","headerModeReplace":"Replace headers","headerModeClear":"Clear all headers","headerKey":"Header key","headerValue":"Header value","addHeader":"Add header"},"actions":{"create":"Create","save":"Save changes","cancel":"Cancel","edit":"Edit","delete":"Delete","removeFromProvider":"Remove from provider"},"mcp":{"callback":{"title_processing":"Connecting MCP server","title_success":"Connected","title_error":"Connection failed","processing":"Finishing the sign-in…","connected":"Connected “{name}”. Opening Tools…","denied":"You declined the sign-in. Start it again from Tools.","providerError":"The server refused the sign-in: {error}","missingCode":"The sign-in answer is incomplete. Start it again from Tools.","failed":"Could not finish the sign-in."},"notices":{"credentialsRequired":"Add headers or a bearer token first.","serverUnauthorized":"The server refused the request. Check the credentials.","reconnectRequired":"The sign-in is no longer valid. Reconnect the server.","serverNotFound":"That MCP server is not in your list.","signInFailed":"Could not start the sign-in.","loadFailed":"Failed to load MCP servers.","created":"MCP server created.","updated":"MCP server updated.","saveFailed":"Failed to save MCP server.","deleted":"MCP server deleted.","deleteFailed":"Failed to delete MCP server.","invalidRequired":"Server name, endpoint URL, and routing condition are required.","replaceHeadersRequired":"Provide headers JSON or choose Keep/Clear header mode.","enabled":"MCP server enabled for everyone.","disabled":"MCP server disabled for everyone.","toggleFailed":"Failed to update MCP server status.","testSuccess":"{name}: successfully connected","testFailed":"Connection test failed: {error}","testFailedUnknown":"Failed to run connection test.","refreshFailed":"Failed to refresh MCP server list after the test.","invalidHeaders":"Headers JSON must be an object of key/value pairs.","endpointPrivateNotAllowed":"This server is on a private network. Ask your platform admin to allow its host for this workspace.","endpointForbidden":"This host can never be used for an MCP server, for example a loopback or cloud metadata address.","endpointUnresolved":"The server's host name could not be resolved. Check the endpoint URL.","endpointHttpsRequired":"Public MCP servers must use https://.","endpointInvalid":"Enter an http:// or https:// URL without a user name or password.","endpointRedirected":"The server redirected to another address. Use the final URL as the endpoint."},"intro":"MCP servers give the assistant extra tools. It uses a server when a request matches that server's routing condition.","searchPlaceholder":"Search servers, URLs or owners","summary":{"totalOne":"1 MCP server","totalOther":"{count} MCP servers","unhealthyOne":"1 unreachable","unhealthyOther":"{count} unreachable","reconnectOne":"1 needs a reconnect","reconnectOther":"{count} need a reconnect"},"sort":{"label":"Sort","added":"Recently added","name":"Name","owner":"Owner","status":"Status"},"enabledForAssistant":"Enabled for AI Assistant","enabledForWorkflows":"Enabled for Workflows","shareConfirm":"Everyone in the workspace will be able to use “{name}” in chat, with its stored credentials.","shareConfirmOAuth":"Everyone in the workspace will be able to use “{name}” in chat with your signed-in account. What they do there runs as you.","shareConfirmOAuthOther":"Everyone in the workspace will be able to use “{name}” in chat with the signed-in account of {owner}. What they do there runs as {owner}.","delete":{"title":"Delete MCP server?","single":"“{name}” will be removed and chats can no longer use it.","singleOther":"It belongs to {owner}, who will lose it too.","singleShared":"It is shared with the workspace, so everyone loses access.","irreversible":"This can't be undone."},"details":{"tabs":{"server":"MCP Server","settings":"Settings","details":"Details","credentials":"Credentials","tools":"Tools"},"website":"Website","discardTitle":"Discard changes?","discardDescription":"Your changes to “{name}” are not saved.","discardConfirm":"Discard","keepEditing":"Keep editing","server":"Server","serverUnknown":"Not reported yet","status":"Status","assistantPrompt":"AI Assistant prompt","assistantPromptHelp":"This prompt helps the AI Assistant know when to use these tools.","enableForAssistant":"Enable for AI Assistant","enableForWorkflows":"Enable for workflows","enableForWorkflowsHelp":"Offers this server's tools as workflow nodes in your workflow builder.","shareWithWorkspace":"Share with workspace","shareHelp":"When enabled, everyone in your workspace can see it. The current settings are applied for other users.","disableForEveryone":"Disable for everyone","disableForEveryoneHelp":"Turns the server off for every member.","tools":{"title":"Tools","countOne":"{count} tool","countOther":"{count} tools","refresh":"Refresh tools","refreshing":"Listing tools…","loading":"Loading tools…","empty":"The server lists no tools.","notListed":"The tools have not been listed yet.","truncated":"The server has more tools. Only the first {count} are shown.","refreshFailed":"Could not list the tools: {error}"},"askOwnerToReconnect":"Ask {owner} to reconnect it. Only the person who signed in can do that.","authOAuth":"Signed in with OAuth as the owner","offHint":"Disabled for everyone. The AI Assistant does not use it.","checkedAt":"Last checked {value}","owner":"Owner","auth":"Authentication","authNone":"None","authBearer":"Bearer token","added":"Added","changed":"Last changed","readOnly":"Only the person who added this server or a workspace admin can change it."},"carousel":{"title":"Available integrations","description":"Connect a tool to make it available to the assistant.","addCardTitle":"Add MCP server","addCardHint":"Configure endpoint, routing condition, and auth headers.","addAction":"Open setup form","status":{"connected":"Connected","needsSetup":"Needs setup","available":"Connect"},"buildYourOwn":{"title":"Build your own","description":"Connect any MCP server with a custom endpoint."}},"connected":{"title":"Connected MCP Servers","description":"All connected servers available for planner routing in chats.","loading":"Loading MCP servers...","emptyTitle":"No MCP servers connected","emptyHint":"Connect an MCP server so the assistant can use its tools in chat.","headers":"{count} header(s)","bearerConfigured":"Bearer token configured","bearerMissing":"No bearer token","checkedAt":"Checked: {value}"},"dialog":{"createTitle":"Add new MCP Server","createDescription":"Only you can use it until you share it with the workspace."},"form":{"oauthRegistrationUnsupported":"Its OAuth sign-in works only with pre-registered apps, which are not supported yet.","credentialsNeeded":"This server needs credentials. Add headers or a bearer token, then check the connection.","prefilled":"Filled in from what the server reports. Change anything before you add it.","transportHttp":"Streamable HTTP","transportSse":"SSE (older servers)","name":"Server name","namePlaceholder":"e.g. Internal Knowledge MCP","description":"Description","descriptionPlaceholder":"Optional context for teammates","transport":"Transport","endpoint":"Endpoint URL","endpointPlaceholder":"https://example.com/mcp","condition":"AI Assistant prompt","conditionPlaceholder":"Use this server for requests about customer support policy and ticket triage.","headers":"Auth headers (JSON)","headersPlaceholder":"{\"X-API-Key\":\"token-value\"}","headersHelp":"Used only when header mode is Replace. Provide a JSON object of key/value pairs.","headersKeepHelp":"Current headers stay unchanged.","headersClearHelp":"All stored headers will be removed when you save.","bearer":"Bearer token","bearerPlaceholder":"Optional bearer token","clearBearerToken":"Clear stored bearer token","sectionAuth":"Credentials","headersKeepKeys":"Keeps the current headers: {keys}","bearerKeepPlaceholder":"Leave empty to keep the current token"},"status":{"enabled":"Enabled","disabled":"Disabled","unknown":"Unknown","healthy":"Healthy","unhealthy":"Unhealthy"},"actions":{"continue":"Continue","checkConnection":"Check connection","changeUrl":"Change","reconnect":"Reconnect","create":"Create","save":"Save changes","cancel":"Cancel","delete":"Delete","enable":"Enable for everyone","disable":"Disable for everyone","test":"Test","add":"Add MCP server","testConnection":"Test connection"}}},"workspace":{"pageTitle":"Manage Workspace","pageDescription":"Invite members, manage roles, and transfer workspace ownership.","loading":"Loading workspace settings...","accessDeniedTitle":"Access denied","accessDeniedDescription":"Only workspace owner or admins can access this page.","sections":{"inviteTitle":"Invite Member","inviteDescription":"Invite a new member or admin to this workspace.","groupsDescription":"Organize members for billing limits and resource access."},"submenu":{"peopleAccess":"People & Access","aiModelProviders":"AI Model Providers","llmDataProtection":"LLM Data Protection","skills":"Skills","userFields":"User Fields","billing":"Billing","audit":"Audit","feedback":"Feedback"},"pendingInvitationsCount":"{count} pending","invite":{"emailLabel":"Email","emailPlaceholder":"name@company.com","roleLabel":"Role","submit":"Send invite","submitting":"Sending..."},"roles":{"owner":"Owner","admin":"Admin","member":"Member"},"actions":{"refresh":"Refresh","saveRole":"Save role","rowActionsAria":"Actions for {email}","roleForMember":"Role for {email}","roleForInvite":"Role for invitation to {email}","revokeInviteFor":"Revoke invitation for {email}","remove":"Remove","removing":"Removing…","transferOwnership":"Transfer ownership","transferring":"Transferring…","revokeInvite":"Revoke","revokingInvite":"Revoking...","createGroup":"Create group","creatingGroup":"Creating...","deleteGroup":"Delete","deletingGroup":"Deleting…","addGroupMember":"Add member","addGroupMemberOne":"Add 1 member","addGroupMembersCount":"Add {count} members","addingGroupMember":"Adding..."},"notices":{"loadFailed":"Failed to load workspace settings.","inviteCreated":"Invitation created.","inviteCreateFailed":"Failed to create invitation.","packageSeatLimitReached":"All {reserved} of {maximum} package seats are reserved. Increase the package seat limit to invite more people.","inviteRoleUpdated":"Invitation role updated.","inviteRoleUpdateFailed":"Failed to update invitation role.","inviteRevoked":"Invitation revoked.","inviteRevokeFailed":"Failed to revoke invitation.","roleUpdated":"Member role updated.","roleUpdateFailed":"Failed to update member role.","primaryGroupUpdated":"Primary group updated.","primaryGroupUpdateFailed":"Failed to update the primary group.","memberRemoved":"Member removed.","memberRemoveFailed":"Failed to remove member.","ownershipTransferred":"Ownership transferred.","ownershipTransferFailed":"Failed to transfer ownership.","groupCreated":"Group created.","groupCreateFailed":"Failed to create group.","groupDeleted":"Group deleted.","groupDeleteFailed":"Failed to delete group.","groupHasAppAccessReferences":"This group still controls access to app views.","groupHasDatasetReferences":"This group still controls access to {count} datasets.","groupMemberAdded":"Group member added.","groupMemberAddFailed":"Failed to add group member.","groupMemberRemoved":"Group member removed.","groupMemberRemoveFailed":"Failed to remove group member."},"groups":{"nameLabel":"Group name","namePlaceholder":"Finance, Support, Engineering...","empty":"No groups yet.","backToList":"Back to groups","selectedEmpty":"No members in this group yet.","noAvailableMembers":"All workspace members are already in this group.","memberPickerLabel":"Add workspace member","memberPickerPlaceholder":"Select a member","memberCount":"{count} members","removeMember":"Remove from group","removeMemberFor":"Remove {email} from group"},"members":{"empty":"No members found.","you":"You","searchPlaceholder":"Search members by email or name","searchEmpty":"No members match \"{search}\".","count":"{shown} of {total} members","primaryGroupDescription":"Primary group controls where new items using the Primary group default are created. If it is not set, those items are private.","primaryGroupFor":"Primary group for {email}","primaryGroupUnset":"Not set","primaryGroupReadOnly":"Primary group: {group}","columns":{"member":"Member","role":"Role","joined":"Joined","actions":"Actions"}},"invitations":{"empty":"No pending invitations.","columns":{"email":"Email","role":"Role","expiresAt":"Expires","actions":"Actions"}},"confirm":{"removeMemberTitle":"Remove member?","removeMember":"Remove {email} from the workspace?","transferOwnershipTitle":"Transfer ownership?","transferOwnership":"Transfer ownership to {email}?","deleteGroupTitle":"Delete group?","deleteGroup":"Delete this group? Existing billing attribution on usage logs will stay intact."},"userFields":{"title":"User Fields","description":"Define custom profile fields for workspace members. These fields become available as template variables in workflows.","removeSchema":"Remove Schema","removeSchemaConfirm":"Remove the user field schema? This cannot be undone.","removeSchemaDescription":"Removes the entire member field schema for this workspace.","removingSchema":"Removing…","saveSchema":"Save Schema","saveFailed":"Failed to save the field schema.","emptyLabelError":"Every field needs a label before the schema can be saved.","schemaVersion":"Schema version {version}","lastUpdatedPrefix":"last updated","lastUpdated":"last updated {date}","keyPlaceholder":"key","labelPlaceholder":"Label","typeLabel":"Field type","required":"Required","extensible":"Extensible","expand":"Expand","collapse":"Collapse","removeField":"Remove field","addField":"Add Field","addFieldTo":"Add field to {field}","objectFallback":"object","fieldTypes":{"text":"Text","number":"Number","boolean":"Boolean","date":"Date","object":"Object"}},"skills":{"title":"Skills","description":"Manage custom assistant skills for your workspace.","customSkills":"Custom skills","skillCount":"Skills: {count}","newSkill":"New skill","blueprintTitle":"Skill blueprint","identitySection":"Identity","activationSection":"Activation","contextSection":"Context","invokedBy":"Invoked by","audience":"Audience","contextIncluded":"Context included","triggerCount":"Hints: {count}","toolCount":"Tools: {count}","pinCount":"Pins: {count}","createTitle":"Create skill","editTitle":"Edit skill","editing":"Editing {name}","empty":"No custom skills yet.","emptyTitle":"No custom skills yet","emptyDescription":"Create a skill to teach the assistant something your workspace does often.","backToList":"Back to skills","discard":"Discard","discardConfirmTitle":"Discard changes?","discardConfirm":"You have unsaved changes. Discard them and return to the skills list?","name":"Name","descriptionLabel":"Description","allMembers":"All members","selectedGroups":"Selected groups","advertisedTools":"Advertised tools","pinnedKnowledge":"Pinned Knowledge Hub items","instructions":"Instructions","triggerHints":"Trigger hints","enabled":"Enabled","disabled":"Disabled","save":"Save skill","saveSucceeded":"Skill saved.","saveFailed":"Failed to save skill.","cancel":"Cancel","edit":"Edit skill","delete":"Delete skill","deleteSucceeded":"Skill deleted.","deleteFailed":"Failed to delete skill.","deleteConfirm":"Delete this skill?","deleteConfirmTitle":"Delete skill","deleting":"Deleting…","noGroups":"No groups yet.","noTools":"No tools available.","groupAudienceSummary":"{count} groups","agentScope":"Runs on","agentScopeGeneral":"General (main assistant)","agentScopeElastic":"Live connection / ERP (elastic agent)"},"billing":{"errors":{"loadFailed":"Could not load usage data."},"personalLimits":{"title":"Personal limits","description":"Choose which configured per-person limit applies first.","priorityTitle":"Personal limit priority","priorityDescription":"Drag to reorder. The first configured limit applies to each person.","highest":"Highest priority","checkedFirst":"Checked first","priorityAria":"Personal limit priority","savePriority":"Save priority","saveChanges":"Save changes","saving":"Saving…","resetPriority":"Restore default order","sharedTitle":"Shared credit limits still apply.","sharedDescription":"Personal-limit priority does not override a workspace or group total budget.","saveFailed":"Failed to save personal limits.","savePending":"A save is already in progress.","deleteFailed":"Failed to delete the default.","loadFailed":"Personal limits could not be loaded.","refreshFailed":"The latest personal limits could not be loaded. Your draft is still here.","stalePolicy":"The saved priority changed while you were editing. Load it before saving again.","loadCurrent":"Load current priority","retry":"Retry","moveUp":"Move {source} up","moveDown":"Move {source} down","moved":"{source} moved to priority {position}","skipHelp":"A source with no configured amount is skipped. Zero is a valid limit. For multiple groups, the lowest per-user amount applies.","sources":{"user":{"title":"Specific user limit","description":"An amount set directly for a person"},"workspace_default":{"title":"Workspace default","description":"The workspace default for each person"},"group_default":{"title":"Group default","description":"The lowest default among a person's groups"}},"example":{"label":"Live example","title":"How this applies to Alex","description":"Try a different order and watch the result.","user":"Specific user limit","userAria":"Example specific user limit","workspace":"Workspace default","group":"Group default","result":"Alex's personal monthly limit","from":{"user":"From Alex's specific user setting","workspace_default":"From the workspace per-user setting","group_default":"From the group per-user setting"},"none":"No personal limit is configured","note":"Example amounts in credits only. They are never saved."},"defaults":{"title":"Per-user defaults","description":"Set one workspace default or a default for each group. These amounts apply per person each month.","scope":"Default scope","target":"Default target","chooseGroup":"Select group","amount":"Per-user monthly limit (credits)","placeholder":"Credits / person / month","save":"Save default","invalid":"Enter a valid amount and target.","value":"{amount} / person / month","delete":"Delete {target}","remove":"Delete","deleteTitle":"Delete per-user default?","deleteDescription":"This source will be skipped when no other per-user default is configured for it.","deleteConfirm":"Delete default","deleting":"Deleting…"}},"limits":{"title":"Credit limits","description":"Set hard monthly credit limits for the workspace, groups, or individual users.","effectiveLimit":"Effective limit","currentSpend":"Credits used","reserved":"Reserved","remaining":"Remaining","scopeLabel":"Scope","targetLabel":"Target","targetPlaceholder":"Select target","amountLabel":"Monthly cap (credits)","workspaceTarget":"Workspace","save":"Save limit","delete":"Delete limit","deleting":"Deleting…","configuredTitle":"Configured limits","spendSummaryTitle":"Monthly credits by scope","listTitle":"Credit limits","listDescription":"Credits used per scope against its configured limit.","remainingShort":"{amount} remaining","empty":"No credit limits configured.","spendSummaryEmpty":"No credit usage recorded by scope this month.","monthlyCap":"{amount} per month","remainingOf":"{remaining} remaining of {limit}","invalidLimit":"Enter a valid monthly limit.","missingTarget":"Select a user or group target.","saveSucceeded":"Credit limit saved.","saveFailed":"Failed to save credit limit.","deleteSucceeded":"Credit limit deleted.","deleteFailed":"Failed to delete credit limit.","deleteConfirm":"Delete this credit limit?","scopes":{"org":"Workspace","group":"Group","user":"User"}},"tabs":{"overview":"Overview","usage":"Usage","ariaLabel":"Usage & limits views"},"exports":{"open":"CSV exports","title":"Usage CSV exports","description":"Export up to 366 days of usage. Reports contain at most 100,000 calls and 64 MiB. You can leave this page while an export runs; completed downloads remain available for 24 hours.","selectedPeriod":"Selected period","create":"Create CSV","creating":"Requesting…","history":"Recent exports","refresh":"Refresh","empty":"No exports requested yet.","rows":"{count} calls","requested":"Requested:","expires":"Download expires:","download":"Download CSV","invalidRange":"Select a valid period of no more than 366 days.","forbidden":"You no longer have access to usage exports.","createFailed":"The export request could not be confirmed. Retry with the same period to recover it. If another export is running or the daily limit is reached, wait before retrying.","downloadFailed":"The export could not be downloaded. Refresh the history and try again.","loadFailed":"Export history could not be loaded. Refresh to try again.","status":{"queued":"Queued","processing":"Preparing","ready":"Ready","failed":"Failed","expired":"Expired"},"errors":{"USAGE_EXPORT_ACCESS_CHANGED":"Access changed while this report was being prepared.","USAGE_EXPORT_LIMIT_EXCEEDED":"This report exceeded the export limit. Select a shorter period.","USAGE_EXPORT_DEADLINE_EXCEEDED":"This report took too long. Try a shorter period.","USAGE_EXPORT_FAILED":"This report could not be prepared. Request a new export."}},"usageSection":{"title":"Usage","description":"Credit and token usage over the selected period."},"progressBar":{"monthlyUsage":"Monthly usage"},"dateRange":{"to":"to","days7":"7 days","days30":"30 days"},"summary":{"totalCost":"Total Cost","totalCredits":"Credits used","totalQueries":"Total Queries","inputTokens":"Input Tokens","outputTokens":"Output Tokens","loading":"Loading"},"charts":{"loading":"Loading…","noData":"No usage data for this period","retry":"Retry chart","loadingChart":"Loading chart…","cost":"Cost","credits":"Credits","input":"Input","output":"Output","costByAgent":"Cost by Capability","creditsByAgent":"Credits by capability","costOverTime":"Cost Over Time","creditsOverTime":"Credits over time","tokenUsage":"Token Usage Over Time","creditsSummary":"{count} daily buckets, {total} used. Peak: {peakValue} on {peakDate}.","agentCreditsSummary":"{count} capabilities. Highest usage: {topAgent} at {topCost}.","costSummary":"{count} daily buckets, {total} total cost. Peak: {peakValue} on {peakDate}.","tokenSummary":"{count} daily buckets. {input} input tokens and {output} output tokens.","agentSummary":"{count} capabilities. Highest cost: {topAgent} at {topCost}."},"logs":{"title":"Usage Logs","columns":{"time":"Time","model":"Model","kind":"Kind","agent":"Capability","pricing":"Pricing","in":"In","out":"Out","cost":"Cost","credits":"Credits","duration":"Duration","session":"Session","source":"Source","context":"Context"},"sources":{"chat":"Chat","workflow":"Workflow","knowledge":"Knowledge","dataset":"Dataset","platform":"Platform"},"knowledgeOperations":{"queryEmbedding":"Query embedding","compress":"Compression","extract":"Extraction","summarize":"Summary","embedContent":"Content embedding","embedSummary":"Summary embedding","embedChunks":"Chunk embedding"},"kinds":{"llm":"LLM","embedding":"Embedding","vision":"Vision analysis","imageGeneration":"Image generation","documentGeneration":"Document generation","transcription":"Transcription","webResearch":"Web research","addressValidation":"Address validation"},"none":"None","sessionLabel":"Session #{id}","knowledgeItemLabel":"Item #{id}","workflowRunLabel":"Run #{id}"}},"feedback":{"pageTitle":"Feedback","pageDescription":"Review and triage feedback captured in the workspace.","disabledTitle":"Feedback capture is not enabled","disabledDescription":"Feedback capture is not enabled for this organization.","listDescription":"Review feedback submitted by users about assistant responses.","table":{"date":"Date","user":"From","source":"Source","category":"Category","feedback":"Feedback","session":"Chat","status":"Status"},"sources":{"message_action":"Message rating","agent_tool":"Assistant captured"},"detailTitle":"Feedback detail","detailDescription":"Full feedback text and review actions","detailFrom":"From","detailSession":"Chat","messageContext":"Message this feedback refers to","unknownUser":"Unknown user","untitledSession":"Untitled chat","detailOrganisation":"Organisation","messageDeleted":"The rated message was deleted.","empty":"No feedback matches these filters.","loadFailed":"Could not load feedback","retry":"Retry","previousPage":"Previous","nextPage":"Next","pageStatus":"Page {page} of {pages} ({total} entries)","filters":{"search":"Search feedback or chats…","searchLabel":"Search feedback","rating":"Rating","all":"All","statusLabel":"Status","allStatuses":"All statuses"},"ratings":{"helpful":"Helpful","notHelpful":"Not helpful","unrated":"Without rating"},"reviewedAt":"Reviewed {date}","actions":{"markReviewed":"Mark as reviewed","archive":"Archive"},"statuses":{"submitted":"Submitted","reviewed":"Reviewed","archived":"Archived"},"categories":{"incorrect_answer":"Incorrect answer","missing_info":"Missing info","unhelpful":"Unhelpful","bug":"Bug","other":"Other"},"errors":{"updateStatusFailed":"Failed to update feedback status"}},"llmDataProtection":{"title":"LLM data protection","description":"Control how personal data and secrets are handled before workspace content is sent to model providers.","readOnly":"Only workspace owners and admins can change data protection settings.","pdfPasswords":{"title":"PDF passwords","description":"Suppliers sometimes send PDFs that need a password to open. File extraction in chats, the Knowledge Hub and workflows tries these passwords when a PDF needs one. Saved passwords cannot be viewed again.","passwordLabel":"Password","nameLabel":"Name (optional)","namePlaceholder":"e.g. Supplier invoices","add":"Add password","count":"{count} of {limit} passwords saved","empty":"No PDF passwords saved yet.","unnamed":"Unnamed password","addedOn":"Added {date}","remove":"Remove {name}","loading":"Loading PDF passwords","loadFailed":"PDF passwords could not be loaded.","notice":{"added":"Password saved.","removed":"Password removed.","addFailed":"The password could not be saved.","limitReached":"The maximum number of PDF passwords is reached. Remove one first.","removeFailed":"The password could not be removed."}},"generatedFiles":{"title":"Future file defaults","description":"Choose who can find future Knowledge Hub items created through each path. Existing items are not changed.","sharingNote":"These settings only control defaults. People can change visibility later in the Knowledge Hub.","private":"Private to creator","orgOnly":"Entire workspace","primaryGroup":"Primary group","primaryGroupNote":"Uses the responsible member's primary group. If none is set, the file is private.","groups":{"created":"Created in the workspace","automations":"Automations","connectedSources":"Connected sources"},"paths":{"agentGenerated":{"label":"Generated chat files","description":"Files created for someone in chat and saved to the Knowledge Hub."},"manualUpload":{"label":"Manual uploads","description":"Files people upload directly to the Knowledge Hub."},"directImport":{"label":"Direct imports","description":"Items imported directly into the Knowledge Hub."},"agentKnowledge":{"label":"Agent knowledge saves","description":"Knowledge items an agent saves for future use."},"workflowOutput":{"label":"Workflow outputs","description":"Files and items produced by workflows."},"datasetImport":{"label":"Dataset imports","description":"Files imported while creating or updating datasets."},"emailAutoIngestion":{"label":"Email auto-ingestion","description":"Email bodies and attachments automatically added from connected mailboxes."},"connectedSourceIndexing":{"label":"OneDrive, OneNote and Google Drive indexing","description":"Items indexed from OneDrive, OneNote and Google Drive connections. Other connectors follow their own rules, listed below."},"cloudDriveCopy":{"label":"Cloud drive copies","description":"Files copied into the Knowledge Hub from a cloud drive."}},"otherConnectors":{"title":"Other connectors","description":"These connectors decide the audience of indexed items themselves. This setting cannot change them.","gmail":{"label":"Gmail","description":"Always private to the mailbox owner."},"ftp":{"label":"FTP","description":"Private to the member who starts the indexing; each member indexes their own copy."},"sharedConnections":{"label":"Exchange Server, Network Drive and Confluence","description":"Everyone in the workspace when the connection is shared, otherwise private to the connection owner."},"existingItemsNote":"Items these connectors already indexed are updated to match on every sync. Items shared with a group keep their audience."},"setAllPrivate":"Set all private","setAllWorkspace":"Set all workspace","setAllPrimaryGroup":"Set all primary group","loading":"Loading file visibility defaults","saving":"Saving…","saved":"File visibility defaults updated.","loadFailed":"File visibility defaults could not be loaded.","saveFailed":"File visibility defaults could not be saved. Try again.","save":"Save file defaults","discard":"Discard changes"},"policy":{"title":"Policy mode","description":"Choose whether detections are only audited, masked before model calls, or blocked entirely.","modeLabel":"Mode"},"modes":{"disabled":"Disabled","log_only":"Log only","mask":"Mask","block":"Block"},"actions":{"save":"Save policy","saving":"Saving...","off":"Off","logOnly":"Log","mask":"Mask","block":"Block","builtinActionLabel":"Action for {name}","customActionLabel":"Action for {name}","logged":"Logged","masked":"Masked","blocked":"Blocked"},"notices":{"loadFailed":"Failed to load the masking policy.","validationFailed":"Check every built-in detector and custom rule action before saving.","updateSuccess":"Masking policy updated.","updateFailed":"Failed to update masking policy."},"detectors":{"title":"Built-in detectors","description":"Choose Off, Log, Mask, or Block independently for each standard personal-data and secret detector.","email":"Email","phone":"Phone","iban":"IBAN","creditCard":"Credit card","jwt":"JWT","apiKey":"API key","privateKey":"Private key","germanTaxId":"German tax ID","germanVatId":"German VAT ID"},"customRules":{"title":"Custom rules","description":"Create workspace-specific detectors directly or ask the assistant for help when built-in detectors are not enough.","empty":"No custom rules configured.","untitled":"Untitled rule","placeholderLabel":"Placeholder label","addManually":"Add rule manually","createWithAssistant":"Create with assistant","edit":"Edit","editLabel":"Edit {name}","remove":"Remove","removeLabel":"Remove {name}","enable":"Enable {name}","disable":"Disable {name}","removeConfirmTitle":"Remove custom rule?","removeConfirmDescription":"Remove \"{name}\" from this policy draft? The change takes effect only after you save the policy.","removeConfirmAction":"Remove rule","dialog":{"createTitle":"Add custom rule","editTitle":"Edit custom rule","description":"Define the workspace-specific value this rule should detect. Changes remain a draft until you save the policy.","basic":"Basic details","basicHelp":"Give the rule a clear name and choose the placeholder shown after masking.","name":"Rule name","ruleDescription":"Description","placeholderLabel":"Placeholder label","action":"Action","selectAction":"Select action","advanced":"Advanced","advancedHelp":"Configure the stable rule ID and regular expression.","id":"Rule ID","idHelp":"Used to identify the rule. The ID cannot be changed after the rule is created.","pattern":"Regular expression","patternHelp":"Use regular-expression syntax supported by both JavaScript and Python. Matching runs with a bounded timeout.","cancel":"Cancel","create":"Add rule","save":"Save changes","errors":{"required":"This field is required.","invalid":"Enter a valid value.","invalidRegex":"Enter a valid regular expression.","builtinIdConflict":"This ID is reserved by a built-in detector.","duplicateId":"A custom rule with this ID already exists.","duplicateName":"A custom rule with this name already exists.","ruleLimit":"A policy can contain at most 50 custom rules."}}},"events":{"title":"Recent events","description":"Metadata-only audit trail for recent detections. Raw matched values are never shown.","loadFailed":"Failed to load recent data protection events.","empty":"No masking events recorded yet.","none":"None","session":"Session #{id}","workflow":"Workflow #{id}","workflowRun":"Run #{id}","workflowNode":"Node {id}","request":"Request {id}","columns":{"time":"Time","action":"Action","source":"Source","detectors":"Detectors","matches":"Matches","context":"Context"}}},"serviceProviders":{"title":"Service providers","description":"Deployment services that may process data. Configured means required settings are present; it does not verify credentials. AI routes and model providers are shown above and below.","service":"Service","provider":"Provider","configuration":"Configuration","hosting":{"title":"Hosting & processing","source":"Provider documentation","sourceLabel":"Provider documentation for {provider}","explanation":"Locations describe hosting and processing, not company origin. Only the selected service is shown; unreported regions remain unknown.","area":{"eu":"EU","outsideEu":"Outside EU","global":"Global processing","accountDependent":"Account-dependent","unknown":"Unknown","managed":"Deployment-managed","notApplicable":"Not applicable"},"details":{"langfuseEu":"Ireland · AWS eu-west-1","langfuseUs":"Oregon, US · AWS us-west-2","langfuseJp":"Tokyo, Japan · AWS ap-northeast-1","langsmithEu":"Netherlands · Google Cloud europe-west4","langsmithUs":"United States · cloud region not identified","mailjet":"Germany & Belgium · Google Cloud","linkup":"EU data storage. GDPR compliant. DPA available on request.","googleStorageEu":"Files stored in the EU · Google Cloud","googleHostingEu":"Hosted in the EU · Google Cloud","storage":"Selected storage region not reported.","googleAuthentication":"Sign-in data may be processed worldwide by Google, including outside the EU.","microsoftAuthentication":"Processing depends on your Microsoft account and tenant region. EU/EFTA Entra tenants have EU Data Boundary coverage, with exceptions.","vies":"EU service; processing region not reported.","managed":"Location managed by the deployment operator.","inactive":"No active service.","simulation":"Development simulation.","unavailable":"Location unavailable.","unknown":"Processing region not disclosed by this configuration."}},"observedAt":"Configuration snapshot: {time}","unavailableTitle":"Service details unavailable","unavailableDescription":"Service configuration could not be loaded. You can continue using the other settings.","partial":"Search and tracing details are temporarily unavailable. Other service details are shown.","stale":"Refresh failed. These are the previously loaded service details.","retry":"Retry","status":{"configured":"Configured","needs_setup":"Needs setup","disabled":"Disabled","unavailable":"Unavailable"},"services":{"web_search":{"name":"Web search","purpose":"Search queries and public page retrieval."},"platform_email":{"name":"Platform email","purpose":"Sign-in codes and platform notifications."},"file_storage":{"name":"Default file storage","purpose":"Storage for newly created files. Existing files may use earlier backends."},"hosting":{"name":"Application hosting","purpose":"Infrastructure running this installation."},"google_sign_in":{"name":"Google sign-in","purpose":"Account authentication through Google."},"microsoft_sign_in":{"name":"Microsoft sign-in","purpose":"Account authentication through Microsoft."},"langsmith":{"name":"LangSmith tracing","purpose":"Agent execution traces, which can include prompts and results."},"langfuse":{"name":"Langfuse tracing","purpose":"Agent execution traces, which can include prompts and results."},"audit_storage":{"name":"Audit checkpoint storage","purpose":"Archive target for audit integrity checkpoints."},"vat_validation":{"name":"VAT validation","purpose":"VAT identifier checks for applicable billing profiles."}},"providers":{"exa":"Exa","linkup":"Linkup","mailjet":"Mailjet","smtp":"Custom SMTP — operator not identified","gcs":"Google Cloud Storage","azure":"Azure Blob Storage","s3":"Amazon S3","s3_compatible":"Custom S3-compatible storage","local":"Local to the deployment","stub":"Development simulation","google_cloud":"Google Cloud","deployment_managed":"Deployment-managed","google":"Google","microsoft":"Microsoft","langsmith":"LangSmith Cloud","langfuse":"Langfuse Cloud","vies":"European Commission VIES","custom_vat":"Custom VAT service","none":"None","unknown":"Unknown","exaCustom":"Custom search endpoint (Exa)","linkupCustom":"Custom search endpoint (Linkup)","langsmithCustom":"Custom LangSmith deployment","langfuseCustom":"Custom Langfuse deployment"}},"aiModeConfiguration":{"title":"Platform model routing","description":"Current routes and catalog prices by model and modality.","caption":"Effective platform model assignments, routes, and catalog prices","scopeNote":"Live platform routing for chat modes and specialized capabilities. The preferred route reflects the responding agent process. Workspace provider profiles below are configured separately.","loading":"Loading platform model routing","loadFailed":"Platform model routing could not be loaded.","loadFailedDescription":"Provider management remains available while you retry this diagnostic view.","empty":"No platform model routes are configured.","emptyDescription":"Effective routes will appear here when model routing is available.","unavailable":"Unavailable","blocked":"Blocked","currentlyPreferred":"Currently preferred","residencyDecision":"Residency decision","configurationUnavailable":"Route configuration unavailable","notApplicable":"Not applicable","providerDefault":"Model default","modelsFrom":"Models from:","policy":"Data processing:","policies":{"eu_only":"EEA","azure_eu_data_boundary":"Azure EU Data Boundary"},"agents":"Agents","platformTasks":"Platform tasks","specializedModels":"Specialized models","specialized":"Specialized","specializedUses":"Uses","resolvedModel":"Resolved:","directAzure":"Azure OpenAI (direct)","deployment":"Deployment:","cachedInput":"Cached input","priceSource":"Price source: {sources}","rateVersion":"Rate version:","boundaries":{"eu":"EU geography","eu_data_boundary":"EU Data Boundary"},"columns":{"mode":"Mode / capability","assignments":"Agents / tasks","route":"Route","provider":"Provider","model":"Provider / model","reasoning":"Reasoning","region":"Region","pricing":"Catalog pricing","input":"Input","output":"Output"},"modes":{"light":"Light","flash":"Flash","reasoning":"Reasoning","heavy":"Heavy"},"specializedCapabilities":{"vision_analysis":"Vision analysis","image_generation":"Image generation","voice_dictation":"Voice dictation","long_form_transcription":"Long-form transcription"},"specializedAssignmentLabels":{"image_inspection":"Image inspection","scanned_document_extraction":"Scanned document extraction","document_visual_qa":"Document visual QA","image_generation":"Image generation","microphone_dictation":"Microphone dictation","uploaded_audio_transcription":"Uploaded audio transcription"},"pricingModalities":{"text_input":"Text input","image_input":"Image input","audio_input":"Audio input","text_output":"Text output","image_output":"Image output"},"routes":{"primary":"Primary","fallback":"Fallback {number}"},"thinkingLevels":{"none":"None","minimal":"Minimal","low":"Low","medium":"Medium","high":"High","xhigh":"Extra high","max":"Max"},"agentLabels":{"knowledge_hub":"Knowledge Hub","workflow":"Workflow","email":"Email","teams":"Microsoft Teams","dataset":"Dataset","elastic":"Elastic","app_automation":"App automation","file":"File","integrations":"Integrations","research":"Research","data_analysis":"Data analysis","mcp":"MCP","code_execution":"Code execution"},"slotLabels":{"default":"Default","main_agent":"Main agent orchestration","openai_default":"OpenAI default","chat_router":"Chat routing","chat_suggest_queries":"Suggested queries","chat_title":"Chat titles","research_summary":"Research answers","knowledge_summarize":"Knowledge summaries","dataset_extraction":"Dataset extraction","dataset_vocab_suggest":"Dataset vocabulary suggestions","dataset_semantic_kind":"Dataset semantic classification","dataset_import_mapping":"Dataset import mapping","memory_summarizer":"Memory summaries","business_memory":"Business memory","business_memory_reranker":"Business memory reranking","purpose_context":"Purpose context","purpose_context_reranker":"Purpose context reranking","document_agent_test":"Document checks","judge":"Evaluation judge","attachment_summarizer":"Attachment summaries"},"sources":{"requesty":"Requesty catalog","litellm":"LiteLLM catalog","azure_configured":"configured Azure rates","saved_catalog":"saved catalog snapshot"},"unavailableReasons":{"catalog_unavailable":"Pricing catalogs unavailable","model_not_found":"Model not found in catalogs","incomplete_rate":"Incomplete catalog rate"},"priceNote":"Credits per 1M tokens. Direct Azure uses the configured metering rates for AI credits. Other catalog estimates can vary by region, caching, context length, and provider terms. External specialized pricing is not fetched when all chat routes use direct Azure."},"modelProviders":{"editor":{"connectionChecked":"Connection checked","configurationChecked":"Configuration tested","platformDefault":"Platform default","scope":"Choose the models used for workspace chats and their agents.","source":"Model source","platform":"Uhrwerk.AI-provided models","workspace":"Bring your own provider/key","defaultRequired":"Choose a default model or enter its exact deployment ID.","unavailable":"Profile changes are temporarily unavailable. The saved configuration remains in use.","legacy":"This profile keeps its existing behavior. Upgrade it explicitly to use the model picker and test changes before applying them.","upgrade":"Upgrade this profile","upgradePreview":"Review the proposed settings below. Previously unused role choices are not adopted unless you select them.","loadModels":"Load models","azureSuggestions":"These are resource-model suggestions. Enter the exact deployment name and test it before activating.","discoveryHint":"Load available model IDs or enter an exact model manually. Listing a model does not verify a working configuration.","suggestions":"Available models","budgetPending":"Test configuration to see the usable history threshold for the selected models.","advanced":"Advanced","inheritanceHint":"Empty agent choices inherit the default or the relevant parent agent. Explicit choices apply only to that agent.","uses":"Uses {model}","inherits":"Inherits {model}","chooseDefault":"Choose a default model","adoptPrevious":"Use previous selection: {model}","chooseModel":"Choose a model","inheritDefault":"Use inherited model","modelUnavailable":"Unavailable","fallbacks":"Default-model fallbacks","fallbackHint":"Choose up to two ordered EU models from this same account. They are used when the default model is temporarily unavailable. Agent overrides use their own selection.","fallbackNumber":"Fallback {number}","addFallback":"Add fallback model","moveEarlier":"Move earlier","removeFallback":"Remove","limits":"Declared model limits","limitsHint":"Enter a context ceiling where your provider cannot supply one. These are administrator-declared limits and cannot increase a known provider limit.","contextWindow":"Context ceiling (tokens)","maxOutputTokens":"Output ceiling (tokens)","validation":"Configuration test","test":"Test configuration","testing":"Testing configuration…","testCost":"Small test requests can incur provider usage. Tests use synthetic input and do not run your connected tools.","testRequired":"Test this configuration successfully before applying or activating it.","testFailed":"The configuration could not be verified. The saved profile is unchanged.","testExpired":"The draft changed or the test expired. Test again before applying or activating.","tested":"This draft passed the configuration test.","connection":"Connection","modelAccess":"Model access","generation":"Generation & streaming","tools":"Tools","structuredOutput":"Structured output","passed":"Passed","failed":"Failed","not_required":"Not required","unverified":"Unverified","historyThreshold":"Estimated conversation-history threshold: {tokens} tokens. This is a compression threshold, not the full context window.","fallbackOrder":"Fallback order: {models}","save":"Save profile","apply":"Apply changes","saveActivate":"Save & activate","discardTitle":"Discard profile changes?","discardDescription":"Your unsaved model selections and credentials will be discarded.","discard":"Discard changes","keepEditing":"Keep editing"},"catalog":{"euUnverified":"An EU processing location could not be verified.","unsupportedApi":"This model interface is not supported.","retired":"This model has been retired.","manualUnverified":"No catalog details are available for this model or deployment. Test the exact ID to verify it.","unknown":"Unknown","refresh":"Refresh models","loading":"Loading approved models…","stale":"These model details may be out of date. Testing checks the current selection again.","unavailable":"Models could not be loaded. Your selection is preserved.","forbidden":"You no longer have access to these models.","empty":"No approved models are available for this source.","noMatches":"No models match these filters.","search":"Search models","searchPlaceholder":"Model name, provider, or exact ID","provider":"Filter by provider","allProviders":"All providers","filters":"Model filters","eu":"EU location","tools":"Tools","vision":"Vision","reasoning":"Reasoning","structured":"Structured output","jsonSchema":"JSON schema","unknownLocation":"Location unknown","policyUnavailable":"This routing policy has no verifiable model or location details.","notEligible":"This model is unavailable for this configuration.","exactVariant":"Select the exact provider and region variant.","selected":"Selected model","selectedUnavailable":"This selected model is unavailable. Choose an approved model before testing.","inputPrice":"Input / 1M tokens","outputPrice":"Output / 1M tokens","context":"Context window","outputLimit":"Output limit","priceNote":"Provider catalog estimates in credits per million tokens. Actual usage can vary.","priceTier":"Above {tokens} input tokens","supported":"Supported","unsupported":"Not supported"},"sectionTitle":"Model profiles","sectionDescription":"Choose workspace model profiles. Saved provider credentials are never shown.","empty":"No model profiles configured.","providers":{"openai":"OpenAI","azureOpenai":"Azure OpenAI","vertexAi":"Vertex AI","requesty":"Requesty"},"status":{"active":"Active","inactive":"Inactive"},"boolean":{"yes":"Configured","no":"Not set"},"validation":{"healthy":"Healthy","unhealthy":"Unhealthy","unknown":"Unknown","never":"Not tested","nameRequired":"Profile name is required.","credentialsRequired":"Credentials are required for this provider.","endpointRequired":"Azure endpoint is required.","projectIdRequired":"Vertex project ID is required.","locationRequired":"Vertex location is required."},"columns":{"name":"Profile","active":"Active","provider":"Provider","updated":"Updated","lastTest":"Last test","hasCredentials":"Has credentials","actions":"Actions"},"actions":{"create":"Create profile","test":"Test","testing":"Testing...","activate":"Activate","activating":"Activating...","edit":"Edit","delete":"Delete","deleting":"Deleting...","cancel":"Cancel","saving":"Saving...","saveCreate":"Create profile","saveEdit":"Save changes"},"dialog":{"createTitle":"Create model profile","createDescription":"Add an organization model provider profile.","editTitle":"Edit model profile","editDescription":"Update provider settings and default model mappings."},"form":{"nameLabel":"Profile name","providerLabel":"Provider","setActiveOnCreate":"Set this profile as active after save","providerSettingsTitle":"Provider settings","credentialsTitle":"Credentials","credentialsConfiguredHint":"Credentials are already configured. Leave the field blank to keep the current secret.","modelDefaultsTitle":"Model defaults","defaultModelLabel":"Default model","routerModelLabel":"Router model","plannerModelLabel":"Planner model","summarizerModelLabel":"Summarizer model","verifierModelLabel":"Verifier model","knowledgeModelLabel":"Knowledge model","conversationModelLabel":"Conversation model","appAutomationModelLabel":"App automation model","workflowModelLabel":"Workflow model","fileModelLabel":"File model","integrationsModelLabel":"Integrations model","emailModelLabel":"Email model","researchModelLabel":"Research model","codeExecutionModelLabel":"Code execution model","mcpModelLabel":"MCP model","datasetModelLabel":"Dataset model","teamsModelLabel":"Teams model","datasetExtractionModelLabel":"Dataset extraction model","baseUrlLabel":"Base URL","endpointLabel":"Endpoint","apiVersionLabel":"API version","projectIdLabel":"Project ID","locationLabel":"Location","apiKeyLabel":"API key","serviceAccountJsonLabel":"Service-account JSON"},"notices":{"createSuccess":"Model profile created.","createFailed":"Failed to create model profile.","updateSuccess":"Model profile updated.","updateFailed":"Failed to update model profile.","deleteSuccess":"{name} was deleted.","deleteFailed":"Failed to delete {name}.","activateSuccess":"{name} is now active.","activateFailed":"Failed to activate {name}.","testSuccess":"{name} test succeeded.","testFailed":"{name} test failed.","testFailedWithError":"{name} test failed: {error}"},"confirm":{"deleteProfile":"Delete model profile {name}?"}},"agentInstructions":{"sectionTitle":"Assistant Instructions","sectionDescription":"Describe your business model and how the AI assistant should handle requests. These instructions guide routing, knowledge retrieval, and response framing.","form":{"placeholder":"Example: We are a freight shipping company. Our knowledge hub contains rate quotes organized by origin, destination, weight class, and carrier. When users ask about rates, always search the knowledge hub first."},"actions":{"edit":"Edit","save":"Save","saving":"Saving...","cancel":"Cancel"},"notices":{"updateSuccess":"Assistant instructions updated.","updateFailed":"Failed to update assistant instructions."},"empty":"No instructions configured. Add business context to help the assistant understand your domain.","lastUpdated":"Last updated {date}"}},"platform":{"invoiceIssuer":{"title":"Invoice issuer","description":"Activate the complete legal identity used to issue future Uhrwerk.AI invoices.","loading":"Invoice issuer is loading…","loadFailed":"The invoice issuer could not be loaded.","retry":"Retry issuer","activeVersion":"Active immutable version {version}","noActiveVersion":"No active issuer version","futureOnly":"Activation creates an immutable version for future invoices only. Published invoices never change.","ready":"Ready for automatic issuance","blocked":"Automatic issuance is blocked","blockers":"Issuance blockers","numberPreview":"Next-number format preview","activate":"Activate new version","activating":"Activating version…","activated":"Immutable issuer version {version} is now active.","activationFailed":"The issuer version could not be activated. Review the complete legal record and try again.","invalid":"Complete every required issuer field before activation.","groups":{"numbering":"Issuance and numbering","identity":"Legal identity","address":"Registered address","register":"Register disclosures","contact":"Contact","payment":"Payment instructions","branding":"Document footer and branding"},"fields":{"issuerKey":"Issuer key","invoiceNumberPrefix":"Invoice number prefix","domesticVatRate":"Domestic VAT rate (%)","paymentTermDays":"Payment term (days)","legalName":"Legal name","tradingName":"Trading name","legalForm":"Legal form","streetLine1":"Address line 1","streetLine2":"Address line 2","postalCode":"Postal code","city":"City","region":"State or region","countryCode":"Country code","vatId":"VAT ID","taxNumber":"Tax number","registeredOffice":"Registered office","registerCourt":"Register court","registerType":"Register type","registerNumber":"Register number","managingDirectors":"Managing directors","managingDirectorsHelp":"One director per line.","email":"Billing email","phone":"Phone","website":"Website","payeeName":"Payee name","iban":"IBAN","bic":"BIC","paymentTerms":"Payment terms","remittanceText":"Remittance instructions","logoReference":"Logo reference","footerText":"Footer text"}},"legalInvoices":{"title":"Legal invoices","description":"Inspect validation evidence, published revisions, and complete replacements visible to the customer.","loading":"Legal invoices are loading…","loadFailed":"This organisation's legal invoices could not be loaded.","retryLoad":"Retry legal invoices","empty":"No legal invoices have been staged for this organisation.","invoice":"Invoice","issueDate":"Issue date","amount":"Amount due","state":"Generation state","currentRevision":"Current revision","currentPointer":"Current customer-visible revision","replacementStatus":"Replacement {state}","currentRemains":"Revision {revision} remains current.","noCurrent":"No published revision","awaitingNumber":"Awaiting invoice number","view":"View {number}","previous":"Previous","next":"Next","page":"Page {page} of {totalPages} · {total} invoices","close":"Close","detailDescription":"Canonical current payload, validation evidence, and the immutable revision timeline.","detailLoading":"Invoice detail is loading…","detailFailed":"This legal invoice could not be loaded.","sourceStatement":"Source statement {id}","blockers":"Publication blockers","totals":"Published totals","net":"Net","tax":"VAT","gross":"Gross","prepaid":"Prepaid","due":"Due","validation":"ZUGFeRD validation","validationPassed":"Passed","validationFailed":"Failed","validationPending":"Not yet validated","validationEvidence":"Validated ZUGFeRD {version} · generator target ZUGFeRD {targetVersion} / Factur-X {targetFacturx} · {profile} · validator {validator}","timeline":"Immutable revision timeline","revision":"Revision {revision}","compareRevision":"Compare revision {revision}","comparisonTitle":"Revision {revision} compared with current","comparisonDescription":"Only changed fields from the immutable canonical invoice snapshots are shown.","comparisonField":"Field","comparisonSelected":"Selected revision","comparisonCurrent":"Current revision","comparisonEmpty":"The canonical invoice fields are identical.","initial":"Initial issuance","replacement":"Complete replacement","priorCurrent":"Prior current revision","created":"Created {date}","published":"Published {date}","privateReason":"Private reason: {reason}","downloadCurrent":"Download current invoice","downloadRevision":"Download revision {revision}","downloadFailed":"The invoice document could not be downloaded.","retryGeneration":"Retry generation","retrying":"Retrying…","retryFailed":"Generation could not be retried.","overwrite":"Overwrite invoice","states":{"pending":"Pending","blocked":"Blocked","rendering":"Rendering","published":"Published","failed":"Failed"},"overwriteDialog":{"title":"Overwrite invoice","description":"Publish a complete replacement revision. The invoice identity, number, and source statement remain immutable.","privateReason":"Private reason","privateReasonHelp":"Visible only to Platform Admins and retained with the immutable revision.","confirmation":"I confirm that this complete replacement will become the customer-visible revision.","diff":"Current versus draft","noChanges":"No canonical fields changed.","changedFields":"{count} canonical fields changed","current":"Current","draft":"Draft","totalsPreview":"Live totals preview","serverValidation":"The server recomputes and validates every total before publication.","publish":"Publish replacement","publishing":"Publishing replacement…","cancel":"Cancel","stale":"A newer current revision exists. Close this draft, review the latest revision, and start a new replacement.","failed":"The complete replacement was not accepted. Your draft and idempotency key are preserved; try again.","accepted":"Replacement revision {revision} was accepted for generation.","sections":{"parties":"Issuer and recipient","dates":"Dates and tax evidence","lines":"Ordered invoice lines","adjustments":"Allowances and charges","tax":"Tax breakdown","payment":"Payment and prepaid amount","presentation":"Document presentation","notes":"Notes"},"parties":{"issuer":"Issuer","recipient":"Recipient"},"itemField":"{item} — {field}","itemNumber":"{item} {index}","action":"Action","field":"Field","items":{"line":"Line","allowance":"Allowance","charge":"Charge","taxBreakdown":"Tax breakdown","note":"Note"},"fields":{"buyerReference":"Buyer reference","id":"ID","name":"Name","description":"Description","quantity":"Quantity","unitCode":"Unit code","unitNetCents":"Unit net cents","netCents":"Net cents","reason":"Reason","taxCategory":"Tax category","taxRateBasisPoints":"Tax rate basis points","issueDate":"Issue date","supplyStart":"Supply period start","supplyEnd":"Supply period end","taxTreatment":"Tax treatment","taxEvidenceType":"Tax evidence type","viesCheckedAt":"VIES checked at","viesReference":"VIES reference","manualSource":"Manual evidence source","manualVerifiedAt":"Manual evidence verified at","evidenceIssuerVatId":"Evidence issuer VAT ID","evidenceRecipientVatId":"Evidence recipient VAT ID","taxableCents":"Taxable cents","taxCents":"Tax cents","exemptionReason":"Exemption reason","prepaidCents":"Prepaid cents","dueDate":"Due date","paymentIban":"Payment IBAN","paymentBic":"Payment BIC","payeeName":"Payee name","paymentTerms":"Payment terms","remittanceText":"Remittance instructions","logoReference":"Logo reference","footerText":"Footer text"},"evidenceKinds":{"domestic":"Domestic","vies":"VIES","manual":"Manual"},"totals":{"lineNet":"Line net","allowances":"Allowances","charges":"Charges","taxBasis":"Tax basis","vat":"VAT","gross":"Gross","prepaid":"Prepaid","due":"Due"},"addLine":"Add line","removeLine":"Remove line {index}","addAllowance":"Add allowance","removeAllowance":"Remove allowance {index}","addCharge":"Add charge","removeCharge":"Remove charge {index}","addTax":"Add tax breakdown","removeTax":"Remove tax breakdown {index}","addNote":"Add note","removeNote":"Remove note {index}"}},"organisationDiscounts":{"title":"Organisation discounts","description":"Percentage schedules applied before corrections and platform credit.","create":"Create discount","createDescription":"Create an immutable percentage schedule. Ending it later creates a separate ledger event.","scope":"Discount scope","organisationScope":"Entire organisation","componentScope":"One charge","charge":"Charge","selectCharge":"Select a charge","percentage":"Percentage","percentageHint":"Enter 0.01% through 100.00%.","percentageOff":"{percentage}% off","builtInTargets":{"base":"Base price","seats":"Seats","aiUsage":"AI usage"},"start":"Start","currentPeriod":"Current billing period","nextPeriod":"Next billing period","currentPeriodWarning":"The discount applies to the full eligible charge for this period. It is not prorated, even if the period is already underway.","duration":"Duration","permanent":"Permanent","fixedPeriods":"Fixed number of periods","billingPeriods":"Billing periods","customerDescription":"Customer description","privateReason":"Private reason","confirmCreate":"I confirm this discount, its scope, start, and duration.","close":"Close","cancelScheduled":"Cancel scheduled discount","endActive":"End active discount","cancelDescription":"Cancel before it starts. It will never apply to a billing period.","endDescription":"End after the current billing period. It remains eligible through the current boundary.","confirmTermination":"I confirm this termination.","endAfterCurrent":"End after current period","loading":"Loading organisation discounts…","loadFailed":"Could not load this organisation's discounts.","retry":"Retry","configurationUnavailable":"Commerce configuration is unavailable. History remains readable, but commands are paused.","targetsUnavailable":"Charge targets are unavailable. Existing discounts remain manageable.","automationDisabled":"Discount automation is disabled in this deployment. Existing records remain read-only.","archivedReadOnly":"Archived organisations are read-only.","empty":"No organisation discounts yet.","scopeAndTarget":"Scope and target","componentFallback":"Component","unknown":"unknown","starts":"Starts","periodsRemaining":"{remaining} of {total} periods remaining","created":"Created","createdBy":"{date} · user {userId}","customer":"Customer:","private":"Private:","termination":"Termination: {customer} · {privateReason}","terminationDetail":"Effective after {period} · {date} · user {userId}","historyPages":"Discount history pages","previous":"Previous","next":"Next","page":"Page {page} of {totalPages}","states":{"scheduled":"Scheduled","active":"Active","completed":"Completed","cancelled":"Cancelled","ended":"Ended"},"commandFailed":"The discount command failed."},"statementDiscounts":{"total":"Percentage discounts","applications":"Discount applications","privateReason":"Private reason: {reason} · Created by user {userId}","line":"{label}: {amount} factual · {percentage}% · −{discount}","empty":"This statement contains no discount applications.","outcomes":{"applied":"Applied","no_matching_component":"No matching charge","zero_eligible_amount":"Zero eligible amount"},"summaryDiscounts":"{amount} discounts"},"organisationUsage":{"title":"Member activity","description":"Activity in this organisation over the last 30 days. Login is shown separately and applies to the whole account.","coverageNote":"Counts reflect retained, attributable activity. Login tracking starts when this report is introduced; decisions and uploads without recorded attribution are missing.","active7d":"Active in 7 days","active30d":"Active in 30 days","activeCount":"{active} / {total} members","search":"Search members by name or email","member":"Member","lastActivityAt":"Last activity","lastLoginAt":"Last account login","sessions30d":"Sessions (30d)","messages30d":"Messages (30d)","workflowRuns30d":"Workflow runs (30d)","costUsd30d":"Cost (30d)","last30Title":"Last 30 days","cost":"Cost","noActivity":"No activity recorded","noLogin":"No login recorded","user":"User {id}","loading":"Loading activity…","loadFailed":"Could not load member activity.","detailFailed":"Could not load this member’s activity details.","retry":"Try again","empty":"No matching members.","previous":"Previous page","next":"Next page","page":"Page {page} of {pages} · {total} members","close":"Close activity details","detailDescription":"Organisation activity and attributed usage. Metadata and counts only.","joined":"Member since {date}","trend":"Activity over time","days30":"30 days","days90":"90 days","dailyData":"Daily activity data (UTC)","date":"Date","noDailyActivity":"No sessions or messages in this period.","chartLoading":"Loading chart…","chartFailed":"The chart could not be loaded. Daily data is available below.","totalsTitle":"Since joining","sessions":"Sessions","messages":"Messages","workflowRuns":"Workflow runs","inboxDecisions":"Inbox decisions","knowledgeUploads":"Knowledge uploads","credits":"Attributed cost","creditNote":"Only usage attributed to this user is included.","topApps":"Most used apps","topConnectors":"Most used connectors","topAgents":"Most used agents","noUsage":"No usage recorded.","recentEvents":"Recent activity","noEvents":"No recent activity recorded.","sessionLink":"Session #{id}","workflowLink":"Workflow run #{id}","events":{"session_started":"Session started","message_sent":"Message sent","workflow_triggered":"Workflow started","workflow_approved":"Workflow approved","inbox_decision":"Inbox decision","knowledge_uploaded":"Knowledge document uploaded"}},"organisationMembers":{"search":"Search by email…","invalid":"Invalid organisation.","loading":"Loading…","loadFailed":"Could not load members.","email":"Email","role":"Role","mfa":"MFA","joined":"Joined","actions":"Actions","empty":"No members found.","reset":"Reset owner MFA","resetFailed":"Owner recovery was not permitted or could not be completed.","confirmTitle":"Use exceptional owner recovery?","confirmDescription":"This removes {email}'s MFA methods and trusted devices and revokes all active sessions. Use only when the owner cannot recover their account.","status":{"enabled":"Enabled","enrollment_required":"Enrollment required","not_enabled":"Not enabled"}}},"settings":{"nav":{"ariaLabel":"Settings navigation","backToApp":"Back to app","backToList":"Settings"},"groups":{"personal":"Personal","workspace":"Workspace"},"unsaved":{"title":"Unsaved changes","description":"You have unsaved changes on this page. Save them, or discard them and continue?","keepEditing":"Keep editing","discard":"Discard changes","saveAndContinue":"Save & continue","saving":"Saving…"},"saveBar":{"dirty":"You have unsaved changes","saving":"Saving…"},"shell":{"states":{"loading":"Loading…","forbiddenTitle":"You don't have access","forbiddenDescription":"Your role doesn't allow you to view this section. If this changed recently, ask a workspace admin.","errorTitle":"Something went wrong","errorDescription":"We couldn't load this section. Check your connection and try again.","staleDescription":"Couldn't refresh this section, so you're seeing the last version we loaded.","retry":"Retry"}},"sections":{"security":{"label":"Security","description":"Protect your account with an authenticator app or passkey, and manage trusted devices.","actionFailed":"That security change could not be completed. Try again.","managementChallenge":{"title":"Confirm with multi-factor authentication","description":"Use one of your configured methods to continue this change."},"methods":{"title":"Authentication methods","description":"Any configured method can complete MFA. Your last successful method is suggested first.","totp":"Authenticator app","configured":"A time-based code generator is configured.","notConfigured":"Use any standard TOTP authenticator app.","totpUnavailable":"Authenticator enrollment is unavailable in this deployment. Existing authenticators can still be removed.","active":"Active","inactive":"Not configured","add":"Add","replace":"Replace","addPasskey":"Add a passkey","addPasskeyDescription":"Use a device, hardware security key, or password manager.","passkeyUnavailable":"Passkey enrollment is unavailable in this deployment. Existing passkeys can still be renamed or removed.","passkeyDescription":"Passkey or security key","lastUsed":"Last used {date}","neverUsed":"Not used yet","noEmailPhone":"Email and phone codes are not available as MFA methods."},"totp":{"title":"Set up an authenticator app","description":"Scan the locally generated QR code or enter the key, then confirm a six-digit code.","qrAlt":"Authenticator setup QR code","copy":"Copy setup key","copied":"Setup key copied","copyShort":"Copy","copiedShort":"Copied","code":"Six-digit code","verify":"Verify and add","startFailed":"Authenticator setup could not be started.","retry":"Try again"},"passkey":{"title":"Add a passkey","description":"Your browser will ask you to create a passkey only after you continue.","name":"Passkey name","namePlaceholder":"For example, Work laptop","add":"Create passkey"},"remove":{"title":"Remove authentication method?","description":"Make sure another method remains available before removing this one."},"rename":{"title":"Rename passkey"},"devices":{"title":"Trusted devices","description":"Trusted devices can skip MFA until their trust expires.","empty":"No devices are currently trusted.","current":"Current device","created":"Added {date}","lastUsed":"Last used {date}","neverUsed":"Not used yet","expires":"Trust expires {date}","revoke":"Revoke trust","revokeAll":"Revoke all","revokeTitle":"Revoke trust for this device?","revokeAllTitle":"Revoke all trusted devices?","revokeDescription":"MFA will be required again the next time the affected device signs in."},"danger":{"title":"Disable multi-factor authentication","description":"This removes every authenticator and passkey and revokes all trusted devices.","workspaceRequired":"A workspace requires multi-factor authentication for your account, so it cannot be disabled here.","disable":"Disable MFA","confirmTitle":"Disable MFA for your account?","confirmDescription":"All configured methods and trusted devices will be removed. A workspace policy may require immediate enrollment again.","disabled":"Multi-factor authentication was disabled."}},"notifications":{"label":"Notifications","description":"Choose whether you receive attention summaries and let workspace admins set their schedule.","loading":"Loading notification settings…","retry":"Retry","weekdays":{"monday":"Monday","tuesday":"Tuesday","wednesday":"Wednesday","thursday":"Thursday","friday":"Friday","saturday":"Saturday","sunday":"Sunday"},"personal":{"title":"Your email digest","description":"Your personal choice for the workspace's inbox digest.","optIn":"Email me a digest","optInDescription":"Include you when the workspace schedule finds new inbox notifications.","inheritedSchedule":"Workspace schedule","dailySchedule":"Daily at {time} · {timezone}","weeklySchedule":"{weekday} at {time} · {timezone}","scheduleDisabled":"The workspace digest is currently disabled.","loadError":"Your notification preference could not be loaded.","saved":"Notification preference saved","saveFailed":"Notification preference could not be saved","deliveryPausedTitle":"Email delivery is paused","deliveryPaused":"Email delivery is paused because of a delivery problem or complaint. The pause may be temporary. Your saved choice remains unchanged, and turning reminders on will not clear the pause."},"workspace":{"title":"Workspace digest","description":"Set when opted-in members receive summaries of new inbox notifications.","enabled":"Enable workspace digest","enabledDescription":"Members are opted in by default and can opt out individually.","cadence":"Frequency","daily":"Daily","weekly":"Weekly","weekday":"Day","localTime":"Local time","timezone":"Time zone","baseline":"The first digest starts with notifications created after you enable this policy.","emailUnavailable":"Outbound email is not configured. Configure it before enabling email digests.","appUrlUnavailable":"The application URL is not configured. Configure it before enabling email digests.","loadError":"Workspace settings could not be loaded.","save":"Save changes","saving":"Saving…","cancel":"Cancel","dirty":"You have unsaved changes","saved":"Workspace digest saved","saveFailed":"Workspace digest could not be saved"}},"myProfile":{"label":"My profile","description":"Your personal profile fields.","saved":"Profile saved","saveFailed":"Failed to save profile","emptyTitle":"No profile fields yet","emptyDescription":"Your workspace admin hasn't set up any profile fields yet.","form":{"required":"required","fieldRequired":"This field is required","missingRequiredOne":"{count} required field is missing","missingRequiredOther":"{count} required fields are missing","customFields":"Custom fields","keyPlaceholder":"key","valuePlaceholder":"value","removeCustomField":"Remove custom field","addCustomField":"Add custom field","expand":"Expand","collapse":"Collapse","save":"Save","saving":"Saving…"},"learnedContext":{"title":"Learned context","description":"Read-only business learnings from chat history and indexed knowledge.","loading":"Loading learned context","loadError":"Could not load learned context.","retry":"Retry","empty":"No learned context yet.","scopeOrg":"Organization","scopePersonal":"Personal","provenance":"Provenance","sources":"Sources","noSources":"No active sources available","excerptUnavailable":"Excerpt unavailable","provenanceErrorFallback":"Could not load provenance","evidenceCountOne":"{count} evidence","evidenceCountOther":"{count} evidence","sourceCountOne":"{count} source","sourceCountOther":"{count} sources"}},"myAiKnowledge":{"label":"What the AI knows about me","description":"The personal facts the AI has learned about you from your chats."},"apiClients":{"label":"API clients","description":"Manage API clients and one-time keys that run workflows or chats as you.","guide":{"workflowsLoading":"Loading workflows…","workflowsError":"Could not load workflows. The Chat and Inbox guides are still available.","quickstartLabel":"API key quickstart","steps":{"saveTitle":"Save the key","saveBody":"Store the one-time secret as API_KEY on your server. It is shown only once: never commit it to source control or expose it in frontend or browser code. Mint and revoke keys on the client's page under Keys.","workflowTitle":"Choose a workflow","workflowBody":"Choose an accessible workflow for the examples. Your API client must also allow access to this workflow.","runTitle":"Start a run","runBody":"Send this request from a trusted server or automation environment. The API accepts the run asynchronously."},"workflowLabel":"Workflow","workflowPlaceholder":"Select a workflow","workflowOption":"{name} · ID {id}","noWorkflows":"No workflows available.","languageLabel":"Example language","languages":{"curl":"cURL","javascript":"JavaScript","python":"Python"},"snippetLabel":"{language} {endpoint} example","endpointLabels":{"list":"list-workflows","create":"create-run","status":"status","events":"events"},"copy":"Copy {label}","copied":"Copied {label}","copyStatus":"Copied to clipboard","copyFailed":"Could not copy. Select the code and copy it manually.","responseTitle":"202 Accepted response","responseBody":"Use links.self to poll the run and links.events to stream its progress.","referenceTitle":"API reference","referenceDescription":"List startable workflows, create a workflow run, check its status, or stream metadata-only events.","goodToKnowTitle":"Good to know","idempotency":"Reuse an Idempotency-Key only when retrying the same method, route, and request body.","access":"A key can access only workflows allowed by its API client and runner identity.","errors":"401 means the key is missing or invalid, 403 means scope or resource access is missing, and 429 means the per-minute quota was reached.","metadata":"API responses and events expose run metadata, not workflow inputs or outputs.","endpoints":{"list":{"title":"List startable workflows","summary":"Lists the workflows this key may start.","method":"GET","path":"/api/v1/workflows","scope":"workflows:read","scopeLabel":"Required scope","success":"200 OK","successLabel":"Success","details":"Paginate with page and limit (at most 100). Returns metadata such as ID, name, and status, never the workflow graph."},"create":{"title":"Create a workflow run","summary":"Starts one asynchronous run for the selected workflow.","method":"POST","path":"/api/v1/workflows/{workflowId}/runs","scope":"workflow:runs:create","scopeLabel":"Required scope","success":"202 Accepted","successLabel":"Success","details":"Send an input object and a unique Idempotency-Key. Reuse that key only to retry the same request."},"status":{"title":"Get run status","summary":"Returns the current metadata for one workflow run.","method":"GET","path":"/api/v1/workflows/{workflowId}/runs/{runId}","scope":"workflow:runs:read","scopeLabel":"Required scope","success":"200 OK","successLabel":"Success","details":"Status is one of queued, running, requires_action, succeeded, failed, or canceled. A requires_action run waits for an approval or input; answer it through its interactions link or in the web app."},"events":{"title":"Stream run events","summary":"Streams metadata-only progress events for one workflow run.","method":"GET","path":"/api/v1/workflows/{workflowId}/runs/{runId}/events","scope":"workflow:runs:events","scopeLabel":"Required scope","success":"200 OK","successLabel":"Success","details":"The response uses text/event-stream and sends heartbeat keep-alive comments, then closes after a terminal run event."}},"chat":{"quickstartLabel":"Chat API quickstart","steps":{"createTitle":"Create a chat","createBody":"Create an empty chat with a fresh Idempotency-Key and keep the returned chat UUID.","uploadTitle":"Upload and confirm a file","uploadBody":"Request a signed upload, send the bytes directly with the returned headers, then confirm the file UUID with Uhrwerk.AI.","messageTitle":"Queue, stream, and read","messageBody":"Attach the file UUID to a message, stream the separate SSE endpoint, then page through messages and mint a short-lived file download URL."},"endpointLabels":{"completeFlow":"complete-chat-flow","create":"create-chat","files":"file-upload","messages":"create-message","events":"events","read":"read-and-download","list-interactions":"list-interactions","read-interaction":"read-interaction","answer":"answer-question","approve":"approve-interaction","reject":"reject-interaction","request-changes":"request-changes","provide-secret":"provide-secret","cancel":"cancel-turn"},"referenceTitle":"Chat API reference","referenceDescription":"Expand an operation for a focused server-side example. The quickstart above combines the complete flow.","securityTitle":"Secret and signed URL boundaries","signedStorageNotice":"The signed storage request never includes Authorization or API_KEY. Secret responses read WK_SECRET_VALUE from the server environment and send it only in the HTTPS request body, never in a URL or process argument.","operations":{"create":{"method":"POST","title":"Create a chat","path":"/api/v1/chats","summary":"Creates an empty chat and returns its UUID. A fresh Idempotency-Key makes retries safe."},"files":{"method":"POST","title":"Upload and confirm a file","path":"/api/v1/chats/<CHAT_ID>/files/request-upload","summary":"Requests a signed upload, forwards its uploadHeaders to a raw PUT without Uhrwerk.AI auth, and confirms the returned file UUID."},"messages":{"method":"POST","title":"Create a message","path":"/api/v1/chats/<CHAT_ID>/messages","summary":"Queues a message asynchronously with up to twenty attached file UUIDs and a fresh Idempotency-Key."},"events":{"method":"GET","title":"Stream chat events","path":"/api/v1/chats/<CHAT_ID>/events","summary":"Streams curated text/event-stream updates. Heartbeats are comments. Reconnecting may project current durable state; exact Last-Event-ID replay is unsupported. The stream closes after a terminal event."},"read":{"method":"GET","title":"Read messages and files","path":"/api/v1/chats/<CHAT_ID>/messages?page=1&limit=20","summary":"Reads the chat, paginates its messages, lists files, and mints a short-lived signed URL for one file download."},"list-interactions":{"method":"GET","title":"List pending interactions","path":"/api/v1/chats/<CHAT_ID>/interactions","summary":"Lists safe, locally resolvable interactions for the exact paused turn. Use the optional kind query to narrow the result."},"read-interaction":{"method":"GET","title":"Read an interaction","path":"/api/v1/chats/<CHAT_ID>/interactions/<INTERACTION_ID>","summary":"Reads one safe interaction projection. Keep its interactionHash for stale-safe resolution."},"answer":{"method":"POST","title":"Answer a question","path":"/api/v1/chats/<CHAT_ID>/interactions/<INTERACTION_ID>/responses","summary":"Answers a compatible question with its current interactionHash and streams the resumed turn as curated SSE."},"approve":{"method":"POST","title":"Approve an interaction","path":"/api/v1/chats/<CHAT_ID>/interactions/<INTERACTION_ID>/responses","summary":"Approves a compatible approval or plan review with a fresh Idempotency-Key."},"reject":{"method":"POST","title":"Reject an interaction","path":"/api/v1/chats/<CHAT_ID>/interactions/<INTERACTION_ID>/responses","summary":"Rejects a compatible approval. An optional bounded reason may be included."},"request-changes":{"method":"POST","title":"Request changes","path":"/api/v1/chats/<CHAT_ID>/interactions/<INTERACTION_ID>/responses","summary":"Returns bounded change instructions for a compatible approval or plan review."},"provide-secret":{"method":"POST","title":"Provide a secret","path":"/api/v1/chats/<CHAT_ID>/interactions/<INTERACTION_ID>/responses","summary":"Reads WK_SECRET_VALUE from the server environment and sends it in the HTTPS body for encrypted credential persistence."},"cancel":{"method":"POST","title":"Cancel the current turn","path":"/api/v1/chats/<CHAT_ID>/turn/cancel","summary":"Idempotently cancels only the current queued, processing, or paused turn."}}},"inbox":{"overviewTitle":"Use Inbox from a trusted server","overviewBody":"List the current runner's unread Inbox, inspect safe action reviews, and call only actions marked API-executable.","referenceTitle":"Inbox API reference","referenceDescription":"Expand an endpoint for a focused cURL, JavaScript, or Python example.","responseLabel":"Response","idempotencyTitle":"Retry-safe execution","idempotencyBody":"Generate a fresh UUID Idempotency-Key for an execution. Reuse it only when retrying the exact same actionHash request.","browserWarningTitle":"Browser handoff stays in Uhrwerk.AI","browserWarningBody":"Browser-only actions remain visible for review, but apiExecutable is false. Never send them to the execution endpoint.","endpointLabels":{"list":"list-unread","detail":"notification-detail","execute":"execute-action","status":"execution-status","history":"execution-history","retry":"retry-execution","release":"release-execution","delivery":"update-delivery"},"operations":{"list":{"method":"GET","title":"List unread notifications","path":"/api/v1/inbox?status=unread&limit=20","scope":"inbox:read","summary":"Returns a cursor page of unread deliveries for the API client's current runner.","responseNote":"Keep the nextCursor for pagination; summaries contain previews, not full action reviews."},"detail":{"method":"GET","title":"Get notification detail","path":"/api/v1/inbox/<NOTIFICATION_ID>","scope":"inbox:read","summary":"Returns safe review metadata and marks server-supported actions with apiExecutable true.","responseNote":"Select an API-executable action without logging the notification body, review, or actionHash."},"execute":{"method":"POST","title":"Execute a supported action","path":"/api/v1/inbox/<NOTIFICATION_ID>/actions/<ACTION_ID>/executions","scope":"inbox:actions:execute","summary":"Executes the selected immutable action with its actionHash and a generated UUID Idempotency-Key.","responseNote":"The response wraps the execution. Log only its public id and status."},"status":{"method":"GET","title":"Poll execution status","path":"/api/v1/inbox/action-executions/<EXECUTION_ID>","scope":"inbox:action-executions:read","summary":"Returns current execution state, including canRetry and canRelease.","responseNote":"Poll the public execution UUID until the status is terminal."},"history":{"method":"GET","title":"Read execution history","path":"/api/v1/inbox/action-executions/<EXECUTION_ID>/history","scope":"inbox:action-executions:read","summary":"Returns bounded immutable events plus the matching current execution.","responseNote":"The latest event matches the current status; the example logs neither event details nor results."},"retry":{"method":"POST","title":"Retry an execution","path":"/api/v1/inbox/action-executions/<EXECUTION_ID>/retry","scope":"inbox:actions:execute","summary":"Retries the originating action only when the current response says canRetry.","responseNote":"A successful response wraps the updated execution id and status."},"release":{"method":"POST","title":"Release an execution","path":"/api/v1/inbox/action-executions/<EXECUTION_ID>/release","scope":"inbox:actions:execute","summary":"Releases the originating action only when the current response says canRelease.","responseNote":"A successful response wraps the updated execution id and status."},"delivery":{"method":"PATCH","title":"Update delivery","path":"/api/v1/inbox/<NOTIFICATION_ID>/delivery","scope":"inbox:delivery:write","summary":"Marks the runner's delivery read or unread, or archives or restores it.","responseNote":"The updated notification is returned; the example intentionally does not print its full body."}}},"knowledge":{"overviewTitle":"Sync documents with the Knowledge Hub from a trusted server","overviewBody":"Upload through a signed URL, create or replace items with the returned upload token, poll processing, and read items back — always with the runner's own visibility.","referenceTitle":"Knowledge Hub API reference","referenceDescription":"Expand an endpoint for a focused cURL, JavaScript, or Python example.","responseLabel":"Response","tokenTitle":"Upload tokens replace storage paths","tokenBody":"request-upload returns an uploadToken bound to this client. Send the bytes with only the returned upload headers, then create or replace with the token and a fresh Idempotency-Key. A token is consumed once.","replaceTitle":"Replace keeps the item","replaceBody":"PUT …/content swaps the bytes of a settled uploaded item: same id, externalRef, folder, audience and column values; text and embeddings are rebuilt.","endpointLabels":{"upload":"upload-and-create","status":"poll-processing","find":"find-by-external-ref","content":"read-content","download":"download-url","update":"update-metadata","audience":"set-audience","replace":"replace-content","search":"search","folders":"folders-and-move"},"operations":{"upload":{"method":"POST","title":"Upload and create an item","path":"/api/v1/knowledge/items","scope":"knowledge:items:write","summary":"Requests a signed upload, sends the bytes with the returned headers, and creates the item with the upload token.","responseNote":"Keep the item id; processing.status starts at pending."},"status":{"method":"GET","title":"Poll processing","path":"/api/v1/knowledge/items/<ITEM_ID>","scope":"knowledge:items:read","summary":"Reads the item until processing.status is ready or failed.","responseNote":"Extracted text and search results appear once the item is ready."},"find":{"method":"GET","title":"Find by externalRef","path":"/api/v1/knowledge/items?externalRef=<REF>","scope":"knowledge:items:read","summary":"Looks an item up by the reference your system assigned at creation.","responseNote":"Only items the runner can see are returned."},"content":{"method":"GET","title":"Read extracted content","path":"/api/v1/knowledge/items/<ITEM_ID>/content","scope":"knowledge:items:read","summary":"Reads a window of the extracted text.","responseNote":"text is null until processing is ready."},"download":{"method":"GET","title":"Download the file","path":"/api/v1/knowledge/items/<ITEM_ID>/download-url","scope":"knowledge:files:read","summary":"Mints a short-lived signed download URL for a storage-backed item.","responseNote":"Fetch downloadUrl without the API key."},"update":{"method":"PATCH","title":"Update metadata and column values","path":"/api/v1/knowledge/items/<ITEM_ID>","scope":"knowledge:items:write","summary":"Changes title, summary, tags, externalRef and typed column values by definition id.","responseNote":"Discover definitions with GET …/columns first."},"audience":{"method":"PUT","title":"Set the audience","path":"/api/v1/knowledge/items/<ITEM_ID>/audience","scope":"knowledge:audience:write","summary":"Makes an item private, workspace-visible, or visible to selected groups.","responseNote":"Requires the separate audience opt-in on the client."},"replace":{"method":"PUT","title":"Replace content in place","path":"/api/v1/knowledge/items/<ITEM_ID>/content","scope":"knowledge:items:write","summary":"Uploads a new version and swaps it into the existing item.","responseNote":"Same item id; a processing item is 409, a connector item 422."},"search":{"method":"POST","title":"Search","path":"/api/v1/knowledge/search","scope":"knowledge:search","summary":"Runs a semantic search over everything the runner can see.","responseNote":"Each call spends embedding tokens billed to the workspace."},"folders":{"method":"POST","title":"Folders and moves","path":"/api/v1/knowledge/folders","scope":"knowledge:folders:write","summary":"Lists and creates folders and moves items between them.","responseNote":"Moves are all-or-nothing."}}},"datasets":{"overviewTitle":"Keep typed datasets in sync from a trusted server","overviewBody":"Create a dataset with a unique key, wait until it is ready, sync rows with an idempotent upsert, page through them by key, and share it with groups — always with the runner's own access.","referenceTitle":"Datasets API reference","referenceDescription":"Expand an endpoint for a focused cURL, JavaScript, or Python example.","responseLabel":"Response","uniqueKeyTitle":"Upsert on the unique key for exactly-once sync","uniqueKeyBody":"rows/upsert with conflictColumns naming exactly the dataset's uniqueKey updates matching rows and inserts the rest, so a retried batch converges. A plain insert can duplicate rows after a lost response.","sharingTitle":"New datasets are private","sharingBody":"Without permissions only the runner and workspace owners and admins see a new dataset. PUT …/permissions replaces Read and Write together and needs the permissionsVersion you last read.","endpointLabels":{"create":"create-and-wait","query":"query-keyset","upsert":"upsert-sync","permissions":"share-dataset"},"operations":{"create":{"method":"POST","title":"Create a dataset and wait for ready","path":"/api/v1/datasets","scope":"dataset:definitions:write","summary":"Creates a dataset with columns, a unique key and Read/Write audiences, then polls it until a worker has created its table.","responseNote":"201 with status provisioning; the runner must be a workspace owner or admin."},"query":{"method":"POST","title":"Query rows with keyset paging","path":"/api/v1/datasets/<DATASET_ID>/rows/query","scope":"dataset:rows:read","summary":"Pages through every row by id with offset 0, so exports are not capped by the 100,000-row offset window.","responseNote":"{ data, hasMore }; stop on an empty page or hasMore false."},"upsert":{"method":"POST","title":"Sync rows idempotently","path":"/api/v1/datasets/<DATASET_ID>/rows/upsert","scope":"dataset:rows:write","summary":"Upserts the source in batches of up to 1,000 rows matched on the unique key, tagging each row with the current run.","responseNote":"{ inserted, updated }; deleting stale rows also needs the row-deletion opt-in."},"permissions":{"method":"PUT","title":"Share a dataset","path":"/api/v1/datasets/<DATASET_ID>/permissions","scope":"dataset:permissions:write","summary":"Reads the current audiences, then lets every member read and one group write.","responseNote":"Requires the dataset-sharing opt-in and a runner who may manage the dataset."}}},"tools":{"overviewTitle":"Manage MCP servers and Connected APIs from a trusted server","overviewBody":"The key acts as its runner user, exactly like that user on the Tools page. tools:read and tools:write list, create, change and test MCP servers and Connected APIs; deleting needs the separate tools:delete opt-in. The workspace needs the Tools feature (agent:integrations).","referenceTitle":"Tools API reference","referenceDescription":"Expand an endpoint for a focused cURL, JavaScript, or Python example.","responseLabel":"Response","credentialsTitle":"Credentials are write-only","credentialsBody":"Bearer tokens and credential headers can be set but are never returned: responses list only header names and whether a token is stored. A header map replaces the stored one, so resend every header you keep, and change a secret with PATCH rather than by retrying a create.","rulesTitle":"Endpoint and ownership rules","rulesBody":"A public MCP host needs https; a private host needs a private network target approved by a platform administrator. Connected APIs of built-in connectors such as Gmail or Exchange are read-only (403 PUBLIC_API_TOOL_CONNECTOR_MANAGED). Members manage only the tools they created, and deleting needs tools:delete.","endpointLabels":{"listServers":"list-mcp-servers","createServer":"create-mcp-server","testServer":"test-mcp-server","createApi":"create-connected-api"},"operations":{"listServers":{"method":"GET","title":"List MCP servers","path":"/api/v1/tools/mcp-servers","scope":"tools:read","summary":"Lists the MCP servers the runner can see, with their health and whether the runner may manage them.","responseNote":"{ data }, newest first; credentials appear only as header names and hasBearerToken."},"createServer":{"method":"POST","title":"Create an MCP server","path":"/api/v1/tools/mcp-servers","scope":"tools:write","summary":"Registers a remote MCP server with a bearer token read from the server environment and an Idempotency-Key for safe retries.","responseNote":"201 with health unknown; the server stays private to the runner until someone shares it in the app."},"testServer":{"method":"POST","title":"Test an MCP server's connection","path":"/api/v1/tools/mcp-servers/<SERVER_ID>/test","scope":"tools:write","summary":"Sends one request to the stored endpoint with the stored credentials and records the server's health.","responseNote":"200 with ok, statusCode and errorCode, also when the connection fails: read ok, not the HTTP status."},"createApi":{"method":"POST","title":"Create a Connected API","path":"/api/v1/tools/connected-apis","scope":"tools:write","summary":"Creates a manual REST operation with an orderId path parameter and an API key header read from the server environment.","responseNote":"201 with sourceType manual; the name must be unused lowercase snake_case and the endpoint a public https URL."}}},"connectors":{"overviewTitle":"Connect and manage API-key connectors from a trusted server","overviewBody":"The key acts as its runner user, exactly like that user under Knowledge sources in the app. connectors:read and connectors:write list connector types, connect API-key connectors such as sevdesk or SAP Business One and replace their credentials; disconnecting needs the separate connectors:delete opt-in. Responses wrap results in { data }.","referenceTitle":"Connectors API reference","referenceDescription":"Expand an endpoint for a focused cURL, JavaScript, or Python example.","responseLabel":"Response","credentialsTitle":"Credentials are write-only","credentialsBody":"API keys, passwords and secrets can be set but are never returned. Connecting a type you already connected returns 409 PUBLIC_API_CONNECTOR_ALREADY_CONNECTED with the existing connectionId: replace its credentials with PUT instead of connecting again.","rulesTitle":"Which connectors a key can connect","rulesBody":"Only API-key connectors can be connected by key: sevdesk, ALPHAPLAN 5 and 6, co*pilot, Lexware Office, Personio, SAP Business One and Gamma, plus the runner's own Exchange on-prem mailbox through /api/v1/connectors/exchange-onprem. OAuth connectors are connected in the app. A key can list them and disconnect most of them, such as Notion, Google Drive or OneDrive; those with their own disconnect in the app (HubSpot, Linear, Pipedrive, Canva, the calendar connectors, Microsoft Teams, Business Central and Power BI) return 422 PUBLIC_API_CONNECTOR_OPERATION_UNSUPPORTED. A connector your workspace has turned off returns 403 CONNECTOR_DISABLED, and disconnecting needs connectors:delete.","connectorLabel":"Connector","connectorTypes":{"sevdesk":{"label":"sevdesk","hint":"Needs a sevdesk API token from the sevdesk settings."},"alphaplan":{"label":"ALPHAPLAN 5","hint":"The operator must approve the base URL; the administration password is optional."},"alphaplan6":{"label":"ALPHAPLAN 6","hint":"The operator must approve the base URL; version 6 takes no administration password."},"copilot_events":{"label":"co*pilot","hint":"Use your tenant's base URL, https://copilot.events/<tenant>/api, and its API key."},"lexware_office":{"label":"Lexware Office","hint":"Needs a Lexware Office public API key."},"personio":{"label":"Personio","hint":"Needs the client ID and secret of a Personio custom integration."},"sap_business_one":{"label":"SAP Business One","hint":"Each member signs in with their own B1 user; you can connect several company databases, one connection per baseUrl and companyDb."},"gamma":{"label":"Gamma","hint":"Needs a Gamma API key."},"exchange_onprem":{"label":"Exchange on-prem","hint":"Connects your own mailbox through its own endpoint; send explicit IMAP and SMTP hosts."}},"endpointLabels":{"sourceTypes":"list-source-types","connect":"connect-connector","list":"list-connectors","rotate":"replace-credentials","disconnect":"disconnect-connector","exchangeConnect":"connect-exchange-onprem","exchangeRead":"read-exchange-onprem","exchangePassword":"update-exchange-onprem-password","exchangeDisconnect":"disconnect-exchange-onprem"},"operations":{"sourceTypes":{"method":"GET","title":"List connectable types","path":"/api/v1/connectors/source-types","scope":"connectors:read","summary":"Lists the connector types a key can connect, whether each is enabled in the workspace, and the credential fields each needs.","responseNote":"{ data } with sourceType, displayName, enabled, multiplePerUser and credentialFields (name, required, secret)."},"connect":{"method":"POST","title":"Connect {name}","path":"/api/v1/connectors","scope":"connectors:write","summary":"Connects {name} with secrets read from the server environment and an Idempotency-Key for safe retries. The example lists the optional fields in a comment.","responseNote":"201 with { data: connector }; 409 PUBLIC_API_CONNECTOR_ALREADY_CONNECTED returns the existing connectionId."},"list":{"method":"GET","title":"List connectors","path":"/api/v1/connectors?sourceType={sourceType}","scope":"connectors:read","summary":"Lists the connectors the runner can see, here filtered to {name}, with whether the runner may manage them or update their credentials.","responseNote":"{ data } with every visible connector, including OAuth connectors connected in the app."},"rotate":{"method":"PUT","title":"Replace the credentials","path":"/api/v1/connectors/<CONNECTION_ID>","scope":"connectors:write","summary":"Replaces the stored credentials of one connector; send every required field again. The id stays the same and chats use the new credentials, but workflow connector steps pinned to it stop with KNOWLEDGE_CONNECTOR_BINDING_STALE until you reselect the connection in the workflow.","responseNote":"200 with { data: connector }; credentials are never returned."},"disconnect":{"method":"DELETE","title":"Disconnect a connector","path":"/api/v1/connectors/<CONNECTION_ID>","scope":"connectors:delete","summary":"Removes the connection. Chats and workflows that use it stop working.","responseNote":"204 No Content; requires the connectors:delete opt-in."},"exchangeConnect":{"method":"POST","title":"Connect Exchange on-prem","path":"/api/v1/connectors/exchange-onprem","scope":"connectors:write","summary":"Connects the runner's own Exchange mailbox (one per runner) after an IMAP login. Send explicit IMAP and SMTP hosts: the API never autodiscovers them. A private host needs an approved private network target. ","responseNote":"201 with { data: mailbox }; 409 PUBLIC_API_CONNECTOR_ALREADY_CONNECTED if the runner already has a mailbox, 422 EXCHANGE_ONPREM_IMAP_FAILED if the login fails."},"exchangeRead":{"method":"GET","title":"Read the Exchange on-prem mailbox","path":"/api/v1/connectors/exchange-onprem","scope":"connectors:read","summary":"Reads the runner's own mailbox: its hosts, status and bindingGeneration.","responseNote":"200 with { data: mailbox }; the password is never returned."},"exchangePassword":{"method":"PUT","title":"Update Exchange on-prem password","path":"/api/v1/connectors/exchange-onprem","scope":"connectors:write","summary":"Verifies and stores a new mailbox password; omitted fields keep their values. bindingGeneration changes, so reselect the mailbox in workflows pinned to it.","responseNote":"200 with { data: mailbox }; the password is never returned."},"exchangeDisconnect":{"method":"DELETE","title":"Disconnect Exchange on-prem","path":"/api/v1/connectors/exchange-onprem","scope":"connectors:delete","summary":"Removes the runner's mailbox. Chats and workflows that use it stop working.","responseNote":"204 No Content; requires the connectors:delete opt-in."}}},"design":{"overviewTitle":"Design and run workflows from a trusted server","overviewBody":"Cache the node catalog once, create a draft from a JSON graph, validate and simulate it before activating, then read a run's node-level trace.","referenceTitle":"Workflow design API reference","referenceDescription":"Expand an endpoint for a focused cURL, JavaScript, or Python example.","responseLabel":"Response","idempotencyTitle":"Retry-safe workflow creation","idempotencyBody":"Generate a fresh UUID Idempotency-Key when creating a workflow. Reuse it only when retrying the exact same request body.","endpointLabels":{"nodes":"list-nodes","create":"create-workflow","check":"check-workflow","simulate":"simulate-workflow","trace":"read-trace"},"operations":{"nodes":{"method":"GET","title":"List available node types","path":"/api/v1/workflow-nodes","scope":"workflow:definitions:read","summary":"Returns the node catalog this workspace can use, including each node's config, input and output schema.","responseNote":"Cache the response to a file; the catalog changes rarely and every node build reads from it."},"create":{"method":"POST","title":"Create a draft workflow","path":"/api/v1/workflows","scope":"workflow:definitions:write","summary":"Creates a new draft workflow from a graph built against the cached node catalog.","responseNote":"Keep the returned id and graphRevision; every later update to this graph must send the current revision back."},"check":{"method":"POST","title":"Check a workflow","path":"/api/v1/workflows/<WORKFLOW_ID>/check","scope":"workflow:definitions:read","summary":"Compiles the saved graph and reports compile errors, readiness issues, and each node's resolved output shape.","responseNote":"valid is true only once compileErrors and readinessIssues are both empty; activating reruns this check."},"simulate":{"method":"POST","title":"Simulate a run","path":"/api/v1/workflows/<WORKFLOW_ID>/simulations","scope":"workflow:definitions:write","summary":"Runs the workflow with example input without requiring real trigger events, and returns its trace immediately.","responseNote":"The response is a full trace; keep run.id to re-read it later from the trace endpoint."},"trace":{"method":"GET","title":"Read a run's trace","path":"/api/v1/workflows/<WORKFLOW_ID>/runs/<RUN_ID>/trace","scope":"workflow:runs:trace","summary":"Returns every node's start, completion, or interrupt step for one run, in execution order.","responseNote":"Long values are truncated by maxValueChars; valuesTruncated says whether any step was cut."}}}},"view":{"newClient":"New client","loadingSr":"Loading personal API clients","errorTitle":"Could not load API clients","errorBody":"Retry to refresh clients and workflows for this profile.","workflowsErrorBody":"Workflows couldn't be loaded, so workflow names and pickers are unavailable. Your clients and keys still work.","retry":"Retry","emptyTitle":"No personal API clients yet","emptyBody":"Create a client to mint keys for workflows or chats from your profile.","fallbackClientTitle":"API client","tabsLabel":"API clients views","tabs":{"clients":"Clients","reference":"API reference","mcp":"MCP"}},"detail":{"attributes":"Attributes","keys":"Keys","webhook":"Webhook","useThisClient":"Use this client","fullReference":"Full API reference","rateLimitValue":"{count} requests per minute, per key","allWorkflows":"all","noWorkflows":"none","workflowNamesUnavailable":"Workflow names couldn't be loaded.","warningLabel":"warning","never":"Never","neverUsed":"Never used","noUsefulCall":"This client has no access the examples cover yet.","showAllScopes":"Show all {count} scopes","showFewerScopes":"Show fewer scopes","scopeAreas":{"workflows":"Workflow runs","workflowDesign":"Workflow design","processes":"Processes","chats":"Chats","inbox":"Inbox","knowledge":"Knowledge Hub","datasets":"Datasets","tools":"Tools","connectors":"Connectors","connectorTemplates":"Connector templates","apps":"Apps","workspace":"Workspace","audit":"Audit","other":"Other"}},"mcp":{"title":"MCP server","intro":"Connect an AI agent to the Public API through the Model Context Protocol. It uses the same API key, scopes and limits as direct calls.","endpointLabel":"Endpoint","transportLabel":"Transport","transportValue":"Streamable HTTP, stateless · POST only · one JSON-RPC message per request","authLabel":"Authentication","promptIntro":"Paste this into Claude, ChatGPT or your coding agent. It explains how to connect, with or without an MCP client, and how to use the five tools. The key is not included.","copy":"Copy prompt for your agent","copied":"Prompt copied","copyFailed":"Couldn't copy the prompt. Select it below and copy it by hand.","promptLabel":"Prompt for your agent","configTitle":"Client configuration","configIntro":"Set API_KEY in your environment first; the examples read the key from it.","claudeCodeLabel":"Claude Code","cursorLabel":"Cursor (.cursor/mcp.json)"},"reference":{"indexLabel":"API reference sections","groups":{"basics":"Basics","endpoints":"Endpoints","machineReadable":"Machine-readable"},"sections":{"authentication":"Authentication","errors":"Errors","rateLimits":"Rate limits","idempotency":"Idempotency","workflows":"Workflow runs","workflowDesign":"Workflow design","chats":"Chats","inbox":"Inbox","knowledge":"Knowledge Hub","datasets":"Datasets","tools":"Tools","connectors":"Connectors"},"links":{"openapi":"OpenAPI document","docs":"Docs (Markdown)","llms":"llms.txt","newTab":"(opens in a new tab)"},"examples":{"noClients":"Examples use `$API_KEY`. You don't have a client yet.","genericOnly":"Examples use `$API_KEY`.","createClient":"Create a client","fillFor":"Fill examples for","generic":"No client (generic examples)"},"needsScope":"needs `{scope}`","authentication":{"intro":"Every request authenticates with a key of one of your API clients.","headerColumn":"Header","valueColumn":"Value","required":"Required","oneHost":"A key works only in the environment (deployment) it was created in, and it is shown only once, when you mint it.","server":"Keep it on a server, for example in an `API_KEY` environment variable. Never put it in browser code or commit it."},"errors":{"intro":"Every error response is JSON with this envelope:","envelopeLabel":"Error envelope","optional":"`requestId` and `details` are not always present.","branch":"Branch on `error.code` (and on `error.details.code` where present), not on the message. Include `requestId` when you report a problem."},"rateLimits":{"perKey":"Limits apply per key: each key may send as many requests per minute as its client allows.","clientValue":"Each key of {name} may send {count} requests per minute.","retryAfter":"On `429`, wait the number of seconds in the `Retry-After` response header, then retry.","backoff":"Retry other errors only when they say `\"retryable\": true`, with exponential backoff. Don't retry when `retryable` is `false`, even on a `5xx`."},"idempotency":{"send":"Send a fresh UUID in the `Idempotency-Key` header on every POST, PUT or PATCH that changes data.","required":"Several endpoints reject a request without it with a `400 VALIDATION_ERROR` whose `error.details.code` is `PUBLIC_API_IDEMPOTENCY_KEY_REQUIRED`; chat interaction routes return that code as `error.code`.","length":"Most endpoints accept any key of up to 255 characters, but Inbox endpoints accept only a UUID, so a UUID always works.","retry":"Reuse the same key when you retry that request; use a new key for a new request."}},"toasts":{"mintFailed":"Could not mint an API key.","updateFailed":"Could not update the API client.","revokeFailed":"Could not revoke the API key."},"drawer":{"createFailed":"Could not create the API client.","untitledClient":"Untitled API client","title":"Create personal API client","description":"Choose capabilities and allowed workflow targets, then mint the first key.","identity":"Identity","identityHint":"This name appears in audit and key management views.","clientName":"Client name","clientNamePlaceholder":"Webhook runner","descriptionLabel":"Description","descriptionPlaceholder":"Optional purpose or owner note","limits":"Limits and expiry","limitsHint":"Key expiry defaults to the client expiry when left empty.","rateLimit":"Rate limit","clientExpiry":"Client expiry","firstKeyExpiry":"First key expiry","review":"Review","clientCreatedRetry":"Client created. Retry key creation to reveal the key.","retryKeyCreation":"Retry key creation","createAndShow":"Create client and show key"},"access":{"workflowRuns":"Workflow runs","workflowRunsHint":"Start workflow runs, follow their progress, and answer approvals or selections a paused run waits for.","workflowTargets":"Workflow targets","allWorkflows":"All accessible workflows","workflowWarning":"This client can run every workflow your profile can access.","chats":"Chats","chatsHint":"Create and read chats, send messages, stream responses, work with attached files, resolve pending interactions, and cancel turns.","chatSecrets":"Allow secret responses","chatSecretsHint":"Let this client provide values for secret requests. Values are persisted as credentials and require a separate scope.","inbox":"Inbox","inboxHint":"Read Inbox notifications, update delivery, execute supported actions, and inspect execution status and history.","members":"Members and groups","membersHint":"Read the workspace member and group directory, including member email addresses. Listing group members also needs an owner or admin runner.","groupsWrite":"Manage groups","groupsWriteHint":"Create, rename and delete workspace groups and add or remove their members. Needs an owner or admin runner.","profiles":"Profile fields","profilesHint":"Read the workspace's profile field definitions and the runner's own profile values.","profilesWrite":"Edit own profile","profilesWriteHint":"Update the runner's own profile values.","profilesAdmin":"Manage profile fields and members","profilesAdminHint":"Change the profile field definitions and read or update any member's values. Needs an owner or admin runner.","processes":"Processes","processesHint":"Read and change process definitions, check and publish them, start and move items, post events and read views. Needs access to all workflows.","processesTargetWarning":"Processes need access to all workflows.","knowledge":"Knowledge Hub","knowledgeHint":"Upload and replace documents, read items, extracted text and files, search, edit metadata and column values, and manage folders — with this client's runner permissions.","knowledgeDelete":"Allow deleting items","knowledgeDeleteHint":"Let this client delete Knowledge Hub items. Deletion is irreversible and requires a separate scope.","knowledgeAudience":"Allow changing who can see items","knowledgeAudienceHint":"Let this client change an item's visibility or group audience. This can broaden access and requires a separate scope.","datasets":"Datasets","datasetsHint":"Read datasets and their fields, query and write rows, create datasets and change their metadata and schema, and search datasets — with this client's runner permissions. Writes follow each dataset's sharing; only workspace owners and admins can create datasets.","datasetImports":"Allow importing Knowledge Hub files","datasetImportsHint":"Let this client import Knowledge Hub files into datasets or create a dataset from a file. This also lets it download Knowledge Hub files its runner can see. Replace-mode imports also need row deletion.","datasetRowsDelete":"Allow deleting rows","datasetRowsDeleteHint":"Let this client delete rows one by one or in bulk, remove duplicates and set a retention period that deletes old rows. Deleted rows cannot be restored; requires a separate scope.","datasetDefinitionsDelete":"Allow deleting datasets","datasetDefinitionsDeleteHint":"Let this client delete whole datasets, including every row, drop columns and change column types. Deletion is irreversible and requires a separate scope.","datasetPermissions":"Allow changing dataset sharing","auditEvents":"Allow reading its own activity log","auditEventsHint":"Let this client list the activity log of its own API calls (actions, targets, outcomes and request IDs; no IP addresses or request contents). It cannot see other clients' activity; requires a separate scope.","datasetPermissionsHint":"Let this client change who can read and write a dataset. Only datasets the runner may manage (as creator or workspace owner or admin) can be changed; requires a separate scope.","tools":"Tools (MCP servers and Connected APIs)","toolsHint":"List and read MCP servers, Connected APIs and their providers, create and change them, and test MCP server connections — with this client's runner permissions. Credentials can be set but are never returned; members manage only tools they added, workspace owners and admins manage all.","toolsDelete":"Allow deleting tools","toolsDeleteHint":"Let this client delete MCP servers and Connected APIs. Deletion is irreversible and requires a separate scope.","connectors":"Connectors (Knowledge sources)","connectorsHint":"Lets the key list, connect and re-credential API-key connectors such as sevdesk or SAP Business One as the runner. Connectors that need a browser sign-in (OAuth) are connected in the app.","connectorsDelete":"Allow disconnecting connectors","connectorsDeleteHint":"Disconnecting removes the connection and stops chats and workflows that use it.","connectorTemplates":"Allow setting up connector templates","connectorTemplatesHint":"Configure, test, enable and disable the workspace's connector templates. Works only while you are a workspace owner or admin.","apps":"Apps","appsHint":"Lets the key list, create, edit, check, publish and export configured apps as the runner, under each app's own edit and manage audiences. The workspace needs configured apps switched on.","appsRun":"Run apps","appsRunHint":"Read app data views and run app actions as the runner, with the same checks as the app page. Writes and workflow runs still need a confirmation token.","appsDelete":"Delete apps","appsDeleteHint":"Delete configured apps the runner manages. Deleting cannot be undone.","appsPermissions":"Manage app access","appsPermissionsHint":"Change who may use, edit and manage an app, its screen and action audiences, and its delegated dataset grants. Grants also need a workspace owner or admin who holds that dataset access.","workflowDesign":"Design workflows","workflowDesignHint":"Create, read and change workflow definitions, validate and simulate them, and read node-level run traces.","workflowDesignTargetWarning":"Creating workflows needs access to all workflows.","workflowDesignSelfApprovalWarning":"This key can approve write steps in workflows it designs itself. Ask before approving.","workflowPermissions":"Allow changing workflow sharing","workflowPermissionsHint":"Let this client change who can read, change and run a workflow. Only workflows the runner may manage (as creator or workspace owner or admin) can be changed; requires a separate scope."},"editAccess":{"title":"Edit API client access","description":"Change the capabilities available to {name}.","activeKeysWarning":"Changes apply immediately to every active key for this client.","save":"Save access","saving":"Saving access","saveFailed":"Could not update API client access."},"targetPicker":{"allHint":"Applies to every target this profile can access.","allEnabled":"All-access mode is enabled.","searchLabel":"Search {label}","searchPlaceholder":"Search by name or ID","noMatches":"No matching targets.","selectedSummary":"{selected} selected from {total} available","idLabel":"ID {id}"},"receipt":{"allActions":"List, create, read, and stream {target}","allActionsWithResolve":"List, create, read, stream, and answer paused runs of {target}","someActions":"{actions} {target}","actionList":"list","actionCreate":"create","actionRead":"read","actionStream":"stream","actionResolve":"answer paused runs of","targetSelectedWorkflows":"selected workflows","targetAllWorkflows":"all accessible workflows","countWorkflowsZero":"no workflows","countWorkflowsOne":"1 workflow","countWorkflowsOther":"{count} workflows","targetWithLegacy":"{workflows}; legacy automation targets retained (retired)","legacyRetired":"Legacy automation capability is retired","legacyTargets":"no workflows; legacy automation targets retained (retired)","chatAllActions":"Create and read chats, send messages, stream responses, manage files, resolve pending interactions, and cancel turns","chatSomeActions":"Chat access: {actions}","chatActionCreate":"create chats","chatActionRead":"read chats","chatActionMessage":"send messages","chatActionStream":"stream responses","chatActionUpload":"upload files","chatActionDownload":"download files","chatActionInteractionRead":"review pending interactions","chatActionInteractionResolve":"resolve pending interactions","chatActionCancel":"cancel turns","chatSecretsEnabled":"Secret responses are enabled","chatSecretsDisabled":"Secret responses are disabled","inboxAllActions":"Read Inbox notifications, update delivery, execute supported actions, and read execution status and history","inboxSomeActions":"Inbox access: {actions}","membersAccess":"Read workspace members and groups","groupsWriteEnabled":"Create, change and delete workspace groups and their members","profilesRead":"Read profile fields and the runner's own values","profilesWrite":"Read profile fields and update the runner's own values","profilesAdmin":"Manage profile fields and every member's values","processAllActions":"Read and change processes, their items and events, and read process views","processSomeActions":"Partial process access: {scopes}","inboxActionRead":"read notifications","inboxActionDelivery":"update delivery","inboxActionExecute":"execute supported actions","inboxActionExecutionRead":"read execution status and history","knowledgeAllActions":"Upload, replace, read and search Knowledge Hub items, edit metadata, and manage folders","knowledgeSomeActions":"Knowledge Hub access: {actions}","knowledgeActionRead":"read items and content","knowledgeActionWrite":"upload, replace and edit items","knowledgeActionDownload":"download files","knowledgeActionFoldersRead":"read folders","knowledgeActionFoldersWrite":"manage folders","knowledgeActionSearch":"search","knowledgeDeleteEnabled":"Item deletion is enabled","knowledgeDeleteDisabled":"Item deletion is disabled","knowledgeAudienceEnabled":"Audience changes are enabled","knowledgeAudienceDisabled":"Audience changes are disabled","datasetAllActions":"Read and query datasets, write rows, create and change datasets and their schema, and search datasets","datasetSomeActions":"Dataset access: {actions}","datasetActionDefinitionsRead":"read datasets","datasetActionDefinitionsWrite":"create and change datasets","datasetActionRowsRead":"read and query rows","datasetActionRowsWrite":"write rows","datasetActionSearch":"search datasets","datasetImportsEnabled":"Knowledge Hub file imports are enabled, including file downloads","datasetImportsDisabled":"Knowledge Hub file imports are disabled","datasetRowsDeleteEnabled":"Row deletion is enabled","datasetRowsDeleteDisabled":"Row deletion is disabled","datasetDefinitionsDeleteEnabled":"Dataset deletion is enabled","datasetDefinitionsDeleteDisabled":"Dataset deletion is disabled","datasetPermissionsEnabled":"Changing dataset sharing is enabled","datasetPermissionsDisabled":"Changing dataset sharing is disabled","toolsAllActions":"Read, create and change MCP servers and Connected APIs, read their providers, and test MCP server connections","toolsSomeActions":"Tools access: {actions}","toolsActionRead":"read tools","toolsActionWrite":"create, change and test tools","toolsDeleteEnabled":"Tool deletion is enabled","toolsDeleteDisabled":"Tool deletion is disabled","connectorsAllActions":"List connector types and connectors, connect API-key connectors and replace their credentials","connectorsSomeActions":"Connectors access: {actions}","connectorsActionRead":"list connectors","connectorsActionWrite":"connect and re-credential connectors","connectorsDeleteEnabled":"Disconnecting connectors is enabled","connectorsDeleteDisabled":"Disconnecting connectors is disabled","connectorTemplatesManage":"Can set up connector templates (owner or admin)","connectorTemplatesRead":"Can read connector templates (owner or admin)","appsAllActions":"List, create, edit, check, publish and export configured apps","appsSomeActions":"Apps access: {actions}","appsActionRead":"list, read and export apps","appsActionWrite":"create, edit, check and publish apps","appsRunEnabled":"Running apps is enabled","appsRunDisabled":"Running apps is disabled","appsDeleteEnabled":"Deleting apps is enabled","appsDeleteDisabled":"Deleting apps is disabled","appsPermissionsEnabled":"Managing app access is enabled","appsPermissionsDisabled":"Managing app access is disabled","auditEventsEnabled":"Reading its own activity log is enabled","workflowDesignAccess":"Design workflows: read and change definitions, check, simulate, read run traces","workflowDesignSelfApprovalWarning":"This key can approve write steps in workflows it designs itself. Ask before approving.","workflowPermissionsEnabled":"Changing workflow sharing is enabled","rateLimit":"{count}/min","expiresBadge":"Expires {value}"},"ledger":{"statusActive":"Active","statusDisabled":"Disabled","statusRevoked":"Revoked","statusExpired":"Expired","mintAria":"Mint key for {name}","minting":"Minting","mintKey":"Mint key","mintRetiredTitle":"Remove retired automation scopes before minting a key.","editAccess":"Edit access","editAccessAria":"Edit access for {name}","disable":"Disable","enable":"Enable","statusAria":"{label} {name}","updating":"Updating"},"keyRow":{"noExpiry":"No expiry","neverUsed":"Never used","revokeAria":"Revoke key {publicId}","revokeConfirmTitle":"Revoke API key?","revokeConfirm":"Revoke key {publicId}? This key will stop working immediately.","revoking":"Revoking","revoke":"Revoke","colKey":"Key","colStatus":"Status","colCreated":"Created","colExpires":"Expires","colLastUsed":"Last used","tableCaption":"API keys for {name}"},"webhook":{"description":"Receive a signed notification when a workflow run started with this client finishes, fails, is canceled or needs a response. The payload only names the run; fetch details with the API.","urlLabel":"Endpoint URL (https)","eventsLabel":"Events","events":{"completed":"Run completed","failed":"Run failed","canceled":"Run canceled","requires_action":"Run needs a response","ping":"Test event"},"enabledLabel":"Send events","save":"Save webhook","saved":"Webhook saved","saveFailed":"Could not save the webhook.","sendTest":"Send test","testQueued":"Test event queued","testFailed":"Could not queue a test event.","rotateSecret":"Rotate secret","rotateFailed":"Could not rotate the signing secret.","remove":"Remove","removed":"Webhook removed","removeFailed":"Could not remove the webhook.","loadFailed":"Could not load the webhook for this client.","recentDeliveries":"Recent deliveries","noDeliveries":"No deliveries yet.","attempts":"{count} attempts","status":{"pending":"Pending","delivered":"Delivered","failed":"Failed"},"secretDialog":{"copiedToast":"Signing secret copied","copyFailed":"Could not copy the secret. Select and copy it manually.","titleSave":"Save this signing secret","titleUnavailable":"Signing secret unavailable","descriptionSave":"The webhook signing secret for {title} is shown once. Store it before closing this dialog.","descriptionUnavailable":"No signing secret was returned for {title}. Rotate the secret to receive a new one.","oneTimeSecret":"One-time secret","copyButton":"Copy","unavailableTitle":"Secret unavailable","unavailableBody":"This dialog cannot confirm a saved secret because none is available.","acknowledge":"I saved this secret. I understand it will not be shown again.","done":"Done"}},"secretDialog":{"copiedToast":"API key copied","copyFailed":"Could not copy key. Select and copy it manually.","titleSave":"Save this API key","titleUnavailable":"API key secret unavailable","descriptionSave":"This secret for {title} is shown once. Store it before closing this dialog.","descriptionUnavailable":"No secret was returned for {title}. Create a new key to receive a one-time secret.","oneTimeSecret":"One-time secret","copyButton":"Copy","copiedButton":"Copied","unavailableTitle":"Secret unavailable","unavailableBody":"This dialog cannot confirm a saved key because no one-time secret is available.","bearerHeader":"Bearer header","acknowledge":"I saved this key. I understand it will not be shown again.","done":"Done"},"validation":{"nameRequired":"Name is required.","selectCapability":"Select at least one capability.","selectWorkflow":"Select at least one workflow or choose all accessible workflows.","rateLimitRange":"Rate limit must be between 1 and 1,200 requests per minute.","invalidDateTime":"Use a valid {label} date and time.","mustBeFuture":"{label} must be in the future."},"console":{"railLabel":"API clients","backToList":"All clients","keyCountOne":"1 key","keyCountOther":"{count} keys","keys":{"intro":"A key is shown only once, when you mint it. To rotate without downtime, mint a new key before you revoke the old one.","empty":"This client has no keys yet."},"agentPrompt":{"intro":"Paste this into Claude, ChatGPT or your coding agent so it knows how to call the API with this client. It doesn't include the key.","copy":"Copy prompt for your agent","copied":"Prompt copied","copyFailed":"The prompt couldn't be copied. Select it under Show prompt and copy it by hand.","show":"Show prompt","hide":"Hide prompt","label":"Prompt for your agent"}},"summary":{"full":"Full access","runWorkflows":"Run workflows","syncKnowledge":"Sync Knowledge Hub","custom":"Custom","customOne":"Custom, 1 area","customOther":"Custom, {count} areas","none":"No access"},"create":{"stepOf":"Step {current} of {total}","stepsLabel":"Steps","steps":{"name":"Name","access":"Access","review":"Review"},"continue":"Continue","back":"Back","presetsLegend":"What should this client be able to do?","presets":{"runWorkflows":{"label":"Run workflows","hint":"Start workflow runs, follow their progress and answer paused runs."},"syncKnowledge":{"label":"Sync Knowledge Hub","hint":"Upload, replace and organize Knowledge Hub files, and keep datasets in step with another system."},"full":{"label":"Full access","hint":"Everything except deleting data and changing permissions. Use it only for systems you fully trust."},"custom":{"label":"Custom","hint":"Choose each area yourself."}},"reviewIntro":"Check what this client can do before you create it. You can change its access later."}},"members":{"label":"Members","description":"Invite people, set roles, and organize groups.","toolbar":{"ariaLabel":"Members view","members":"Members","invitations":"Invitations","groups":"Groups"},"actions":{"invite":"Invite member","createGroup":"Create group"},"invitations":{"loadFailed":"Couldn't load invitations.","retry":"Retry"},"joinPolicy":{"title":"How people join","domainJoin":"Domain join","domainJoinHint":"Anyone with an address from a configured domain joins automatically.","domainJoinNoDomain":"No domain is configured for this workspace.","inviteOnly":"Invite only","inviteOnlyHint":"Only people you invite can join.","closed":"Closed","closedHint":"No one new can join, and invitations are paused.","rolesTitle":"Role for people joining by domain","configurationChanged":"The domain configuration changed. Reload and try again.","save":"Save","saving":"Saving…","saved":"Join policy updated.","saveFailed":"Couldn't update the join policy.","loadFailed":"Couldn't load the join policy.","inviteBlocked":"This workspace is closed to new members."},"mfaPolicy":{"title":"Multi-factor authentication","description":"Set the workspace requirement and trusted-device window.","require":"Require MFA for everyone","equalMethods":"Authenticator apps and passkeys are equally valid. Members can use any method they have configured.","trustLabel":"Remember trusted devices for","off":"Off","days":"{count} days","noGrace":"There is no grace period. Members without MFA enroll at their next sign-in.","readOnly":"Only workspace owners and admins can change this policy.","noMethod":"MFA cannot be required because no authentication method is available on this deployment.","save":"Save MFA policy","saving":"Saving…","dirty":"MFA policy has unsaved changes","saved":"MFA policy updated.","saveFailed":"Couldn't update the MFA policy.","loadFailed":"Couldn't load the MFA policy."},"memberProfile":{"action":"Edit profile fields","title":"Profile fields for {email}","description":"These values belong to the member and are used by workflows that read their profile.","emptyTitle":"No profile fields yet","emptyDescription":"Set up fields under Member profile fields first.","saved":"Profile fields saved","saveFailed":"Couldn't save the profile fields.","loadFailed":"Couldn't load this member's profile fields."},"mfaReset":{"action":"Reset MFA","confirmTitle":"Reset this member's MFA?","confirmDescription":"This removes {email}'s authentication methods, trusted devices, and active sessions. They must sign in and enroll again if policy requires it.","saved":"The member's MFA was reset.","failed":"The member's MFA could not be reset.","ownerRecovery":"Owner recovery is available only to a platform administrator.","status":{"enabled":"MFA enabled","enrollment_required":"Enrollment required","not_enabled":"MFA not enabled"}}},"memberProfileFields":{"label":"Member profile fields","description":"Define the profile fields every member fills in."},"aiModels":{"label":"AI models & services","description":"Manage AI models, review service providers and hosting, and set agent instructions."},"skills":{"label":"Skills","description":"Create and manage custom agent skills for your workspace."},"dataPrivacy":{"label":"Data privacy","description":"Control how personal data and secrets are handled before content reaches model providers."},"apps":{"label":"Apps","description":"Who can see which app views.","empty":"No enabled app has views whose access can be restricted."},"dataExport":{"label":"Data export","description":"Create a portable, permission-scoped ZIP of workspace data you can access.","actions":{"create":"Create export","creating":"Creating export…","cancel":"Cancel export","cancelling":"Cancelling…","download":"Download ZIP","preparingDownload":"Preparing download…","downloadExpired":"Download expired","retry":"Create new export"},"unavailable":{"title":"Data export is unavailable","description":"Workspace exports are not available on this server. Existing workspace data is unchanged."},"disabled":{"title":"New exports are temporarily disabled","description":"You can still review and download existing exports while creation is unavailable."},"scope":{"title":"What the ZIP contains","description":"This is an operational export, not a full backup, legal data-subject request, or import file.","permissionTitle":"Limited to data you can access","permissionDescription":"The export uses your current workspace permissions when it is generated.","includesTitle":"Included","includesWorkspace":"Workspace metadata, portable workflows, and dataset rows","includesKnowledge":"Accessible Knowledge records and originals stored by Uhrwerk.AI","includesPersonal":"Your own chats and files","excludesTitle":"Not included","excludesPrivate":"App credentials and other members' private chats","excludesOperations":"Audit, billing, and internal operational data","excludesExternal":"External originals not stored by Uhrwerk.AI; these are listed as warnings and providers are not crawled","formatsTitle":"Formats","formatsArchive":"One ZIP file with a manifest.json that records the format version, exclusions, warnings and a SHA-256 checksum per entry","formatsRecords":"Records such as workspace metadata, workflows, dataset rows, Knowledge entries and chats as JSON or NDJSON","formatsOriginals":"Stored originals in their original file format","formatsPaths":"Archive paths use numeric IDs instead of file names","switching":"To switch to another provider or to have your data deleted, send a request in text form to kontakt@uhrwerk.ai.","secrets":"User-authored content is exported as stored. Secrets written into content are not automatically redacted."},"limits":"ZIP limit: {size} and {entries} entries · downloads expire after {hours} hours. The manifest can contain at most 20,000 warning records, separately from the ZIP entry limit.","history":{"title":"Your exports","description":"Only exports requested by you for this workspace appear here. Cancelling stops ZIP generation only and never deletes workspace data.","empty":"No exports have been requested yet.","progress":"{records} records · {files} files · {bytes} collected","size":"ZIP {size}","warnings":"{count} warnings"},"statuses":{"queued":"Queued","processing":"Processing","ready":"Ready","failed":"Failed","cancelled":"Cancelled","expired":"Expired"},"errors":{"active":"Another workspace export is already running. Wait for it to finish or cancel it before trying again.","rateLimit":"This workspace has reached its limit of three accepted exports in 24 hours. Try again later.","generic":"The export could not be created. Try again.","action":"That export action could not be completed. Refresh and try again.","codes":{"EXPORT_ACCESS_CHANGED":"Access changed while the ZIP was being built","EXPORT_SOURCE_CHANGED":"Source data changed during collection","EXPORT_SOURCE_UNAVAILABLE":"A required source was unavailable","EXPORT_LIMIT_EXCEEDED":"The export exceeded its size or entry limit","EXPORT_DEADLINE_EXCEEDED":"The export took too long","EXPORT_GENERATION_FAILED":"The ZIP could not be generated"}},"confirm":{"title":"Create workspace export?","description":"This creates a permission-scoped ZIP with accessible workspace data and your own chats and files. It excludes app credentials, other members' private chats, audit, billing, and internal data.","confirm":"Create ZIP export","cancel":"Not now"},"pagination":{"previous":"Previous","next":"Next","page":"Page {page}","ariaLabel":"Export history pages"}},"learnedKnowledge":{"label":"Learned business knowledge","description":"What the AI has learned about your company from chats and indexed knowledge."},"planBilling":{"label":"Plan & statements","description":"Review your contracted package and finalized billing statements.","tabs":{"ariaLabel":"Plan & statements view","plan":"Plan","statements":"Statements","billingDetails":"Billing details"},"billingDetails":{"loading":"Billing details are loading","loadFailed":"Billing details could not be loaded.","retryLoad":"Retry billing details","futureOnly":"Changes apply to future invoices only. Issued invoices keep their original recipient details.","version":"Profile version {version}","vatEvidence":{"label":"VAT evidence","ariaLabel":"VAT evidence","valid":"VAT ID validated by VIES","invalid":"VAT ID is invalid","pending":"VAT validation pending","unavailable":"VAT validation temporarily unavailable","notRequired":"VIES validation not needed"},"recipient":{"title":"Legal recipient","description":"The legal entity named as the recipient on future invoices."},"address":{"title":"Registered address","description":"Use the registered billing address for the receiving entity."},"routing":{"title":"VAT and billing routing","description":"VAT treatment and evidence are derived by the server from these identity details."},"fields":{"legalName":"Legal name","tradingName":"Trading name","streetLine1":"Address line 1","streetLine2":"Address line 2","postalCode":"Postal code","city":"City","region":"State or region","country":"Country","vatId":"VAT ID","vatIdHelp":"Include the two-letter country prefix. Validation status comes from VIES.","taxNumber":"Tax number","email":"Billing email","buyerReference":"Buyer reference"},"countries":{"placeholder":"Select a country"},"dirty":"You have unsaved billing details","save":"Save billing details","saving":"Saving billing details…","discard":"Discard changes","saved":"Billing details saved. They will be used for future invoices.","failed":"Billing details could not be saved. Try again.","conflict":"These billing details changed elsewhere. Reload the latest version, review it, and save again.","reload":"Reload billing details"},"discounts":{"percentageOff":"{percentage}% off","builtInTargets":{"base":"Base price","seats":"Seats","aiUsage":"AI usage"},"organisationTarget":"Entire organisation","startsCurrent":"Starts current billing period","startsNext":"Starts next billing period","permanent":"Permanent","remaining":"{count} billing periods remaining","states":{"scheduled":"Scheduled","active":"Active","completed":"Completed","cancelled":"Cancelled","ended":"Ended"}},"plan":{"code":"Package code","revision":"Revision {revision}","status":"Status","statuses":{"active":"Active","suspended":"Suspended","cancelled":"Cancelled","ended":"Ended"},"perMonthNet":"base price per month (net), before usage, fees, discounts, and credit","includedAiUsage":"Included AI credits","seats":"Seats","seatPolicy":{"includedThenPaid":"{count} seats included in the base price, then {price} per additional seat","perSeat":"{price} per seat","minimumIncluded":"At least {count} included seats","includedRange":"{minimum}–{maximum} included seats"},"packageDetails":"Package details","features":"Included features","connectors":"Included connectors","noneIncluded":"None included","allowances":"Usage allowances","allowance":{"unlimited":"Unlimited allowance","quantity":"{count} included · {price} per {unit} extra","metered":"{price} per {unit}"},"additionalFees":"Additional package fees","feeCadence":{"monthly":"{amount} monthly","once_on_activation":"{amount} on activation"},"currentPeriod":"Current period","nextStatementToday":"Next statement today","nextStatementOne":"Next statement in {count} day","nextStatementOther":"Next statement in {count} days","anniversary":"Anniversary date","customManagedTitle":"Customer Enterprise","customManagedDescription":"managed by platform admin","scheduledPackageChange":"A package change is scheduled for {date}.","scheduledCancellation":"The package is scheduled to end on {date}."},"credit":{"title":"Platform credits","description":"Retained platform value available for eligible package charges.","available":"Available balance","nearestExpiryLabel":"Nearest expiry","nearestExpiry":"{amount} expires on","noExpiry":"No upcoming expiry","packageDescription":"Available credits are applied when an eligible platform package statement is finalized.","dormantDescription":"These credits are retained and will apply if an eligible platform package statement is finalized later. They are not applied automatically while Enterprise billing is managed by the platform admin.","loading":"Platform credits are loading","loadFailed":"Platform credits could not be loaded.","retry":"Retry credit","history":{"title":"Credit history","grant":"Credits granted","state":{"available":"Available","partiallyConsumed":"Partially used","consumed":"Used","revoked":"Revoked","expired":"Expired"},"revocation":"Credits revoked","application":"Applied to billing statement","expires":"Expires {date}","showing":"Showing {shown} of {total} history entries","pagination":"Credit history pages","previous":"Previous history page","next":"Next history page","page":"{page} / {totalPages}","emptyTitle":"No credit history yet","emptyDescription":"Grants, revocations, and statement applications will appear here."}},"statements":{"title":"Billing statements","description":"Finalized net billing statements for completed commerce periods.","documentNotice":"Billing statements show the charge ledger. Published legal invoices are separate immutable ZUGFeRD PDFs.","vatNotice":"All amounts shown are net. Applicable VAT is added to the issued invoice based on your billing country and tax status.","number":"Statement","period":"Service period","status":"Status","finalized":"Finalized","void":"Void","finalizedAt":"Finalized at","netAmount":"Net amount","netSubtotal":"Net subtotal","netTotal":"Net total","grossCharges":"Gross charges","factualPackageCharges":"Subtotal before discounts","discounts":"Discounts","discountTarget":"{percentage} off {target}","correctionCharges":"Correction charges","combinedCharges":"Combined charges","platformCreditApplied":"Platform credit applied","amountDue":"Amount due (net)","statementTotals":"Statement totals","lineDescription":"Description","quantity":"Quantity","includedQuantity":"Included quantity","chargeableQuantity":"Billable quantity","quantityContext":"Quantity: {quantity} · Included: {included}","unitAmount":"Unit price","packageRevision":"Package revision","packageRevisionValue":"Package revision {revision}","invoiceStates":{"pending":"Invoice pending","blocked":"Invoice blocked","rendering":"Invoice rendering","published":"Invoice published","failed":"Invoice failed"},"invoiceGuidance":{"pending":"Invoice issuance is queued.","rendering":"The invoice PDF is being generated and validated.","blocked":"Invoice issuance needs billing details or tax evidence before it can continue.","failed":"Invoice generation failed. A platform administrator can retry it.","published":"The published invoice is available for download."},"view":"View {number}","viewLabel":"View","billingStatementLabel":"Billing statement","downloadStatement":"Download statement (CSV)","statementDownloadFailed":"The statement could not be downloaded.","downloadInvoice":"Download invoice (ZUGFeRD PDF)","downloadFailed":"The published invoice could not be downloaded. Try again.","detailTitle":"Billing statement {number}","emptyTitle":"No billing statements yet","emptyDescription":"Billing statements appear after a commerce period is finalized.","loadFailed":"Billing statements could not be loaded.","detailLoadFailed":"This billing statement could not be loaded.","previous":"Previous","next":"Next","close":"Close","voidedAt":"Voided at","voidReason":"Void reason","pendingCorrectionCharges":"{amount} pending future charges will be included in the next finalized package statement.","carriedCorrectionCharges":"Carried-forward correction charges","carriedCorrectionChargesDescription":"Charges corrected after an earlier statement was finalized and included here in full.","fromStatement":"From {number}","correctedAt":"Corrected","sourceCorrections":"Corrections to this statement","creditCorrection":"Credit correction","chargeCorrection":"Future charge correction","creditCorrectionExplanation":"This creates future platform credit; it does not rewrite the finalized statement.","chargeCorrectionPending":"Pending inclusion in the next finalized package statement.","chargeCorrectionAppliedPrefix":"Applied to"}},"usage":{"label":"Usage & limits","description":"Set credit limits and review usage across the workspace."},"activity":{"label":"Activity","description":"Review the audit event log and message feedback.","toggle":{"ariaLabel":"Activity view","whatHappened":"What happened","userFeedback":"User feedback"},"audit":{"summary":{"events":"Events","success":"Succeeded","failures":"Failed or denied","outbox":"Not yet delivered","outboxFailed":"{count} failed to deliver","latest":"Latest {date}"},"categories":{"auth":"Authentication","platform":"Platform","workspace":"Workspace","policy":"Policy","connector":"Connector","approval":"Approval","commerce":"Billing","chat":"Chat","data":"Data access","dataset":"Dataset","workflow":"Workflow","agent":"AI agent","inbox":"Inbox","sandbox":"Sandbox","knowledge":"Knowledge","queue":"Queue","audit":"Audit"},"outcomes":{"attempted":"Attempted","success":"Success","failure":"Failure","denied":"Denied","skipped":"Skipped"},"severities":{"info":"Info","warning":"Warning","critical":"Critical"},"filters":{"search":"Search","searchPlaceholder":"Actor, event, or resource","org":"Org","allOrgs":"All orgs","category":"Category","allCategories":"All categories","outcome":"Outcome","allOutcomes":"All outcomes","severity":"Severity","allSeverities":"All severities","from":"From","to":"To","reset":"Reset filters"},"table":{"time":"Time","org":"Org","system":"System","actor":"Actor","event":"Event","resource":"Resource","outcome":"Outcome","severity":"Severity","context":"Context","integrity":"Integrity","view":"View event","unsealed":"unsealed","empty":"No audit events match the current filters."},"pagination":{"summary":"Page {page} of {pages} · {total} events","prev":"Previous page","next":"Next page"},"context":{"none":"None","session":"Session","run":"Run","workflow":"Workflow","legacyAutomationRun":"Legacy automation run","dataset":"Dataset","approval":"Approval","queue":"Queue","connector":"Connector"},"chain":{"title":"Chain health","description":"Each organisation's audit events form a hash chain. A gap or failed check means events may have been changed or lost.","unverified":"Chain not verified yet","intact":"Chain intact","exceptions":"{count} chain exceptions","empty":"No chain state has been recorded yet."},"exports":{"title":"Exports","subtitle":"CSV and JSON jobs use the current filters.","csv":"CSV","json":"JSON","empty":"No exports requested yet.","download":"Download","pending":"Pending","rowsMeta":"{rows} rows · created {date}","queued":"Audit export queued","queueFailed":"Failed to queue audit export","statuses":{"queued":"Queued","running":"Running","completed":"Completed","failed":"Failed","expired":"Expired"}},"retention":{"title":"Retention","description":"How long audit events are kept, and whether a legal hold stops deletion.","selectOrg":"Select an organisation to review retention policy.","days":"Retention days","legalHold":"Legal hold","legalHoldReason":"Legal hold reason","legalHoldReasonPlaceholder":"Matter or policy reference","save":"Save retention","saved":"Audit retention policy updated","saveFailed":"Failed to update audit retention policy"},"detail":{"fallbackTitle":"Audit event","loadingDescription":"Loading event evidence","loading":"Loading audit event.","none":"None","yes":"Yes","no":"No","sequence":"sequence {n}","sections":{"event":"Event","context":"Context","metadata":"Metadata","integrity":"Integrity"},"rows":{"org":"Org","actor":"Actor","actorRole":"Actor role","resource":"Resource","resourceType":"Resource type","outcome":"Outcome","severity":"Severity","auth":"Auth","eventHash":"Event hash","previousHash":"Previous hash","algorithm":"Algorithm","checkpointed":"Checkpointed","ipHash":"IP hash","userAgent":"User agent"}},"exportFailed":"Failed to open audit export"}}},"search":{"placeholder":"Search settings…","clear":"Clear search","clearAction":"Clear search","noResults":"No settings match “{query}”.","resultsLabel":"Search results","synonyms":{"security":"mfa, 2fa, two factor, authenticator, passkey, security key, trusted device, account security","notifications":"notifications, alerts, email digest, inbox summary, attention, opt out, frequency, schedule","myProfile":"profile, my name, personal details, about me, my account, contact details","myAiKnowledge":"memory, what the ai knows about me, personalization, what it remembers, my preferences","apiClients":"api keys, tokens, access keys, service accounts, integrations, developer, automation keys","members":"people, users, team, colleagues, invite someone, who can log in, sign in access, roles, permissions, groups, ownership","memberProfileFields":"profile fields, user fields, what people fill in, custom fields, member details, form fields","aiModels":"ai models, model providers, language model, gpt, claude, gemini, byok, own api key, agent instructions, service providers, services, hosting, regions, EU, data residency","skills":"skills, custom skills, agent abilities, capabilities, what the assistant can do","dataPrivacy":"privacy, data protection, masking, hide sensitive data, redaction, personal data, pii, secrets, gdpr, compliance, pdf password, encrypted pdf","apps":"apps, app views, fleet kpi, dashboards, tabs, view access, who can see","dataExport":"export, download, zip, archive, portable data, backup, workspace data, data portability","learnedKnowledge":"company knowledge, what the ai learned, business facts, memories, learned context, organisation knowledge","planBilling":"plan, package, subscription, billing statement, invoice, bill, price, commercial terms, renewal","usage":"credits, billing, invoice, bill, cost, costs, spending, spend, price, budget, limits, caps, payment, usage","activity":"activity, audit log, history, events, logs, who did what, feedback, reviews, changes"}},"learnedFeed":{"totalOne":"{count} learning","totalOther":"{count} learnings","totalLoaded":"{count} learnings shown, more available","searchLabel":"Search learned memories","searchPlaceholder":"Search by content or category","searchEmpty":"No learnings match “{search}”.","loadMoreMemories":"Load more memories","loadingMoreMemories":"Loading…","audience":{"labels":{"workspace":"Workspace","private":"Only you","restricted":"Restricted"},"ariaLabel":"Audience: {audience}","why":"Why this visibility?","loading":"Loading visibility details…","error":"Could not load visibility details.","retry":"Retry","explanation":"Within a rule, any listed member or group can grant access. Every rule must grant access.","or":"OR","and":"AND","rulesLabel":"Visibility rules","noRules":"No additional audience rules are available.","sourcesTitle":"Source visibility checks","sourcesLabel":"Sources that set this visibility","sourceUnavailable":"Unavailable","fallbackPrivate":"A private fallback source limits this memory to you.","noDetailSources":"No source details are available."},"showSources":"Show sources","hideSources":"Hide sources","loadingSources":"Loading sources","noSources":"No active sources available","excerptUnavailable":"Excerpt unavailable","provenanceErrorFallback":"Could not load provenance","evidenceOne":"{count} evidence","evidenceOther":"{count} evidence","sourceOne":"{count} source","sourceOther":"{count} sources","ungrouped":"General","chatMemoriesGroup":"Chat memories","learnedFrom":"Learned from {source} · {date}","learnedOn":"Learned on {date}","reinforcedAcrossChats":"Reinforced across {count} chats","contributingChatsPreview":"Recent contributing chats","deletedChatSource":"a deleted chat","deleteMemory":"Remove this learned memory","deleteMemoryFor":"Remove learned memory: “{fact}”","deleteMemoryConfirmTitle":"Remove this learned memory?","deleteMemoryConfirmDescriptionPersonal":"The AI stops using it for you in this workspace. Your chats keep their history, and the AI can learn it again from future conversations.","deleteMemoryConfirmDescriptionBusiness":"The AI stops using it across this workspace. Your chats keep their history, and the AI can learn it again from future conversations.","deleteMemoryConfirmDescriptionPrivate":"The AI stops using it for you in this workspace. Your chats keep their history, and the AI can learn it again from future conversations.","deleteMemoryConfirmDescriptionRestricted":"The AI stops using it for its restricted audience in this workspace. Your chats keep their history, and the AI can learn it again from future conversations.","deleteMemoryConfirmAudience":"Current audience: {audience}.","deleteMemoryConfirmScope":"Only this one memory is removed. Everything else the workspace has learned stays.","deleteMemoryConfirmAction":"Remove","deleteMemoryCancel":"Cancel","deleteMemoryPending":"Removing…","deleteMemoryError":"Could not remove this memory","deleteMemoryRemoved":"Removed one memory: “{fact}”","clearMemoriesTitle":"Reset chat memories","clearMemoriesDescription":"Remove every business memory you can currently access and manage.","clearMemoriesAction":"Remove all memories","clearMemoriesConfirmTitle":"Remove all business memories?","clearMemoriesConfirmDescription":"The AI will stop using every business memory you can currently access and manage. Audit history remains, and future chats can teach new memories again.","clearMemoriesConfirmScope":"Purpose-context items are not removed.","clearMemoriesConfirmAction":"Remove all","clearMemoriesCancel":"Cancel","clearMemoriesPending":"Removing all…","clearMemoriesRemovedOne":"Removed {count} business memory","clearMemoriesRemovedOther":"Removed {count} business memories","clearMemoriesError":"Could not remove business memories","empty":{"personal":{"title":"Nothing learned about you yet","description":"As you chat, the AI notes personal facts it picks up about you. They'll show up here."},"business":{"title":"No business knowledge yet","description":"As your workspace chats and indexes knowledge, the AI records what it learns about your company here."}}}},"platformCommerce":{"featureAdmin":{"packageDescription":"Availability defined by the package contract and explicit exceptions","invalidOrganisation":"Invalid organisation.","loadAuthorityFailed":"Could not load package entitlement authority.","loadFeaturesFailed":"Could not load features.","updateFailedReloaded":"Could not update feature. Latest values were reloaded.","updateAndReloadFailed":"Could not update feature or reload latest values.","retry":"Retry","archived":"Archived organisations are read-only.","statusNote":"Last status note: {note}","customTitle":"No package: features are switched here","customDescription":"This organisation has no package, so each switch below decides directly whether the feature is available.","needsFeature":"Needs {feature} turned on","packageTitle":"Package-controlled features","packageLead":"Contract baselines flow through explicit exceptions to effective customer access.","packageEmpty":"No package-controlled features are registered.","platformTitle":"Platform-managed features","platformLead":"These features are outside the package contract and remain under direct platform administration.","featuresTitle":"Features"},"connectorAdmin":{"catalog":{"knowledgeHubLabel":"Knowledge Hub","knowledgeHubDescription":"Core organisation knowledge remains available in every package","coreTitle":"Core Knowledge","coreDescription":"Platform capability pinned independently of package changes","otherTitle":"Other","otherDescription":"Additional connectors not assigned to a category"},"effectiveAuthority":"Effective connector access","platformAuthority":"Connector access","enabled":"Enabled","disabled":"Disabled","disabledWithConnections":"Disabled with connections","searchPlaceholder":"Search connectors…","searchLabel":"Search connectors","filterLabel":"Filter by status","filterAll":"All","visibleEnabled":"{enabled} of {total} visible enabled","enableVisible":"Enable all shown","disableVisible":"Disable all shown","preserved":"Connections and data are preserved; tools are hidden from the assistant.","activeConnectionOne":"{count} active connection","activeConnectionOther":"{count} active connections","notConnected":"Not connected","toggle":"Toggle {connector}","pauseWarningOne":"Disabling this entitlement pauses tools, triggers, and indexing for {count} active connection; tokens and data remain preserved.","pauseWarningOther":"Disabling this entitlement pauses tools, triggers, and indexing for {count} active connections; tokens and data remain preserved.","invalidOrganisation":"Invalid organisation.","loadAuthorityFailed":"Could not load package entitlement authority.","loadConnectorsFailed":"Could not load connectors.","retry":"Retry","updateFailedReloaded":"Could not update connector. Latest values were reloaded.","updateAndReloadFailed":"Could not update connector or reload latest values. Please refresh.","archived":"Archived organisations are read-only.","statusNote":"Last status note: {note}","customTitle":"No package: connectors are switched here","customDescription":"Connector access is controlled directly here; package automation does not change these settings.","disableOneTitle":"Disable {connector}?","disableVisibleTitle":"Disable all shown connectors?","disableDescriptionOne":"{count} active connection will stop serving tools. Triggers and indexing are paused and new connections are blocked. Connections, tokens, and data are preserved.","disableDescriptionOther":"{count} active connections will stop serving tools. Triggers and indexing are paused and new connections are blocked. Connections, tokens, and data are preserved.","disableManyDescription":"These connectors have active connections that will stop serving tools. Triggers and indexing are paused and new connections are blocked. Connections, tokens, and data are preserved.","cancel":"Cancel","disableConnector":"Disable connector","enableVisibleTitle":"Enable all shown connectors?","bulkDescription":"Apply one audited organisation decision to each visible eligible connector. Hidden rows are not changed.","activePaused":"Active connections will be paused.","preservedWhilePaused":"Tokens and data remain preserved while tools, triggers, and indexing stop serving.","reasonLabel":"Reason for this change","reasonPlaceholder":"Describe the customer contract or operational exception","expiryLabel":"Expiry (optional)","expiryFuture":"Expiry must be in the future.","retryFailedOne":"Retry failed connector","retryFailedOther":"Retry failed connectors","applyOne":"Apply to {count} connector","applyOther":"Apply to {count} connectors","bulkFailedOne":"Could not update {connectors}. Latest authority was reloaded; retry uses the same command key.","bulkFailedOther":"Could not update {connectors}. Latest authority was reloaded; retry uses the same command keys."},"entitlements":{"authorityLabel":"Entitlement authority","packageBaseline":"Package baseline","currentOverride":"Current override","effectiveAccess":"Effective access","inheritedEnabled":"Inherited enabled","inheritedDisabled":"Inherited disabled","noBaseline":"No package baseline","enabled":"Enabled","disabled":"Disabled","effectiveSummary":"{state} by {source}","sources":{"legacy":"legacy policy","package":"package","override":"override","unavailable":"unavailable authority","pinned":"pinned policy"},"decision":{"inherit":"Inherit package","enabled":"Explicitly enabled","disabled":"Explicitly disabled"},"reason":"Reason","expires":"Expires {date}","edit":"Edit decision","readOnly":"Read only","showHistory":"Show decision history","hideHistory":"Hide decision history","historyLoading":"Loading decision history…","historyFailed":"Decision history could not be loaded.","historyEmpty":"No explicit decisions have been recorded.","dialogTitle":"Set entitlement authority","dialogDescription":"Choose whether this entitlement inherits the package or has an explicit exception. Every change is retained in the decision ledger.","stateLabel":"Authority decision","states":{"inherit":"Inherit package","enabled":"Enable explicitly","disabled":"Disable explicitly"},"stateHelp":{"inherit":"Remove the current exception and follow the package baseline.","enabled":"Allow access even when the package baseline does not.","disabled":"Block access even when the package baseline allows it."},"reasonLabel":"Decision reason","reasonPlaceholder":"Record the contractual or operational reason","expiryLabel":"Expiry (optional)","expiryFuture":"Expiry must be a future date and time.","cancel":"Cancel","apply":"Apply decision","saving":"Applying…","conflict":"This entitlement changed elsewhere. The latest authority has been reloaded; review it before retrying.","saveFailed":"The entitlement decision could not be applied."}},"validation":{"maxFiles":"Maximum {max} files per message","fileTypeUnsupported":"File type {fileType} is not supported","fileTooLarge":"File {fileName} is too large ({size}). Max {maxSize}","fileEmpty":"File {fileName} is empty"},"files":{"types":{"xlsx":"Excel (.xlsx)","xls":"Excel (.xls)","csv":"CSV","text":"Text","pdf":"PDF","doc":"Word (.doc)","docx":"Word (.docx)","pptx":"PowerPoint (.pptx)","image":"Image","file":"File"}},"processes":{"navigation":{"label":"Process workspace","allProcesses":"All processes","overview":"Overview","overviewHint":"See progress and open items","needsYou":"My tasks","needsYouHint":"Open tasks and your task history","setup":"Edit process","setupHint":"Define steps, teams and rules","publishFirst":"Publish first"},"title":"Processes","list":{"draftHint":"Finish the setup and publish to start working with items.","viewSetup":"View setup","continueSetup":"Continue setup","openOverview":"Open overview","editProcess":"Edit process","previous":"Previous","next":"Next","pagination":"Process pages","pageSummary":"Page {page} · {total} total","emptyPageTitle":"No processes on this page","emptyPageDescription":"Go back to the previous page to find your processes.","import":"Import","openNeedsYou":"Needs you","subtitle":"Open a process to see the work, respond to requests or set up its steps.","create":"New process","loadFailed":"Processes could not be loaded.","retry":"Try again","emptyTitle":"No processes yet","emptyDescription":"Create a process to track items through steps owned by your teams.","emptyDescriptionMember":"Processes your workspace admins create appear here.","columnName":"Name","columnStatus":"Status","columnVersion":"Current version","columnUpdated":"Updated","published":"Published","draft":"Draft","version":"v{version}","notPublished":"Not published","columnActions":"Actions","openBoard":"Board"},"guide":{"outlineCount":"{steps} steps · {phases} phases","outlineHint":"Select a step to review its team, completion and next handoff.","title":"Build your process","intro":"Describe the work step by step. Choose who handles each step and what lets the case move on.","openData":"Case information","openFlow":"Open visual flow","complexNote":"Select a step to see its next handoff, including parallel work and conditions. Edit names and teams here; change connections in the visual flow.","outline":"The steps in your process","loadingTeam":"Loading team…","teamUnavailable":"Team unavailable","confirmationShort":"Team confirms completion","completionMissing":"Completion action needed","automationShort":"Configured work","saveHint":"Changes stay in your draft until you save. Check and publish when the process is ready.","stepNumber":"Step {n}","selectedStep":"Selected step","stepName":"What needs to happen?","stepNamePlaceholder":"For example, review the request","stepNameHint":"Use a short action that your team will recognize.","nameRequired":"Give this step a name.","team":"Who is responsible?","chooseTeam":"Choose a team","teamHint":"This team handles the case while it is at this step.","retry":"Try again","groupsFailed":"The teams could not be loaded. Try again to change the responsible team.","completion":"When is this step done?","confirmationTitle":"The team confirms that the work is done","confirmationHint":"When a case reaches this step, the responsible team is asked to confirm that the work is done. Confirming completes the step and follows the process connections.","noCompletionHint":"This step currently has no completion action. A case will wait here until you add one.","addConfirmation":"Ask someone to confirm completion","automationTitle":"This step already has configured work","eventAutomationHint":"An event starts the configured work for this step. Open the visual flow to review how it completes.","automationHint":"This step has configured work or deadline actions. Open the visual flow to review or change how it completes.","openStepFlow":"View this step in the visual flow","handoff":"What happens next?","nextHandoff":"The next step is “{step}”, handled by {team}.","pathEndHandoff":"This path ends here. The case finishes once all paths and their join rules are complete.","parallelHandoff":"Start these paths in parallel:","conditionalHandoff":"Start every path whose condition matches:","perElementHandoff":"Repeat this work for each entry in “{field}”:","branchDestination":"Starts with “{step}”, handled by {team}.","fieldCondition":"“{field}” equals {value}","fieldInCondition":"“{field}” is one of {values}","whenCondition":"When {condition}.","otherwiseHandoff":"If no other condition matches.","noMatchingHandoff":"If no condition matches, none of these paths starts and this part of the process is skipped.","completeWhenHandoff":"Also wait until {condition}.","joinAllHandoff":"Wait until all started paths are finished or cancelled, then continue.","joinAnyHandoff":"Continue when any started path is finished or cancelled.","joinCountHandoff":"Continue when {count} started paths are finished or cancelled, or all of them if fewer were started.","repeatedJoinHandoff":"These paths are repeated for entries in “{field}”.","remainingPathsCancelled":"Any paths still in progress are cancelled when the process continues.","implicitJoinHandoff":"This part of the process ends once all started paths are finished or cancelled.","missingElementsHandoff":"The list to repeat over has not been set. Choose it in the visual flow.","missingCompleteHandoff":"The condition that marks the list as complete has not been set. Add it in the visual flow.","reviewHandoff":"This connection needs review in the visual flow before its next handoff can be explained.","unresolvedHandoff":"The connection “{target}” could not be resolved. Review it in the visual flow.","notSetValue":"not set","emptyTextValue":"empty text","addNext":"Add the next step","newStepHint":"The new step is connected here and waits for its responsible team to confirm completion.","editConnections":"Review process connections","empty":"Add a step in the visual flow to start building this process.","newStep":"New step {n}","confirmationPrompt":"Confirm that the work is done","done":"Done","completeStep":"Complete this step","end":"End"},"setup":{"createTitle":"New process","createDescription":"Name the process and choose the team that starts the work. Then build it step by step.","setupTitle":"Set up this process","setupDescription":"Choose the team that starts the work. Then add the steps they follow.","name":"Name","namePlaceholder":"e.g. Invoice approval","group":"Who starts the work?","groupHint":"Choose a team. You can assign later steps to other teams.","dataAutomatic":"Each case gets a reference and its own place to keep information. You can add more fields as you build.","dataOptions":"More options: data and references","groupPlaceholder":"Choose a group","noGroups":"Create a workspace group first. Every step is owned by a group.","datasetMode":"Item dataset","datasetNew":"Create a new dataset","datasetExisting":"Use an existing empty dataset","keyField":"Key field","keyFieldHint":"Identifies each item, for example an invoice number. Use lowercase letters, digits and underscores.","keyFieldInvalid":"Use lowercase letters, digits and underscores, starting with a letter or underscore.","submitCreate":"Create process","submitSetup":"Save","submitting":"Saving…","cancel":"Cancel","failed":"The process could not be saved.","datasetFailed":"The item dataset could not be created.","datasetCleanupFailed":"The dataset from the previous attempt could not be removed. Try again.","defaultPhase":"Intake","defaultStep":"First step","datasetName":"{name} items"},"builder":{"reviewPublish":"Review & publish","tabBuild":"Steps & teams","moreActions":"More actions","flowHint":"Map the steps, who owns them, and what happens next. Select a step to configure it.","itemHint":"Choose the information each item carries and what appears on its board card.","viewsHint":"Show the tables and summaries your team needs while working through this process.","testHint":"Replay sample cases against the draft to see where they go before publishing.","publishHint":"Review this version and choose what happens to items already in progress.","tabViews":"Saved views","tabTest":"Test","tabPublish":"Publish","openNeedsYou":"Needs you","back":"Processes","loadFailed":"This process could not be loaded.","retry":"Try again","nameLabel":"Process name","draftRevision":"Draft revision {revision}","published":"Published v{version}","notPublished":"Not published","readOnly":"Only workspace owners and admins can change processes.","check":"Check","checking":"Checking…","checkPassed":"No problems found.","publish":"Publish","save":"Save changes","saving":"Saving…","saved":"All changes saved","unsaved":"Unsaved changes","saveFailed":"Changes could not be saved.","saveBeforeAction":"Save your changes first.","draftFromDescription":"Draft from description","draftFromDescriptionHint":"Describe the process in chat; the AI drafts it into this process's draft.","tabsLabel":"Process setup sections","tabItem":"Case information","tabTriggers":"Trigger logic","triggersHint":"See what starts each step, what then happens and where a person has to check, decide or release.","tabFlow":"Visual flow","problemsTitle":"Fix these problems before publishing","adviceTitle":"Recommendations (these don't block publishing)","problemInHook":"Step workflow {hook}","conflictTitle":"This process changed elsewhere","conflictDescription":"Someone saved a newer draft. Reload to continue from it. Your unsaved changes here will be lost.","reload":"Reload","publishTitle":"Publish this process?","publishDescription":"Publishing creates version {version}. New items start on it. Open items stay on the version they started on.","publishDatasetNote":"Case data is shared through this process. After publication it is unavailable as a general dataset, in chat or in other workflows.","publishConfirm":"Publish","publishing":"Publishing…","publishCancel":"Cancel","publishSucceeded":"Published version {version}.","publishFailed":"The process could not be published.","deleteLabel":"Delete process","deleteBlocked":"Save or discard your changes first.","deleteTitle":"Delete this process?","deleteDescription":"“{name}” is removed from Processes and its event sources stop. This can't be undone here.","deleteConfirm":"Delete","deleting":"Deleting…","deleteFailed":"The process could not be deleted.","leaveTitle":"Leave without saving?","leaveDescription":"Your unsaved changes to this process will be lost.","leaveConfirm":"Leave","leaveCancel":"Stay","draftInvalid":"This draft no longer matches the current process format and can't be edited here.","openBoard":"Board"},"item":{"publishedDataset":"Dedicated data for the items in this process.","datasetLoading":"Loading item data…","title":"Item","description":"Where the process stores its items and which fields appear on cards.","dataset":"Item dataset","datasetLoadFailed":"The dataset could not be loaded.","datasetOwned":"This dataset belongs to the process and is hidden from Datasets, chat and other workflows.","datasetLocked":"The item dataset can't change after the first publish.","changeDataset":"Change dataset","useDataset":"Use this dataset","chooseExisting":"Choose an existing empty dataset","datasetPlaceholder":"Choose a dataset","noDatasets":"There are no datasets to choose from.","checkingEmpty":"Checking whether the dataset is empty…","notEmpty":"This dataset already has rows. Choose an empty dataset or create a new one.","ownershipWarning":"Publishing makes this dataset owned by the process. It is then hidden from Datasets, chat and other workflows.","keyField":"Key field","keyFieldHint":"Identifies an item, for example an order number.","keyFieldPlaceholder":"Choose a field","cardFields":"Card fields","cardFieldsHint":"Shown on board cards. Choose up to {max}.","cardFieldsLimit":"You can choose up to {max} card fields.","fields":"Dataset fields","fieldName":"Field","fieldType":"Type","addField":"Add field","addingField":"Adding…","addFieldName":"New field","addFieldHint":"Lowercase letters, digits and underscores. After publishing, fields can still be added but not renamed or removed.","addFieldPublishedHint":"The process is live: a new field is added to every existing case as an empty, optional column. It can't be renamed or removed later. Use it in the draft's steps and views, then publish a new version.","addFieldFailed":"The field could not be added.","noFields":"This dataset has no fields.","keyBadge":"Key","cardBadge":"Card","hiddenBadge":"Hidden in tasks","display":"Display","displayFor":"Display settings for {field}","displayLabel":"Label","displayLabelPlaceholder":"Shown instead of the field name","displayFormat":"Format","displayCurrency":"Currency code","format":{"automatic":"Automatic","text":"Text","number":"Number","currency":"Currency","percent":"Percent","date":"Date","datetime":"Date and time","boolean":"Yes / No"},"displayWidth":"Width in value lists","width":{"auto":"Automatic","full":"Full row","half":"One column"},"hideInTasks":"Hide in tasks","hideInTasksHint":"Left out of task cards and value lists. Process setup still shows it."},"flow":{"canvasNavigationHint":"Drag the canvas to explore. Use + and − to read details, or Fit view to see the whole process. Select a step to edit its settings.","labels":{"observed":"Observed","human":"Human","automatic":"Automatic","none":"No workflow","unknown":"Unknown"},"deadlineRungs":"Deadline with {count} rungs","deadlineRungsOne":"Deadline with 1 rung","laneExternal":"External party","laneGroup":"Workspace group","splitKinds":{"parallel":"Parallel split","per_element":"Per-element split","conditional":"Conditional split"},"splitKindHints":{"parallel":"Each branch starts once.","per_element":"One branch per entry of a list field, created as entries appear.","conditional":"Routes on an item field that a workflow has set."},"merge":"Merge","branchName":"Branch {n}","autoArrange":"Auto-arrange steps to reduce crossing handoffs","removeField":"Remove {field}","addField":"Add field","noMoreFields":"No more fields","conditionField":"Field","noCondition":"No condition","conditionEquals":"Equals","conditionEqualsPlaceholder":"Value, e.g. true","conditionOperator":"Comparison","conditionOperatorEquals":"Equals","conditionOperatorIn":"Is one of","conditionIn":"Values","conditionInPlaceholder":"One value per line","hookNodes":"Step workflow with {count} nodes","hookNodesOne":"Step workflow with 1 node","hookNone":"Not set","hookView":"View","hookEdit":"Edit","hookAdd":"Add","hookRemove":"Remove step workflow","hookSelectNode":"Select a node to see its settings.","template":"Template","templateFailed":"The template could not be applied.","templateReplaces":"Replaces the current step workflow.","templatePlaceholder":"Choose a template","templates":{"remind":"Remind","notify-owner":"Notify owner","move-item":"Move item"},"templateRecipient":"Recipient","templateRecipientPlaceholder":"Choose a member","templateTargetStep":"Move to step","templateApplying":"Applying…","templateApply":"Apply template","ownerGroup":"Owner group","groupPlaceholder":"Choose a group","stepPlaceholder":"Choose a step","fieldPlaceholder":"Choose a field","deadline":"Deadline","deadlineNone":"No deadline.","deadlineAdd":"Add deadline","deadlineRemove":"Remove deadline","deadlineAnchor":"Counts from","anchors":{"step_start":"Step start","item_field":"An item date field","last_event":"Last event on the item"},"deadlineAnchorField":"Date field","deadlineCalendar":"Days","calendars":{"working_days":"Working days","calendar_days":"Calendar days"},"deadlineStopOn":"Stops when","stopOn":{"step_completed":"The step completes","related_event":"A related event arrives","item_on_hold":"The item is on hold (pauses)","snoozed":"The owner snoozes it"},"deadlineRungsTitle":"Rungs","rungAfter":"At day","rungDays":"run:","rungWorkflow":"Rung {n} workflow","rungAdd":"Add rung","step":"Step","removeStep":"Remove step","removeBlocked":{"last_step":"A process needs at least one step.","branch_entry":"This step starts a split branch. Change or remove the branch first."},"name":"Name","lane":"Lane","phase":"Phase","hooks":"Step workflows","hookKinds":{"onEnter":"On enter","onEvent":"On event","onExit":"On exit"},"correction":"Correction policy","correctionDefault":"When a value this step read changes","correctionHint":"Human steps are always flagged, never re-run.","correctionModes":{"flag":"Flag for review","rerun":"Re-run the step","forward_only":"Only affect later steps"},"correctionField":"When {field} changes","correctionInherit":"Use the default","contract":"Fields","reads":"Reads","readsHint":"Item fields the step uses. Changes to them trigger the correction policy.","writes":"Writes","alwaysVerify":"Always verify","alwaysVerifyHint":"Values a person always reviews.","eventSource":"Event source","eventSourceKind":"Listens to","eventSourceHint":"Observed steps need an event source and an on-event step workflow.","eventSourceNone":"Nothing","eventSourceConnector":"A connector trigger","eventSourceApi":"API events","eventType":"Event type","eventTypeHint":"Events posted to the process API with this type arrive here.","split":"Split","removeSplit":"Remove split","splitKind":"Kind","elementsField":"List field","elementKeyField":"Entry key","elementKeyFieldHint":"The entry property that identifies it across list changes. Defaults to id.","completeWhen":"Complete when","completeWhenHint":"The merge stays open until a workflow sets this field.","branches":"Branches","branchAdd":"Add branch","branchNameLabel":"Branch name","branchRemove":"Remove branch","branchEntry":"Starts at","routeWhen":"Route when","routeWhenHint":"Branches without a condition take items no other branch matches.","removeMerge":"Remove merge","mergeSplit":"Closes","waitFor":"Waits for","waitForKinds":{"all":"All branches","any":"Any branch (cancels the rest)","n_of_m":"A number of branches"},"waitForN":"Number of branches","moveUp":"Move up","moveDown":"Move down","remove":"Remove","addAfter":"Add after this step","paletteAdd":"Add","paletteHint":"Drag a step into a lane cell, or click to add it to the selected cell.","addStep":"Step","addSplit":{"parallel":"Parallel split","per_element":"Per-element split","conditional":"Conditional split"},"addMerge":"Merge","addMergeBlocked":"Add a split first, or select the split to merge.","lanes":"Lanes","addGroupLane":"Group","addExternalLane":"External","newExternalLane":"External party","laneName":"Lane name","laneNotEmpty":"Move its steps to another lane first.","laneKind":"Lane kind","laneGroupPick":"Lane group","phases":"Phases","addPhase":"Phase","newPhase":"Phase {n}","phaseName":"Phase name","phaseNotEmpty":"Move its steps to another phase first.","newStep":"Step {n}","breadcrumbLabel":"Location in the process","processProblems":"Process problems","problemCount":"{count} problems","problemCountOne":"1 problem","checkPassed":"No problems found.","checkFailed":"The draft could not be checked.","checking":"Checking…","checkDraft":"Check draft","backToProcess":"Back to process","fullScreen":"Full screen","exitFullScreen":"Exit full screen","backToPalette":"Palette"},"systems":{"label":"Systems","hint":"The systems this step's work happens in, e.g. SAP or Outlook. {count} of {max}.","placeholder":"Add a system, then press Enter","full":"Maximum reached","none":"No systems named","suggestions":"Used in other steps:","add":"Add {system}","remove":"Remove {system}","more":"+{count}","problems":{"too_long":"A system name can have at most {length} characters.","too_many":"A step can name at most {max} systems.","duplicate":"This system is already listed."}},"triggers":{"title":"Trigger logic","intro":"Each row says what makes the work start, what the step workflow then does, which systems it touches and whether a person has to act. Rows follow the flow; S and D codes let you refer to a row.","legendTitle":"How to read this","legend":{"decision":"M: a person checks or decides.","release":"F: a person releases it before anything is sent or booked.","automatic":"A: runs without asking anyone.","unknown":"?: not known yet (the workflow catalog is unavailable or a node is not in it).","rows":"Starts and events are the core of the process. Deadlines watch over it: they run when a step takes longer than planned."},"coreTitle":"Starts and events","coreHint":"What happens when a case enters a step, an event arrives or the team finishes a step.","deadlinesTitle":"Deadlines","deadlinesHint":"Reminders and escalations that run while a case waits at a step or merge.","noDeadlines":"No deadlines are set.","columns":{"code":"Code","step":"Step","trigger":"Trigger","whatHappens":"What happens","systems":"Systems","approval":"Approval"},"trigger":{"api_event":"Event: {type}","connector":"Connector trigger: {name}","event_without_source":"Event (no event source set)","enter":"Case enters the step","exit":"Case leaves the step","manual":"Team marks the step done"},"eventBadge":"event","noWorkflow":"No workflow","missingWorkflow":"Missing workflow","emptyWorkflow":"The workflow has no steps yet","noApproval":"Nothing to approve","teamUnavailable":"Team unavailable","mergeOwner":"Merge {id}","deadlineAfter":"After {days} {unit} from {anchor}","calendar":{"working_days":"working days","working_daysOne":"working day","calendar_days":"calendar days","calendar_daysOne":"calendar day"},"anchor":{"step_start":"the step start","item_field":"the date in {field}","last_event":"the last event on the case"},"stopsWhen":"Stops when: {conditions}","paletteFailed":"The workflow catalog could not be loaded, so approvals show as unknown."},"board":{"overviewTitle":"The process at a glance","overviewHint":"Choose a stage to focus on its open work. A case can be in more than one stage when work runs in parallel.","understandProcess":"How this process works","stageNumber":"Stage {number}","openItems":"{count} open items","openItemsOne":"1 open item","workTitle":"Work in progress","workHint":"Open a case to see who is responsible and what needs to happen next.","allStages":"All stages","noMatchingWork":"No open work matches this selection","noOpenWork":"No work is waiting in this process","noOpenWorkHint":"New cases appear here as they move through the stages. All cases, including completed work, are listed below.","casesTitle":"All cases","casesHint":"Open and completed cases with their current status.","noCases":"No cases have been started yet.","caseListFailed":"The case list could not be loaded.","needsYou":"Needs you","viewsLabel":"Process views","back":"Process builder","title":"{name} board","version":"Version {version}","newItem":"New item","loadFailed":"This process could not be loaded.","notPublished":"Publish this process to start items and see their progress here.","overdueOnly":"Overdue only","stepFilter":"Filter by step","allSteps":"All steps","retry":"Try again","boardFailed":"The overview could not be loaded.","columnsLabel":"Phases","columnLabel":"{name}, {count} items","columnLabelOne":"{name}, 1 item","emptyColumn":"No items","loadMore":"Show {count} more","overdue":"Overdue","attention":"{count} need attention","attentionOne":"1 needs attention","activity":{"idle":"Idle","in_progress":"In progress","waiting_for_person":"Waiting for a person","needs_attention":"Needs attention","needs_recovery":"Needs recovery"},"stream":{"connecting":"Connecting updates","live":"Live updates","reconnecting":"Reconnecting updates","paused":"Updates paused","ended":"Updates disconnected"},"invalidValue":"Check {field}: its value doesn't match the field type.","required":"Required","requiredValue":"Enter a value for {field}.","chooseBoolean":"Choose Yes or No","notSet":"Not set","yes":"Yes","no":"No","nullableBooleanHint":"Not set leaves this field empty. Yes and No both save an answer.","laterFields":"Details filled in later ({count})","laterFieldsHint":"The process normally fills in these details as work progresses. Add them now only if you already have them.","listHint":"Add a unique reference for each entry. The process tracks each one separately.","listReference":"Reference for entry {n}","listReferencePlaceholder":"For example: LINE-001","listDuplicate":"Each entry needs a different reference.","listReferenceRequired":"Enter a reference or remove this entry.","listDetailsRetained":"Additional details are preserved. Use the advanced editor to view or change them.","listRemove":"Remove entry {n}","listRemoveShort":"Remove","listAdd":"Add an entry","listUseEditor":"Use the list editor","listUseJson":"Advanced: edit all entry details","timezoneHint":"Times use your device's time zone: {timeZone}.","createFailed":"The item could not be created.","newItemTitle":"New item","newItemDescription":"Enter the item's values. It starts at the process's first step.","schemaFailed":"The item fields could not be loaded.","keyField":"key field","cancel":"Cancel","creating":"Creating…","create":"Create item"},"itemPage":{"doneDescription":"This item has completed its process. Its values and history remain available.","cancelledDescription":"This item was cancelled. Its values and history remain available.","retry":"Try again","notFound":"This item doesn't exist or you can't see it.","loadFailed":"This item could not be loaded.","status":{"active":"Active","on_hold":"On hold","cancelled":"Cancelled","done":"Done"},"overdue":"Overdue","version":"Version {version}","hold":"Hold","resume":"Resume","cancel":"Cancel item","dismiss":"Dismiss","interactionsTitle":"Waiting for you","reviewTitle":"Review","timelineTitle":"Timeline","timelineFailed":"The timeline could not be loaded.","earlier":"Earlier records","later":"Later records","liveTitle":"Current steps","noLiveSteps":"The item is at no step right now.","attentionTitle":"Needs attention","attention":{"field_clash":"Branches wrote different values","element_without_key":"List entry without a key","hook_admission_rejected":"A step workflow could not start","correction_flagged":"A value changed after a step used it"},"resolve":"Mark resolved","runsTitle":"Linked runs","runsDescription":"Status, timing and results of this item's workflows. Runs needing recovery appear first.","runsPartialHistory":"Includes runs from the current timeline page and the item's steps. Browse the timeline pages for other history.","runsPage":"{first}–{last} of {count} runs","previousRuns":"Previous runs","nextRuns":"Next runs","documentsTitle":"Documents","backTo":"{name} board","back":"Board","cancelBranchTitle":"Cancel branch {branch}?","cancelBranch":"Cancel branch","snoozeTitle":"Snooze the deadline of {step}","snooze":"Snooze","undoTitle":"Undo {step}?","undo":"Undo","undoDescription":"The item goes back to this step. Values are not reverted; both records stay in the timeline.","undoDescriptionEvent":"The item goes back to this step and the triggering event returns to pending. Values are not reverted; both records stay in the timeline.","holdTitle":"Put this item on hold?","resumeTitle":"Resume this item?","cancelTitle":"Cancel this item?","holdDescription":"The item stays on its steps until it is resumed; deadlines that stop on hold pause.","resumeDescription":"The item continues on its steps; paused deadlines run again.","cancelDescription":"The item and its open branches stop for good and running step workflows are cancelled. Its records stay in the timeline.","responsibleTeam":"Responsible team: {group}","since":"since {date}","deadlineRungs":"Deadline at day {days} ({calendar})","calendar":{"working_days":"working days","calendar_days":"calendar days"},"openRun":"Open run","trunk":"Main path","recordCount":"{count} records","recordCountOne":"1 record","noRecords":"No records yet.","record":{"entered":"{step}: task started","completed":"{step} completed","undone":"{step} undone","corrected":"{step} corrected","snoozed":"{step} deadline snoozed","deadline_fired":"{step} deadline reached","event_assigned":"Event assigned to {step}","cancelled":"{step} cancelled","held":"Put on hold at {step}","resumed":"Resumed at {step}","migrated":"Moved to {step} by a new version","decided":"{step}: decision recorded"},"actorRun":"Step workflow","afterApprovalBy":"after approval by {person}","afterRejectionBy":"after rejection by {person}","afterClarificationBy":"after clarification request by {person}","afterAnswerBy":"after answer by {person}","decidedSnapshot":"View card as approved","exportHistory":"Export approval history","exportFileName":"approval-history","exportFailed":"The approval history could not be exported. Try again.","actorSystem":"System","runLink":"Run {id}","noRuns":"No runs yet.","failed":"Failed","stopped":"Stopped","stoppedDescription":"This workflow was stopped. The item is still waiting at this step. Retry to start a new run.","retryRun":"Retry","noDocuments":"No documents are linked to this item's values.","actionFailed":"The action could not be completed.","snoozeDays":"Days to postpone","reasonOptional":"Reason (optional)","reason":"Reason","cancelDialog":"Cancel","completeStep":{"action":"Mark step done","title":"Mark {step} done","description":"Enter the values this step records. Fields you leave empty keep their current value. The item then moves on and a running step workflow of this step is cancelled.","descriptionNoFields":"The item moves on to its next step. A running step workflow of this step is cancelled.","confirm":"Mark done","invalidValue":"{field} is not a valid value."}},"evidence":{"reviewHint":"Select a value to inspect where it came from.","workflowFile":"Workflow file","knowledgeItem":"Knowledge Hub file {id}","chatFile":"Chat file {id}","documents":"Documents","values":"Values","noDocuments":"No documents back these values.","verify":"Verify","kind":{"extracted":"Extracted","observed":"Observed","entered":"Entered","computed":"Computed","imported":"Imported"},"sourcesOf":"Sources of {field}","noPreview":"No page preview is available for this file.","pageNotInPreview":"Page {page} is not in the preview.","onPage":"page {page}","pageAlt":"Page {page}","confidence":"{percent}% confidence","event":"Event {id}","enteredBy":"Entered by {name}","row":"row {row}","showSource":"Show in document","openRun":"Open run"},"approval":{"previous":"instead of","factsTitle":"Details","checksTitle":"Checks","check":{"ok":"Passed","warning":"Needs attention","error":"Failed"},"responsibilityTitle":"Responsibility","responsibilityTeam":"Team","responsibilityPerson":"Person","responsibilityReason":"Why","pathTitle":"Approval path","currentStage":"You are here","tile":{"approved":"Approved","partially_approved":"Partially approved","rejected":"Rejected","clarification":"Clarification requested","decided":"Decided","open":"Waiting","upcoming":"Not yet","completed":"Done","not_needed":"Not needed","automatic":"Automatic"},"remindersTitle":"Dates","overdue":"Overdue","historyTitle":"Approval history","decision":{"approved":"Approved","rejected":"Rejected","partially_approved":"Partially approved","clarification_requested":"Clarification requested","answered":"Answered"},"byPerson":"{decision} by {person}","onBehalfOf":"on behalf of {person}","chosenOption":"Chosen: {option}","controls":{"approve":"Approve","reject":"Reject","partial":"Approve partially","clarify":"Ask a question","addComment":"Add comment","commentLabel":"Comment (optional)","reasonLabel":"Reason for rejection","reasonHint":"The reason is saved in the approval history.","questionLabel":"Your question","questionHint":"The process continues on its clarification path with your question.","amountLabel":"Amount to approve ({currency})","amountMax":"At most {amount}","amountInvalid":"Enter an amount above 0.","amountTooHigh":"The amount can be at most {amount}.","submitApprove":"Approve","submitReject":"Confirm rejection","submitPartial":"Approve amount","submitClarify":"Send question","cancel":"Cancel"}},"interaction":{"evidenceTitle":"Item values and source documents","onHold":"This item is on hold. Resume it on the item page before responding.","webOnly":"This pause can only be answered on the run page.","failed":"The answer could not be sent.","responseSaved":"Response saved","reject":"Reject","feedbackHint":"The workflow goes back to an earlier step with your feedback and asks you again.","action":{"write":"Changes data","destructive":"Deletes data"},"redacted":"{count} values hidden","redactedOne":"1 value hidden","noInput":"No input to review.","proposedValues":"Values to save for this item","actionDetails":"View all action details","approve":"Approve","chooseOne":"Choose one option","chooseRange":"Choose between {min} and {max} options","emptyConfirmation":"There are no options to select. Continue to confirm and move to the next step.","continue":"Continue","answer":"Send answer","fileUpload":"This step asks for a file. Upload it on the run page, or reject it here.","fileUploadOptional":"This step asks for an optional file. Upload it on the run page, or continue without it here.","unsupported":"This pause can't be answered here. Open the run to answer it.","openRun":"Open run","label":"{node} for this item","event":{"item_entered_step":"Entered step","step_event_arrived":"Event arrived","deadline_reached":"Deadline reached","item_exited_step":"Left step"},"deadline":"Deadline at day {days}","deadlineOn":"Deadline on {date}","deadlineRung":"Deadline {number} on {date}","decidedByYou":"{decision} by you at {time}","addComment":"Add comment","approveCommentLabel":"Comment (optional, saved in the approval history)","stale":"This request changed meanwhile. The latest version is shown once it reloads."},"views":{"yes":"Yes","no":"No","systemColumns":{"process_step":"Step","waiting_since":"Waiting since","overdue":"Overdue","process_version":"Version","branch_summary":"Branches"},"title":"Views","description":"The board, item page and Needs you are generated. Add tables, metrics, charts and batch previews to the process home or the item side panel.","generatedTitle":"Generated views","generatedBadge":"Generated","generated":{"board":"Board","boardHint":"One column per phase, one card per open item.","itemPage":"Item page","itemPageHint":"Header, current steps, review, timeline and linked runs.","needsYou":"Needs you","needsYouHint":"Pauses, failed runs, attention markers and pending events for the viewer's steps."},"customTitle":"Custom views","noCustom":"No custom views yet.","addKind":"View type","add":"Add view","kind":{"table":"Table","metric":"Metric","chart":"Chart","batch_preview":"Batch preview"},"slot":{"process_home":"Process home","item_side_panel":"Item side panel"},"preview":"Preview","hidePreview":"Hide preview","previewUnavailable":"Only views of the published version can be previewed.","previewNote":"Previews show views as published. New or changed views are computed by a replay in the Test tab.","moveUp":"Move up","moveDown":"Move down","edit":"Edit {name}","remove":"Remove {name}","loadFailed":"This view could not be loaded.","previous":"Previous","next":"Next","total":"{count} rows","totalOne":"1 row","allItems":"All items","compareTo":"Compared with {value}","batchAt":"Waiting at {step}","empty":"Nothing to show yet.","group":"Group","value":"Value","compare":"Compared with","chartRetry":"Load chart again","chartSummary":"Chart with {buckets} periods and {series} series","editor":{"view":"View","title":"Edit view","newTitle":"New {kind}","name":"Name","slot":"Placement","slotHint":"Process home is below the board; the item side panel is on each item page.","invalid":"This view is not complete","apply":"Apply","cancel":"Cancel","filters":"Filters","filterField":"Filter field","filterOp":"Condition","filterValue":"Value","filterListPlaceholder":"a, b, c","removeFilter":"Remove filter","addFilter":"Add filter","op":{"eq":"equals","neq":"is not","in":"is one of","lt":"less than","lte":"at most","gt":"greater than","gte":"at least","is_null":"is empty","is_not_null":"is not empty","contains":"contains (JSON)"},"aggregate":"Measure","count":"Count items","sum":"Sum a field","sumField":"Field to sum","groupBy":"Group by","noGrouping":"No grouping","compareTo":"Compare with","compareToHint":"For example a credit limit; groups above it are highlighted.","noCompare":"No comparison","steps":"Only items at these steps","stepsHint":"Leave empty for all items.","columns":"Columns","columnsHint":"The first column links to the item.","sortField":"Sort by","noSort":"No sorting","sortDirection":"Direction","ascending":"Ascending","descending":"Descending","display":"Show as","displayKind":{"number":"Numbers","bar":"Bars","table":"Table"},"timeField":"Time field","timeFieldHint":"A date field; periods are counted in UTC.","interval":"Period","intervalKind":{"day":"Day","week":"Week","month":"Month","quarter":"Quarter"},"batchStep":"Step","batchStepHint":"Shows the items waiting at this step and why."}},"search":{"label":"Search cases","placeholder":"Search number, supplier, amount …","none":"No matching cases","countOne":"1 matching case","count":"{count} matching cases","truncated":"searched the first {limit} cases"},"myTasks":{"title":"My tasks","asManager":"as process manager","scope":{"label":"Show tasks","all":"All","group":"My teams","manager":"Managed"},"loadFailed":"Your tasks could not be loaded.","retry":"Try again","truncated":"Not every process could be searched; open a process to see the rest of its tasks.","toProcesses":"Go to processes"},"needsYou":{"focus":{"open":"Full screen","openAll":"Work through in full screen","list":"Open tasks","previous":"Previous","next":"Next","close":"Close full screen","position":"{index} of {total}","done":"All done","doneHint":"No open tasks are left."},"taskHistoryTitle":"My tasks","taskHistoryHint":"Current and completed cases for your teams, with the details shared for each task.","noTaskHistory":"No task history is available.","attentionDetails":"Attention details","payload":"Event data","back":"Board","title":"Needs you · {name}","subtitle":"What you can act on in this process.","loadFailed":"Needs you could not be loaded.","retry":"Try again","notPublished":"Publish the process to work on its items.","truncated":"Some lists hit their limit. Resolve items to see the rest.","empty":"Nothing needs you right now.","interactionsTitle":"Waiting for your answer ({count})","eventInteractionsTitle":"Received events waiting for your answer ({count})","eventInteractionHint":"A step workflow handling a received event is waiting for a decision. Answer while the event is still pending.","failedRunsTitle":"Stopped or failed step workflows ({count})","attentionTitle":"Needs attention ({count})","eventsTitle":"Pending events ({count})","item":"Item {id}","eventRun":"Received event","openRun":"Open run","retryRun":"Retry","resolve":"Resolve","actionFailed":"The action could not be completed.","sourceApi":"API event “{type}”","sourceConnector":"Connector event “{trigger}”","noStep":"No listening step","assign":"Assign","assigning":"Assigning…","dismiss":"Dismiss","cancel":"Cancel","dismissTitle":"Dismiss this event?","dismissDescription":"The event stays recorded with your reason and no longer waits for an item.","assignTitle":"Assign event to an item","assignDescription":"Completes the step for the chosen item with this event.","assignStep":"Step","chooseStep":"Choose a step","assignItem":"Item","chooseItem":"Choose an item","noWaitingItems":"No items wait at this step","assignItemsCapped":"Showing the first 100 waiting items.","assignBranch":"Branch","chooseBranch":"Choose a branch","mainPath":"Main path"},"test":{"title":"Test","description":"Replay the saved draft over a past period. Nothing real changes: write actions are replaced by stubs and items exist only in the result.","managersOnly":"Only workspace owners and admins can run replays.","formTitle":"Replay settings","from":"From","to":"To","includeStored":"Include events this process received in the period","humanSteps":"Steps that wait for a person","humanStepsHint":"Stop leaves the item waiting; approve answers approvals and picks the first option.","humanStop":"Stop and count","humanApprove":"Approve","events":"Additional events (JSON)","eventsHint":"An array of { kind: \"event\", stepId or type, occurredAt, payload } or { kind: \"start_item\", occurredAt, fields }.","eventsPlaceholder":"[]","eventsInvalidJson":"Additional events must be valid JSON.","expectations":"Expected view values","expectationsHint":"Compare a view's value (optionally one group) with what you expect.","expectationView":"View","expectationGroup":"Group (optional)","expectationValue":"Expected","removeExpectation":"Remove expectation","addExpectation":"Add expectation","run":"Run replay","running":"Replaying…","requestFailed":"The replay could not be started.","resultTitle":"Result","status":{"queued":"Queued","running":"Running","succeeded":"Finished","failed":"Failed"},"pollFailed":"The replay status could not be loaded.","failed":"The replay failed.","waiting":"The replay is running. This page updates when it finishes.","truncated":"The replay stopped early ({reason}) at {at}. The result covers the period up to then.","truncatedReason":{"time_budget":"time limit","hook_run_limit":"step workflow limit","entity_limit":"item limit"},"itemsCreated":"Items created","eventsReplayed":"Events replayed","eventsUnmatched":"Unmatched events","deadlinesFired":"Deadlines fired","overdueItems":"Overdue items","hookRuns":"Step workflow runs","hookRunsFailed":"Failed runs","stubbedActions":"Stubbed actions","diffsTitle":"Expected values","diffView":"View","diffGroup":"Group","diffExpected":"Expected","diffActual":"Actual","diffDelta":"Difference","diffMissing":"Missing","stepsTitle":"Steps","step":"Step","entered":"Entered","completed":"Completed","waitingCount":"Waiting","none":"None.","itemsTitle":"Items ({count})","itemKey":"Item","itemStatus":"Status","itemSteps":"Steps","itemCreated":"Created","overdue":"Overdue","waitingTitle":"Waiting for people","waitingKind":{"user_input":"Input","approval":"Approval"},"itemRef":"item {id}","unmatchedTitle":"Unmatched events","eventSource":{"request":"Supplied event","pending_event":"Stored event","connector_event":"Connector event"},"noStep":"no listening step","unmatchedReason":{"no_listening_step":"no step listens to it","not_linked":"no item took it"},"attentionTitle":"Attention","attentionKind":{"field_clash":"Field clash","element_without_key":"Element without key","replay_fanout_truncated":"Too many elements to replay","simulated_value":"Simulated values left empty"},"errorsTitle":"Step workflow errors","viewsTitle":"Views"},"publishTab":{"firstPublishTitle":"Publish the first version?","title":"Publish","description":"Check the saved draft, decide what happens to open items, and publish a new version.","unsaved":"Save your changes first. Publishing uses the saved draft.","readinessTitle":"Readiness","runCheck":"Check draft","readinessHint":"Check the draft to see compile problems and step workflows that are not ready.","failed":"The process could not be published.","compileFailed":"The draft has problems.","hooksNotReady":"Some step workflows are not ready.","unmappedFailed":"Open items are on steps without a target. Map them or pin open items.","branchInvalid":"These branches of open items no longer fit the new version:","error":{"PROCESS_MIGRATION_TOO_LARGE":"Too many open items to move at once (at most 5,000). Pin open items instead.","PROCESS_MIGRATION_DATASET_CHANGED":"Open items can't move to a version with a different item dataset.","PROCESS_MIGRATION_TARGET_UNKNOWN":"A mapping target is no step or split of the draft.","PROCESS_DATASET_NOT_EMPTY":"The item dataset already has rows. The first publish needs an empty dataset.","PROCESS_DATASET_CLAIM_CONFLICT":"The item dataset already belongs to another process."},"changesTitle":"Version changes","changesTitleFirst":"First version","changesTitleVersion":"v{current} → v{next}","element":"Element","currentVersion":"Current version","draft":"Draft","count":{"steps":"Steps","splits":"Splits","merges":"Merges","views":"Custom views","hooks":"Step workflows"},"addedSteps":"Added steps:","removedSteps":"Removed steps:","migrationTitle":"Open items","summaryFailed":"Open items could not be loaded.","noOpenItems":"No open items. Publishing affects new items only.","openItems":"{count} open items on {versions}.","openItemsOne":"1 open item on {versions}.","modePin":"Keep on their version","modeMap":"Move to the new version","modePinHint":"Open items finish on the version they started on. New items start on the new version.","modeMapHint":"Open items move to the new version. Map every step and split they are on to one in the draft.","oldNode":"Where items are","versions":"Versions","openCount":"Open","newNode":"Move to","newNodeFor":"Target for {node}","chooseTarget":"Choose a target","kind":{"step":"Step","split":"Split"},"unmapped":"{count} places have no target yet.","unmappedOne":"1 place has no target yet.","unmappedBlock":"Map every place or keep open items on their version.","publish":"Publish version {version}","exportTitle":"Export","exportDescription":"Download the process as a package to import it in another workspace. Item data is not included.","exportSource":"Export source","exportCurrent":"Published version","exportDraft":"Saved draft","export":"Download package","exporting":"Preparing…","exportFailed":"The package could not be exported."},"import":{"title":"Import process","description":"Choose a process package. The import creates a new draft and an empty item dataset.","file":"Package file","fileHint":"Choose or drop a process package (.json) exported from a process.","oneFile":"Choose one package file.","invalidJson":"This file is not valid JSON.","invalidPackage":"This file is not a process package.","previewing":"Checking the package…","previewFailed":"The package could not be checked.","name":"Name","dataset":"Creates the item dataset “{name}” with {count} fields.","datasetOne":"Creates the item dataset “{name}” with 1 field.","groups":"Groups","groupFor":"Group for {name}","chooseGroup":"Choose a group","eventSources":"Event source connections","eventSourcesHint":"The connection reference each connector event source uses in this workspace.","connectionFor":"Connection for {step}","problems":"Resolve these before importing","ready":"Ready to import.","recheck":"Check again","import":"Import","importing":"Importing…","failed":"The process could not be imported."}},"commandPalette":{"placeholder":"Search or jump to..."}}