{ "profile": { "pageTitle": "Your Profile", "tabs": { "profile": "Profile", "security": "Security", "sso": "Single Sign-On", "apiKeys": "API Keys", "notifications": "Notifications", "calendar": "Calendar", "keyboardShortcuts": "Keyboard Shortcuts" }, "basicInfo": { "title": "Basic Information" }, "fields": { "firstName": { "label": "First Name *" }, "lastName": { "label": "Last Name *" }, "email": { "label": "Email *" }, "phoneNumber": { "label": "Phone Number" }, "timeZone": { "label": "Time Zone" } }, "actions": { "saveChanges": "Save Changes" }, "notifications": { "title": "Notification Preferences", "viewSwitcher": { "email": "Email", "internal": "Internal" } }, "loading": "Loading profile...", "messages": { "success": { "profileUpdated": "Profile updated successfully" }, "error": { "userNotFound": "User not found", "fillRequiredFields": "Please fill in all required fields", "loadFailed": "Failed to load profile", "saveFailed": "Failed to save profile", "errorPrefix": "Error: {{error}}" } }, "validation": { "firstNameRequired": "First name is required", "lastNameRequired": "Last name is required" }, "changePassword": { "title": "Change Password", "current": "Current Password", "new": "New Password", "confirm": "Confirm New Password", "validationFailed": "Password does not meet all requirements", "requirements": "Password must be at least 8 characters", "submit": "Change Password", "success": "Password changed successfully", "error": "Failed to change password", "passwordMismatch": "New passwords do not match", "unknownError": "An error occurred while changing password" }, "loadingStates": { "sso": { "title": "Single Sign-On", "description": "Loading SSO settings..." }, "calendar": { "title": "Calendar", "description": "Loading calendar settings..." } } }, "security": { "title": "Security Settings", "tabs": { "roles": "Roles", "sessions": "Sessions", "sso": "Single Sign-On", "permissions": "Permissions", "userRoles": "User Roles", "policies": "Policies", "apiKeys": "API Keys", "webhooks": "Webhooks" }, "loading": { "roles": "Loading role configuration...", "permissions": "Loading permissions configuration...", "userRoles": "Loading user role configuration...", "policies": "Loading policy configuration...", "apiKeys": "Loading API key configuration...", "webhooks": "Loading webhook configuration...", "sso": "Loading SSO management tools...", "sessions": "Loading active sessions..." }, "userRoles": { "title": "Assign Roles to Users", "description": { "msp": "Manage user role assignments for MSP users", "client": "Manage user role assignments for Client Portal users" }, "viewSwitcher": { "msp": "MSP", "clientPortal": "Client Portal" }, "showInactive": "Show Inactive Users", "fields": { "selectUser": "Select User", "selectRole": "Select Role" }, "actions": { "assignRole": "Assign Role" }, "table": { "user": "User", "email": "Email", "roles": "Roles", "actions": "Actions" }, "unnamedUser": "Unnamed User", "noRolesAssigned": "No roles assigned", "removeRole": "Remove {{role}}", "emptyState": { "noUsers": "No {{type}} users found", "inactiveHidden": "(inactive users hidden)" }, "inactiveTag": "(Inactive)", "messages": { "success": { "roleAssigned": "Função atribuída com sucesso", "roleRemoved": "Função removida com sucesso" }, "error": { "assignFailed": "Falha ao atribuir a função. Tente novamente.", "removeFailed": "Falha ao remover a função. Tente novamente.", "permissionDenied": "Você não tem permissão para alterar funções de usuário." } } }, "sessions": { "title": "All User Sessions", "filters": { "search": "Search", "searchPlaceholder": "Search by name, email, device, or IP...", "user": "User", "allUsers": "All Users", "loginMethod": "Login Method", "allMethods": "All Methods", "userType": "User Type", "allTypes": "All Types", "from": "From", "to": "To", "selectDate": "Select date", "reset": "Reset" }, "loginMethods": { "password": "Password", "google": "Google OAuth", "microsoft": "Microsoft OAuth", "keycloak": "Keycloak" }, "userTypes": { "internal": "Internal", "client": "Client" }, "session": { "yourSession": "Your Session", "unknownDevice": "Unknown Device", "lastActive": "Last active {{time}}", "logout": "Logout", "revoke": "Revoke", "revoking": "Revoking..." }, "oauthWarning": "Revoking this session will not revoke {{provider}} OAuth access. Revoke access from your {{provider}} account settings.", "confirmLogout": "Are you sure you want to logout from this device?", "messages": { "loadFailed": "Failed to load sessions", "loggingOut": "Logging out...", "revoked": "Session revoked successfully", "revokeFailed": "Failed to revoke session" }, "emptyState": { "loading": "Loading sessions...", "noMatch": "No sessions match your search", "noSessions": "No active sessions found" }, "subtitle_one": "{{sessionCount}} active session across {{userCount}} user", "subtitle_other": "{{sessionCount}} active sessions across {{userCount}} users" }, "webhooks": { "title": "Outbound Webhooks", "description": "Create signed ticket lifecycle subscriptions, filter them to specific ticket IDs, inspect delivery history, and rotate secrets without leaving settings.", "newWebhook": "New Webhook", "tabs": { "configuration": "Configuration", "deliveries": "Deliveries", "inbound": "Inbound", "outbound": "Outbound" }, "inbound": { "title": "Webhooks de entrada", "description": "Aceite solicitações autenticadas de sistemas externos e despache-as para ações diretas ou fluxos de trabalho.", "placeholder": "Configure endpoints de webhooks de entrada que verificam solicitações, deduplicam entregas e despacham para ações ou fluxos.", "newWebhook": "Novo webhook", "list": { "title": "Webhooks de entrada configurados", "loading": "Carregando…", "configuredCount": "{{count}} configurados", "empty": "Nenhum webhook de entrada configurado ainda.", "columns": { "name": "Nome", "handler": "Manipulador", "lastDelivery": "Última entrega", "active": "Ativo", "actions": "Ações" } }, "handlers": { "directAction": "Ação direta", "workflow": "Fluxo de trabalho" }, "status": { "active": "Ativo", "inactive": "Inativo" }, "messages": { "loadFailed": "Falha ao carregar os webhooks de entrada.", "nameRequired": "O nome é obrigatório.", "slugRequired": "O slug é obrigatório.", "actionRequired": "Selecione uma ação antes de salvar.", "workflowRequired": "Selecione um fluxo antes de salvar.", "missingRequiredFields": "Mapeie um valor para os campos obrigatórios: {{fields}}" }, "dialog": { "createTitle": "Criar webhook de entrada", "editTitle": "Editar webhook de entrada", "cancel": "Cancelar", "create": "Criar webhook", "save": "Salvar alterações", "saveUnavailable": "Continuar" }, "identity": { "title": "Identidade", "help": "Nomeie o webhook e escolha o slug seguro para URL usado em seu endpoint receptor.", "name": "Nome", "namePlaceholder": "Alertas críticos de RMM", "slug": "Slug", "slugPlaceholder": "alertas-criticos-rmm", "description": "Descrição", "descriptionPlaceholder": "Notas opcionais sobre o sistema de origem e o payload." }, "auth": { "title": "Autenticação", "help": "Escolha como as solicitações de entrada comprovam que estão autorizadas a usar este endpoint.", "method": "Método de autenticação", "types": { "hmacSha256": "HMAC-SHA256", "bearer": "Token Bearer", "ipAllowlist": "Lista de IPs permitidos", "pathToken": "Segredo compartilhado no caminho" }, "signatureHeader": "Cabeçalho de assinatura", "signatureHeaderPlaceholder": "X-Alga-Signature", "bearerToken": "Token Bearer", "bearerTokenPlaceholder": "Cole o token ou deixe em branco para gerar um", "secretUnchangedPlaceholder": "Deixe em branco para manter o segredo atual", "ipCidrs": "IPs / CIDRs permitidos", "ipCidrsPlaceholder": "203.0.113.10\n198.51.100.0/24", "queryParam": "Parâmetro de consulta", "queryParamPlaceholder": "token", "pathToken": "Token de caminho", "pathTokenPlaceholder": "Cole o token ou deixe em branco para gerar um" }, "secret": { "label": "Segredo do webhook", "warning": "Este valor é mostrado apenas agora. Salve-o no sistema de origem antes de fechar esta caixa de diálogo.", "copy": "Copiar", "download": "Baixar como .txt", "close": "Fechar" }, "idempotency": { "title": "Idempotência", "help": "Use uma chave estável para detectar entregas duplicadas dentro da janela configurada.", "source": "Origem da chave", "types": { "header": "Cabeçalho HTTP", "jsonata": "Expressão JSONata" }, "headerName": "Nome do cabeçalho", "headerNamePlaceholder": "X-Idempotency-Key", "jsonataExpression": "Expressão JSONata", "jsonataExpressionPlaceholder": "alert.id", "windowSeconds": "Janela de duplicatas (segundos)" }, "active": { "title": "Estado ativo", "help": "Pause o endpoint sem excluir sua URL, mapeamentos ou histórico de entregas.", "toggle": "Webhook está ativo", "autoDisabled": "Desativado automaticamente em {{date}} após falhas repetidas.", "updateFailed": "Falha ao atualizar o estado do webhook de entrada." }, "handler": { "title": "Manipulador", "help": "Escolha o que Alga deve fazer após a solicitação ser verificada e deduplicada.", "type": "Tipo de manipulador", "types": { "directAction": "Ação direta", "workflow": "Fluxo de trabalho" }, "directActionTitle": "Ação direta", "directActionHelp": "Selecione uma ação de entrada e mapeie os campos do payload para seus campos de destino.", "action": "Ação", "actionPlaceholder": "Selecione uma ação", "actionEmpty": "Nenhuma ação de entrada registrada. Certifique-se de que o servidor inicializou o registro de ações antes de salvar.", "targetFields": "Campos de destino", "required": "Obrigatório", "optional": "Opcional", "mappingPlaceholder": "Digite uma expressão JSONata, por ex. payload.field", "workflowTitle": "Fluxo de trabalho", "workflowHelp": "Selecione um fluxo para iniciar com o envelope normalizado do webhook.", "workflow": "Fluxo de trabalho", "workflowPlaceholder": "Selecione um fluxo", "workflowEmpty": "Nenhum fluxo visível neste inquilino. Publique ou exiba um fluxo para usar o manipulador de fluxo.", "envelopeTitle": "Envelope de entrada do fluxo", "fieldTypes": { "string": "string", "int": "inteiro", "number": "número", "boolean": "booleano", "enum": "enum", "json": "json", "ref": "referência" } }, "sample": { "title": "Payload de exemplo", "help": "Capture a próxima solicitação verificada para autocompletar de mapeamento.", "createFirst": "Salve o webhook antes de capturar uma solicitação de exemplo.", "captureButton": "Capturar solicitação de exemplo", "captureActive": "Janela de captura ativa até {{expiresAt}}.", "sampleAvailable": "Payload de exemplo capturado.", "noSample": "Nenhum exemplo capturado ainda.", "captureFailed": "Falha ao ativar a captura de exemplo." }, "sampleTree": { "title": "Caminhos de exemplo", "help": "Clique em um caminho para inseri-lo em {{field}}.", "focusHelp": "Foque em um campo de mapeamento, depois clique em um caminho para inseri-lo.", "empty": "Capture um payload de exemplo para explorar campos." }, "mapping": { "modeStatic": "Valor estático", "modeExpression": "Mapear do payload", "unknownReference": "referência desconhecida", "loading": "Carregando…", "errors": { "INVALID_INT": "O valor \"{{value}}\" deve ser um inteiro.", "INVALID_NUMBER": "O valor \"{{value}}\" deve ser um número.", "INVALID_BOOLEAN": "O valor deve ser \"true\" ou \"false\".", "INVALID_JSON": "O valor deve ser JSON válido." } }, "deliveryLog": { "title": "Registro de entregas", "help": "Entregas verificadas recentes para este webhook de entrada.", "empty": "Nenhuma entrega registrada ainda.", "loadFailed": "Falha ao carregar entregas.", "pageSummary": "Página {{page}} de {{total}}", "durationMs": "{{duration}} ms", "allStatuses": "Todos os status", "columns": { "received": "Recebido", "status": "Status", "response": "Resposta", "duration": "Duração", "actions": "Ações" }, "view": "Ver", "status": { "pending": "pendente", "dispatched": "entregue", "duplicate": "duplicado", "failed": "falhou" } }, "deliveryDetail": { "title": "Detalhe da entrega", "close": "Fechar", "replay": "Repetir", "replayConfirm": "Reenviar esta entrega através da configuração atual do webhook? Quaisquer efeitos colaterais (criação de tickets, mudanças de status, etc.) serão executados novamente.", "replayFailed": "Falha ao repetir a entrega.", "received": "Recebido", "status": "Status", "responseStatus": "Status da resposta", "duration": "Duração", "sections": { "headers": "Cabeçalhos da solicitação", "requestBody": "Corpo da solicitação", "responseBody": "Corpo da resposta", "handlerOutcome": "Resultado do manipulador" } }, "test": { "openButton": "Enviar teste", "title": "Enviar solicitação de teste", "body": "Corpo JSON da solicitação", "headers": "Cabeçalhos", "cancel": "Cancelar", "send": "Enviar teste", "sendFailed": "Falha ao enviar a solicitação de teste do webhook." } }, "stats": { "total": "Total webhooks", "active": "Active", "autoDisabled": "Auto-disabled" }, "secret": { "label": "Signing secret", "warning": "This value is shown only now. Store it in the receiver before you navigate away.", "copy": "Copiar", "copied": "Segredo de assinatura copiado para a área de transferência", "copyFailed": "Falha ao copiar o segredo de assinatura para a área de transferência", "close": "Fechar", "download": "Baixar como .txt" }, "form": { "createTitle": "Create Webhook", "editTitle": "Edit Webhook", "helper": "Retry config is stored as JSON; delivery cadence still uses the platform's standard backoff schedule in v1.", "name": "Name", "namePlaceholder": "Ticket assignment feed", "url": "URL", "urlPlaceholder": "https://example.com/hooks/alga", "events": "Events", "customHeaders": "Custom Headers", "customHeadersPlaceholder": "Authorization: Bearer abc123\nX-Source: alga-psa", "ticketFilter": "Ticket Filter", "ticketFilterPlaceholder": "One ticket UUID per line. Leave blank to receive all matching ticket events.", "retryConfig": "Retry Config JSON", "verifySsl": "Verify SSL certificates", "webhookActive": "Webhook is active", "save": "Save Changes", "saving": "Saving…", "create": "Create Webhook", "clear": "Clear", "delete": "Delete", "payloadFields": "Campos entregues", "payloadFieldsHelp": "Todos os campos são enviados por padrão. Desmarque para excluir um campo da entrega. A chave de correlação da entidade (por exemplo, ticket_id) é sempre incluída.", "payloadFieldsSelectAll": "Selecionar tudo", "payloadFieldsClear": "Limpar" }, "list": { "title": "Configured Webhooks", "loading": "Loading…", "configuredCount": "{{count}} configured", "empty": "No webhooks configured yet.", "columns": { "name": "Name", "status": "Status", "lastDelivery": "Last Delivery", "success": "Success", "actions": "Actions" }, "actions": { "selected": "Selected", "manage": "Manage", "pause": "Pause", "resume": "Resume", "view": "View", "edit": "Edit" } }, "detail": { "summary": "{{total}} deliveries, {{successful}} successful, {{failed}} failed.", "sendTest": "Send Test", "sending": "Sending…", "rotateSecret": "Rotate Secret", "rotating": "Rotating…", "back": "Back to webhooks" }, "deliveries": { "title": "Delivery History", "page": "Page {{page}} of {{total}}", "empty": "No deliveries recorded yet.", "columns": { "event": "Event", "status": "Status", "attempted": "Attempted", "response": "Response", "action": "Action" }, "testBadge": "Test delivery", "attempt": "Attempt {{number}}", "noResponseCode": "n/a", "noResponseBody": "No response body captured.", "retry": "Retry", "previous": "Previous", "next": "Next" }, "messages": { "loadFailed": "Failed to load webhook settings.", "loadDeliveriesFailed": "Failed to load webhook deliveries.", "saveFailed": "Failed to save webhook.", "createSuccess": "Webhook created.", "updateSuccess": "Webhook updated.", "deleteConfirm": "Delete webhook \"{{name}}\"?", "deleteSuccess": "Webhook deleted.", "deleteFailed": "Failed to delete webhook.", "testSuccess": "Test sent successfully ({{statusCode}}).", "testFailed": "Test failed: {{message}}", "testRunFailed": "Failed to send webhook test.", "unknownError": "Unknown error", "secretRotated": "Signing secret rotated.", "rotateFailed": "Failed to rotate webhook secret.", "resumed": "Webhook resumed.", "paused": "Webhook paused.", "stateChangeFailed": "Failed to update webhook state.", "retryQueued": "Retry queued for event {{eventId}}.", "retryFailed": "Failed to retry delivery.", "invalidHeaderLine": "Invalid header line: \"{{line}}\"", "invalidRetryConfig": "Retry config must be a JSON object" }, "common": { "never": "Never" }, "health": { "healthy": "healthy", "failing": "failing", "disabled": "disabled" }, "deliveryStatus": { "delivered": "delivered", "retrying": "retrying", "abandoned": "abandoned", "pending": "pending" } }, "apiKeys": { "rateLimit": { "columnTitle": "Rate Limit", "loading": "Loading…", "summary": "{{maxTokens}} burst / {{refillPerMin}} per min", "source": "Source: {{label}}", "sourceLabels": { "key": "Override", "tenant": "Tenant default", "default": "System default" }, "remaining": " • Remaining: {{remaining}}/{{maxTokens}}", "remainingUnavailable": " • Remaining: unavailable", "actions": { "edit": "Edit", "override": "Override", "save": "Save", "cancel": "Cancel", "reset": "Reset" }, "errors": { "saveFailed": "Failed to save API rate limit override.", "clearFailed": "Failed to clear API rate limit override." } }, "generate": { "title": "Gerar chave de API", "description": "Descrição", "descriptionPlaceholder": "ex.: Chave de API de desenvolvimento", "expiration": "Data de expiração (opcional)", "submit": "Gerar nova chave de API" }, "list": { "title": "Suas chaves de API", "searchPlaceholder": "Pesquisar por descrição", "filters": { "allStatuses": "Todos os status", "active": "Ativa", "inactive": "Inativa", "lastUsedAfter": "Último uso após", "expiresBefore": "Expira antes de", "reset": "Redefinir" }, "columns": { "description": "Descrição", "created": "Criada", "lastUsed": "Último uso", "expires": "Expira", "status": "Status", "actions": "Ações" }, "never": "Nunca", "status": { "active": "Ativa", "inactive": "Inativa" }, "deactivate": "Desativar" }, "newKeyDialog": { "title": "Chave de API gerada", "warning": "Copie sua chave de API agora. Por motivos de segurança, ela não será exibida novamente.", "copy": "Copiar para a área de transferência", "download": "Baixar como .txt", "copySuccess": "Chave de API copiada para a área de transferência!", "copyFailed": "Falha ao copiar a chave de API para a área de transferência", "downloadFailed": "Falha ao baixar a chave de API" } } }, "platformUpdates": { "detail": { "back": "Back", "labels": { "info": "Info", "warning": "Warning", "destructive": "Critical", "success": "Success", "default": "Notice" } } }, "connectSso": { "verify": { "title": "Proteja a sua conta com SSO", "description": "Associe Azure AD ou Google Workspace para reutilizar políticas organizacionais e dispensar pedidos locais de autenticação de dois fatores.", "signedInAs": "Sessão iniciada como", "currentPassword": "Palavra-passe atual", "twoFactorCode": "Código de dois fatores", "twoFactorPlaceholder": "123456", "verifyCredentials": "Verificar Credenciais", "verifying": "A verificar...", "reset": "Repor", "linkedSuccess": "Fornecedor associado com sucesso.", "credentialsVerified": "Credenciais verificadas. Escolha um fornecedor abaixo para concluir a associação da sua conta.", "verifyFailed": "Não foi possível verificar as credenciais.", "verifyBeforeProvider": "Verifique a sua palavra-passe (e código de dois fatores, se necessário) antes de associar um fornecedor." }, "providers": { "title": "Associar um fornecedor", "description": "Escolha um fornecedor para concluir a associação SSO. Será redirecionado através do fluxo de autenticação do fornecedor.", "noneConfigured": "Não existem fornecedores SSO configurados para este ambiente. Peça ao seu administrador para configurar credenciais Google ou Microsoft.", "notConfigured": "Não configurado", "branding": { "google": "Continuar com Google", "microsoft": "Continuar com Microsoft", "default": "Continuar" } }, "linked": { "title": "Contas associadas", "description": "Atualizaremos a associação na próxima vez que iniciar sessão através de um fornecedor conectado.", "empty": "Ainda não há fornecedores SSO associados. Conclua os passos acima para associar um.", "linkedAt": "Associado em {{date}}", "lastUsed": "Última utilização em {{date}}", "notUsedYet": "Ainda não utilizado" } } }