{t("Manage organization defaults, integrations, and configuration")}
{t("Update the name of your organization.")}
{t( "Set this organization as your default. When you log in, you'll be directed to your default organization." )}
{t("This is your default organization")}
{t("Click to make this your default organization")}
<% end %>{t( "Enable site organization to group devices into physical locations (offices, datacenters, etc.)." )}
{t( "When enabled, you can organize devices into sites. When disabled, all devices belong directly to the organization." )}
<%= if @organization.use_sites && @form[:use_sites].value == false do %>{t( "All devices will be removed from their current sites and assigned directly to the organization." )} {t( "Site assignments will be lost, but devices will remain in the organization." )}
{t( "Set default SNMP settings for all devices in this organization. These can be overridden at the site or device level." )}
<.icon name="hero-information-circle" class="h-4 w-4 inline" /> Hierarchy: Device > Site > Organization
{t( "This will override SNMP settings for ALL devices across all sites in this organization." )}
{t( "Set default MikroTik RouterOS API credentials for all devices in this organization. Only applies to devices detected as MikroTik." )}
<.icon name="hero-beaker" class="h-4 w-4 inline" /> {t("Experimental Feature:")} {t("MikroTik API integration is under active development.")}
<.icon name="hero-information-circle" class="h-4 w-4 inline" /> Hierarchy: Device > Site > Organization
{t("Critical Security Warning:")} {t( "Plain API (port 8728) sends credentials unencrypted over the network. This setting is" )} blocked for devices using cloud pollers and should only be used with local agents on trusted networks.
{t("Security Warning:")} {t( "Plain API (port 8728) sends credentials unencrypted. Use SSL (port 8729) whenever possible." )}
{t( "Select a default agent for SNMP polling. This will be used for all devices in this organization unless overridden at the site or device level." )}
<.icon name="hero-information-circle" class="h-4 w-4 inline" /> Hierarchy: Device > Site > Organization
{t("Current Device Assignment:")}
{t( "This will assign the default agent to ALL devices across all sites in this organization." )}
{t("No agents configured yet.")} <.link navigate={~p"/agents"} class="text-indigo-600 hover:text-indigo-700 dark:text-indigo-400 dark:hover:text-indigo-300" > {t("Create an agent")} to enable remote polling.
{t("Send an invitation email to add someone to this organization.")}
{t("Invitations that haven't been accepted yet.")}
| {t("Email")} | {t("Role")} | {t("Sent")} | {t("Expires")} | <%= if @membership.role in [:owner, :admin] do %>{t("Actions")} | <% end %>
|---|---|---|---|---|
| {invitation.email} | {invitation.role} | <.timestamp datetime={invitation.inserted_at} timezone={@timezone} format="absolute" /> | <.timestamp datetime={invitation.expires_at} timezone={@timezone} format="absolute" /> | <%= if @membership.role in [:owner, :admin] do %><% end %> |
{t("People who have access to this organization.")}
| {t("User")} | {t("Role")} | {t("Joined")} | <%= if @membership.role in [:owner, :admin] do %>{t("Actions")} | <% end %>
|---|---|---|---|
|
{member.user.email}
|
"bg-purple-100 text-purple-800 dark:bg-purple-900/30 dark:text-purple-400" :admin -> "bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400" :executive -> "bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400" role when role in [:technician, :member] -> "bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400" :viewer -> "bg-gray-100 text-gray-800 dark:bg-gray-800 dark:text-gray-400" end ]}> {member.role} | <.timestamp datetime={member.inserted_at} timezone={@timezone} format="absolute" /> | <%= if @membership.role in [:owner, :admin] do %>
<%= if member.role != :owner do %>
|
<% end %>
{provider.description}
{t("Last sync failed")}
<%= if integration.last_sync_message && integration.last_sync_message != "" do %>{integration.last_sync_message}
<% end %> <%= if integration.last_synced_at do %><.timestamp datetime={integration.last_synced_at} timezone={@timezone} format="absolute" />
<% end %>{t( "Your NetBox instance URL and API token. The token needs read permission at minimum." )} {t("Write permission is required if you want to push data to NetBox.")}
{t( "Choose how data flows between TowerOps and NetBox. You can change this later." )}
{t( "Choose which NetBox objects participate in sync. Devices and sites are recommended at minimum." )}
{t( "Narrow the sync scope. Leave blank to sync everything. Comma-separated for multiple values." )}
{t( "How often TowerOps checks NetBox for changes. 30 minutes is recommended for most setups." )}
{msg}
<% {:error, msg} -> %> <.icon name="hero-x-circle" class="h-5 w-5 shrink-0 text-red-500 dark:text-red-400" />{msg}
<% end %>{t("Your Sonar instance URL and API token from the Sonar admin panel.")}
"text-green-800 dark:text-green-300" {:error, _} -> "text-red-800 dark:text-red-300" end ]}> {elem(@test_result, 1)}
{t( "Your Splynx instance URL, API key, and API secret. Find these in Splynx under Administration → API Keys." )}
"text-green-800 dark:text-green-300" {:error, _} -> "text-red-800 dark:text-red-300" end ]}> {elem(@test_result, 1)}
{t( "When connected, TowerOps will automatically trigger, acknowledge, and resolve PagerDuty incidents in sync with your alerts." )}
{t( "When someone resolves or acknowledges an incident directly in PagerDuty," )} {t("TowerOps will automatically update the corresponding alert.")}
{ToweropsWeb.Endpoint.url()}/api/v1/webhooks/pagerduty/{@current_scope.organization.id}
"text-green-800 dark:text-green-300" {:error, _} -> "text-red-800 dark:text-red-300" end ]}> {elem(@test_result, 1)}
{t( "Receive real-time updates from Gaiia when accounts, subscriptions, or inventory items change." )}
{t("Paste the secret key generated by Gaiia when you create the webhook.")}
{t( "Once configured, Towerops will receive real-time updates when accounts, subscriptions, or inventory items change in Gaiia." )}