bt-cli 0.4.44__tar.gz → 0.4.45__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 (212) hide show
  1. {bt_cli-0.4.44 → bt_cli-0.4.45}/CLAUDE.md +1 -1
  2. {bt_cli-0.4.44 → bt_cli-0.4.45}/PKG-INFO +1 -1
  3. {bt_cli-0.4.44 → bt_cli-0.4.45}/pyproject.toml +1 -1
  4. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/__init__.py +1 -1
  5. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/commands/configure.py +17 -2
  6. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/core/config_file.py +12 -1
  7. {bt_cli-0.4.44 → bt_cli-0.4.45}/.claude/skills/bt/SKILL.md +0 -0
  8. {bt_cli-0.4.44 → bt_cli-0.4.45}/.claude/skills/entitle/SKILL.md +0 -0
  9. {bt_cli-0.4.44 → bt_cli-0.4.45}/.claude/skills/epml/SKILL.md +0 -0
  10. {bt_cli-0.4.44 → bt_cli-0.4.45}/.claude/skills/epmw/SKILL.md +0 -0
  11. {bt_cli-0.4.44 → bt_cli-0.4.45}/.claude/skills/pra/SKILL.md +0 -0
  12. {bt_cli-0.4.44 → bt_cli-0.4.45}/.claude/skills/pws/SKILL.md +0 -0
  13. {bt_cli-0.4.44 → bt_cli-0.4.45}/.env.example +0 -0
  14. {bt_cli-0.4.44 → bt_cli-0.4.45}/.github/workflows/ci.yml +0 -0
  15. {bt_cli-0.4.44 → bt_cli-0.4.45}/.github/workflows/release.yml +0 -0
  16. {bt_cli-0.4.44 → bt_cli-0.4.45}/.gitignore +0 -0
  17. {bt_cli-0.4.44 → bt_cli-0.4.45}/README.md +0 -0
  18. {bt_cli-0.4.44 → bt_cli-0.4.45}/assets/cli-help.png +0 -0
  19. {bt_cli-0.4.44 → bt_cli-0.4.45}/assets/cli-output.png +0 -0
  20. {bt_cli-0.4.44 → bt_cli-0.4.45}/bt-cli.spec +0 -0
  21. {bt_cli-0.4.44 → bt_cli-0.4.45}/bt_entry.py +0 -0
  22. {bt_cli-0.4.44 → bt_cli-0.4.45}/epml-clients-server-side-filters-plan.md +0 -0
  23. {bt_cli-0.4.44 → bt_cli-0.4.45}/epml-implementation-plan.md +0 -0
  24. {bt_cli-0.4.44 → bt_cli-0.4.45}/pf-implementation-plan.md +0 -0
  25. {bt_cli-0.4.44 → bt_cli-0.4.45}/scripts/bt_entry.py +0 -0
  26. {bt_cli-0.4.44 → bt_cli-0.4.45}/scripts/pf_onboard.py +0 -0
  27. {bt_cli-0.4.44 → bt_cli-0.4.45}/scripts/sync-package-data.sh +0 -0
  28. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/cli.py +0 -0
  29. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/commands/__init__.py +0 -0
  30. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/commands/learn.py +0 -0
  31. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/commands/quick.py +0 -0
  32. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/core/__init__.py +0 -0
  33. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/core/auth.py +0 -0
  34. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/core/client.py +0 -0
  35. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/core/config.py +0 -0
  36. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/core/csv_utils.py +0 -0
  37. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/core/errors.py +0 -0
  38. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/core/output.py +0 -0
  39. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/core/prompts.py +0 -0
  40. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/core/rest_debug.py +0 -0
  41. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/data/CLAUDE.md +0 -0
  42. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/data/__init__.py +0 -0
  43. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/data/skills/bt/SKILL.md +0 -0
  44. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/data/skills/entitle/SKILL.md +0 -0
  45. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/data/skills/epml/SKILL.md +0 -0
  46. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/data/skills/epmw/SKILL.md +0 -0
  47. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/data/skills/pra/SKILL.md +0 -0
  48. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/data/skills/pws/SKILL.md +0 -0
  49. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/__init__.py +0 -0
  50. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/client/__init__.py +0 -0
  51. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/client/base.py +0 -0
  52. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/commands/__init__.py +0 -0
  53. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/commands/accounts.py +0 -0
  54. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/commands/applications.py +0 -0
  55. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/commands/auth.py +0 -0
  56. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/commands/bundles.py +0 -0
  57. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/commands/integrations.py +0 -0
  58. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/commands/permissions.py +0 -0
  59. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/commands/policies.py +0 -0
  60. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/commands/requests.py +0 -0
  61. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/commands/resources.py +0 -0
  62. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/commands/roles.py +0 -0
  63. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/commands/users.py +0 -0
  64. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/commands/workflows.py +0 -0
  65. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/models/__init__.py +0 -0
  66. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/models/bundle.py +0 -0
  67. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/models/common.py +0 -0
  68. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/models/integration.py +0 -0
  69. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/models/permission.py +0 -0
  70. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/models/policy.py +0 -0
  71. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/models/resource.py +0 -0
  72. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/models/role.py +0 -0
  73. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/models/user.py +0 -0
  74. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/entitle/models/workflow.py +0 -0
  75. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/__init__.py +0 -0
  76. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/client/__init__.py +0 -0
  77. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/client/base.py +0 -0
  78. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/commands/__init__.py +0 -0
  79. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/commands/audit.py +0 -0
  80. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/commands/auth.py +0 -0
  81. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/commands/client_pkg.py +0 -0
  82. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/commands/clients.py +0 -0
  83. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/commands/external_apis.py +0 -0
  84. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/commands/hosts.py +0 -0
  85. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/commands/iolog.py +0 -0
  86. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/commands/license.py +0 -0
  87. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/commands/quick.py +0 -0
  88. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/commands/rbp_cmdgrps.py +0 -0
  89. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/commands/rbp_entitlement.py +0 -0
  90. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/commands/rbp_hostgrps.py +0 -0
  91. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/commands/rbp_policy.py +0 -0
  92. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/commands/rbp_roles.py +0 -0
  93. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/commands/rbp_tests.py +0 -0
  94. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/commands/rbp_tmdategrps.py +0 -0
  95. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/commands/rbp_tx.py +0 -0
  96. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/commands/rbp_usergrps.py +0 -0
  97. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/commands/settings.py +0 -0
  98. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/commands/siems.py +0 -0
  99. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/commands/users.py +0 -0
  100. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epml/models/__init__.py +0 -0
  101. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epmw/__init__.py +0 -0
  102. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epmw/client/__init__.py +0 -0
  103. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epmw/client/base.py +0 -0
  104. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epmw/commands/__init__.py +0 -0
  105. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epmw/commands/audits.py +0 -0
  106. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epmw/commands/auth.py +0 -0
  107. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epmw/commands/computers.py +0 -0
  108. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epmw/commands/events.py +0 -0
  109. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epmw/commands/groups.py +0 -0
  110. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epmw/commands/policies.py +0 -0
  111. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epmw/commands/quick.py +0 -0
  112. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epmw/commands/requests.py +0 -0
  113. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epmw/commands/roles.py +0 -0
  114. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epmw/commands/tasks.py +0 -0
  115. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epmw/commands/users.py +0 -0
  116. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/epmw/models/__init__.py +0 -0
  117. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/__init__.py +0 -0
  118. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/client/__init__.py +0 -0
  119. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/client/base.py +0 -0
  120. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/commands/__init__.py +0 -0
  121. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/commands/auth.py +0 -0
  122. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/commands/group_policies.py +0 -0
  123. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/commands/import_export.py +0 -0
  124. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/commands/jump_clients.py +0 -0
  125. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/commands/jump_groups.py +0 -0
  126. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/commands/jump_items.py +0 -0
  127. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/commands/jumpoints.py +0 -0
  128. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/commands/policies.py +0 -0
  129. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/commands/quick.py +0 -0
  130. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/commands/teams.py +0 -0
  131. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/commands/users.py +0 -0
  132. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/commands/vault.py +0 -0
  133. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/models/__init__.py +0 -0
  134. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/models/common.py +0 -0
  135. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/models/group_policy.py +0 -0
  136. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/models/jump_client.py +0 -0
  137. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/models/jump_group.py +0 -0
  138. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/models/jump_item.py +0 -0
  139. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/models/jumpoint.py +0 -0
  140. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/models/team.py +0 -0
  141. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/models/user.py +0 -0
  142. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pra/models/vault.py +0 -0
  143. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/__init__.py +0 -0
  144. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/client/__init__.py +0 -0
  145. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/client/base.py +0 -0
  146. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/client/beyondinsight.py +0 -0
  147. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/client/passwordsafe.py +0 -0
  148. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/commands/__init__.py +0 -0
  149. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/commands/accounts.py +0 -0
  150. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/commands/assets.py +0 -0
  151. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/commands/attributes.py +0 -0
  152. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/commands/auth.py +0 -0
  153. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/commands/clouds.py +0 -0
  154. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/commands/config.py +0 -0
  155. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/commands/credentials.py +0 -0
  156. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/commands/databases.py +0 -0
  157. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/commands/directories.py +0 -0
  158. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/commands/functional.py +0 -0
  159. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/commands/import_export.py +0 -0
  160. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/commands/platforms.py +0 -0
  161. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/commands/quick.py +0 -0
  162. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/commands/search.py +0 -0
  163. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/commands/secrets.py +0 -0
  164. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/commands/systems.py +0 -0
  165. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/commands/users.py +0 -0
  166. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/commands/workgroups.py +0 -0
  167. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/config.py +0 -0
  168. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/models/__init__.py +0 -0
  169. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/models/account.py +0 -0
  170. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/models/asset.py +0 -0
  171. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/models/common.py +0 -0
  172. {bt_cli-0.4.44 → bt_cli-0.4.45}/src/bt_cli/pws/models/system.py +0 -0
  173. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/__init__.py +0 -0
  174. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/conftest.py +0 -0
  175. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/core/__init__.py +0 -0
  176. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/core/test_auth.py +0 -0
  177. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/core/test_config.py +0 -0
  178. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/core/test_errors.py +0 -0
  179. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/core/test_rest_debug.py +0 -0
  180. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/entitle/__init__.py +0 -0
  181. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/entitle/test_client.py +0 -0
  182. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/entitle/test_commands.py +0 -0
  183. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/entitle-smoke-test.sh +0 -0
  184. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/epml/__init__.py +0 -0
  185. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/epml/test_client.py +0 -0
  186. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/epml/test_commands.py +0 -0
  187. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/epmw/__init__.py +0 -0
  188. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/epmw/test_client.py +0 -0
  189. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/epmw/test_commands.py +0 -0
  190. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/epmw-quick-test-plan.md +0 -0
  191. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/fixtures/__init__.py +0 -0
  192. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/fixtures/responses.py +0 -0
  193. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/integration/__init__.py +0 -0
  194. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/integration/conftest.py +0 -0
  195. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/integration/helpers.py +0 -0
  196. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/integration/test_entitle_integration.py +0 -0
  197. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/integration/test_epmw_integration.py +0 -0
  198. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/integration/test_epmw_lifecycle.py +0 -0
  199. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/integration/test_pra_integration.py +0 -0
  200. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/integration/test_pra_lifecycle.py +0 -0
  201. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/integration/test_pws_integration.py +0 -0
  202. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/integration/test_pws_lifecycle.py +0 -0
  203. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/pra/__init__.py +0 -0
  204. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/pra/test_client.py +0 -0
  205. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/pra/test_commands.py +0 -0
  206. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/pra-smoke-test.sh +0 -0
  207. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/pra-test-plan.md +0 -0
  208. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/pws/__init__.py +0 -0
  209. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/pws/test_client.py +0 -0
  210. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/pws/test_commands.py +0 -0
  211. {bt_cli-0.4.44 → bt_cli-0.4.45}/tests/pws-quick-test-plan.md +0 -0
  212. {bt_cli-0.4.44 → bt_cli-0.4.45}/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.44**
3
+ BeyondTrust Platform CLI for Password Safe, Entitle, PRA, EPM Windows, and EPM Linux. **Version: 0.4.45**
4
4
 
5
5
  ## Setup
6
6
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bt-cli
3
- Version: 0.4.44
3
+ Version: 0.4.45
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.44"
7
+ version = "0.4.45"
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.44"
3
+ __version__ = "0.4.45"
@@ -43,6 +43,11 @@ def configure_callback(
43
43
  client_id: Optional[str] = typer.Option(None, "--client-id", help="OAuth Client ID"),
44
44
  client_secret: Optional[str] = typer.Option(None, "--client-secret", help="OAuth Client Secret"),
45
45
  api_key: Optional[str] = typer.Option(None, "--api-key", help="API Key"),
46
+ user_api_key: Optional[str] = typer.Option(
47
+ None,
48
+ "--user-api-key",
49
+ help="Entitle user-context API key (only required for `bt entitle requests create`)",
50
+ ),
46
51
  ) -> None:
47
52
  """Configure bt-cli interactively or via flags.
48
53
 
@@ -65,11 +70,13 @@ def configure_callback(
65
70
  return
66
71
 
67
72
  # Check if any non-interactive flags were provided
68
- has_flags = any([api_url, client_id, client_secret, api_key])
73
+ has_flags = any([api_url, client_id, client_secret, api_key, user_api_key])
69
74
 
70
75
  if has_flags and product:
71
76
  # Non-interactive mode with flags
72
- _configure_with_flags(product, profile, api_url, client_id, client_secret, api_key)
77
+ _configure_with_flags(
78
+ product, profile, api_url, client_id, client_secret, api_key, user_api_key
79
+ )
73
80
  else:
74
81
  # Interactive mode
75
82
  _configure_interactive(product, profile)
@@ -219,6 +226,7 @@ def _configure_with_flags(
219
226
  client_id: Optional[str],
220
227
  client_secret: Optional[str],
221
228
  api_key: Optional[str],
229
+ user_api_key: Optional[str] = None,
222
230
  ) -> None:
223
231
  """Configure using command-line flags (non-interactive)."""
224
232
  if product not in PRODUCTS:
@@ -240,6 +248,11 @@ def _configure_with_flags(
240
248
  new_config["client_secret"] = client_secret
241
249
  if api_key:
242
250
  new_config["api_key"] = api_key
251
+ if user_api_key is not None:
252
+ if product != "entitle":
253
+ print_error("--user-api-key is only valid for product=entitle")
254
+ raise typer.Exit(2)
255
+ new_config["user_api_key"] = user_api_key
243
256
 
244
257
  # Infer auth method
245
258
  if api_key:
@@ -481,6 +494,7 @@ def import_from_env(
481
494
  "entitle": {
482
495
  "api_url": "BT_ENTITLE_API_URL",
483
496
  "api_key": "BT_ENTITLE_API_KEY",
497
+ "user_api_key": "BT_ENTITLE_USER_API_KEY",
484
498
  "verify_ssl": "BT_ENTITLE_VERIFY_SSL",
485
499
  "timeout": "BT_ENTITLE_TIMEOUT",
486
500
  },
@@ -582,6 +596,7 @@ def show_effective_config(
582
596
  "Entitle": {
583
597
  "api_url": "BT_ENTITLE_API_URL",
584
598
  "api_key": "BT_ENTITLE_API_KEY",
599
+ "user_api_key": "BT_ENTITLE_USER_API_KEY",
585
600
  "verify_ssl": "BT_ENTITLE_VERIFY_SSL",
586
601
  "timeout": "BT_ENTITLE_TIMEOUT",
587
602
  },
@@ -51,7 +51,16 @@ PRODUCTS = {
51
51
  "default": "https://api.us.entitle.io",
52
52
  "example": "https://api.us.entitle.io or https://api.eu.entitle.io",
53
53
  },
54
- "api_key": {"prompt": "API Key", "required": True, "secret": True},
54
+ "api_key": {
55
+ "prompt": "Org/Admin API Key (read + admin writes)",
56
+ "required": True,
57
+ "secret": True,
58
+ },
59
+ "user_api_key": {
60
+ "prompt": "User-context API Key (only for `requests create`; leave blank to skip)",
61
+ "required": False,
62
+ "secret": True,
63
+ },
55
64
  "verify_ssl": {"prompt": "Verify SSL", "required": False, "secret": False, "default": True},
56
65
  "timeout": {"prompt": "Timeout (seconds)", "required": False, "secret": False, "default": 30},
57
66
  },
@@ -341,6 +350,8 @@ def _get_env_mappings(product: str) -> dict[str, str]:
341
350
  if product == "pws":
342
351
  mappings["run_as"] = f"{prefix}_RUN_AS"
343
352
  mappings["api_version"] = f"{prefix}_API_VERSION"
353
+ elif product == "entitle":
354
+ mappings["user_api_key"] = f"{prefix}_USER_API_KEY"
344
355
  elif product == "epml":
345
356
  mappings["site_id"] = f"{prefix}_SITE_ID"
346
357
  mappings["pat"] = f"{prefix}_PAT"
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
File without changes
File without changes