addedInput schema / additionalProperties
Added value: +false
addedInput schema / properties / action
Added value: +{
+ "default": "generate",
+ "description": "Which operation to run. generate builds command lines from input; parsePasswd/parseGroup parse pasted file text; audit cross-checks both files; presets returns the curated input presets.",
+ "enum": [
+ "generate",
+ "parsePasswd",
+ "parseGroup",
+ "audit",
+ "presets"
+ ],
+ "type": "string"
+}
removedInput schema / properties / distro
Removed value: -{
- "type": "string"
-}
addedInput schema / properties / group
Added value: +{
+ "description": "/etc/group content for the audit action.",
+ "type": "string"
+}
addedInput schema / properties / input
Added value: +{
+ "additionalProperties": false,
+ "description": "Used only when action is generate. The account specification to build commands from.",
+ "properties": {
+ "distro": {
+ "default": "debian",
+ "description": "Target OS family. freebsd emits pw(8) commands; the others emit the standard shadow-utils commands. Unknown values fall back to debian.",
+ "enum": [
+ "debian",
+ "rhel",
+ "arch",
+ "alpine",
+ "freebsd"
+ ],
+ "type": "string"
+ },
+ "group": {
+ "additionalProperties": false,
+ "description": "Group fields (used by the group-oriented operations).",
+ "properties": {
+ "gid": {
+ "description": "Numeric GID passed to -g. Values below 1000 trigger a system-group warning.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "members": {
+ "description": "Initial member usernames (each gets a usermod -aG follow-up on Linux). Accepts an array or comma-separated string.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "name": {
+ "description": "Group name. Validated against the same POSIX pattern as usernames.",
+ "type": "string"
+ },
+ "systemAccount": {
+ "default": false,
+ "description": "Add -r to groupadd to allocate a system-range GID.",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "operation": {
+ "description": "The account task to generate commands for. Required for the generate action.",
+ "enum": [
+ "create-user",
+ "modify-user",
+ "delete-user",
+ "create-group",
+ "modify-group",
+ "delete-group",
+ "set-password",
+ "lock-user",
+ "unlock-user"
+ ],
+ "type": "string"
+ },
+ "password": {
+ "description": "Optional cleartext password for set-password / create-user; piped via chpasswd (or pw -h 0). A warning is always added about command-line password exposure.",
+ "type": "string"
+ },
+ "user": {
+ "additionalProperties": false,
+ "description": "User account fields (used by the user-oriented operations).",
+ "properties": {
+ "comment": {
+ "description": "GECOS / full-name comment passed to -c.",
+ "type": "string"
+ },
+ "createHome": {
+ "default": true,
+ "description": "Add -m to create the home directory on create-user (ignored for system accounts).",
+ "type": "boolean"
+ },
+ "expiry": {
+ "description": "Account expiry date passed to -e (YYYY-MM-DD).",
+ "type": "string"
+ },
+ "gid": {
+ "description": "Primary group ID or name passed to -g.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "home": {
+ "description": "Home directory path passed to -d.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Login name. Validated against the POSIX pattern (lowercase letter or underscore first, then lowercase letters/digits/underscores/hyphens, max 32 chars).",
+ "type": "string"
+ },
+ "passwordExpireDays": {
+ "description": "Maximum password age in days; emits a follow-up chage -M command.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "removeHome": {
+ "default": false,
+ "description": "Add -r to userdel so delete-user also removes the home directory and mail spool.",
+ "type": "boolean"
+ },
+ "shell": {
+ "description": "Login shell passed to -s. Shells outside the common /etc/shells set raise a warning.",
+ "type": "string"
+ },
+ "supplementaryGroups": {
+ "description": "Supplementary groups for -G (append via -aG on modify). Accepts an array of names or a comma-separated string.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "systemAccount": {
+ "default": false,
+ "description": "Add -r to allocate a system-range UID/GID with no home/ageing.",
+ "type": "boolean"
+ },
+ "uid": {
+ "description": "Numeric UID. Values below 1000 trigger a system-account warning; 0 triggers a root-imposter warning.",
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+}
removedInput schema / properties / operation
Removed value: -{
- "type": "string"
-}
addedInput schema / properties / passwd
Added value: +{
+ "description": "/etc/passwd content for the audit action.",
+ "type": "string"
+}
addedInput schema / properties / text
Added value: +{
+ "description": "Pasted /etc/passwd (action parsePasswd) or /etc/group (action parseGroup) content, one record per colon-separated line.",
+ "type": "string"
+}
removedInput schema / properties / user
Removed value: -{
- "properties": {
- "comment": {
- "type": "string"
- },
- "createHome": {
- "type": "boolean"
- },
- "name": {
- "type": "string"
- },
- "shell": {
- "type": "string"
- },
- "supplementaryGroups": {
- "items": {
- "type": "string"
- },
- "type": "array"
- }
- },
- "required": [
- "name",
- "shell",
- "supplementaryGroups",
- "createHome",
- "comment"
- ],
- "type": "object"
-}
removedInput schema / required
Removed value: -[
- "operation",
- "distro",
- "user"
-]
changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "properties": {
+ "action": {
+ "description": "The action that was executed.",
+ "type": "string"
+ },
+ "result": {
+ "description": "Action-specific payload. generate returns commands/warnings/explanation; parsePasswd returns users; parseGroup returns groups; audit returns findings; presets returns presets.",
+ "properties": {
+ "commands": {
+ "description": "Generated command lines (generate action).",
+ "items": {
+ "properties": {
+ "command": {
+ "description": "The shell command text to run manually.",
+ "type": "string"
+ },
+ "explanation": {
+ "description": "What the command does and which files it touches.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "explanation": {
+ "description": "Overall explanation notes for the generate result.",
+ "type": "string"
+ },
+ "findings": {
+ "description": "Audit findings (audit action).",
+ "items": {
+ "properties": {
+ "issue": {
+ "description": "The detected problem.",
+ "type": "string"
+ },
+ "severity": {
+ "description": "Severity of the finding.",
+ "enum": [
+ "info",
+ "warning",
+ "critical"
+ ],
+ "type": "string"
+ },
+ "suggestion": {
+ "description": "How to remediate it.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "groups": {
+ "description": "Parsed /etc/group rows (parseGroup action).",
+ "items": {
+ "properties": {
+ "gid": {
+ "description": "Group ID.",
+ "type": "integer"
+ },
+ "members": {
+ "description": "Supplementary member usernames.",
+ "items": {
+ "description": "A member username.",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "name": {
+ "description": "Group name.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "presets": {
+ "description": "Curated input presets (presets action).",
+ "items": {
+ "properties": {
+ "description": {
+ "description": "What the preset does.",
+ "type": "string"
+ },
+ "id": {
+ "description": "Preset identifier.",
+ "type": "string"
+ },
+ "input": {
+ "description": "The generate input the preset fills in.",
+ "type": "object"
+ },
+ "name": {
+ "description": "Human-readable preset name.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "users": {
+ "description": "Parsed /etc/passwd rows (parsePasswd action).",
+ "items": {
+ "properties": {
+ "gecos": {
+ "description": "GECOS comment field.",
+ "type": "string"
+ },
+ "gid": {
+ "description": "Primary group ID.",
+ "type": "integer"
+ },
+ "home": {
+ "description": "Home directory.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Login name.",
+ "type": "string"
+ },
+ "shell": {
+ "description": "Login shell.",
+ "type": "string"
+ },
+ "uid": {
+ "description": "User ID.",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "warnings": {
+ "description": "Safety warnings for the generated commands.",
+ "items": {
+ "description": "A single warning message.",
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "success": {
+ "description": "Whether the request succeeded.",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+}