Files
HomeAssistantVS/custom_components/taskmate/strings.json
T

1388 lines
44 KiB
JSON

{
"config": {
"step": {
"user": {
"title": "Welcome to TaskMate!",
"description": "Set up your family chore management system. You can customize the points currency that children will earn.",
"data": {
"points_name": "Points Currency Name (e.g., Stars, Coins, Bucks)",
"points_icon": "Points Icon"
}
}
},
"error": {
"name_required": "Name is required"
},
"abort": {
"already_configured": "TaskMate is already configured"
},
"create_entry": {
"default": "TaskMate is ready. [Open the TaskMate panel](/taskmate-admin) to add your children with the setup wizard, which suggests chores for their ages."
}
},
"selector": {
"chore_action": {
"options": {
"save": "Save Changes",
"re_enable": "Re-enable Chore",
"disable": "Disable Chore",
"delete": "Delete This Chore"
}
},
"reward_action": {
"options": {
"save": "Save Changes",
"delete": "Delete Reward"
}
},
"time_category": {
"options": {
"morning": "Morning",
"afternoon": "Afternoon",
"evening": "Evening",
"night": "Night",
"anytime": "Anytime"
}
},
"schedule_mode": {
"options": {
"specific_days": "Specific days of the week",
"recurring": "Recurring (every N days/weeks/months)",
"one_shot": "One-time task (single day)"
}
},
"due_days_option": {
"options": {
"monday": "Monday",
"tuesday": "Tuesday",
"wednesday": "Wednesday",
"thursday": "Thursday",
"friday": "Friday",
"saturday": "Saturday",
"sunday": "Sunday"
}
},
"recurrence": {
"options": {
"every_2_days": "Every 2 days",
"weekly": "Weekly",
"every_2_weeks": "Every 2 weeks",
"monthly": "Monthly",
"every_3_months": "Every 3 months",
"every_6_months": "Every 6 months"
}
},
"recurrence_day_option": {
"options": {
"monday": "Monday",
"tuesday": "Tuesday",
"wednesday": "Wednesday",
"thursday": "Thursday",
"friday": "Friday",
"saturday": "Saturday",
"sunday": "Sunday",
"any_day": "Any day"
}
},
"first_occurrence_mode": {
"options": {
"available_immediately": "Available immediately",
"wait_for_first_occurrence": "Wait for first scheduled occurrence"
}
},
"streak_reset_mode": {
"options": {
"reset": "Reset — streak goes to 0 on missed day",
"pause": "Pause — streak preserved until next completion"
}
},
"visibility_operator": {
"options": {
"none": "No filter — Always show chore",
"equals": "Equals — Show when entity state matches exactly",
"not_equals": "Not Equal — Show when entity state does not match",
"gte": "Greater than or equal (≥) — Show when numeric value is ≥ target",
"lte": "Less than or equal (≤) — Show when numeric value is ≤ target",
"gt": "Greater than (>) — Show when numeric value is > target",
"lt": "Less than (<) — Show when numeric value is < target"
}
},
"assignment_mode": {
"options": {
"everyone": "Everyone — every assigned child sees the chore",
"alternating": "Alternating — rotate through the assigned children, one per day",
"random": "Random — pick one assigned child at random each day",
"balanced": "Balanced — split today's balanced chores evenly across the assigned children",
"first_come": "First come, first served — first child to complete it wins; it hides for the rest",
"unassigned": "Unassigned — no child sees this chore"
}
},
"task_group_policy": {
"options": {
"sticky": "Sticky — same child for all chores in the group",
"spread": "Spread — different children across the group today"
}
},
"task_group_action": {
"options": {
"save": "Save Changes",
"delete": "Delete Group"
}
}
},
"services": {
"complete_chore": {
"name": "Complete Chore",
"description": "Mark a chore as completed by a child",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to complete"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child completing the chore"
},
"note": {
"name": "Note",
"description": "What the child did, in their own words. Required when the chore is open-ended, and shown to the parent during approval."
},
"suggested_points": {
"name": "Suggested points",
"description": "What the child reckons the work was worth. A hint for the approving parent — it awards nothing on its own."
}
}
},
"complete_bonus_subtask": {
"name": "Complete Bonus Sub-task",
"description": "Complete a bonus sub-task after the parent chore is done",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the parent chore"
},
"bonus_subtask_id": {
"name": "Bonus Sub-task ID",
"description": "The ID of the bonus sub-task to complete"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child completing the bonus sub-task"
}
}
},
"approve_chore": {
"name": "Approve Chore",
"description": "Approve a completed chore and award points",
"fields": {
"completion_id": {
"name": "Completion ID",
"description": "The ID of the chore completion to approve"
},
"points": {
"name": "Points",
"description": "Award this many points instead of the chore's own value. Leave empty to use the chore's points."
},
"rating": {
"name": "Quality rating",
"description": "Optional 1-3 star rating of how well the chore was done. When quality ratings are enabled it scales the points by that star's multiplier; leave empty to pay 100%."
}
}
},
"approve_all_chores": {
"name": "Approve All Chores",
"description": "Approve all pending chore completions (or a specific set) and award points",
"fields": {
"completion_ids": {
"name": "Completion IDs",
"description": "Specific completion IDs to approve; omit to approve all pending"
},
"rating": {
"name": "Quality rating",
"description": "Optional 1-3 star rating applied to every chore approved by this call (quality ratings must be enabled)."
}
}
},
"reject_chore": {
"name": "Reject Chore",
"description": "Reject a completed chore",
"fields": {
"completion_id": {
"name": "Completion ID",
"description": "The ID of the chore completion to reject"
},
"reason": {
"name": "Reason",
"description": "Optional reason shown to the child"
}
}
},
"undo_chore": {
"name": "Undo Chore",
"description": "Let a child take back their own chore — a pending submission until a parent reviews it, or an automatically approved one within the chore undo window. Off unless the window is set above 0 in TaskMate settings; anything a parent has reviewed needs a parent to undo it.",
"fields": {
"completion_id": {
"name": "Completion ID",
"description": "The ID of the child's chore completion to take back"
}
}
},
"undo_chore_approval": {
"name": "Undo Chore Approval",
"description": "Reverse an accidental chore approval — removes the awarded points and returns the completion to pending so it can be approved again.",
"fields": {
"completion_id": {
"name": "Completion ID",
"description": "The ID of the approved chore completion to revert to pending"
}
}
},
"undo_transaction": {
"name": "Undo Transaction",
"description": "Reverse a points transaction by its ID — penalties, bonuses, manual add/remove adjustments and gifts (both legs). Automatic transactions (weekend/streak/perfect-week bonuses, pool moves, decay, interest) can't be undone.",
"fields": {
"transaction_id": {
"name": "Transaction ID",
"description": "The ID of the points transaction to reverse"
}
}
},
"claim_reward": {
"name": "Claim Reward",
"description": "Child claims a reward using their points",
"fields": {
"reward_id": {
"name": "Reward ID",
"description": "The ID of the reward to claim"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child claiming the reward"
}
}
},
"approve_reward": {
"name": "Approve Reward",
"description": "Approve a reward claim",
"fields": {
"claim_id": {
"name": "Claim ID",
"description": "The ID of the reward claim to approve"
}
}
},
"allocate_points_to_pool": {
"name": "Allocate Points to Pool",
"description": "Move points from a child's spendable balance into a reward's savings pool (locked).",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child making the allocation"
},
"reward_id": {
"name": "Reward ID",
"description": "The ID of the reward pool to deposit into"
},
"points": {
"name": "Points",
"description": "Number of points to allocate (capped at pool capacity and spendable balance)"
}
}
},
"add_points": {
"name": "Add Points",
"description": "Add bonus points to a child",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child to add points to"
},
"points": {
"name": "Points",
"description": "The number of points to add"
},
"reason": {
"name": "Reason",
"description": "Optional reason for the bonus"
}
}
},
"remove_points": {
"name": "Remove Points",
"description": "Remove points from a child (penalty)",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child to remove points from"
},
"points": {
"name": "Points",
"description": "The number of points to remove"
},
"reason": {
"name": "Reason",
"description": "Optional reason for the penalty"
}
}
},
"reject_reward": {
"name": "Reject Reward",
"description": "Reject a reward claim",
"fields": {
"claim_id": {
"name": "Claim ID",
"description": "The ID of the reward claim to reject"
},
"reason": {
"name": "Reason",
"description": "Optional reason shown to the child"
}
}
},
"preview_sound": {
"name": "Preview Sound",
"description": "Preview a completion sound effect in the browser",
"fields": {
"sound": {
"name": "Sound",
"description": "The sound to preview"
}
}
},
"set_chore_order": {
"name": "Set Chore Order",
"description": "Set the display order of chores for a child",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child to set chore order for"
},
"chore_order": {
"name": "Chore Order",
"description": "Ordered list of chore IDs"
}
}
},
"add_penalty": {
"name": "Add Penalty",
"description": "Create a new penalty definition",
"fields": {
"name": {
"name": "Name",
"description": "The name of the penalty"
},
"points": {
"name": "Points",
"description": "The number of points to deduct when applied"
},
"description": {
"name": "Description",
"description": "Optional description of the penalty"
},
"icon": {
"name": "Icon",
"description": "MDI icon for the penalty"
},
"assigned_to": {
"name": "Assigned To",
"description": "List of child IDs this penalty applies to"
}
}
},
"update_penalty": {
"name": "Update Penalty",
"description": "Update an existing penalty definition",
"fields": {
"penalty_id": {
"name": "Penalty ID",
"description": "The ID of the penalty to update"
},
"name": {
"name": "Name",
"description": "New name for the penalty"
},
"points": {
"name": "Points",
"description": "New points value"
},
"description": {
"name": "Description",
"description": "New description"
},
"icon": {
"name": "Icon",
"description": "New icon"
},
"assigned_to": {
"name": "Assigned To",
"description": "New list of child IDs"
}
}
},
"remove_penalty": {
"name": "Remove Penalty",
"description": "Remove a penalty definition",
"fields": {
"penalty_id": {
"name": "Penalty ID",
"description": "The ID of the penalty to remove"
}
}
},
"apply_penalty": {
"name": "Apply Penalty",
"description": "Apply a penalty to a child, deducting points",
"fields": {
"penalty_id": {
"name": "Penalty ID",
"description": "The ID of the penalty to apply"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child to apply the penalty to"
}
}
},
"add_bonus": {
"name": "Add Bonus",
"description": "Create a new bonus definition",
"fields": {
"name": {
"name": "Name",
"description": "The name of the bonus"
},
"points": {
"name": "Points",
"description": "The number of points to award when applied"
},
"description": {
"name": "Description",
"description": "Optional description of the bonus"
},
"icon": {
"name": "Icon",
"description": "MDI icon for the bonus"
},
"assigned_to": {
"name": "Assigned To",
"description": "List of child IDs this bonus applies to"
}
}
},
"update_bonus": {
"name": "Update Bonus",
"description": "Update an existing bonus definition",
"fields": {
"bonus_id": {
"name": "Bonus ID",
"description": "The ID of the bonus to update"
},
"name": {
"name": "Name",
"description": "New name for the bonus"
},
"points": {
"name": "Points",
"description": "New points value"
},
"description": {
"name": "Description",
"description": "New description"
},
"icon": {
"name": "Icon",
"description": "New icon"
},
"assigned_to": {
"name": "Assigned To",
"description": "New list of child IDs"
}
}
},
"remove_bonus": {
"name": "Remove Bonus",
"description": "Remove a bonus definition",
"fields": {
"bonus_id": {
"name": "Bonus ID",
"description": "The ID of the bonus to remove"
}
}
},
"apply_bonus": {
"name": "Apply Bonus",
"description": "Apply a bonus to a child, awarding points",
"fields": {
"bonus_id": {
"name": "Bonus ID",
"description": "The ID of the bonus to apply"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child to apply the bonus to"
}
}
},
"add_chore": {
"name": "Add Chore",
"description": "Create a new chore dynamically, typically from an automation or script",
"fields": {
"name": {
"name": "Name",
"description": "The name of the chore"
},
"description": {
"name": "Description",
"description": "Optional description of the chore"
},
"points": {
"name": "Points",
"description": "Points awarded when this chore is completed"
},
"assigned_to": {
"name": "Assigned To",
"description": "List of child IDs to assign this chore to. Leave empty to assign to all children"
},
"time_category": {
"name": "Time Category",
"description": "When this chore should be completed: morning, afternoon, evening, night, or anytime"
},
"one_shot": {
"name": "One-Shot",
"description": "If true, this is a one-time chore that expires after being completed or at the end of the day"
},
"requires_approval": {
"name": "Requires Approval",
"description": "If true, a parent must approve the completion before points are awarded"
},
"team_size": {
"name": "Team size",
"description": "Make this a teamwork chore that only counts once this many different children have joined it. When the team is full it submits for all of them. 0 = a normal chore."
},
"team_points_mode": {
"name": "Team points",
"description": "How a teamwork chore pays out: \"each\" gives every participant the full points, \"split\" divides them evenly (rounded down)."
},
"team_bonus": {
"name": "Team bonus",
"description": "Extra points each participant earns when a teamwork chore is completed."
}
}
},
"skip_chore": {
"name": "Skip Chore",
"description": "Advance today's rotation past the current assignee. Ephemeral — tomorrow's rotation resumes as normal.",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to skip"
}
}
},
"set_chore_manual_start": {
"name": "Set Manual Start Child",
"description": "Set which child starts a rotating chore. For alternating mode this reorders the pool; for random/balanced it only overrides today's assignee.",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to update"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child who should start the rotation"
}
}
},
"add_task_group": {
"name": "Add Task Group",
"description": "Create a task group (sticky = same child, spread = different children).",
"fields": {
"name": {
"name": "Name",
"description": "Display name for the group"
},
"policy": {
"name": "Policy",
"description": "sticky (same child) or spread (different children)"
},
"chore_ids": {
"name": "Chore IDs",
"description": "List of chore IDs in the group. For sticky, the first chore is the leader."
}
}
},
"update_task_group": {
"name": "Update Task Group",
"description": "Update a task group's name, policy, or membership.",
"fields": {
"group_id": {
"name": "Group ID",
"description": "The ID of the group to update"
},
"name": {
"name": "Name",
"description": "New display name"
},
"policy": {
"name": "Policy",
"description": "New policy (sticky or spread)"
},
"chore_ids": {
"name": "Chore IDs",
"description": "Replacement chore ID list. For sticky, the first chore is the leader."
}
}
},
"remove_task_group": {
"name": "Remove Task Group",
"description": "Delete a task group. Member chores are not affected.",
"fields": {
"group_id": {
"name": "Group ID",
"description": "The ID of the group to delete"
}
}
},
"start_timed_task": {
"name": "Start Timed Task",
"description": "Start or resume the timer on a timed task",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the timed chore"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child starting the timer"
}
}
},
"leave_team_chore": {
"name": "Leave Teamwork Chore",
"description": "Take a child back out of a teamwork chore they joined today, before the team is complete",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the teamwork chore"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child leaving the team"
}
}
},
"complete_next_chore": {
"name": "Complete Next Chore",
"description": "Complete the child's next outstanding chore, in the order the child card shows them. Chores that need a photo, a note, a timer or a team are skipped. Made for watch buttons and shortcuts; normal approval rules apply.",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child whose next chore to complete"
}
}
},
"post_bounty": {
"name": "Post Bounty",
"description": "Post a one-off job to the bounty board for a fixed number of points. Any eligible child can claim it; finishing it goes through the normal approval queue.",
"fields": {
"title": {
"name": "Title",
"description": "What the job is, e.g. \"Wash the car\""
},
"points": {
"name": "Points",
"description": "Fixed points paid when a parent approves the finished job"
},
"description": {
"name": "Description",
"description": "Optional extra detail for the children"
},
"icon": {
"name": "Icon",
"description": "MDI icon shown on the board"
},
"expires_at": {
"name": "Expires at",
"description": "Optional date and time the bounty leaves the board if nobody has claimed it. Leave empty for no expiry."
},
"eligible_child_ids": {
"name": "Eligible children",
"description": "IDs of the children who may claim it. Empty = every child."
},
"claim_hours": {
"name": "Claim lock (hours)",
"description": "How long a claim lasts before the bounty goes back on the board"
},
"require_photo": {
"name": "Require photo",
"description": "The child must attach a photo when marking it done"
},
"notify_children": {
"name": "Notify children",
"description": "Send the \"New bounty\" notification to the eligible children"
}
}
},
"update_bounty": {
"name": "Update Bounty",
"description": "Edit a bounty. Once it has been claimed, only its points and expiry can change.",
"fields": {
"bounty_id": {
"name": "Bounty ID",
"description": "The ID of the bounty to edit"
},
"title": {
"name": "Title",
"description": "What the job is, e.g. \"Wash the car\""
},
"points": {
"name": "Points",
"description": "Fixed points paid when a parent approves the finished job"
},
"description": {
"name": "Description",
"description": "Optional extra detail for the children"
},
"icon": {
"name": "Icon",
"description": "MDI icon shown on the board"
},
"expires_at": {
"name": "Expires at",
"description": "Optional date and time the bounty leaves the board if nobody has claimed it. Leave empty for no expiry."
},
"eligible_child_ids": {
"name": "Eligible children",
"description": "IDs of the children who may claim it. Empty = every child."
},
"claim_hours": {
"name": "Claim lock (hours)",
"description": "How long a claim lasts before the bounty goes back on the board"
},
"require_photo": {
"name": "Require photo",
"description": "The child must attach a photo when marking it done"
},
"notify_children": {
"name": "Notify children",
"description": "Send the \"New bounty\" notification to the eligible children"
}
}
},
"remove_bounty": {
"name": "Remove Bounty",
"description": "Take a bounty off the board. Not allowed while a finished job waits for approval.",
"fields": {
"bounty_id": {
"name": "Bounty ID",
"description": "The ID of the bounty to remove"
}
}
},
"claim_bounty": {
"name": "Claim Bounty",
"description": "Claim a bounty for a child, locking it to them for its claim period. A child can hold one claim at a time.",
"fields": {
"bounty_id": {
"name": "Bounty ID",
"description": "The ID of the bounty to claim"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child claiming it"
}
}
},
"give_back_bounty": {
"name": "Give Back Bounty",
"description": "Hand a claimed bounty back to the board so another child can take it",
"fields": {
"bounty_id": {
"name": "Bounty ID",
"description": "The ID of the claimed bounty"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child who claimed it"
}
}
},
"complete_bounty": {
"name": "Complete Bounty",
"description": "Mark a claimed bounty as done. It goes to the approval queue like a chore.",
"fields": {
"bounty_id": {
"name": "Bounty ID",
"description": "The ID of the claimed bounty"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child who claimed it"
},
"photo_url": {
"name": "Photo URL",
"description": "Photo of the finished job (required when the bounty asks for one)"
}
}
},
"pause_timed_task": {
"name": "Pause Timed Task",
"description": "Pause a running timed task timer",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the timed chore"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child pausing the timer"
}
}
},
"stop_timed_task": {
"name": "Stop Timed Task",
"description": "Stop a timed task timer and submit for approval",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the timed chore"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child stopping the timer"
}
}
},
"add_badge": {
"name": "Add Badge",
"description": "Create a custom badge.",
"fields": {
"name": {
"name": "Name",
"description": "The display name of the badge"
},
"description": {
"name": "Description",
"description": "Description of how the badge is earned"
},
"icon": {
"name": "Icon",
"description": "Icon for the badge (e.g. mdi:beach)"
},
"tier": {
"name": "Tier",
"description": "Badge tier: bronze, silver, gold or platinum"
},
"point_bonus": {
"name": "Point bonus",
"description": "Points credited to the child when the badge is earned"
},
"criteria": {
"name": "Criteria",
"description": "List of metric / operator / value dicts. Empty = manual-award only."
},
"assigned_to": {
"name": "Assigned to",
"description": "List of child IDs (empty = all)"
},
"notify_on_earn": {
"name": "Notify on earn",
"description": "Send a notification when the badge is earned"
}
}
},
"update_badge": {
"name": "Update Badge",
"description": "Update an existing badge. For built-ins, only point_bonus, tier, assigned_to, enabled, notify_on_earn are editable.",
"fields": {
"badge_id": {
"name": "Badge ID",
"description": "The ID of the badge to update"
},
"name": {
"name": "Name",
"description": "New display name of the badge"
},
"description": {
"name": "Description",
"description": "New description of the badge"
},
"icon": {
"name": "Icon",
"description": "New icon for the badge"
},
"tier": {
"name": "Tier",
"description": "Badge tier: bronze, silver, gold or platinum"
},
"point_bonus": {
"name": "Point bonus",
"description": "Points credited to the child when the badge is earned"
},
"criteria": {
"name": "Criteria",
"description": "List of metric / operator / value dicts. Empty = manual-award only."
},
"assigned_to": {
"name": "Assigned to",
"description": "List of child IDs (empty = all)"
},
"enabled": {
"name": "Enabled",
"description": "Whether the badge is active"
},
"notify_on_earn": {
"name": "Notify on earn",
"description": "Send a notification when the badge is earned"
}
}
},
"remove_badge": {
"name": "Remove Badge",
"description": "Remove a custom badge. Built-ins cannot be removed.",
"fields": {
"badge_id": {
"name": "Badge ID",
"description": "The ID of the badge to remove"
}
}
},
"award_badge_manually": {
"name": "Award Badge Manually",
"description": "Manually award a badge to a child.",
"fields": {
"badge_id": {
"name": "Badge ID",
"description": "The ID of the badge to award"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child receiving the badge"
}
}
},
"revoke_badge": {
"name": "Revoke Badge",
"description": "Revoke an awarded badge. If a point bonus was credited, it is reversed.",
"fields": {
"awarded_badge_id": {
"name": "Awarded Badge ID",
"description": "The ID of the awarded badge record to revoke"
}
}
},
"rebuild_badges": {
"name": "Rebuild Badges",
"description": "Re-evaluate all badges across all children silently (no notifications, no point bonuses)."
},
"apply_mandatory_penalty": {
"name": "Apply Mandatory Penalty",
"description": "Deduct the configured penalty points for a missed mandatory chore and clear the review item.",
"fields": {
"miss_id": {
"name": "Miss ID",
"description": "The ID of the mandatory-miss review item"
}
}
},
"choose_avatar": {
"name": "Choose Avatar",
"description": "A child switches to an avatar they have unlocked.",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child"
},
"icon": {
"name": "Avatar icon",
"description": "The mdi icon of an unlocked catalogue avatar (e.g. mdi:rocket-launch)."
}
}
},
"dismiss_mandatory_chore": {
"name": "Dismiss Mandatory Chore",
"description": "Clear a missed mandatory chore review item with no penalty.",
"fields": {
"miss_id": {
"name": "Miss ID",
"description": "The ID of the mandatory-miss review item"
}
}
},
"gift_points": {
"name": "Gift Points",
"description": "Transfer spendable points from one child to another (parent-controlled).",
"fields": {
"from_child_id": {
"name": "From child ID",
"description": "The ID of the child sending points"
},
"to_child_id": {
"name": "To child ID",
"description": "The ID of the child receiving points"
},
"points": {
"name": "Points",
"description": "The number of points to transfer"
}
}
},
"adjust_streak_freezes": {
"name": "Adjust Streak Freezes",
"description": "Give a child streak-freeze tokens (positive amount) or take some away (negative). A grant never goes past the streak_freeze_max cap.",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child whose tokens change"
},
"amount": {
"name": "Amount",
"description": "Tokens to add (positive) or remove (negative)"
}
}
},
"postpone_mandatory_chore": {
"name": "Postpone Mandatory Chore",
"description": "Give a missed mandatory chore another period (or tomorrow) without a penalty, and clear the review item.",
"fields": {
"miss_id": {
"name": "Miss ID",
"description": "The ID of the mandatory-miss review item"
}
}
},
"request_swap": {
"name": "Request Chore Swap",
"description": "A child requests to take over today's rotation assignment of a chore (pending parent approval).",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to take over"
},
"requester_id": {
"name": "Requester child ID",
"description": "The ID of the child requesting the swap"
}
}
},
"test_notification": {
"name": "Test Notification",
"description": "Send a sample notification of the given type to its enabled recipients (ignores the master on/off so routing can be verified).",
"fields": {
"type_id": {
"name": "Notification type",
"description": "Notification type id, e.g. pending_chore_approval, badge_earned, streak_milestone"
}
}
},
"record_allowance_payout": {
"name": "Record Allowance Payout",
"description": "Deduct points and record a real-money allowance payout in the ledger (fixed conversion rate; parent-controlled).",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child receiving the payout"
},
"points": {
"name": "Points",
"description": "Points to convert to cash and deduct"
}
}
},
"add_wish": {
"name": "Add Wish",
"description": "A child adds something they want to save for. It waits for a parent to approve it.",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child making the wish"
},
"name": {
"name": "Name",
"description": "What the child wants"
},
"target": {
"name": "Target",
"description": "Suggested number of points it costs. The parent can change it when approving."
},
"link": {
"name": "Link",
"description": "Optional web address (http or https) for the thing"
},
"photo_url": {
"name": "Picture",
"description": "Optional picture just uploaded through the TaskMate photo endpoint"
}
}
},
"withdraw_wish": {
"name": "Withdraw Wish",
"description": "A child takes back a wish that is still waiting for approval, or clears one that was declined.",
"fields": {
"wish_id": {
"name": "Wish ID",
"description": "The ID of the wish"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child whose wish it is"
}
}
},
"move_points_to_wish": {
"name": "Move Points to Wish",
"description": "Move points from a child's spendable balance into one of their approved wishes.",
"fields": {
"wish_id": {
"name": "Wish ID",
"description": "The ID of the wish"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child whose wish it is"
},
"points": {
"name": "Points",
"description": "How many points to move (capped at the balance and at what the wish still needs)"
}
}
},
"take_points_from_wish": {
"name": "Take Points from Wish",
"description": "Give some of a child's own saved points back from a wish. Pledged points never come out.",
"fields": {
"wish_id": {
"name": "Wish ID",
"description": "The ID of the wish"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child whose wish it is"
},
"points": {
"name": "Points",
"description": "How many saved points to take back (capped at what the child saved)"
}
}
},
"request_wish_redeem": {
"name": "Ask to Redeem Wish",
"description": "A fully funded wish becomes a reward claim waiting for the parent's approval.",
"fields": {
"wish_id": {
"name": "Wish ID",
"description": "The ID of the wish"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child whose wish it is"
}
}
},
"approve_wish": {
"name": "Approve Wish",
"description": "Turn a waiting wish into a savings goal, optionally at a different target.",
"fields": {
"wish_id": {
"name": "Wish ID",
"description": "The ID of the wish"
},
"target": {
"name": "Target",
"description": "Points the wish costs. Leave empty to keep the child's suggestion."
}
}
},
"decline_wish": {
"name": "Decline Wish",
"description": "Say no to a wish. Saved points go back to the child and pledges are voided.",
"fields": {
"wish_id": {
"name": "Wish ID",
"description": "The ID of the wish"
},
"reason": {
"name": "Reason",
"description": "Optional reason shown to the child"
}
}
},
"pledge_to_wish": {
"name": "Pledge to Wish",
"description": "Record points a relative chips in towards a child's wish. They never touch any balance.",
"fields": {
"wish_id": {
"name": "Wish ID",
"description": "The ID of the wish"
},
"name": {
"name": "From",
"description": "Who the pledge is from, e.g. Grandma"
},
"points": {
"name": "Points",
"description": "How many points to pledge (capped at what the wish still needs)"
},
"message": {
"name": "Message",
"description": "Optional message for the child"
}
}
},
"remove_wish_pledge": {
"name": "Remove Wish Pledge",
"description": "Undo a pledge. Allowed until the wish is redeemed.",
"fields": {
"wish_id": {
"name": "Wish ID",
"description": "The ID of the wish"
},
"pledge_id": {
"name": "Pledge ID",
"description": "The ID of the pledge to remove"
}
}
},
"remove_wish": {
"name": "Remove Wish",
"description": "Delete a wish. Saved points go back to the child and pledges are voided.",
"fields": {
"wish_id": {
"name": "Wish ID",
"description": "The ID of the wish"
}
}
},
"start_inspection": {
"name": "Start Inspection",
"description": "Flag a chore approved in the last 24 hours for a surprise inspection. Pass or fail it before the window closes; an undecided inspection closes quietly.",
"fields": {
"completion_id": {
"name": "Completion ID",
"description": "The ID of the approved chore completion to inspect"
},
"bonus": {
"name": "Bonus",
"description": "Points paid if it passes. Defaults to the Settings value."
},
"window": {
"name": "Window",
"description": "How long you have to check it: 1h, 2h, 4h or bed (until bedtime). Defaults to the Settings value."
},
"tell_child": {
"name": "Tell the child",
"description": "Show \"Inspection coming\" on the child's card now. Turn off for a secret check."
}
}
},
"pass_inspection": {
"name": "Pass Inspection",
"description": "The inspected chore passed. Pays the bonus as a normal points entry and celebrates on the child's card.",
"fields": {
"inspection_id": {
"name": "Inspection ID",
"description": "The ID of the open inspection"
},
"bonus": {
"name": "Bonus",
"description": "Points to pay. Defaults to the bonus set when the inspection started."
},
"note": {
"name": "Note",
"description": "Optional note shown to the child"
}
}
},
"fail_inspection": {
"name": "Fail Inspection",
"description": "The inspected chore didn't pass. No points are taken. It can be sent back to redo; the redo earns nothing extra.",
"fields": {
"inspection_id": {
"name": "Inspection ID",
"description": "The ID of the open inspection"
},
"redo": {
"name": "Send back to redo",
"description": "Put the chore back on the child's list as not done for today. Defaults to the Settings value."
},
"note": {
"name": "Note",
"description": "Optional note shown to the child (what needs fixing)"
}
}
},
"cancel_inspection": {
"name": "Cancel Inspection",
"description": "Call off an open inspection, as if it never started.",
"fields": {
"inspection_id": {
"name": "Inspection ID",
"description": "The ID of the open inspection"
}
}
}
},
"entity": {
"sensor": {
"child_stats": {
"unit_of_measurement": "chores"
},
"child_badges": {
"unit_of_measurement": "badges"
},
"child_watch": {
"state": {
"left": "# left",
"all_done": "All done",
"no_chores": "No chores"
}
}
},
"number": {
"weekend_multiplier": {
"name": "Weekend multiplier"
},
"perfect_week_bonus": {
"name": "Perfect week bonus"
}
},
"select": {
"streak_reset_mode": {
"name": "Streak reset mode"
},
"card_design": {
"name": "Card design"
}
}
},
"exceptions": {
"calendar_unknown_event": {
"message": "This event isn't a TaskMate chore on this child's calendar."
},
"calendar_series_not_supported": {
"message": "A repeating chore can only be moved or removed one day at a time from the calendar. To change the whole series, edit the chore in TaskMate."
},
"calendar_repeating_create": {
"message": "Repeating events can't be added from the calendar. Create a repeating chore in TaskMate instead."
},
"calendar_rename_series": {
"message": "Rename a repeating chore in TaskMate. From the calendar you can only move or remove a single day."
},
"calendar_time_follows_chore": {
"message": "A repeating chore keeps its time of day. Only the date of a single occurrence can be changed from the calendar."
},
"calendar_past_date": {
"message": "Chores can't be added to, moved to or moved from a day in the past."
},
"calendar_already_scheduled": {
"message": "{chore} is already on {date}."
},
"calendar_empty_title": {
"message": "Give the chore a title."
},
"calendar_own_event": {
"message": "This event was published by TaskMate itself, so it isn't added as a new chore."
}
}
}