{ "common": { "add_topic_description": "Set up a topic for notifications.", "sequence_id": "Sequence ID", "topic": "Topic" }, "config": { "abort": { "account_mismatch": "The provided access token corresponds to the account {wrong_username}. Please re-authenticate with the account **{username}**", "already_configured": "[%key:common::config_flow::abort::already_configured_service%]", "reauth_successful": "[%key:common::config_flow::abort::reauth_successful%]", "reconfigure_successful": "[%key:common::config_flow::abort::reconfigure_successful%]" }, "error": { "cannot_connect": "[%key:common::config_flow::error::cannot_connect%]", "invalid_auth": "[%key:common::config_flow::error::invalid_auth%]", "unknown": "[%key:common::config_flow::error::unknown%]" }, "step": { "reauth_confirm": { "data": { "password": "[%key:common::config_flow::data::password%]", "token": "[%key:common::config_flow::data::access_token%]" }, "data_description": { "password": "Enter the password corresponding to the aforementioned username to automatically create an access token", "token": "Enter a new access token. To create a new access token navigate to Account → Access tokens and select 'Create access token'" }, "description": "The access token for **{username}** is invalid. To re-authenticate with the ntfy service, you can either log in with your password (a new access token will be created automatically) or you can directly provide a valid access token", "title": "Re-authenticate with ntfy ({name})" }, "reconfigure": { "data": { "password": "[%key:common::config_flow::data::password%]", "token": "[%key:common::config_flow::data::access_token%]", "username": "[%key:common::config_flow::data::username%]" }, "data_description": { "password": "[%key:component::ntfy::config::step::user::sections::auth::data_description::password%]", "token": "Enter a new or existing access token. To create a new access token navigate to Account → Access tokens and select 'Create access token'", "username": "[%key:component::ntfy::config::step::user::sections::auth::data_description::username%]" }, "description": "You can either log in with your **ntfy** username and password, and Home Assistant will automatically create an access token to authenticate with **ntfy**, or you can provide an access token directly", "title": "Configuration for {name}" }, "reconfigure_user": { "data": { "password": "[%key:common::config_flow::data::password%]", "token": "[%key:common::config_flow::data::access_token%]" }, "data_description": { "password": "[%key:component::ntfy::config::step::reauth_confirm::data_description::password%]", "token": "[%key:component::ntfy::config::step::reconfigure::data_description::token%]" }, "description": "Enter the password for **{username}** below. Home Assistant will automatically create a new access token to authenticate with **ntfy**. You can also directly provide a valid access token", "title": "[%key:component::ntfy::config::step::reconfigure::title%]" }, "user": { "data": { "url": "Service URL", "verify_ssl": "[%key:common::config_flow::data::verify_ssl%]" }, "data_description": { "url": "Address of the ntfy service. Modify this if you want to use a different server", "verify_ssl": "Enable SSL certificate verification for secure connections. Disable only if connecting to a ntfy instance using a self-signed certificate" }, "description": "Set up **ntfy** push notification service", "sections": { "auth": { "data": { "password": "[%key:common::config_flow::data::password%]", "username": "[%key:common::config_flow::data::username%]" }, "data_description": { "password": "Enter the password corresponding to the provided username for authentication", "username": "Enter the username required to authenticate with protected ntfy topics" }, "description": "Depending on whether the server is configured to support access control, some topics may be read/write protected so that only users with the correct credentials can subscribe or publish to them. To publish/subscribe to protected topics, you can provide a username and password. Home Assistant will automatically generate an access token to authenticate with ntfy.", "name": "Authentication" } } } } }, "config_subentries": { "topic": { "abort": { "already_configured": "Topic is already configured", "reconfigure_successful": "[%key:common::config_flow::abort::reconfigure_successful%]" }, "entry_type": "[%key:component::ntfy::common::topic%]", "error": { "cannot_connect": "[%key:common::config_flow::error::cannot_connect%]", "invalid_topic": "Invalid topic. Only letters, numbers, underscores, or dashes allowed.", "publish_forbidden": "Publishing to this topic is forbidden", "unknown": "[%key:common::config_flow::error::unknown%]" }, "initiate_flow": { "user": "Add topic" }, "step": { "add_topic": { "data": { "name": "Display name", "topic": "[%key:component::ntfy::common::topic%]" }, "data_description": { "name": "Set an alternative name to display instead of the topic name. This helps identify topics with complex or hard-to-read names more easily.", "topic": "Enter the name of the topic you want to use for notifications. Topics may not be password-protected, so choose a name that's not easy to guess." }, "description": "[%key:component::ntfy::common::add_topic_description%]", "sections": { "filter": { "data": { "filter_message": "Filter by message content", "filter_priority": "Filter by priority", "filter_tags": "Filter by tags", "filter_title": "Filter by title" }, "data_description": { "filter_message": "Include messages with content that exactly matches the specified text", "filter_priority": "Include messages that match any of the selected priority levels. If no priority is selected, all messages are included by default", "filter_tags": "Only include messages that have all selected tags", "filter_title": "Include messages with a title that exactly matches the specified text" }, "description": "Apply filters to narrow down the messages received when Home Assistant subscribes to the topic. Filters apply only to the event entity.", "name": "Message filters (optional)" } }, "title": "[%key:component::ntfy::common::topic%]" }, "reconfigure": { "data": { "filter_message": "[%key:component::ntfy::config_subentries::topic::step::add_topic::sections::filter::data::filter_message%]", "filter_priority": "[%key:component::ntfy::config_subentries::topic::step::add_topic::sections::filter::data::filter_priority%]", "filter_tags": "[%key:component::ntfy::config_subentries::topic::step::add_topic::sections::filter::data::filter_tags%]", "filter_title": "[%key:component::ntfy::config_subentries::topic::step::add_topic::sections::filter::data::filter_title%]" }, "data_description": { "filter_message": "[%key:component::ntfy::config_subentries::topic::step::add_topic::sections::filter::data_description::filter_message%]", "filter_priority": "[%key:component::ntfy::config_subentries::topic::step::add_topic::sections::filter::data_description::filter_priority%]", "filter_tags": "[%key:component::ntfy::config_subentries::topic::step::add_topic::sections::filter::data_description::filter_tags%]", "filter_title": "[%key:component::ntfy::config_subentries::topic::step::add_topic::sections::filter::data_description::filter_title%]" }, "description": "[%key:component::ntfy::config_subentries::topic::step::add_topic::sections::filter::description%]", "title": "Message filters for {topic}" }, "user": { "description": "[%key:component::ntfy::common::add_topic_description%]", "menu_options": { "add_topic": "Enter topic", "generate_topic": "Generate topic name" }, "title": "[%key:component::ntfy::common::topic%]" } } } }, "entity": { "event": { "subscribe": { "state_attributes": { "actions": { "name": "Actions" }, "attachment": { "name": "Attachment" }, "click": { "name": "Click" }, "event_type": { "state": { "triggered": "Triggered" } }, "expires": { "name": "Expires" }, "icon": { "name": "Icon" }, "message": { "name": "Message" }, "priority": { "name": "Priority" }, "sequence_id": { "name": "[%key:component::ntfy::common::sequence_id%]" }, "tags": { "name": "Tags" }, "time": { "name": "Time" }, "title": { "name": "Title" }, "topic": { "name": "[%key:component::ntfy::common::topic%]" } } } }, "sensor": { "attachment_bandwidth": { "name": "Attachment bandwidth limit" }, "attachment_expiry_duration": { "name": "Attachment expiry duration" }, "attachment_file_size": { "name": "Attachment file size limit" }, "attachment_total_size": { "name": "Attachment storage" }, "attachment_total_size_limit": { "name": "Attachment storage limit" }, "attachment_total_size_remaining": { "name": "Attachment storage remaining" }, "calls": { "name": "Phone calls made", "unit_of_measurement": "calls" }, "calls_limit": { "name": "Phone calls usage limit", "unit_of_measurement": "[%key:component::ntfy::entity::sensor::calls::unit_of_measurement%]" }, "calls_remaining": { "name": "Phone calls remaining", "unit_of_measurement": "[%key:component::ntfy::entity::sensor::calls::unit_of_measurement%]" }, "emails": { "name": "Emails sent", "unit_of_measurement": "emails" }, "emails_limit": { "name": "Email usage limit", "unit_of_measurement": "[%key:component::ntfy::entity::sensor::emails::unit_of_measurement%]" }, "emails_remaining": { "name": "Emails remaining", "unit_of_measurement": "[%key:component::ntfy::entity::sensor::emails::unit_of_measurement%]" }, "messages": { "name": "Messages published", "unit_of_measurement": "messages" }, "messages_expiry_duration": { "name": "Messages expiry duration" }, "messages_limit": { "name": "Messages usage limit", "unit_of_measurement": "[%key:component::ntfy::entity::sensor::messages::unit_of_measurement%]" }, "messages_remaining": { "name": "Messages remaining", "unit_of_measurement": "[%key:component::ntfy::entity::sensor::messages::unit_of_measurement%]" }, "reservations": { "name": "Reserved topics", "unit_of_measurement": "topics" }, "reservations_limit": { "name": "Reserved topics limit", "unit_of_measurement": "[%key:component::ntfy::entity::sensor::reservations::unit_of_measurement%]" }, "reservations_remaining": { "name": "Reserved topics remaining", "unit_of_measurement": "[%key:component::ntfy::entity::sensor::reservations::unit_of_measurement%]" }, "tier": { "name": "Subscription tier", "state": { "business": "Business", "free": "Free", "pro": "Pro", "supporter": "Supporter" } } } }, "exceptions": { "authentication_error": { "message": "Failed to authenticate with ntfy service. Please verify your credentials" }, "clear_failed": { "message": "Failed to dismiss notification" }, "connection_error": { "message": "Failed to connect to ntfy service due to a connection error" }, "delay_no_call": { "message": "Delayed call notifications are not supported" }, "delay_no_email": { "message": "Delayed email notifications are not supported" }, "delete_failed": { "message": "Failed to delete notification" }, "entity_not_found": { "message": "The selected ntfy entity could not be found." }, "entry_not_loaded": { "message": "The selected ntfy service is currently not loaded or disabled in Home Assistant." }, "publish_failed_exception": { "message": "Failed to publish notification due to a connection error" }, "publish_failed_request_error": { "message": "Failed to publish notification: {error_msg}" }, "server_error": { "message": "Failed to connect to ntfy service due to a server error: {error_msg}" }, "timeout_error": { "message": "Failed to connect to ntfy service due to a connection timeout" } }, "issues": { "topic_protected": { "fix_flow": { "step": { "confirm": { "description": "The topic **{topic}** is protected and requires authentication to subscribe.\n\nTo resolve this issue, you have two options:\n\n1. **Reconfigure the ntfy integration**\nAdd a username and password that has permission to access this topic.\n\n2. **Deactivate the event entity**\nThis will stop Home Assistant from subscribing to the topic.\nClick **Submit** to deactivate the entity.", "title": "Topic {topic} is protected" } } }, "title": "Subscription failed: Topic {topic} is protected" } }, "selector": { "priority": { "options": { "1": "Minimum", "2": "[%key:common::state::low%]", "3": "Default", "4": "[%key:common::state::high%]", "5": "Maximum" } } }, "services": { "clear": { "description": "Dismisses a previously sent message from a ntfy topic by marking it as read.", "fields": { "sequence_id": { "description": "The message ID or sequence ID of the notification to dismiss.", "name": "[%key:component::ntfy::common::sequence_id%]" } }, "name": "Dismiss notification" }, "delete": { "description": "Deletes a message from a ntfy topic.", "fields": { "sequence_id": { "description": "The message ID or sequence ID of the notification to delete.", "name": "[%key:component::ntfy::common::sequence_id%]" } }, "name": "Delete notification" }, "publish": { "description": "Publishes a notification message to a ntfy topic", "fields": { "attach": { "description": "Attach images or other files by URL.", "name": "Attachment URL" }, "call": { "description": "Phone number to call and read the message out loud using text-to-speech. Requires ntfy Pro and prior phone number verification.", "name": "Phone call" }, "click": { "description": "URL that is opened when notification is clicked.", "name": "Click URL" }, "delay": { "description": "Set a delay for message delivery. Minimum delay is 10 seconds, maximum is 3 days.", "name": "Delay delivery" }, "email": { "description": "Specify the address to forward the notification to, for example mail@example.com", "name": "Forward to email" }, "icon": { "description": "Include an icon that will appear next to the text of the notification. Only JPEG and PNG images are supported.", "name": "Icon URL" }, "markdown": { "description": "Enable Markdown formatting for the message body. See the [Markdown guide]({markdown_guide_url}) for syntax details.", "name": "Format as Markdown" }, "message": { "description": "[%key:component::notify::services::send_message::fields::message::description%]", "name": "[%key:component::notify::services::send_message::fields::message::name%]" }, "priority": { "description": "All messages have a priority that defines how urgently your phone notifies you, depending on the configured vibration patterns, notification sounds, and visibility in the notification drawer or pop-over.", "name": "Message priority" }, "sequence_id": { "description": "Enter a message or sequence ID to update an existing notification, or specify a sequence ID to reference later when updating, clearing (mark as read and dismiss), or deleting a notification.", "name": "[%key:component::ntfy::common::sequence_id%]" }, "tags": { "description": "Add tags or emojis to the notification. Emojis (using shortcodes like `smile`) will appear in the notification title or message. Other tags will be displayed below the notification content. See the [emoji short code reference]({emoji_reference_url}) for a list of supported emojis.", "name": "Tags/Emojis" }, "title": { "description": "[%key:component::notify::services::send_message::fields::title::description%]", "name": "[%key:component::notify::services::send_message::fields::title::name%]" } }, "name": "Publish notification" } } }