bt-cli 0.4.39__tar.gz → 0.4.40__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. {bt_cli-0.4.39/src/bt_cli/data → bt_cli-0.4.40}/CLAUDE.md +13 -1
  2. {bt_cli-0.4.39 → bt_cli-0.4.40}/PKG-INFO +1 -1
  3. {bt_cli-0.4.39 → bt_cli-0.4.40}/pyproject.toml +1 -1
  4. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/__init__.py +1 -1
  5. {bt_cli-0.4.39 → bt_cli-0.4.40/src/bt_cli/data}/CLAUDE.md +13 -1
  6. {bt_cli-0.4.39/src/bt_cli/data → bt_cli-0.4.40/.claude}/skills/bt/SKILL.md +0 -0
  7. {bt_cli-0.4.39/src/bt_cli/data → bt_cli-0.4.40/.claude}/skills/entitle/SKILL.md +0 -0
  8. {bt_cli-0.4.39/src/bt_cli/data → bt_cli-0.4.40/.claude}/skills/epml/SKILL.md +0 -0
  9. {bt_cli-0.4.39/src/bt_cli/data → bt_cli-0.4.40/.claude}/skills/epmw/SKILL.md +0 -0
  10. {bt_cli-0.4.39/src/bt_cli/data → bt_cli-0.4.40/.claude}/skills/pra/SKILL.md +0 -0
  11. {bt_cli-0.4.39/src/bt_cli/data → bt_cli-0.4.40/.claude}/skills/pws/SKILL.md +0 -0
  12. {bt_cli-0.4.39 → bt_cli-0.4.40}/.env.example +0 -0
  13. {bt_cli-0.4.39 → bt_cli-0.4.40}/.github/workflows/ci.yml +0 -0
  14. {bt_cli-0.4.39 → bt_cli-0.4.40}/.github/workflows/release.yml +0 -0
  15. {bt_cli-0.4.39 → bt_cli-0.4.40}/.gitignore +0 -0
  16. {bt_cli-0.4.39 → bt_cli-0.4.40}/README.md +0 -0
  17. {bt_cli-0.4.39 → bt_cli-0.4.40}/assets/cli-help.png +0 -0
  18. {bt_cli-0.4.39 → bt_cli-0.4.40}/assets/cli-output.png +0 -0
  19. {bt_cli-0.4.39 → bt_cli-0.4.40}/bt-cli.spec +0 -0
  20. {bt_cli-0.4.39 → bt_cli-0.4.40}/bt_entry.py +0 -0
  21. {bt_cli-0.4.39 → bt_cli-0.4.40}/epml-implementation-plan.md +0 -0
  22. {bt_cli-0.4.39 → bt_cli-0.4.40}/scripts/bt_entry.py +0 -0
  23. {bt_cli-0.4.39 → bt_cli-0.4.40}/scripts/sync-package-data.sh +0 -0
  24. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/cli.py +0 -0
  25. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/commands/__init__.py +0 -0
  26. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/commands/configure.py +0 -0
  27. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/commands/learn.py +0 -0
  28. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/commands/quick.py +0 -0
  29. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/core/__init__.py +0 -0
  30. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/core/auth.py +0 -0
  31. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/core/client.py +0 -0
  32. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/core/config.py +0 -0
  33. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/core/config_file.py +0 -0
  34. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/core/csv_utils.py +0 -0
  35. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/core/errors.py +0 -0
  36. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/core/output.py +0 -0
  37. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/core/prompts.py +0 -0
  38. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/core/rest_debug.py +0 -0
  39. {bt_cli-0.4.39/tests/pws → bt_cli-0.4.40/src/bt_cli/data}/__init__.py +0 -0
  40. {bt_cli-0.4.39/.claude → bt_cli-0.4.40/src/bt_cli/data}/skills/bt/SKILL.md +0 -0
  41. {bt_cli-0.4.39/.claude → bt_cli-0.4.40/src/bt_cli/data}/skills/entitle/SKILL.md +0 -0
  42. {bt_cli-0.4.39/.claude → bt_cli-0.4.40/src/bt_cli/data}/skills/epml/SKILL.md +0 -0
  43. {bt_cli-0.4.39/.claude → bt_cli-0.4.40/src/bt_cli/data}/skills/epmw/SKILL.md +0 -0
  44. {bt_cli-0.4.39/.claude → bt_cli-0.4.40/src/bt_cli/data}/skills/pra/SKILL.md +0 -0
  45. {bt_cli-0.4.39/.claude → bt_cli-0.4.40/src/bt_cli/data}/skills/pws/SKILL.md +0 -0
  46. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/__init__.py +0 -0
  47. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/client/__init__.py +0 -0
  48. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/client/base.py +0 -0
  49. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/commands/__init__.py +0 -0
  50. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/commands/accounts.py +0 -0
  51. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/commands/applications.py +0 -0
  52. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/commands/auth.py +0 -0
  53. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/commands/bundles.py +0 -0
  54. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/commands/integrations.py +0 -0
  55. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/commands/permissions.py +0 -0
  56. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/commands/policies.py +0 -0
  57. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/commands/resources.py +0 -0
  58. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/commands/roles.py +0 -0
  59. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/commands/users.py +0 -0
  60. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/commands/workflows.py +0 -0
  61. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/models/__init__.py +0 -0
  62. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/models/bundle.py +0 -0
  63. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/models/common.py +0 -0
  64. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/models/integration.py +0 -0
  65. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/models/permission.py +0 -0
  66. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/models/policy.py +0 -0
  67. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/models/resource.py +0 -0
  68. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/models/role.py +0 -0
  69. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/models/user.py +0 -0
  70. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/entitle/models/workflow.py +0 -0
  71. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/__init__.py +0 -0
  72. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/client/__init__.py +0 -0
  73. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/client/base.py +0 -0
  74. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/commands/__init__.py +0 -0
  75. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/commands/audit.py +0 -0
  76. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/commands/auth.py +0 -0
  77. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/commands/client_pkg.py +0 -0
  78. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/commands/external_apis.py +0 -0
  79. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/commands/hosts.py +0 -0
  80. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/commands/iolog.py +0 -0
  81. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/commands/license.py +0 -0
  82. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/commands/quick.py +0 -0
  83. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/commands/rbp_cmdgrps.py +0 -0
  84. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/commands/rbp_entitlement.py +0 -0
  85. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/commands/rbp_hostgrps.py +0 -0
  86. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/commands/rbp_policy.py +0 -0
  87. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/commands/rbp_roles.py +0 -0
  88. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/commands/rbp_tests.py +0 -0
  89. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/commands/rbp_tmdategrps.py +0 -0
  90. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/commands/rbp_tx.py +0 -0
  91. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/commands/rbp_usergrps.py +0 -0
  92. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/commands/settings.py +0 -0
  93. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/commands/siems.py +0 -0
  94. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/commands/users.py +0 -0
  95. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epml/models/__init__.py +0 -0
  96. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epmw/__init__.py +0 -0
  97. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epmw/client/__init__.py +0 -0
  98. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epmw/client/base.py +0 -0
  99. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epmw/commands/__init__.py +0 -0
  100. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epmw/commands/audits.py +0 -0
  101. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epmw/commands/auth.py +0 -0
  102. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epmw/commands/computers.py +0 -0
  103. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epmw/commands/events.py +0 -0
  104. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epmw/commands/groups.py +0 -0
  105. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epmw/commands/policies.py +0 -0
  106. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epmw/commands/quick.py +0 -0
  107. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epmw/commands/requests.py +0 -0
  108. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epmw/commands/roles.py +0 -0
  109. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epmw/commands/tasks.py +0 -0
  110. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epmw/commands/users.py +0 -0
  111. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/epmw/models/__init__.py +0 -0
  112. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pra/__init__.py +0 -0
  113. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pra/client/__init__.py +0 -0
  114. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pra/client/base.py +0 -0
  115. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pra/commands/__init__.py +0 -0
  116. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pra/commands/auth.py +0 -0
  117. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pra/commands/import_export.py +0 -0
  118. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pra/commands/jump_clients.py +0 -0
  119. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pra/commands/jump_groups.py +0 -0
  120. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pra/commands/jump_items.py +0 -0
  121. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pra/commands/jumpoints.py +0 -0
  122. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pra/commands/policies.py +0 -0
  123. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pra/commands/quick.py +0 -0
  124. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pra/commands/teams.py +0 -0
  125. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pra/commands/users.py +0 -0
  126. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pra/commands/vault.py +0 -0
  127. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pra/models/__init__.py +0 -0
  128. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pra/models/common.py +0 -0
  129. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pra/models/jump_client.py +0 -0
  130. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pra/models/jump_group.py +0 -0
  131. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pra/models/jump_item.py +0 -0
  132. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pra/models/jumpoint.py +0 -0
  133. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pra/models/team.py +0 -0
  134. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pra/models/user.py +0 -0
  135. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pra/models/vault.py +0 -0
  136. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/__init__.py +0 -0
  137. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/client/__init__.py +0 -0
  138. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/client/base.py +0 -0
  139. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/client/beyondinsight.py +0 -0
  140. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/client/passwordsafe.py +0 -0
  141. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/commands/__init__.py +0 -0
  142. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/commands/accounts.py +0 -0
  143. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/commands/assets.py +0 -0
  144. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/commands/attributes.py +0 -0
  145. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/commands/auth.py +0 -0
  146. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/commands/clouds.py +0 -0
  147. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/commands/config.py +0 -0
  148. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/commands/credentials.py +0 -0
  149. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/commands/databases.py +0 -0
  150. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/commands/directories.py +0 -0
  151. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/commands/functional.py +0 -0
  152. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/commands/import_export.py +0 -0
  153. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/commands/platforms.py +0 -0
  154. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/commands/quick.py +0 -0
  155. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/commands/search.py +0 -0
  156. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/commands/secrets.py +0 -0
  157. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/commands/systems.py +0 -0
  158. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/commands/users.py +0 -0
  159. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/commands/workgroups.py +0 -0
  160. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/config.py +0 -0
  161. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/models/__init__.py +0 -0
  162. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/models/account.py +0 -0
  163. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/models/asset.py +0 -0
  164. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/models/common.py +0 -0
  165. {bt_cli-0.4.39 → bt_cli-0.4.40}/src/bt_cli/pws/models/system.py +0 -0
  166. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/__init__.py +0 -0
  167. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/conftest.py +0 -0
  168. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/core/__init__.py +0 -0
  169. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/core/test_auth.py +0 -0
  170. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/core/test_config.py +0 -0
  171. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/core/test_errors.py +0 -0
  172. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/core/test_rest_debug.py +0 -0
  173. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/entitle/__init__.py +0 -0
  174. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/entitle/test_client.py +0 -0
  175. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/entitle/test_commands.py +0 -0
  176. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/entitle-smoke-test.sh +0 -0
  177. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/epml/__init__.py +0 -0
  178. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/epml/test_client.py +0 -0
  179. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/epml/test_commands.py +0 -0
  180. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/epmw/__init__.py +0 -0
  181. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/epmw/test_client.py +0 -0
  182. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/epmw/test_commands.py +0 -0
  183. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/epmw-quick-test-plan.md +0 -0
  184. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/fixtures/__init__.py +0 -0
  185. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/fixtures/responses.py +0 -0
  186. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/integration/__init__.py +0 -0
  187. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/integration/conftest.py +0 -0
  188. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/integration/helpers.py +0 -0
  189. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/integration/test_entitle_integration.py +0 -0
  190. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/integration/test_epmw_integration.py +0 -0
  191. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/integration/test_epmw_lifecycle.py +0 -0
  192. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/integration/test_pra_integration.py +0 -0
  193. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/integration/test_pra_lifecycle.py +0 -0
  194. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/integration/test_pws_integration.py +0 -0
  195. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/integration/test_pws_lifecycle.py +0 -0
  196. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/pra/__init__.py +0 -0
  197. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/pra/test_client.py +0 -0
  198. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/pra/test_commands.py +0 -0
  199. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/pra-smoke-test.sh +0 -0
  200. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/pra-test-plan.md +0 -0
  201. {bt_cli-0.4.39/src/bt_cli/data → bt_cli-0.4.40/tests/pws}/__init__.py +0 -0
  202. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/pws/test_client.py +0 -0
  203. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/pws/test_commands.py +0 -0
  204. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/pws-quick-test-plan.md +0 -0
  205. {bt_cli-0.4.39 → bt_cli-0.4.40}/tests/pws-smoke-test.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  # BT-CLI
2
2
 
3
- BeyondTrust Platform CLI for Password Safe, Entitle, PRA, EPM Windows, and EPM Linux. **Version: 0.4.39**
3
+ BeyondTrust Platform CLI for Password Safe, Entitle, PRA, EPM Windows, and EPM Linux. **Version: 0.4.40**
4
4
 
5
5
  ## Setup
6
6
 
@@ -10,6 +10,15 @@ source .venv/bin/activate && source .env
10
10
  bt whoami # Test all connections
11
11
  ```
12
12
 
13
+ Each product reads its own `BT_<PRODUCT>_*` env vars. EPM Linux is the odd one out — it uses a Personal Access Token (PAT) against the BeyondTrust public API gateway:
14
+
15
+ ```bash
16
+ export BT_EPML_API_URL=https://api.beyondtrust.io # default
17
+ export BT_EPML_SITE_ID=<site-uuid> # required
18
+ export BT_EPML_PAT=PAT_xxx # required (mint at app.beyondtrust.io)
19
+ export BT_EPML_DEFAULT_HOST=100 # default PMUL host id (optional)
20
+ ```
21
+
13
22
  ## Skills Available
14
23
 
15
24
  Use these slash commands for detailed product guidance:
@@ -72,6 +81,9 @@ PASSWORD=$(bt pws quick checkout -s server -a admin --raw)
72
81
  - Windows builds: Rich must be pinned to `<14.0.0` (Rich 14 has PyInstaller unicode issues)
73
82
  - **EPML URL transform**: spec paths start with `/api/...` but real URL is `https://api.beyondtrust.io/site/<site-id>/epm/linux/<spec-path-minus-/api/>`. Encapsulated in client `_build_url` — never bypass it.
74
83
  - **EPML two authorizers**: spec claims `nomine-authorizer` (PAT) globally but the gateway has IAM-only routes (return 403 with AWS-flavored body). PAT cannot reach those. Documented per-op in `src/bt_cli/data/skills/epml/SKILL.md`. Where `/v6/pbul/rbp/...` exists alongside legacy `/pbul/{hostid}/rbp/...`, prefer legacy — v6 is mostly IAM-only.
84
+ - **EPML body-shape gotchas**: role create needs `action ∈ {A,R}`; hostgrp/usergrp create needs `type ∈ {I,E}` (Internal=static / External=directory-resolved); role assignments need `--kind S|R|B` for hostgrps/usergrps (S=Submit user, R=Run-as user); collection deletes use `?id=N` query params (CLI loops); child collections (commands/hosts/users/tmdates) have **no per-item delete** — `clear` nukes all, use `replace` to keep some.
85
+ - **EPML role update is upsert-on-id (overwrite, not partial)**: hitting `POST /roles` with `{id, ...}` clears any field you don't include. The CLI's `roles update` does read-modify-write so it feels partial; child relations are filtered out of the merge so assignments survive. Direct `curl` users must send the full record.
86
+ - **EPML role banner format**: `bt epml rbp roles create --banner-text "Title"` builds a `############`-framed message using `%rbprole%`/`%event%` server substitutions, mirroring the appliance's existing roles. See the worked role example in the EPM-L SKILL.md.
75
87
 
76
88
  ## Functional vs Managed Accounts
77
89
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bt-cli
3
- Version: 0.4.39
3
+ Version: 0.4.40
4
4
  Summary: BeyondTrust Platform CLI (unofficial) - Password Safe, Entitle, PRA, EPM
5
5
  Author-email: Dave Grendysz <dgrendysz@beyondtrust.com>
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "bt-cli"
7
- version = "0.4.39"
7
+ version = "0.4.40"
8
8
  description = "BeyondTrust Platform CLI (unofficial) - Password Safe, Entitle, PRA, EPM"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -1,3 +1,3 @@
1
1
  """BeyondTrust Unified Admin CLI."""
2
2
 
3
- __version__ = "0.4.39"
3
+ __version__ = "0.4.40"
@@ -1,6 +1,6 @@
1
1
  # BT-CLI
2
2
 
3
- BeyondTrust Platform CLI for Password Safe, Entitle, PRA, EPM Windows, and EPM Linux. **Version: 0.4.39**
3
+ BeyondTrust Platform CLI for Password Safe, Entitle, PRA, EPM Windows, and EPM Linux. **Version: 0.4.40**
4
4
 
5
5
  ## Setup
6
6
 
@@ -10,6 +10,15 @@ source .venv/bin/activate && source .env
10
10
  bt whoami # Test all connections
11
11
  ```
12
12
 
13
+ Each product reads its own `BT_<PRODUCT>_*` env vars. EPM Linux is the odd one out — it uses a Personal Access Token (PAT) against the BeyondTrust public API gateway:
14
+
15
+ ```bash
16
+ export BT_EPML_API_URL=https://api.beyondtrust.io # default
17
+ export BT_EPML_SITE_ID=<site-uuid> # required
18
+ export BT_EPML_PAT=PAT_xxx # required (mint at app.beyondtrust.io)
19
+ export BT_EPML_DEFAULT_HOST=100 # default PMUL host id (optional)
20
+ ```
21
+
13
22
  ## Skills Available
14
23
 
15
24
  Use these slash commands for detailed product guidance:
@@ -72,6 +81,9 @@ PASSWORD=$(bt pws quick checkout -s server -a admin --raw)
72
81
  - Windows builds: Rich must be pinned to `<14.0.0` (Rich 14 has PyInstaller unicode issues)
73
82
  - **EPML URL transform**: spec paths start with `/api/...` but real URL is `https://api.beyondtrust.io/site/<site-id>/epm/linux/<spec-path-minus-/api/>`. Encapsulated in client `_build_url` — never bypass it.
74
83
  - **EPML two authorizers**: spec claims `nomine-authorizer` (PAT) globally but the gateway has IAM-only routes (return 403 with AWS-flavored body). PAT cannot reach those. Documented per-op in `src/bt_cli/data/skills/epml/SKILL.md`. Where `/v6/pbul/rbp/...` exists alongside legacy `/pbul/{hostid}/rbp/...`, prefer legacy — v6 is mostly IAM-only.
84
+ - **EPML body-shape gotchas**: role create needs `action ∈ {A,R}`; hostgrp/usergrp create needs `type ∈ {I,E}` (Internal=static / External=directory-resolved); role assignments need `--kind S|R|B` for hostgrps/usergrps (S=Submit user, R=Run-as user); collection deletes use `?id=N` query params (CLI loops); child collections (commands/hosts/users/tmdates) have **no per-item delete** — `clear` nukes all, use `replace` to keep some.
85
+ - **EPML role update is upsert-on-id (overwrite, not partial)**: hitting `POST /roles` with `{id, ...}` clears any field you don't include. The CLI's `roles update` does read-modify-write so it feels partial; child relations are filtered out of the merge so assignments survive. Direct `curl` users must send the full record.
86
+ - **EPML role banner format**: `bt epml rbp roles create --banner-text "Title"` builds a `############`-framed message using `%rbprole%`/`%event%` server substitutions, mirroring the appliance's existing roles. See the worked role example in the EPM-L SKILL.md.
75
87
 
76
88
  ## Functional vs Managed Accounts
77
89
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes