devopness 0.0.0__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 (428) hide show
  1. devopness-0.0.0/PKG-INFO +253 -0
  2. devopness-0.0.0/README.md +220 -0
  3. devopness-0.0.0/pyproject.toml +142 -0
  4. devopness-0.0.0/src/devopness/__init__.py +12 -0
  5. devopness-0.0.0/src/devopness/base/__init__.py +12 -0
  6. devopness-0.0.0/src/devopness/base/base_model.py +76 -0
  7. devopness-0.0.0/src/devopness/base/base_service.py +444 -0
  8. devopness-0.0.0/src/devopness/client.py +280 -0
  9. devopness-0.0.0/src/devopness/client_config.py +47 -0
  10. devopness-0.0.0/src/devopness/core/__init__.py +15 -0
  11. devopness-0.0.0/src/devopness/core/api_error.py +129 -0
  12. devopness-0.0.0/src/devopness/core/network_error.py +107 -0
  13. devopness-0.0.0/src/devopness/core/response.py +171 -0
  14. devopness-0.0.0/src/devopness/core/sdk_error.py +9 -0
  15. devopness-0.0.0/src/devopness/generated/__init__.py +9 -0
  16. devopness-0.0.0/src/devopness/generated/api/__init__.py +335 -0
  17. devopness-0.0.0/src/devopness/generated/api/actions_api.py +307 -0
  18. devopness-0.0.0/src/devopness/generated/api/actions_logs_api.py +70 -0
  19. devopness-0.0.0/src/devopness/generated/api/applications_api.py +342 -0
  20. devopness-0.0.0/src/devopness/generated/api/applications_hooks_api.py +89 -0
  21. devopness-0.0.0/src/devopness/generated/api/applications_variables_api.py +146 -0
  22. devopness-0.0.0/src/devopness/generated/api/credentials_api.py +387 -0
  23. devopness-0.0.0/src/devopness/generated/api/credentials_repositories_api.py +137 -0
  24. devopness-0.0.0/src/devopness/generated/api/cron_jobs_api.py +288 -0
  25. devopness-0.0.0/src/devopness/generated/api/daemons_api.py +504 -0
  26. devopness-0.0.0/src/devopness/generated/api/environments_actions_api.py +155 -0
  27. devopness-0.0.0/src/devopness/generated/api/environments_api.py +208 -0
  28. devopness-0.0.0/src/devopness/generated/api/environments_team_memberships_api.py +89 -0
  29. devopness-0.0.0/src/devopness/generated/api/environments_teams_api.py +124 -0
  30. devopness-0.0.0/src/devopness/generated/api/hook_requests_api.py +66 -0
  31. devopness-0.0.0/src/devopness/generated/api/hooks_api.py +214 -0
  32. devopness-0.0.0/src/devopness/generated/api/hooks_requests_api.py +91 -0
  33. devopness-0.0.0/src/devopness/generated/api/network_rules_api.py +288 -0
  34. devopness-0.0.0/src/devopness/generated/api/networks_api.py +344 -0
  35. devopness-0.0.0/src/devopness/generated/api/networks_subnets_api.py +154 -0
  36. devopness-0.0.0/src/devopness/generated/api/organizations_api.py +285 -0
  37. devopness-0.0.0/src/devopness/generated/api/organizations_environments_api.py +89 -0
  38. devopness-0.0.0/src/devopness/generated/api/organizations_projects_api.py +89 -0
  39. devopness-0.0.0/src/devopness/generated/api/pipelines_actions_api.py +146 -0
  40. devopness-0.0.0/src/devopness/generated/api/pipelines_api.py +292 -0
  41. devopness-0.0.0/src/devopness/generated/api/pipelines_hooks_api.py +143 -0
  42. devopness-0.0.0/src/devopness/generated/api/pipelines_steps_api.py +228 -0
  43. devopness-0.0.0/src/devopness/generated/api/projects_actions_api.py +91 -0
  44. devopness-0.0.0/src/devopness/generated/api/projects_api.py +240 -0
  45. devopness-0.0.0/src/devopness/generated/api/projects_archived_environments_api.py +89 -0
  46. devopness-0.0.0/src/devopness/generated/api/projects_environments_api.py +146 -0
  47. devopness-0.0.0/src/devopness/generated/api/projects_roles_api.py +141 -0
  48. devopness-0.0.0/src/devopness/generated/api/projects_teams_api.py +141 -0
  49. devopness-0.0.0/src/devopness/generated/api/resource_events_api.py +137 -0
  50. devopness-0.0.0/src/devopness/generated/api/resource_links_api.py +259 -0
  51. devopness-0.0.0/src/devopness/generated/api/roles_api.py +164 -0
  52. devopness-0.0.0/src/devopness/generated/api/servers_api.py +615 -0
  53. devopness-0.0.0/src/devopness/generated/api/services_api.py +558 -0
  54. devopness-0.0.0/src/devopness/generated/api/services_variables_api.py +146 -0
  55. devopness-0.0.0/src/devopness/generated/api/social_accounts_api.py +275 -0
  56. devopness-0.0.0/src/devopness/generated/api/ssh_keys_api.py +288 -0
  57. devopness-0.0.0/src/devopness/generated/api/ssl_certificates_api.py +234 -0
  58. devopness-0.0.0/src/devopness/generated/api/static_data_api.py +651 -0
  59. devopness-0.0.0/src/devopness/generated/api/subnets_api.py +110 -0
  60. devopness-0.0.0/src/devopness/generated/api/team_invitations_api.py +153 -0
  61. devopness-0.0.0/src/devopness/generated/api/teams_api.py +164 -0
  62. devopness-0.0.0/src/devopness/generated/api/teams_invitations_api.py +146 -0
  63. devopness-0.0.0/src/devopness/generated/api/teams_members_api.py +181 -0
  64. devopness-0.0.0/src/devopness/generated/api/users_api.py +602 -0
  65. devopness-0.0.0/src/devopness/generated/api/users_environments_api.py +93 -0
  66. devopness-0.0.0/src/devopness/generated/api/users_passwords_api.py +130 -0
  67. devopness-0.0.0/src/devopness/generated/api/users_projects_api.py +93 -0
  68. devopness-0.0.0/src/devopness/generated/api/users_team_invitations_api.py +87 -0
  69. devopness-0.0.0/src/devopness/generated/api/variables_api.py +292 -0
  70. devopness-0.0.0/src/devopness/generated/api/virtual_hosts_api.py +342 -0
  71. devopness-0.0.0/src/devopness/generated/models/__init__.py +1262 -0
  72. devopness-0.0.0/src/devopness/generated/models/action.py +224 -0
  73. devopness-0.0.0/src/devopness/generated/models/action_data.py +18 -0
  74. devopness-0.0.0/src/devopness/generated/models/action_deployment_commit.py +68 -0
  75. devopness-0.0.0/src/devopness/generated/models/action_deployment_content.py +67 -0
  76. devopness-0.0.0/src/devopness/generated/models/action_deployment_data.py +62 -0
  77. devopness-0.0.0/src/devopness/generated/models/action_hook_request.py +48 -0
  78. devopness-0.0.0/src/devopness/generated/models/action_pipeline_create.py +54 -0
  79. devopness-0.0.0/src/devopness/generated/models/action_relation.py +157 -0
  80. devopness-0.0.0/src/devopness/generated/models/action_relation_shallow.py +141 -0
  81. devopness-0.0.0/src/devopness/generated/models/action_resource.py +60 -0
  82. devopness-0.0.0/src/devopness/generated/models/action_resource_data.py +58 -0
  83. devopness-0.0.0/src/devopness/generated/models/action_retry_response.py +224 -0
  84. devopness-0.0.0/src/devopness/generated/models/action_status.py +42 -0
  85. devopness-0.0.0/src/devopness/generated/models/action_status_reason_code.py +46 -0
  86. devopness-0.0.0/src/devopness/generated/models/action_step.py +115 -0
  87. devopness-0.0.0/src/devopness/generated/models/action_summary.py +40 -0
  88. devopness-0.0.0/src/devopness/generated/models/action_summary_target.py +49 -0
  89. devopness-0.0.0/src/devopness/generated/models/action_target.py +146 -0
  90. devopness-0.0.0/src/devopness/generated/models/action_target_credential_data.py +67 -0
  91. devopness-0.0.0/src/devopness/generated/models/action_target_data.py +37 -0
  92. devopness-0.0.0/src/devopness/generated/models/action_target_log_step.py +50 -0
  93. devopness-0.0.0/src/devopness/generated/models/action_target_network_data.py +60 -0
  94. devopness-0.0.0/src/devopness/generated/models/action_target_server_data.py +76 -0
  95. devopness-0.0.0/src/devopness/generated/models/action_trigger_type.py +32 -0
  96. devopness-0.0.0/src/devopness/generated/models/action_triggered_from.py +76 -0
  97. devopness-0.0.0/src/devopness/generated/models/action_type.py +52 -0
  98. devopness-0.0.0/src/devopness/generated/models/api_error.py +46 -0
  99. devopness-0.0.0/src/devopness/generated/models/api_error_errors.py +51 -0
  100. devopness-0.0.0/src/devopness/generated/models/api_error_errors_field_name_inner.py +39 -0
  101. devopness-0.0.0/src/devopness/generated/models/application.py +203 -0
  102. devopness-0.0.0/src/devopness/generated/models/application_environment_create.py +118 -0
  103. devopness-0.0.0/src/devopness/generated/models/application_last_deployments.py +48 -0
  104. devopness-0.0.0/src/devopness/generated/models/application_options.py +69 -0
  105. devopness-0.0.0/src/devopness/generated/models/application_pipeline.py +38 -0
  106. devopness-0.0.0/src/devopness/generated/models/application_relation.py +151 -0
  107. devopness-0.0.0/src/devopness/generated/models/application_update.py +97 -0
  108. devopness-0.0.0/src/devopness/generated/models/archived_environment_relation.py +101 -0
  109. devopness-0.0.0/src/devopness/generated/models/blueprint_service.py +61 -0
  110. devopness-0.0.0/src/devopness/generated/models/cloud_instance_relation.py +66 -0
  111. devopness-0.0.0/src/devopness/generated/models/cloud_os_version_code.py +38 -0
  112. devopness-0.0.0/src/devopness/generated/models/cloud_provider.py +73 -0
  113. devopness-0.0.0/src/devopness/generated/models/cloud_provider_code.py +36 -0
  114. devopness-0.0.0/src/devopness/generated/models/cloud_provider_input_settings.py +71 -0
  115. devopness-0.0.0/src/devopness/generated/models/cloud_provider_input_settings_default_value.py +20 -0
  116. devopness-0.0.0/src/devopness/generated/models/cloud_provider_property_type.py +36 -0
  117. devopness-0.0.0/src/devopness/generated/models/cloud_provider_property_validation.py +64 -0
  118. devopness-0.0.0/src/devopness/generated/models/cloud_provider_relation.py +46 -0
  119. devopness-0.0.0/src/devopness/generated/models/cloud_provider_service.py +87 -0
  120. devopness-0.0.0/src/devopness/generated/models/cloud_provider_service_code.py +38 -0
  121. devopness-0.0.0/src/devopness/generated/models/cloud_provider_service_region.py +49 -0
  122. devopness-0.0.0/src/devopness/generated/models/cloud_provider_service_resource_type.py +102 -0
  123. devopness-0.0.0/src/devopness/generated/models/cloud_provider_service_resource_type_scope.py +34 -0
  124. devopness-0.0.0/src/devopness/generated/models/cloud_provider_settings_list.py +50 -0
  125. devopness-0.0.0/src/devopness/generated/models/cloud_resource_type.py +34 -0
  126. devopness-0.0.0/src/devopness/generated/models/cloud_service_settings_aws_ec2.py +63 -0
  127. devopness-0.0.0/src/devopness/generated/models/cloud_service_settings_azure_rm.py +63 -0
  128. devopness-0.0.0/src/devopness/generated/models/cloud_service_settings_digital_ocean_droplet.py +58 -0
  129. devopness-0.0.0/src/devopness/generated/models/cloud_service_settings_gcp_gce.py +58 -0
  130. devopness-0.0.0/src/devopness/generated/models/cloud_service_settings_self_hosted_custom.py +41 -0
  131. devopness-0.0.0/src/devopness/generated/models/commit.py +71 -0
  132. devopness-0.0.0/src/devopness/generated/models/credential.py +78 -0
  133. devopness-0.0.0/src/devopness/generated/models/credential_aws.py +42 -0
  134. devopness-0.0.0/src/devopness/generated/models/credential_azure.py +52 -0
  135. devopness-0.0.0/src/devopness/generated/models/credential_digital_ocean.py +37 -0
  136. devopness-0.0.0/src/devopness/generated/models/credential_environment_create.py +71 -0
  137. devopness-0.0.0/src/devopness/generated/models/credential_google_cloud.py +37 -0
  138. devopness-0.0.0/src/devopness/generated/models/credential_input_settings.py +43 -0
  139. devopness-0.0.0/src/devopness/generated/models/credential_input_settings_credential.py +40 -0
  140. devopness-0.0.0/src/devopness/generated/models/credential_options.py +63 -0
  141. devopness-0.0.0/src/devopness/generated/models/credential_provider.py +51 -0
  142. devopness-0.0.0/src/devopness/generated/models/credential_provider_type.py +40 -0
  143. devopness-0.0.0/src/devopness/generated/models/credential_relation.py +85 -0
  144. devopness-0.0.0/src/devopness/generated/models/credential_setting.py +59 -0
  145. devopness-0.0.0/src/devopness/generated/models/credential_source_provider.py +37 -0
  146. devopness-0.0.0/src/devopness/generated/models/credential_update.py +54 -0
  147. devopness-0.0.0/src/devopness/generated/models/credits.py +49 -0
  148. devopness-0.0.0/src/devopness/generated/models/cron_job.py +136 -0
  149. devopness-0.0.0/src/devopness/generated/models/cron_job_environment_create.py +74 -0
  150. devopness-0.0.0/src/devopness/generated/models/cron_job_options.py +46 -0
  151. devopness-0.0.0/src/devopness/generated/models/cron_job_pattern.py +42 -0
  152. devopness-0.0.0/src/devopness/generated/models/cron_job_relation.py +106 -0
  153. devopness-0.0.0/src/devopness/generated/models/cron_job_update.py +62 -0
  154. devopness-0.0.0/src/devopness/generated/models/daemon.py +134 -0
  155. devopness-0.0.0/src/devopness/generated/models/daemon_environment_create.py +79 -0
  156. devopness-0.0.0/src/devopness/generated/models/daemon_get_status.py +38 -0
  157. devopness-0.0.0/src/devopness/generated/models/daemon_relation.py +104 -0
  158. devopness-0.0.0/src/devopness/generated/models/daemon_restart.py +38 -0
  159. devopness-0.0.0/src/devopness/generated/models/daemon_start.py +38 -0
  160. devopness-0.0.0/src/devopness/generated/models/daemon_stop.py +38 -0
  161. devopness-0.0.0/src/devopness/generated/models/daemon_update.py +67 -0
  162. devopness-0.0.0/src/devopness/generated/models/deployment_application_create.py +71 -0
  163. devopness-0.0.0/src/devopness/generated/models/deployment_default_step.py +50 -0
  164. devopness-0.0.0/src/devopness/generated/models/deployment_type.py +34 -0
  165. devopness-0.0.0/src/devopness/generated/models/environment.py +111 -0
  166. devopness-0.0.0/src/devopness/generated/models/environment_link.py +45 -0
  167. devopness-0.0.0/src/devopness/generated/models/environment_options.py +47 -0
  168. devopness-0.0.0/src/devopness/generated/models/environment_project_create.py +54 -0
  169. devopness-0.0.0/src/devopness/generated/models/environment_relation.py +101 -0
  170. devopness-0.0.0/src/devopness/generated/models/environment_type.py +34 -0
  171. devopness-0.0.0/src/devopness/generated/models/environment_update.py +57 -0
  172. devopness-0.0.0/src/devopness/generated/models/hook.py +161 -0
  173. devopness-0.0.0/src/devopness/generated/models/hook_incoming_settings.py +47 -0
  174. devopness-0.0.0/src/devopness/generated/models/hook_outgoing_request_header.py +43 -0
  175. devopness-0.0.0/src/devopness/generated/models/hook_outgoing_settings.py +62 -0
  176. devopness-0.0.0/src/devopness/generated/models/hook_outgoing_settings_request_body.py +23 -0
  177. devopness-0.0.0/src/devopness/generated/models/hook_outgoing_trigger_when_condition.py +43 -0
  178. devopness-0.0.0/src/devopness/generated/models/hook_pipeline_create.py +83 -0
  179. devopness-0.0.0/src/devopness/generated/models/hook_pipeline_create_settings.py +25 -0
  180. devopness-0.0.0/src/devopness/generated/models/hook_relation.py +137 -0
  181. devopness-0.0.0/src/devopness/generated/models/hook_request.py +96 -0
  182. devopness-0.0.0/src/devopness/generated/models/hook_request_relation.py +77 -0
  183. devopness-0.0.0/src/devopness/generated/models/hook_settings.py +25 -0
  184. devopness-0.0.0/src/devopness/generated/models/hook_trigger_response.py +45 -0
  185. devopness-0.0.0/src/devopness/generated/models/hook_trigger_when.py +55 -0
  186. devopness-0.0.0/src/devopness/generated/models/hook_trigger_when_conditions_inner.py +28 -0
  187. devopness-0.0.0/src/devopness/generated/models/hook_type.py +32 -0
  188. devopness-0.0.0/src/devopness/generated/models/hook_update.py +88 -0
  189. devopness-0.0.0/src/devopness/generated/models/hook_variable.py +70 -0
  190. devopness-0.0.0/src/devopness/generated/models/hook_variable_default_value.py +25 -0
  191. devopness-0.0.0/src/devopness/generated/models/hook_variable_default_value_one_of_inner.py +23 -0
  192. devopness-0.0.0/src/devopness/generated/models/hook_variable_type.py +36 -0
  193. devopness-0.0.0/src/devopness/generated/models/invitation.py +107 -0
  194. devopness-0.0.0/src/devopness/generated/models/invitation_relation.py +116 -0
  195. devopness-0.0.0/src/devopness/generated/models/invitation_team_create.py +37 -0
  196. devopness-0.0.0/src/devopness/generated/models/language.py +32 -0
  197. devopness-0.0.0/src/devopness/generated/models/language_runtime.py +76 -0
  198. devopness-0.0.0/src/devopness/generated/models/language_runtime_engine_versions_inner.py +35 -0
  199. devopness-0.0.0/src/devopness/generated/models/language_runtime_framework.py +55 -0
  200. devopness-0.0.0/src/devopness/generated/models/language_runtime_framework_commands.py +44 -0
  201. devopness-0.0.0/src/devopness/generated/models/language_runtime_framework_defaults.py +87 -0
  202. devopness-0.0.0/src/devopness/generated/models/linked_resource_data.py +68 -0
  203. devopness-0.0.0/src/devopness/generated/models/linked_resource_summary_field.py +43 -0
  204. devopness-0.0.0/src/devopness/generated/models/log.py +57 -0
  205. devopness-0.0.0/src/devopness/generated/models/member.py +62 -0
  206. devopness-0.0.0/src/devopness/generated/models/member_relation.py +52 -0
  207. devopness-0.0.0/src/devopness/generated/models/network.py +112 -0
  208. devopness-0.0.0/src/devopness/generated/models/network_environment_create.py +50 -0
  209. devopness-0.0.0/src/devopness/generated/models/network_provision_input.py +55 -0
  210. devopness-0.0.0/src/devopness/generated/models/network_provision_input_settings.py +43 -0
  211. devopness-0.0.0/src/devopness/generated/models/network_provision_input_settings_aws.py +46 -0
  212. devopness-0.0.0/src/devopness/generated/models/network_provision_input_settings_azure.py +46 -0
  213. devopness-0.0.0/src/devopness/generated/models/network_provision_input_settings_digital_ocean.py +46 -0
  214. devopness-0.0.0/src/devopness/generated/models/network_provision_input_settings_gcp.py +43 -0
  215. devopness-0.0.0/src/devopness/generated/models/network_relation.py +105 -0
  216. devopness-0.0.0/src/devopness/generated/models/network_rule.py +120 -0
  217. devopness-0.0.0/src/devopness/generated/models/network_rule_direction.py +32 -0
  218. devopness-0.0.0/src/devopness/generated/models/network_rule_environment_create.py +81 -0
  219. devopness-0.0.0/src/devopness/generated/models/network_rule_options.py +66 -0
  220. devopness-0.0.0/src/devopness/generated/models/network_rule_protocol.py +36 -0
  221. devopness-0.0.0/src/devopness/generated/models/network_rule_relation.py +90 -0
  222. devopness-0.0.0/src/devopness/generated/models/network_rule_update.py +65 -0
  223. devopness-0.0.0/src/devopness/generated/models/network_update.py +38 -0
  224. devopness-0.0.0/src/devopness/generated/models/operating_system.py +59 -0
  225. devopness-0.0.0/src/devopness/generated/models/operating_system_version.py +73 -0
  226. devopness-0.0.0/src/devopness/generated/models/operation_custom_settings.py +50 -0
  227. devopness-0.0.0/src/devopness/generated/models/organization.py +76 -0
  228. devopness-0.0.0/src/devopness/generated/models/organization_activity.py +67 -0
  229. devopness-0.0.0/src/devopness/generated/models/organization_create.py +42 -0
  230. devopness-0.0.0/src/devopness/generated/models/organization_relation.py +67 -0
  231. devopness-0.0.0/src/devopness/generated/models/organization_update.py +45 -0
  232. devopness-0.0.0/src/devopness/generated/models/os_users_inner.py +35 -0
  233. devopness-0.0.0/src/devopness/generated/models/password_reset_response.py +37 -0
  234. devopness-0.0.0/src/devopness/generated/models/password_user_reset.py +48 -0
  235. devopness-0.0.0/src/devopness/generated/models/password_user_send_reset_link.py +37 -0
  236. devopness-0.0.0/src/devopness/generated/models/permission_relation.py +55 -0
  237. devopness-0.0.0/src/devopness/generated/models/pipeline.py +122 -0
  238. devopness-0.0.0/src/devopness/generated/models/pipeline_create.py +59 -0
  239. devopness-0.0.0/src/devopness/generated/models/pipeline_relation.py +104 -0
  240. devopness-0.0.0/src/devopness/generated/models/pipeline_settings.py +72 -0
  241. devopness-0.0.0/src/devopness/generated/models/pipeline_settings_stage.py +44 -0
  242. devopness-0.0.0/src/devopness/generated/models/pipeline_settings_variable.py +50 -0
  243. devopness-0.0.0/src/devopness/generated/models/pipeline_step_runner_name.py +38 -0
  244. devopness-0.0.0/src/devopness/generated/models/pipeline_trigger_when.py +47 -0
  245. devopness-0.0.0/src/devopness/generated/models/pipeline_update.py +57 -0
  246. devopness-0.0.0/src/devopness/generated/models/project.py +94 -0
  247. devopness-0.0.0/src/devopness/generated/models/project_create.py +54 -0
  248. devopness-0.0.0/src/devopness/generated/models/project_relation.py +100 -0
  249. devopness-0.0.0/src/devopness/generated/models/project_update.py +52 -0
  250. devopness-0.0.0/src/devopness/generated/models/provider_code.py +42 -0
  251. devopness-0.0.0/src/devopness/generated/models/provider_input_settings.py +64 -0
  252. devopness-0.0.0/src/devopness/generated/models/provider_input_settings_validation.py +48 -0
  253. devopness-0.0.0/src/devopness/generated/models/provider_relation.py +65 -0
  254. devopness-0.0.0/src/devopness/generated/models/provider_settings.py +65 -0
  255. devopness-0.0.0/src/devopness/generated/models/provider_type.py +32 -0
  256. devopness-0.0.0/src/devopness/generated/models/provider_type_list_inner.py +38 -0
  257. devopness-0.0.0/src/devopness/generated/models/related_action.py +89 -0
  258. devopness-0.0.0/src/devopness/generated/models/repository.py +74 -0
  259. devopness-0.0.0/src/devopness/generated/models/repository_branch.py +50 -0
  260. devopness-0.0.0/src/devopness/generated/models/repository_relation.py +50 -0
  261. devopness-0.0.0/src/devopness/generated/models/repository_tag.py +45 -0
  262. devopness-0.0.0/src/devopness/generated/models/repository_tag_commit.py +42 -0
  263. devopness-0.0.0/src/devopness/generated/models/request_relation.py +66 -0
  264. devopness-0.0.0/src/devopness/generated/models/resource_event.py +51 -0
  265. devopness-0.0.0/src/devopness/generated/models/resource_event_relation.py +61 -0
  266. devopness-0.0.0/src/devopness/generated/models/resource_link_child.py +63 -0
  267. devopness-0.0.0/src/devopness/generated/models/resource_link_relation.py +76 -0
  268. devopness-0.0.0/src/devopness/generated/models/resource_operation.py +48 -0
  269. devopness-0.0.0/src/devopness/generated/models/resource_summary_item.py +63 -0
  270. devopness-0.0.0/src/devopness/generated/models/resource_summary_item_summary.py +38 -0
  271. devopness-0.0.0/src/devopness/generated/models/resource_to_be_linked.py +40 -0
  272. devopness-0.0.0/src/devopness/generated/models/resource_type.py +54 -0
  273. devopness-0.0.0/src/devopness/generated/models/resource_type_related.py +59 -0
  274. devopness-0.0.0/src/devopness/generated/models/resource_type_relation.py +91 -0
  275. devopness-0.0.0/src/devopness/generated/models/role.py +78 -0
  276. devopness-0.0.0/src/devopness/generated/models/role_project_create.py +50 -0
  277. devopness-0.0.0/src/devopness/generated/models/role_relation.py +68 -0
  278. devopness-0.0.0/src/devopness/generated/models/role_update.py +53 -0
  279. devopness-0.0.0/src/devopness/generated/models/script_runner.py +43 -0
  280. devopness-0.0.0/src/devopness/generated/models/server.py +189 -0
  281. devopness-0.0.0/src/devopness/generated/models/server_blueprint.py +64 -0
  282. devopness-0.0.0/src/devopness/generated/models/server_blueprint_spec.py +48 -0
  283. devopness-0.0.0/src/devopness/generated/models/server_cloud_service_code.py +38 -0
  284. devopness-0.0.0/src/devopness/generated/models/server_command.py +37 -0
  285. devopness-0.0.0/src/devopness/generated/models/server_environment_create.py +100 -0
  286. devopness-0.0.0/src/devopness/generated/models/server_options.py +47 -0
  287. devopness-0.0.0/src/devopness/generated/models/server_provision_input.py +64 -0
  288. devopness-0.0.0/src/devopness/generated/models/server_provision_input_settings.py +49 -0
  289. devopness-0.0.0/src/devopness/generated/models/server_relation.py +116 -0
  290. devopness-0.0.0/src/devopness/generated/models/server_status.py +44 -0
  291. devopness-0.0.0/src/devopness/generated/models/server_update.py +58 -0
  292. devopness-0.0.0/src/devopness/generated/models/service.py +135 -0
  293. devopness-0.0.0/src/devopness/generated/models/service_environment_create.py +77 -0
  294. devopness-0.0.0/src/devopness/generated/models/service_get_status.py +38 -0
  295. devopness-0.0.0/src/devopness/generated/models/service_initial_state.py +32 -0
  296. devopness-0.0.0/src/devopness/generated/models/service_options.py +45 -0
  297. devopness-0.0.0/src/devopness/generated/models/service_relation.py +96 -0
  298. devopness-0.0.0/src/devopness/generated/models/service_reload.py +38 -0
  299. devopness-0.0.0/src/devopness/generated/models/service_restart.py +38 -0
  300. devopness-0.0.0/src/devopness/generated/models/service_start.py +38 -0
  301. devopness-0.0.0/src/devopness/generated/models/service_stop.py +38 -0
  302. devopness-0.0.0/src/devopness/generated/models/service_type.py +46 -0
  303. devopness-0.0.0/src/devopness/generated/models/service_update.py +35 -0
  304. devopness-0.0.0/src/devopness/generated/models/social_account.py +86 -0
  305. devopness-0.0.0/src/devopness/generated/models/social_account_create.py +47 -0
  306. devopness-0.0.0/src/devopness/generated/models/social_account_displayable_name.py +38 -0
  307. devopness-0.0.0/src/devopness/generated/models/social_account_provider.py +38 -0
  308. devopness-0.0.0/src/devopness/generated/models/social_account_relation.py +86 -0
  309. devopness-0.0.0/src/devopness/generated/models/social_account_status.py +41 -0
  310. devopness-0.0.0/src/devopness/generated/models/source_provider_displayable_name.py +34 -0
  311. devopness-0.0.0/src/devopness/generated/models/source_provider_name.py +34 -0
  312. devopness-0.0.0/src/devopness/generated/models/source_type.py +34 -0
  313. devopness-0.0.0/src/devopness/generated/models/ssh_key.py +112 -0
  314. devopness-0.0.0/src/devopness/generated/models/ssh_key_environment_create.py +56 -0
  315. devopness-0.0.0/src/devopness/generated/models/ssh_key_relation.py +82 -0
  316. devopness-0.0.0/src/devopness/generated/models/ssh_key_update.py +40 -0
  317. devopness-0.0.0/src/devopness/generated/models/ssl_certificate.py +113 -0
  318. devopness-0.0.0/src/devopness/generated/models/ssl_certificate_environment_create.py +81 -0
  319. devopness-0.0.0/src/devopness/generated/models/ssl_certificate_issuer.py +32 -0
  320. devopness-0.0.0/src/devopness/generated/models/ssl_certificate_relation.py +104 -0
  321. devopness-0.0.0/src/devopness/generated/models/ssl_certificate_type.py +34 -0
  322. devopness-0.0.0/src/devopness/generated/models/ssl_certificate_validation_level.py +34 -0
  323. devopness-0.0.0/src/devopness/generated/models/static_billing_info.py +47 -0
  324. devopness-0.0.0/src/devopness/generated/models/static_cloud_provider_code.py +36 -0
  325. devopness-0.0.0/src/devopness/generated/models/static_cron_job_frequency.py +50 -0
  326. devopness-0.0.0/src/devopness/generated/models/static_environment_type.py +45 -0
  327. devopness-0.0.0/src/devopness/generated/models/static_network_rule_direction.py +52 -0
  328. devopness-0.0.0/src/devopness/generated/models/static_network_rule_protocol.py +59 -0
  329. devopness-0.0.0/src/devopness/generated/models/static_network_rule_protocol_defaults.py +36 -0
  330. devopness-0.0.0/src/devopness/generated/models/static_permission.py +51 -0
  331. devopness-0.0.0/src/devopness/generated/models/static_service_type.py +69 -0
  332. devopness-0.0.0/src/devopness/generated/models/static_service_type_supported_versions_inner.py +52 -0
  333. devopness-0.0.0/src/devopness/generated/models/static_virtual_host_type.py +52 -0
  334. devopness-0.0.0/src/devopness/generated/models/step.py +103 -0
  335. devopness-0.0.0/src/devopness/generated/models/step_pipeline_create.py +75 -0
  336. devopness-0.0.0/src/devopness/generated/models/step_pipeline_update.py +84 -0
  337. devopness-0.0.0/src/devopness/generated/models/subnet.py +127 -0
  338. devopness-0.0.0/src/devopness/generated/models/subnet_network_create.py +59 -0
  339. devopness-0.0.0/src/devopness/generated/models/subnet_provision_input.py +43 -0
  340. devopness-0.0.0/src/devopness/generated/models/subnet_provision_input_settings.py +43 -0
  341. devopness-0.0.0/src/devopness/generated/models/subnet_provision_input_settings_aws.py +52 -0
  342. devopness-0.0.0/src/devopness/generated/models/subnet_provision_input_settings_azure.py +47 -0
  343. devopness-0.0.0/src/devopness/generated/models/subnet_provision_input_settings_digital_ocean.py +46 -0
  344. devopness-0.0.0/src/devopness/generated/models/subnet_provision_input_settings_gcp.py +46 -0
  345. devopness-0.0.0/src/devopness/generated/models/subnet_relation.py +92 -0
  346. devopness-0.0.0/src/devopness/generated/models/subnet_type.py +28 -0
  347. devopness-0.0.0/src/devopness/generated/models/subscription.py +119 -0
  348. devopness-0.0.0/src/devopness/generated/models/subscription_balance.py +68 -0
  349. devopness-0.0.0/src/devopness/generated/models/subscription_plan.py +41 -0
  350. devopness-0.0.0/src/devopness/generated/models/team.py +74 -0
  351. devopness-0.0.0/src/devopness/generated/models/team_environment_link.py +37 -0
  352. devopness-0.0.0/src/devopness/generated/models/team_invitation_relation.py +116 -0
  353. devopness-0.0.0/src/devopness/generated/models/team_invitation_status.py +34 -0
  354. devopness-0.0.0/src/devopness/generated/models/team_membership_relation.py +62 -0
  355. devopness-0.0.0/src/devopness/generated/models/team_project_create.py +43 -0
  356. devopness-0.0.0/src/devopness/generated/models/team_relation.py +52 -0
  357. devopness-0.0.0/src/devopness/generated/models/team_update.py +46 -0
  358. devopness-0.0.0/src/devopness/generated/models/trigger_event.py +40 -0
  359. devopness-0.0.0/src/devopness/generated/models/trigger_when_condition.py +71 -0
  360. devopness-0.0.0/src/devopness/generated/models/trigger_when_condition_accepted_values_inner.py +21 -0
  361. devopness-0.0.0/src/devopness/generated/models/trigger_when_condition_type.py +28 -0
  362. devopness-0.0.0/src/devopness/generated/models/triggered_action_stats.py +63 -0
  363. devopness-0.0.0/src/devopness/generated/models/triggered_action_summary.py +68 -0
  364. devopness-0.0.0/src/devopness/generated/models/triggered_actions.py +55 -0
  365. devopness-0.0.0/src/devopness/generated/models/user.py +82 -0
  366. devopness-0.0.0/src/devopness/generated/models/user_activity.py +67 -0
  367. devopness-0.0.0/src/devopness/generated/models/user_billing.py +41 -0
  368. devopness-0.0.0/src/devopness/generated/models/user_create.py +37 -0
  369. devopness-0.0.0/src/devopness/generated/models/user_environment_stats.py +45 -0
  370. devopness-0.0.0/src/devopness/generated/models/user_login.py +40 -0
  371. devopness-0.0.0/src/devopness/generated/models/user_login_response.py +50 -0
  372. devopness-0.0.0/src/devopness/generated/models/user_me.py +82 -0
  373. devopness-0.0.0/src/devopness/generated/models/user_profile_options.py +49 -0
  374. devopness-0.0.0/src/devopness/generated/models/user_project_stats.py +45 -0
  375. devopness-0.0.0/src/devopness/generated/models/user_refresh_token.py +37 -0
  376. devopness-0.0.0/src/devopness/generated/models/user_refresh_token_response.py +50 -0
  377. devopness-0.0.0/src/devopness/generated/models/user_relation.py +78 -0
  378. devopness-0.0.0/src/devopness/generated/models/user_resend_verification.py +37 -0
  379. devopness-0.0.0/src/devopness/generated/models/user_team_stats.py +45 -0
  380. devopness-0.0.0/src/devopness/generated/models/user_update.py +61 -0
  381. devopness-0.0.0/src/devopness/generated/models/user_url.py +37 -0
  382. devopness-0.0.0/src/devopness/generated/models/user_verify.py +59 -0
  383. devopness-0.0.0/src/devopness/generated/models/variable.py +109 -0
  384. devopness-0.0.0/src/devopness/generated/models/variable_application_create.py +73 -0
  385. devopness-0.0.0/src/devopness/generated/models/variable_create.py +73 -0
  386. devopness-0.0.0/src/devopness/generated/models/variable_relation.py +109 -0
  387. devopness-0.0.0/src/devopness/generated/models/variable_service_create.py +73 -0
  388. devopness-0.0.0/src/devopness/generated/models/variable_target.py +56 -0
  389. devopness-0.0.0/src/devopness/generated/models/variable_targets.py +53 -0
  390. devopness-0.0.0/src/devopness/generated/models/variable_type.py +32 -0
  391. devopness-0.0.0/src/devopness/generated/models/variable_update.py +76 -0
  392. devopness-0.0.0/src/devopness/generated/models/virtual_host.py +113 -0
  393. devopness-0.0.0/src/devopness/generated/models/virtual_host_environment_create.py +74 -0
  394. devopness-0.0.0/src/devopness/generated/models/virtual_host_get_status.py +38 -0
  395. devopness-0.0.0/src/devopness/generated/models/virtual_host_options.py +58 -0
  396. devopness-0.0.0/src/devopness/generated/models/virtual_host_relation.py +113 -0
  397. devopness-0.0.0/src/devopness/generated/models/virtual_host_type.py +32 -0
  398. devopness-0.0.0/src/devopness/generated/models/virtual_host_update.py +59 -0
  399. devopness-0.0.0/src/devopness/generated/utils.py +26 -0
  400. devopness-0.0.0/src/devopness/models.py +1317 -0
  401. devopness-0.0.0/src/devopness/py.typed +0 -0
  402. devopness-0.0.0/src/devopness/services/__init__.py +0 -0
  403. devopness-0.0.0/src/devopness/services/action_service.py +46 -0
  404. devopness-0.0.0/src/devopness/services/application_service.py +22 -0
  405. devopness-0.0.0/src/devopness/services/credential_service.py +28 -0
  406. devopness-0.0.0/src/devopness/services/cron_job_service.py +22 -0
  407. devopness-0.0.0/src/devopness/services/daemon_service.py +22 -0
  408. devopness-0.0.0/src/devopness/services/environment_service.py +46 -0
  409. devopness-0.0.0/src/devopness/services/hook_service.py +46 -0
  410. devopness-0.0.0/src/devopness/services/network_rule_service.py +22 -0
  411. devopness-0.0.0/src/devopness/services/network_service.py +22 -0
  412. devopness-0.0.0/src/devopness/services/organization_service.py +22 -0
  413. devopness-0.0.0/src/devopness/services/pipeline_service.py +28 -0
  414. devopness-0.0.0/src/devopness/services/project_service.py +34 -0
  415. devopness-0.0.0/src/devopness/services/resource_event_service.py +22 -0
  416. devopness-0.0.0/src/devopness/services/resource_link_service.py +22 -0
  417. devopness-0.0.0/src/devopness/services/role_service.py +28 -0
  418. devopness-0.0.0/src/devopness/services/server_service.py +22 -0
  419. devopness-0.0.0/src/devopness/services/service_service.py +22 -0
  420. devopness-0.0.0/src/devopness/services/social_account_service.py +22 -0
  421. devopness-0.0.0/src/devopness/services/ssh_key_service.py +22 -0
  422. devopness-0.0.0/src/devopness/services/ssl_certificate_service.py +22 -0
  423. devopness-0.0.0/src/devopness/services/static_service.py +22 -0
  424. devopness-0.0.0/src/devopness/services/subnet_service.py +28 -0
  425. devopness-0.0.0/src/devopness/services/team_service.py +90 -0
  426. devopness-0.0.0/src/devopness/services/user_service.py +28 -0
  427. devopness-0.0.0/src/devopness/services/variable_service.py +22 -0
  428. devopness-0.0.0/src/devopness/services/virtual_host_service.py +22 -0
@@ -0,0 +1,253 @@
1
+ Metadata-Version: 2.3
2
+ Name: devopness
3
+ Version: 0.0.0
4
+ Summary: Devopness API Python SDK - Painless essential DevOps to everyone
5
+ License: MIT
6
+ Keywords: API Client,Cloud Engineering,Cloud Infrastructure,Cloud Platform,Cloud Resource Management,Configuration Management,Deployment Automation,Devopness,DevOps,Infrastructure as Code,Platform Engineering,Python SDK,Server Management,Server Provisioning,Zero Downtime Deployment
7
+ Author: Devopness (https://www.devopness.com)
8
+ Requires-Python: >=3.11
9
+ Classifier: Development Status :: 2 - Pre-Alpha
10
+ Classifier: Environment :: Console
11
+ Classifier: Framework :: Pydantic
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Intended Audience :: System Administrators
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Topic :: Software Development
22
+ Classifier: Topic :: Software Development :: Libraries
23
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
24
+ Classifier: Topic :: System :: Systems Administration
25
+ Classifier: Topic :: Utilities
26
+ Requires-Dist: httpcore (>=1.0.9)
27
+ Requires-Dist: httpx (>=0.28.1,<0.29.0)
28
+ Requires-Dist: pydantic (>=2.11.3,<3.0.0)
29
+ Project-URL: Homepage, https://www.devopness.com
30
+ Project-URL: Repository, https://github.com/devopness/devopness
31
+ Description-Content-Type: text/markdown
32
+
33
+ # Devopness SDK - Python
34
+
35
+ The official Devopness SDK for Python.
36
+
37
+ This SDK provides predefined classes to access Devopness platform resources. It's suitable for building CLI tools, backend services, or automation scripts, helping you interact with the Devopness API.
38
+
39
+ ## 📌 Table of Contents
40
+
41
+ - [Status](#status)
42
+ - [Usage](#usage)
43
+
44
+ - [Install](#install)
45
+ - [Initializing](#initializing)
46
+ - [Custom Configuration](#custom-configuration)
47
+ - [Authenticating](#authenticating)
48
+ - [Asynchronous usage](#asynchronous-usage)
49
+ - [Synchronous usage](#synchronous-usage)
50
+ - [Invoking authentication-protected endpoints](#invoking-authentication-protected-endpoints)
51
+ - [Asynchronous usage](#asynchronous-usage-1)
52
+ - [Synchronous usage](#synchronous-usage-1)
53
+ - [Error Handling](#error-handling)
54
+ - [Development](#development)
55
+ - [With Docker](#with-docker)
56
+
57
+ ## Status
58
+
59
+ This SDK is in active development and not recommended for production use. Features, structure, and usage may change until a stable version is released.
60
+
61
+ ## Usage
62
+
63
+ The SDK supports both asynchronous and synchronous usage, so you can choose based on your needs.
64
+
65
+ ### Install
66
+
67
+ Install the SDK using your preferred package manager:
68
+
69
+ ```bash
70
+ # Using uv
71
+ uv add devopness
72
+
73
+ # Using poetry
74
+ poetry add devopness
75
+
76
+ # Using pip
77
+ pip install devopness
78
+ ```
79
+
80
+ ### Initializing
81
+
82
+ Import the SDK and create an instance of `DevopnessClient` or `DevopnessClientAsync`:
83
+
84
+ ```python
85
+ from devopness import DevopnessClient, DevopnessClientAsync
86
+
87
+ devopness = DevopnessClient()
88
+ devopness_async = DevopnessClientAsync()
89
+ ```
90
+
91
+ ### Custom Configuration
92
+
93
+ You can provide a custom configuration when initializing the client:
94
+
95
+ ```python
96
+ from devopness import DevopnessClient, DevopnessClientAsync, DevopnessClientConfig
97
+
98
+ config = DevopnessClientConfig(base_url='https://api.devopness.com', timeout=10)
99
+
100
+ devopness = DevopnessClient(config)
101
+ devopness_async = DevopnessClientAsync(config)
102
+ ```
103
+
104
+ Configuration options:
105
+
106
+ | Parameter | Default | Description |
107
+ | -------------------- | --------------------------- | --------------------------------------------------- |
108
+ | `auto_refresh_token` | `True` | Whether the access token is automatically refreshed |
109
+ | `base_url` | `https://api.devopness.com` | Base URL for all API requests |
110
+ | `timeout` | `30` | Timeout for HTTP requests (in seconds) |
111
+ | `default_encoding` | `utf-8` | Encoding for response content |
112
+
113
+ ### Authenticating
114
+
115
+ To authenticate, invoke the `login_user` method on the `users` service.
116
+
117
+ #### Asynchronous usage
118
+
119
+ ```python
120
+ import asyncio
121
+
122
+ from devopness import DevopnessClientAsync
123
+ from devopness.models import UserLogin
124
+
125
+ devopness = DevopnessClientAsync({'auto_refresh_token': False})
126
+
127
+ async def authenticate(user_email, user_pass):
128
+ user_data = UserLogin(email=user_email, password=user_pass)
129
+ user_tokens = await devopness.users.login_user(user_data)
130
+
131
+ # The `access_token` must be set every time a token is obtained or refreshed,
132
+ # if the `auto_refresh_token` option is set to `False`.
133
+ devopness.access_token = user_tokens.data.access_token
134
+
135
+ if __name__ == "__main__":
136
+ asyncio.run(authenticate('user@email.com', 'secret-password'))
137
+ ```
138
+
139
+ #### Synchronous usage
140
+
141
+ ```python
142
+ from devopness import DevopnessClient
143
+ from devopness.models import UserLogin
144
+
145
+ devopness = DevopnessClient({'auto_refresh_token': False})
146
+
147
+ def authenticate(user_email, user_pass):
148
+ user_data = UserLogin(email=user_email, password=user_pass)
149
+ user_tokens = devopness.users.login_user(user_data)
150
+
151
+ # The `access_token` must be set every time a token is obtained or refreshed,
152
+ # if the `auto_refresh_token` option is set to `False`.
153
+ devopness.access_token = user_tokens.data.access_token
154
+
155
+ if __name__ == "__main__":
156
+ authenticate('user@email.com', 'secret-password')
157
+ ```
158
+
159
+ ### Invoking authentication-protected endpoints
160
+
161
+ Once authenticated, you can invoke protected endpoints like retrieving user details.
162
+
163
+ #### Asynchronous usage
164
+
165
+ ```python
166
+ import asyncio
167
+
168
+ from devopness import DevopnessClientAsync
169
+ from devopness.models import UserLogin
170
+
171
+ devopness = DevopnessClientAsync()
172
+
173
+ async def authenticate(user_email, user_pass):
174
+ user_data = UserLogin(email=user_email, password=user_pass)
175
+ await devopness.users.login_user(user_data)
176
+
177
+ async def get_user_profile():
178
+ await authenticate('user@email.com', 'secret-password')
179
+ current_user = await devopness.users.get_user_me()
180
+ print(f'User ID: {current_user.data.id}')
181
+
182
+ if __name__ == "__main__":
183
+ asyncio.run(get_user_profile())
184
+ ```
185
+
186
+ #### Synchronous usage
187
+
188
+ ```python
189
+ from devopness import DevopnessClient
190
+ from devopness.models import UserLogin
191
+
192
+ devopness = DevopnessClient()
193
+
194
+ def authenticate(user_email, user_pass):
195
+ user_data = UserLogin(email=user_email, password=user_pass)
196
+ devopness.users.login_user(user_data)
197
+
198
+ def get_user_profile():
199
+ authenticate('user@email.com', 'secret-password')
200
+ current_user = devopness.users.get_user_me()
201
+ print(f'User ID: {current_user.data.id}')
202
+
203
+ if __name__ == "__main__":
204
+ get_user_profile()
205
+ ```
206
+
207
+ ### Error Handling
208
+
209
+ The SDK provides structured error handling through exceptions:
210
+
211
+ - `DevopnessApiError`: This exception is raised when the Devopness API returns an error response. This typically indicates issues with the request itself, such as invalid input data, unauthorized access, or resource not found. It provides the following attributes to help diagnose the error:
212
+
213
+ | Attribute | Description |
214
+ | ----------- | ------------------------------------------------------------------------------------------------------------------ |
215
+ | status_code | The HTTP status code returned by the API |
216
+ | message | A general error message from the API |
217
+ | errors | An optional dictionary containing detailed validation errors, often encountered during create or update operations |
218
+
219
+ - `DevopnessNetworkError`: This exception is raised when a generic network-related issue occurs during the communication with the Devopness API. This could be due to problems like an unreachable host, connection timeouts, or other network configuration errors.
220
+
221
+ Both exceptions inherit from `DevopnessSdkError`, the base class for all SDK exceptions. You can use this class to catch and handle all exceptions raised by the SDK.
222
+
223
+ ## Development
224
+
225
+ To build the SDK locally, use Docker:
226
+
227
+ ### With Docker
228
+
229
+ #### Prerequisites
230
+
231
+ - [Docker](https://www.docker.com/products/docker-desktop/)
232
+ - [Make](https://www.gnu.org/software/make/)
233
+
234
+ #### Steps
235
+
236
+ 1. Navigate to the project directory:
237
+
238
+ ```shell
239
+ cd packages/sdks/python/
240
+ ```
241
+
242
+ 1. Build the Docker image:
243
+
244
+ ```shell
245
+ make build-image
246
+ ```
247
+
248
+ 1. Build the Python SDK:
249
+
250
+ ```shell
251
+ make build-sdk-python
252
+ ```
253
+
@@ -0,0 +1,220 @@
1
+ # Devopness SDK - Python
2
+
3
+ The official Devopness SDK for Python.
4
+
5
+ This SDK provides predefined classes to access Devopness platform resources. It's suitable for building CLI tools, backend services, or automation scripts, helping you interact with the Devopness API.
6
+
7
+ ## 📌 Table of Contents
8
+
9
+ - [Status](#status)
10
+ - [Usage](#usage)
11
+
12
+ - [Install](#install)
13
+ - [Initializing](#initializing)
14
+ - [Custom Configuration](#custom-configuration)
15
+ - [Authenticating](#authenticating)
16
+ - [Asynchronous usage](#asynchronous-usage)
17
+ - [Synchronous usage](#synchronous-usage)
18
+ - [Invoking authentication-protected endpoints](#invoking-authentication-protected-endpoints)
19
+ - [Asynchronous usage](#asynchronous-usage-1)
20
+ - [Synchronous usage](#synchronous-usage-1)
21
+ - [Error Handling](#error-handling)
22
+ - [Development](#development)
23
+ - [With Docker](#with-docker)
24
+
25
+ ## Status
26
+
27
+ This SDK is in active development and not recommended for production use. Features, structure, and usage may change until a stable version is released.
28
+
29
+ ## Usage
30
+
31
+ The SDK supports both asynchronous and synchronous usage, so you can choose based on your needs.
32
+
33
+ ### Install
34
+
35
+ Install the SDK using your preferred package manager:
36
+
37
+ ```bash
38
+ # Using uv
39
+ uv add devopness
40
+
41
+ # Using poetry
42
+ poetry add devopness
43
+
44
+ # Using pip
45
+ pip install devopness
46
+ ```
47
+
48
+ ### Initializing
49
+
50
+ Import the SDK and create an instance of `DevopnessClient` or `DevopnessClientAsync`:
51
+
52
+ ```python
53
+ from devopness import DevopnessClient, DevopnessClientAsync
54
+
55
+ devopness = DevopnessClient()
56
+ devopness_async = DevopnessClientAsync()
57
+ ```
58
+
59
+ ### Custom Configuration
60
+
61
+ You can provide a custom configuration when initializing the client:
62
+
63
+ ```python
64
+ from devopness import DevopnessClient, DevopnessClientAsync, DevopnessClientConfig
65
+
66
+ config = DevopnessClientConfig(base_url='https://api.devopness.com', timeout=10)
67
+
68
+ devopness = DevopnessClient(config)
69
+ devopness_async = DevopnessClientAsync(config)
70
+ ```
71
+
72
+ Configuration options:
73
+
74
+ | Parameter | Default | Description |
75
+ | -------------------- | --------------------------- | --------------------------------------------------- |
76
+ | `auto_refresh_token` | `True` | Whether the access token is automatically refreshed |
77
+ | `base_url` | `https://api.devopness.com` | Base URL for all API requests |
78
+ | `timeout` | `30` | Timeout for HTTP requests (in seconds) |
79
+ | `default_encoding` | `utf-8` | Encoding for response content |
80
+
81
+ ### Authenticating
82
+
83
+ To authenticate, invoke the `login_user` method on the `users` service.
84
+
85
+ #### Asynchronous usage
86
+
87
+ ```python
88
+ import asyncio
89
+
90
+ from devopness import DevopnessClientAsync
91
+ from devopness.models import UserLogin
92
+
93
+ devopness = DevopnessClientAsync({'auto_refresh_token': False})
94
+
95
+ async def authenticate(user_email, user_pass):
96
+ user_data = UserLogin(email=user_email, password=user_pass)
97
+ user_tokens = await devopness.users.login_user(user_data)
98
+
99
+ # The `access_token` must be set every time a token is obtained or refreshed,
100
+ # if the `auto_refresh_token` option is set to `False`.
101
+ devopness.access_token = user_tokens.data.access_token
102
+
103
+ if __name__ == "__main__":
104
+ asyncio.run(authenticate('user@email.com', 'secret-password'))
105
+ ```
106
+
107
+ #### Synchronous usage
108
+
109
+ ```python
110
+ from devopness import DevopnessClient
111
+ from devopness.models import UserLogin
112
+
113
+ devopness = DevopnessClient({'auto_refresh_token': False})
114
+
115
+ def authenticate(user_email, user_pass):
116
+ user_data = UserLogin(email=user_email, password=user_pass)
117
+ user_tokens = devopness.users.login_user(user_data)
118
+
119
+ # The `access_token` must be set every time a token is obtained or refreshed,
120
+ # if the `auto_refresh_token` option is set to `False`.
121
+ devopness.access_token = user_tokens.data.access_token
122
+
123
+ if __name__ == "__main__":
124
+ authenticate('user@email.com', 'secret-password')
125
+ ```
126
+
127
+ ### Invoking authentication-protected endpoints
128
+
129
+ Once authenticated, you can invoke protected endpoints like retrieving user details.
130
+
131
+ #### Asynchronous usage
132
+
133
+ ```python
134
+ import asyncio
135
+
136
+ from devopness import DevopnessClientAsync
137
+ from devopness.models import UserLogin
138
+
139
+ devopness = DevopnessClientAsync()
140
+
141
+ async def authenticate(user_email, user_pass):
142
+ user_data = UserLogin(email=user_email, password=user_pass)
143
+ await devopness.users.login_user(user_data)
144
+
145
+ async def get_user_profile():
146
+ await authenticate('user@email.com', 'secret-password')
147
+ current_user = await devopness.users.get_user_me()
148
+ print(f'User ID: {current_user.data.id}')
149
+
150
+ if __name__ == "__main__":
151
+ asyncio.run(get_user_profile())
152
+ ```
153
+
154
+ #### Synchronous usage
155
+
156
+ ```python
157
+ from devopness import DevopnessClient
158
+ from devopness.models import UserLogin
159
+
160
+ devopness = DevopnessClient()
161
+
162
+ def authenticate(user_email, user_pass):
163
+ user_data = UserLogin(email=user_email, password=user_pass)
164
+ devopness.users.login_user(user_data)
165
+
166
+ def get_user_profile():
167
+ authenticate('user@email.com', 'secret-password')
168
+ current_user = devopness.users.get_user_me()
169
+ print(f'User ID: {current_user.data.id}')
170
+
171
+ if __name__ == "__main__":
172
+ get_user_profile()
173
+ ```
174
+
175
+ ### Error Handling
176
+
177
+ The SDK provides structured error handling through exceptions:
178
+
179
+ - `DevopnessApiError`: This exception is raised when the Devopness API returns an error response. This typically indicates issues with the request itself, such as invalid input data, unauthorized access, or resource not found. It provides the following attributes to help diagnose the error:
180
+
181
+ | Attribute | Description |
182
+ | ----------- | ------------------------------------------------------------------------------------------------------------------ |
183
+ | status_code | The HTTP status code returned by the API |
184
+ | message | A general error message from the API |
185
+ | errors | An optional dictionary containing detailed validation errors, often encountered during create or update operations |
186
+
187
+ - `DevopnessNetworkError`: This exception is raised when a generic network-related issue occurs during the communication with the Devopness API. This could be due to problems like an unreachable host, connection timeouts, or other network configuration errors.
188
+
189
+ Both exceptions inherit from `DevopnessSdkError`, the base class for all SDK exceptions. You can use this class to catch and handle all exceptions raised by the SDK.
190
+
191
+ ## Development
192
+
193
+ To build the SDK locally, use Docker:
194
+
195
+ ### With Docker
196
+
197
+ #### Prerequisites
198
+
199
+ - [Docker](https://www.docker.com/products/docker-desktop/)
200
+ - [Make](https://www.gnu.org/software/make/)
201
+
202
+ #### Steps
203
+
204
+ 1. Navigate to the project directory:
205
+
206
+ ```shell
207
+ cd packages/sdks/python/
208
+ ```
209
+
210
+ 1. Build the Docker image:
211
+
212
+ ```shell
213
+ make build-image
214
+ ```
215
+
216
+ 1. Build the Python SDK:
217
+
218
+ ```shell
219
+ make build-sdk-python
220
+ ```
@@ -0,0 +1,142 @@
1
+ [build-system]
2
+ requires = ["poetry-core>=2.0.0,<3.0.0"]
3
+ build-backend = "poetry.core.masonry.api"
4
+
5
+ [project]
6
+ name = "devopness"
7
+ version = "0.0.0"
8
+ description = "Devopness API Python SDK - Painless essential DevOps to everyone"
9
+ license = "MIT"
10
+ readme = "README.md"
11
+ requires-python = ">=3.11"
12
+ authors = [{ name = "Devopness (https://www.devopness.com)" }]
13
+ keywords = [
14
+ "API Client",
15
+ "Cloud Engineering",
16
+ "Cloud Infrastructure",
17
+ "Cloud Platform",
18
+ "Cloud Resource Management",
19
+ "Configuration Management",
20
+ "Deployment Automation",
21
+ "Devopness",
22
+ "DevOps",
23
+ "Infrastructure as Code",
24
+ "Platform Engineering",
25
+ "Python SDK",
26
+ "Server Management",
27
+ "Server Provisioning",
28
+ "Zero Downtime Deployment",
29
+ ]
30
+ classifiers = [
31
+ "Development Status :: 2 - Pre-Alpha",
32
+ "Environment :: Console",
33
+ "Framework :: Pydantic",
34
+ "Intended Audience :: Developers",
35
+ "Intended Audience :: System Administrators",
36
+ "License :: OSI Approved :: MIT License",
37
+ "Operating System :: OS Independent",
38
+ "Programming Language :: Python",
39
+ "Programming Language :: Python :: 3",
40
+ "Programming Language :: Python :: 3.11",
41
+ "Programming Language :: Python :: 3.12",
42
+ "Programming Language :: Python :: 3.13",
43
+ "Topic :: Software Development",
44
+ "Topic :: Software Development :: Libraries",
45
+ "Topic :: Software Development :: Libraries :: Python Modules",
46
+ "Topic :: System :: Systems Administration",
47
+ "Topic :: Utilities",
48
+ ]
49
+ dependencies = [
50
+ # Explicitly added `httpcore` to ensure a secure version of h11 is used.
51
+ # httpcore is a transitive dependency of httpx (which allows any 1.*),
52
+ # but only httpcore >=1.0.9 guarantees h11 >=0.16 with the security fix.
53
+ # Related issue: https://github.com/devopness/devopness/security/dependabot/63
54
+ "httpcore (>=1.0.9)",
55
+ "httpx (>=0.28.1,<0.29.0)",
56
+ "pydantic (>=2.11.3,<3.0.0)",
57
+ ]
58
+
59
+ [project.urls]
60
+ homepage = "https://www.devopness.com"
61
+ repository = "https://github.com/devopness/devopness"
62
+
63
+ [tool.poetry]
64
+ packages = [
65
+ { include = "devopness", from = "src", to = "." },
66
+ ]
67
+ exclude = ["src/devopness/generated/.openapi-generator-ignore"]
68
+
69
+ [tool.poetry.group.dev.dependencies]
70
+ openapi-generator-cli = { version = "7.12.0", markers = "python_version < '4.0'" }
71
+ ruff = "^0.11.6"
72
+ mypy = "1.15.0"
73
+
74
+ [tool.ruff]
75
+ line-length = 88
76
+ target-version = "py311"
77
+
78
+ [tool.ruff.lint]
79
+ preview = true
80
+
81
+ extend-select = [
82
+ "A", # flake8-builtins (avoid shadowing built-ins)
83
+ "ANN", # flake8-annotations (type hints for public APIs)
84
+ "B", # flake8-bugbear (common bugs and best practices)
85
+ "E", # pycodestyle (error)
86
+ "F", # pyflakes (basic errors)
87
+ "I", # isort (import sorting)
88
+ "N", # pep8-naming
89
+ "PIE", # flake8-pie (extra cleanups)
90
+ "PLC", # pylint conventions
91
+ "PLE", # pylint errors
92
+ "PLW", # pylint warnings
93
+ "Q", # flake8-quotes (quote consistency)
94
+ "RET", # flake8-return (return statement rules)
95
+ "RUF", # Ruff-specific rules
96
+ "S", # flake8-bandit (security rules)
97
+ "SIM", # flake8-simplify
98
+ "W", # pycodestyle (warning)
99
+ ]
100
+
101
+ ignore = [
102
+ "PLC2701", # Private name import `*` from external module `*`
103
+ "RET504", # Unnecessary assignment to `**kwargs` before `return` statement
104
+ ]
105
+
106
+ [tool.ruff.lint.per-file-ignores]
107
+ "src/devopness/generated/**/*" = [
108
+ "E501", # Line too long
109
+ ]
110
+ "src/devopness/generated/**/__init__.py" = [
111
+ "F401", # Module imported but unused
112
+ ]
113
+ "scripts/**/*" = [
114
+ "ANN", # flake8-annotations
115
+ "S404", # `subprocess` module is possibly insecure
116
+ "S602", # `subprocess` call with `shell=True` identified, security issue
117
+ ]
118
+ "tests/**/*" = [
119
+ "ANN", # flake8-annotations
120
+ "E501", # Line too long
121
+ "S101", # Use of `assert` detected
122
+ ]
123
+
124
+ [tool.ruff.lint.isort]
125
+ known-first-party = ["devopness"]
126
+ case-sensitive = true
127
+
128
+ [tool.mypy]
129
+ python_version = "3.11"
130
+
131
+ strict = true
132
+ disallow_any_unimported = true
133
+ strict_optional = true
134
+ warn_no_return = true
135
+ warn_unreachable = true
136
+
137
+ sqlite_cache = true
138
+ cache_fine_grained = true
139
+
140
+ [[tool.mypy.overrides]]
141
+ module = "devopness.generated.api.*"
142
+ disable_error_code = ["attr-defined"]
@@ -0,0 +1,12 @@
1
+ """
2
+ Devopness API Python SDK - Painless essential DevOps to everyone
3
+ """
4
+
5
+ from .client import DevopnessClient, DevopnessClientAsync
6
+ from .client_config import DevopnessClientConfig
7
+
8
+ __all__ = [
9
+ "DevopnessClient",
10
+ "DevopnessClientAsync",
11
+ "DevopnessClientConfig",
12
+ ]
@@ -0,0 +1,12 @@
1
+ """
2
+ Devopness API Python SDK - Painless essential DevOps to everyone
3
+ """
4
+
5
+ from .base_model import DevopnessBaseModel
6
+ from .base_service import DevopnessBaseService, DevopnessBaseServiceAsync
7
+
8
+ __all__ = [
9
+ "DevopnessBaseModel",
10
+ "DevopnessBaseService",
11
+ "DevopnessBaseServiceAsync",
12
+ ]