datadog_api_client 1.11.0 → 2.0.2

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 (292) hide show
  1. checksums.yaml +4 -4
  2. data/.apigentools-info +4 -4
  3. data/.generator/conftest.py +2 -1
  4. data/.generator/schemas/v1/openapi.yaml +293 -116
  5. data/.generator/schemas/v2/openapi.yaml +1156 -41
  6. data/.generator/src/generator/cli.py +57 -40
  7. data/.generator/src/generator/openapi.py +12 -6
  8. data/.generator/src/generator/templates/api.j2 +14 -13
  9. data/.generator/src/generator/templates/api_client.j2 +63 -11
  10. data/.generator/src/generator/templates/configuration.j2 +12 -8
  11. data/.generator/src/generator/templates/example.j2 +6 -1
  12. data/.generator/src/generator/templates/inflector.j2 +28 -0
  13. data/.generator/src/generator/templates/model_base.j2 +2 -2
  14. data/.generator/src/generator/templates/model_oneof.j2 +1 -1
  15. data/.generator/src/generator/templates/package.j2 +7 -12
  16. data/.github/workflows/approved_status.yml +0 -2
  17. data/.github/workflows/codeql-analysis.yml +49 -0
  18. data/.github/workflows/docs.yml +1 -1
  19. data/.github/workflows/prepare_release.yml +1 -1
  20. data/.github/workflows/publish.yml +1 -1
  21. data/.github/workflows/release.yml +1 -1
  22. data/.github/workflows/test.yml +4 -6
  23. data/.github/workflows/test_integration.yml +1 -1
  24. data/.pre-commit-config.yaml +3 -12
  25. data/CHANGELOG.md +44 -0
  26. data/Gemfile +1 -0
  27. data/Makefile +1 -2
  28. data/README.md +13 -13
  29. data/datadog_api_client.gemspec +2 -0
  30. data/examples/v1/downtimes/CreateDowntime_1393233946.rb +3 -0
  31. data/examples/v1/downtimes/CreateDowntime_2908359488.rb +3 -0
  32. data/examples/v1/downtimes/CreateDowntime_3059354445.rb +3 -0
  33. data/examples/v1/events/ListEvents.rb +1 -1
  34. data/examples/v1/pagerduty-integration/DeletePagerDutyIntegrationService.rb +2 -2
  35. data/examples/v1/service-level-objectives/GetSLOHistory.rb +1 -1
  36. data/examples/v1/service-level-objectives/SearchSLO.rb +1 -1
  37. data/examples/v1/synthetics/CreateSyntheticsBrowserTest_2932742688.rb +1 -1
  38. data/examples/v1/synthetics/GetAPITestLatestResults.rb +1 -1
  39. data/examples/v1/synthetics/GetAPITestResult.rb +1 -1
  40. data/examples/v1/synthetics/GetBrowserTestLatestResults.rb +1 -1
  41. data/examples/v1/synthetics/GetBrowserTestResult.rb +1 -1
  42. data/examples/v1/usage-metering/GetDailyCustomReports.rb +1 -1
  43. data/examples/v1/usage-metering/GetHourlyUsageAttribution.rb +0 -3
  44. data/examples/v1/usage-metering/GetMonthlyCustomReports.rb +1 -1
  45. data/examples/v1/usage-metering/GetMonthlyUsageAttribution.rb +0 -3
  46. data/examples/v1/usage-metering/GetSpecifiedDailyCustomReports.rb +1 -1
  47. data/examples/v1/usage-metering/GetSpecifiedMonthlyCustomReports.rb +1 -1
  48. data/examples/v1/usage-metering/GetUsageAttribution.rb +1 -1
  49. data/examples/v1/usage-metering/GetUsageCIApp.rb +2 -5
  50. data/examples/v1/usage-metering/GetUsageCIApp_1064440884.rb +8 -0
  51. data/examples/v1/usage-metering/GetUsageCWS.rb +2 -5
  52. data/examples/v1/usage-metering/GetUsageCWS_736958514.rb +8 -0
  53. data/examples/v1/usage-metering/GetUsageDBM.rb +2 -5
  54. data/examples/v1/usage-metering/GetUsageDBM_3446806203.rb +8 -0
  55. data/examples/v1/usage-metering/GetUsageLambda.rb +2 -5
  56. data/examples/v1/usage-metering/GetUsageLambda_3132428705.rb +8 -0
  57. data/examples/v1/usage-metering/GetUsageLogs.rb +2 -5
  58. data/examples/v1/usage-metering/GetUsageLogsByIndex.rb +2 -5
  59. data/examples/v1/usage-metering/GetUsageLogsByIndex_1025184776.rb +8 -0
  60. data/examples/v1/usage-metering/GetUsageLogs_2562396405.rb +8 -0
  61. data/examples/v1/usage-metering/GetUsageNetworkFlows.rb +2 -5
  62. data/examples/v1/usage-metering/GetUsageNetworkFlows_1239422069.rb +8 -0
  63. data/examples/v1/usage-metering/GetUsageNetworkHosts.rb +2 -5
  64. data/examples/v1/usage-metering/GetUsageNetworkHosts_1249907835.rb +8 -0
  65. data/examples/v1/usage-metering/GetUsageOnlineArchive.rb +2 -5
  66. data/examples/v1/usage-metering/GetUsageOnlineArchive_1501172903.rb +8 -0
  67. data/examples/v1/usage-metering/GetUsageRumSessions.rb +2 -5
  68. data/examples/v1/usage-metering/GetUsageRumSessions_714937291.rb +8 -0
  69. data/examples/v1/usage-metering/GetUsageRumUnits.rb +2 -5
  70. data/examples/v1/usage-metering/GetUsageRumUnits_3959755399.rb +8 -0
  71. data/examples/v1/usage-metering/GetUsageSDS.rb +2 -5
  72. data/examples/v1/usage-metering/GetUsageSDS_271128478.rb +8 -0
  73. data/examples/v1/usage-metering/GetUsageSynthetics.rb +1 -1
  74. data/examples/v1/usage-metering/GetUsageSyntheticsAPI.rb +2 -5
  75. data/examples/v1/usage-metering/GetUsageSyntheticsAPI_4048033529.rb +8 -0
  76. data/examples/v1/usage-metering/GetUsageSyntheticsBrowser.rb +2 -5
  77. data/examples/v1/usage-metering/GetUsageSyntheticsBrowser_1704663299.rb +8 -0
  78. data/examples/v2/audit/ListAuditLogs_1275402458.rb +8 -0
  79. data/examples/v2/audit/SearchAuditLogs_3215529662.rb +22 -0
  80. data/examples/v2/events/ListEvents.rb +8 -0
  81. data/examples/v2/events/ListEvents_1527584014.rb +13 -0
  82. data/examples/v2/events/ListEvents_2663715109.rb +14 -0
  83. data/examples/v2/events/SearchEvents.rb +23 -0
  84. data/examples/v2/events/SearchEvents_3856995058.rb +25 -0
  85. data/examples/v2/incident-services/CreateIncidentService.rb +1 -1
  86. data/examples/v2/incident-services/DeleteIncidentService.rb +1 -1
  87. data/examples/v2/incident-services/GetIncidentService.rb +1 -1
  88. data/examples/v2/incident-services/ListIncidentServices.rb +1 -1
  89. data/examples/v2/incident-services/UpdateIncidentService.rb +1 -1
  90. data/examples/v2/incident-teams/CreateIncidentTeam.rb +1 -1
  91. data/examples/v2/incident-teams/DeleteIncidentTeam.rb +1 -1
  92. data/examples/v2/incident-teams/GetIncidentTeam.rb +1 -1
  93. data/examples/v2/incident-teams/ListIncidentTeams.rb +1 -1
  94. data/examples/v2/incident-teams/UpdateIncidentTeam.rb +1 -1
  95. data/examples/v2/incidents/CreateIncident.rb +1 -1
  96. data/examples/v2/incidents/DeleteIncident.rb +1 -1
  97. data/examples/v2/incidents/GetIncident.rb +1 -1
  98. data/examples/v2/incidents/ListIncidents.rb +1 -1
  99. data/examples/v2/incidents/ListIncidents_2665616954.rb +11 -0
  100. data/examples/v2/incidents/UpdateIncident.rb +1 -1
  101. data/examples/v2/incidents/UpdateIncident_1009194038.rb +1 -1
  102. data/examples/v2/incidents/UpdateIncident_3369341440.rb +1 -1
  103. data/examples/v2/logs/ListLogsGet_738202670.rb +8 -0
  104. data/examples/v2/logs/ListLogs_3138392594.rb +25 -0
  105. data/examples/v2/metrics/SubmitMetrics.rb +6 -0
  106. data/examples/v2/processes/ListProcesses_797840471.rb +8 -0
  107. data/examples/v2/rum/ListRUMEvents_2680821282.rb +8 -0
  108. data/examples/v2/rum/SearchRUMEvents_574690310.rb +21 -0
  109. data/examples/v2/security-monitoring/EditSecurityMonitoringSignalAssignee.rb +15 -0
  110. data/examples/v2/security-monitoring/EditSecurityMonitoringSignalIncidents.rb +15 -0
  111. data/examples/v2/security-monitoring/EditSecurityMonitoringSignalState.rb +14 -0
  112. data/examples/v2/security-monitoring/ListSecurityMonitoringSignals_3960412991.rb +8 -0
  113. data/examples/v2/security-monitoring/SearchSecurityMonitoringSignals_1309350146.rb +20 -0
  114. data/examples/v2/security-monitoring/UpdateSecurityMonitoringRule.rb +1 -0
  115. data/examples/v2/usage-metering/GetEstimatedCostByOrg.rb +5 -2
  116. data/examples/v2/usage-metering/GetEstimatedCostByOrg_2734954020.rb +11 -0
  117. data/examples/v2/usage-metering/GetEstimatedCostByOrg_3186693804.rb +11 -0
  118. data/examples/v2/usage-metering/GetUsageApplicationSecurityMonitoring.rb +2 -5
  119. data/examples/v2/usage-metering/GetUsageApplicationSecurityMonitoring_3959166796.rb +8 -0
  120. data/examples/v2/usage-metering/GetUsageLambdaTracedInvocations.rb +2 -5
  121. data/examples/v2/usage-metering/GetUsageLambdaTracedInvocations_1436752065.rb +8 -0
  122. data/examples/v2/usage-metering/GetUsageObservabilityPipelines.rb +2 -5
  123. data/examples/v2/usage-metering/GetUsageObservabilityPipelines_970725512.rb +8 -0
  124. data/lib/datadog_api_client/{v2/api_client.rb → api_client.rb} +63 -11
  125. data/lib/datadog_api_client/api_key_configuration.rb +1 -18
  126. data/lib/datadog_api_client/{v1/configuration.rb → configuration.rb} +84 -31
  127. data/lib/datadog_api_client/inflector.rb +1293 -0
  128. data/lib/datadog_api_client/models.rb +66 -0
  129. data/lib/datadog_api_client/v1/api/authentication_api.rb +3 -11
  130. data/lib/datadog_api_client/v1/api/aws_integration_api.rb +19 -91
  131. data/lib/datadog_api_client/v1/api/aws_logs_integration_api.rb +15 -71
  132. data/lib/datadog_api_client/v1/api/azure_integration_api.rb +11 -51
  133. data/lib/datadog_api_client/v1/api/dashboard_lists_api.rb +11 -51
  134. data/lib/datadog_api_client/v1/api/dashboards_api.rb +15 -71
  135. data/lib/datadog_api_client/v1/api/downtimes_api.rb +15 -71
  136. data/lib/datadog_api_client/v1/api/events_api.rb +9 -33
  137. data/lib/datadog_api_client/v1/api/gcp_integration_api.rb +9 -41
  138. data/lib/datadog_api_client/v1/api/hosts_api.rb +9 -41
  139. data/lib/datadog_api_client/v1/api/ip_ranges_api.rb +3 -11
  140. data/lib/datadog_api_client/v1/api/key_management_api.rb +21 -101
  141. data/lib/datadog_api_client/v1/api/logs_api.rb +5 -21
  142. data/lib/datadog_api_client/v1/api/logs_indexes_api.rb +13 -61
  143. data/lib/datadog_api_client/v1/api/logs_pipelines_api.rb +15 -71
  144. data/lib/datadog_api_client/v1/api/metrics_api.rb +15 -71
  145. data/lib/datadog_api_client/v1/api/monitors_api.rb +21 -101
  146. data/lib/datadog_api_client/v1/api/notebooks_api.rb +11 -51
  147. data/lib/datadog_api_client/v1/api/organizations_api.rb +13 -61
  148. data/lib/datadog_api_client/v1/api/pager_duty_integration_api.rb +9 -41
  149. data/lib/datadog_api_client/v1/api/security_monitoring_api.rb +8 -32
  150. data/lib/datadog_api_client/v1/api/service_checks_api.rb +3 -11
  151. data/lib/datadog_api_client/v1/api/service_level_objective_corrections_api.rb +11 -51
  152. data/lib/datadog_api_client/v1/api/service_level_objectives_api.rb +31 -99
  153. data/lib/datadog_api_client/v1/api/slack_integration_api.rb +11 -51
  154. data/lib/datadog_api_client/v1/api/snapshots_api.rb +3 -11
  155. data/lib/datadog_api_client/v1/api/synthetics_api.rb +55 -271
  156. data/lib/datadog_api_client/v1/api/tags_api.rb +11 -51
  157. data/lib/datadog_api_client/v1/api/usage_metering_api.rb +171 -418
  158. data/lib/datadog_api_client/v1/api/users_api.rb +11 -51
  159. data/lib/datadog_api_client/v1/api/webhooks_integration_api.rb +17 -81
  160. data/lib/datadog_api_client/v1/model_base.rb +2 -2
  161. data/lib/datadog_api_client/v1/models/distribution_point_item.rb +1 -1
  162. data/lib/datadog_api_client/v1/models/distribution_widget_histogram_request_query.rb +1 -1
  163. data/lib/datadog_api_client/v1/models/formula_and_function_query_definition.rb +1 -1
  164. data/lib/datadog_api_client/v1/models/hourly_usage_attribution_body.rb +5 -1
  165. data/lib/datadog_api_client/v1/models/hourly_usage_attribution_usage_type.rb +7 -0
  166. data/lib/datadog_api_client/v1/models/logs_processor.rb +1 -1
  167. data/lib/datadog_api_client/v1/models/monitor_formula_and_function_query_definition.rb +1 -1
  168. data/lib/datadog_api_client/v1/models/monthly_usage_attribution_body.rb +6 -2
  169. data/lib/datadog_api_client/v1/models/monthly_usage_attribution_supported_metrics.rb +14 -0
  170. data/lib/datadog_api_client/v1/models/monthly_usage_attribution_values.rb +21 -1
  171. data/lib/datadog_api_client/v1/models/notebook_cell_create_request_attributes.rb +1 -1
  172. data/lib/datadog_api_client/v1/models/notebook_cell_response_attributes.rb +1 -1
  173. data/lib/datadog_api_client/v1/models/notebook_cell_time.rb +1 -1
  174. data/lib/datadog_api_client/v1/models/notebook_cell_update_request_attributes.rb +1 -1
  175. data/lib/datadog_api_client/v1/models/notebook_global_time.rb +1 -1
  176. data/lib/datadog_api_client/v1/models/notebook_update_cell.rb +1 -1
  177. data/lib/datadog_api_client/v1/models/sunburst_widget_legend.rb +1 -1
  178. data/lib/datadog_api_client/v1/models/synthetics_assertion.rb +1 -1
  179. data/lib/datadog_api_client/v1/models/synthetics_basic_auth.rb +1 -1
  180. data/lib/datadog_api_client/v1/models/tree_map_color_by.rb +1 -1
  181. data/lib/datadog_api_client/v1/models/tree_map_group_by.rb +1 -1
  182. data/lib/datadog_api_client/v1/models/tree_map_size_by.rb +1 -1
  183. data/lib/datadog_api_client/v1/models/tree_map_widget_definition.rb +28 -6
  184. data/lib/datadog_api_client/v1/models/usage_attribution_body.rb +6 -2
  185. data/lib/datadog_api_client/v1/models/usage_attribution_sort.rb +2 -0
  186. data/lib/datadog_api_client/v1/models/usage_attribution_supported_metrics.rb +2 -0
  187. data/lib/datadog_api_client/v1/models/usage_attribution_values.rb +22 -2
  188. data/lib/datadog_api_client/v1/models/widget_definition.rb +1 -1
  189. data/lib/datadog_api_client/v2/api/audit_api.rb +11 -25
  190. data/lib/datadog_api_client/v2/api/authn_mappings_api.rb +11 -51
  191. data/lib/datadog_api_client/v2/api/cloud_workload_security_api.rb +13 -61
  192. data/lib/datadog_api_client/v2/api/dashboard_lists_api.rb +9 -41
  193. data/lib/datadog_api_client/v2/api/events_api.rb +228 -0
  194. data/lib/datadog_api_client/v2/api/incident_services_api.rb +36 -46
  195. data/lib/datadog_api_client/v2/api/incident_teams_api.rb +36 -46
  196. data/lib/datadog_api_client/v2/api/incidents_api.rb +39 -48
  197. data/lib/datadog_api_client/v2/api/key_management_api.rb +29 -141
  198. data/lib/datadog_api_client/v2/api/logs_api.rb +15 -45
  199. data/lib/datadog_api_client/v2/api/logs_archives_api.rb +21 -101
  200. data/lib/datadog_api_client/v2/api/logs_metrics_api.rb +11 -51
  201. data/lib/datadog_api_client/v2/api/metrics_api.rb +26 -112
  202. data/lib/datadog_api_client/v2/api/opsgenie_integration_api.rb +11 -51
  203. data/lib/datadog_api_client/v2/api/organizations_api.rb +3 -11
  204. data/lib/datadog_api_client/v2/api/processes_api.rb +6 -13
  205. data/lib/datadog_api_client/v2/api/roles_api.rb +27 -131
  206. data/lib/datadog_api_client/v2/api/rum_api.rb +13 -35
  207. data/lib/datadog_api_client/v2/api/security_monitoring_api.rb +247 -125
  208. data/lib/datadog_api_client/v2/api/service_accounts_api.rb +11 -51
  209. data/lib/datadog_api_client/v2/api/usage_metering_api.rb +132 -68
  210. data/lib/datadog_api_client/v2/api/users_api.rb +21 -101
  211. data/lib/datadog_api_client/v2/model_base.rb +2 -2
  212. data/lib/datadog_api_client/v2/models/api_key_response_included_item.rb +1 -1
  213. data/lib/datadog_api_client/v2/models/application_key_response_included_item.rb +1 -1
  214. data/lib/datadog_api_client/v2/models/authn_mapping_included.rb +1 -1
  215. data/lib/datadog_api_client/v2/models/event.rb +141 -0
  216. data/lib/datadog_api_client/v2/models/event_attributes.rb +305 -0
  217. data/lib/datadog_api_client/v2/models/event_priority.rb +27 -0
  218. data/lib/datadog_api_client/v2/models/event_response.rb +133 -0
  219. data/lib/datadog_api_client/v2/models/event_response_attributes.rb +133 -0
  220. data/lib/datadog_api_client/v2/models/event_status_type.rb +35 -0
  221. data/lib/datadog_api_client/v2/models/event_type.rb +26 -0
  222. data/lib/datadog_api_client/v2/models/events_list_request.rb +142 -0
  223. data/lib/datadog_api_client/v2/models/events_list_response.rb +133 -0
  224. data/lib/datadog_api_client/v2/models/events_list_response_links.rb +112 -0
  225. data/lib/datadog_api_client/v2/models/events_query_filter.rb +137 -0
  226. data/lib/datadog_api_client/v2/models/events_query_options.rb +124 -0
  227. data/lib/datadog_api_client/v2/models/events_request_page.rb +134 -0
  228. data/lib/datadog_api_client/v2/models/events_response_metadata.rb +144 -0
  229. data/lib/datadog_api_client/v2/models/events_response_metadata_page.rb +112 -0
  230. data/lib/datadog_api_client/v2/models/events_sort.rb +27 -0
  231. data/lib/datadog_api_client/v2/models/events_warning.rb +131 -0
  232. data/lib/datadog_api_client/v2/models/hourly_usage.rb +133 -0
  233. data/lib/datadog_api_client/v2/models/hourly_usage_attributes.rb +163 -0
  234. data/lib/datadog_api_client/v2/models/hourly_usage_measurement.rb +122 -0
  235. data/lib/datadog_api_client/v2/models/hourly_usage_metadata.rb +111 -0
  236. data/lib/datadog_api_client/v2/models/hourly_usage_pagination.rb +112 -0
  237. data/lib/datadog_api_client/v2/models/hourly_usage_response.rb +123 -0
  238. data/lib/datadog_api_client/v2/models/incident_field_attributes.rb +1 -1
  239. data/lib/datadog_api_client/v2/models/incident_response_included_item.rb +1 -1
  240. data/lib/datadog_api_client/v2/models/incident_service_included_items.rb +1 -1
  241. data/lib/datadog_api_client/v2/models/incident_team_included_items.rb +1 -1
  242. data/lib/datadog_api_client/v2/models/incident_timeline_cell_create_attributes.rb +1 -1
  243. data/lib/datadog_api_client/v2/models/logs_aggregate_bucket_value.rb +1 -1
  244. data/lib/datadog_api_client/v2/models/logs_archive_create_request_destination.rb +1 -1
  245. data/lib/datadog_api_client/v2/models/logs_archive_destination.rb +1 -1
  246. data/lib/datadog_api_client/v2/models/logs_group_by_missing.rb +1 -1
  247. data/lib/datadog_api_client/v2/models/logs_group_by_total.rb +1 -1
  248. data/lib/datadog_api_client/v2/models/metric_intake_type.rb +1 -2
  249. data/lib/datadog_api_client/v2/models/metric_resource.rb +2 -2
  250. data/lib/datadog_api_client/v2/models/metric_series.rb +1 -1
  251. data/lib/datadog_api_client/v2/models/metric_volumes.rb +1 -1
  252. data/lib/datadog_api_client/v2/models/metrics_and_metric_tag_configurations.rb +1 -1
  253. data/lib/datadog_api_client/v2/models/monitor_type.rb +215 -0
  254. data/lib/datadog_api_client/v2/models/rum_aggregate_bucket_value.rb +1 -1
  255. data/lib/datadog_api_client/v2/models/rum_group_by_missing.rb +1 -1
  256. data/lib/datadog_api_client/v2/models/rum_group_by_total.rb +1 -1
  257. data/lib/datadog_api_client/v2/models/security_monitoring_rule_query.rb +13 -1
  258. data/lib/datadog_api_client/v2/models/security_monitoring_rule_query_create.rb +13 -1
  259. data/lib/datadog_api_client/v2/models/security_monitoring_signal_archive_reason.rb +29 -0
  260. data/lib/datadog_api_client/v2/models/security_monitoring_signal_assignee_update_attributes.rb +132 -0
  261. data/lib/datadog_api_client/v2/models/security_monitoring_signal_assignee_update_data.rb +122 -0
  262. data/lib/datadog_api_client/v2/models/security_monitoring_signal_assignee_update_request.rb +122 -0
  263. data/lib/datadog_api_client/v2/models/security_monitoring_signal_incidents_update_attributes.rb +134 -0
  264. data/lib/datadog_api_client/v2/models/security_monitoring_signal_incidents_update_data.rb +122 -0
  265. data/lib/datadog_api_client/v2/models/security_monitoring_signal_incidents_update_request.rb +122 -0
  266. data/lib/datadog_api_client/v2/models/security_monitoring_signal_state.rb +28 -0
  267. data/lib/datadog_api_client/v2/models/security_monitoring_signal_state_update_attributes.rb +152 -0
  268. data/lib/datadog_api_client/v2/models/security_monitoring_signal_state_update_data.rb +122 -0
  269. data/lib/datadog_api_client/v2/models/security_monitoring_signal_state_update_request.rb +122 -0
  270. data/lib/datadog_api_client/v2/models/security_monitoring_signal_triage_attributes.rb +248 -0
  271. data/lib/datadog_api_client/v2/models/security_monitoring_signal_triage_update_data.rb +111 -0
  272. data/lib/datadog_api_client/v2/models/security_monitoring_signal_triage_update_response.rb +122 -0
  273. data/lib/datadog_api_client/v2/models/security_monitoring_triage_user.rb +152 -0
  274. data/lib/datadog_api_client/v2/models/user_response_included_item.rb +1 -1
  275. data/lib/datadog_api_client/version.rb +1 -1
  276. data/lib/datadog_api_client.rb +13 -5
  277. data/spec/{v1/api_client_spec.rb → api_client_spec.rb} +29 -29
  278. data/spec/{v1/configuration_spec.rb → configuration_spec.rb} +3 -3
  279. data/spec/spec_helper.rb +1 -3
  280. metadata +109 -22
  281. data/.dockerignore +0 -1
  282. data/.generator/src/generator/templates/api_error.j2 +0 -49
  283. data/examples/v2/usage-metering/GetEstimatedCostByOrg_1171921972.rb +0 -9
  284. data/examples/v2/usage-metering/GetEstimatedCostByOrg_627383212.rb +0 -9
  285. data/lib/datadog_api_client/v1/api_client.rb +0 -453
  286. data/lib/datadog_api_client/v1/api_error.rb +0 -60
  287. data/lib/datadog_api_client/v1.rb +0 -813
  288. data/lib/datadog_api_client/v2/api_error.rb +0 -60
  289. data/lib/datadog_api_client/v2/configuration.rb +0 -420
  290. data/lib/datadog_api_client/v2.rb +0 -555
  291. data/spec/v2/api_client_spec.rb +0 -210
  292. data/spec/v2/configuration_spec.rb +0 -45
@@ -12,9 +12,9 @@ MODULE_NAME = "DatadogAPIClient"
12
12
 
13
13
 
14
14
  @click.command()
15
- @click.option(
16
- "-i",
17
- "--input",
15
+ @click.argument(
16
+ "specs",
17
+ nargs=-1,
18
18
  type=click.Path(exists=True, file_okay=True, dir_okay=False, path_type=pathlib.Path),
19
19
  )
20
20
  @click.option(
@@ -22,14 +22,10 @@ MODULE_NAME = "DatadogAPIClient"
22
22
  "--output",
23
23
  type=click.Path(path_type=pathlib.Path),
24
24
  )
25
- def cli(input, output):
25
+ def cli(specs, output):
26
26
  """
27
27
  Generate a Ruby code snippet from OpenAPI specification.
28
28
  """
29
- spec = openapi.load(input)
30
-
31
- version = input.parent.name
32
-
33
29
  env = Environment(loader=FileSystemLoader(str(pathlib.Path(__file__).parent / "templates")))
34
30
 
35
31
  env.filters["accept_headers"] = openapi.accept_headers
@@ -48,8 +44,6 @@ def cli(input, output):
48
44
  env.globals["gem_name"] = GEM_NAME
49
45
  env.globals["module_name"] = MODULE_NAME
50
46
  env.globals["enumerate"] = enumerate
51
- env.globals["version"] = version
52
- env.globals["openapi"] = spec
53
47
  env.globals["get_name"] = openapi.get_name
54
48
  env.globals["type_to_ruby"] = openapi.type_to_ruby
55
49
  env.globals["get_type_for_attribute"] = openapi.get_type_for_attribute
@@ -63,38 +57,61 @@ def cli(input, output):
63
57
  package_j2 = env.get_template("package.j2")
64
58
 
65
59
  extra_files = {
66
- "api_client.rb": env.get_template("api_client.j2"),
67
- "api_error.rb": env.get_template("api_error.j2"),
68
- "configuration.rb": env.get_template("configuration.j2"),
69
60
  "model_base.rb": env.get_template("model_base.j2"),
70
61
  }
71
62
 
72
- apis = openapi.apis(spec)
73
- models = openapi.models(spec)
74
-
75
- package = output / GEM_NAME / f"{version}.rb"
76
- package.parent.mkdir(parents=True, exist_ok=True)
77
- with package.open("w") as fp:
78
- fp.write(package_j2.render(apis=apis, models=models))
79
-
80
- gem_path = output / GEM_NAME / version
81
- gem_path.mkdir(parents=True, exist_ok=True)
63
+ common_files = {
64
+ "api_client.rb": env.get_template("api_client.j2"),
65
+ "configuration.rb": env.get_template("configuration.j2"),
66
+ "inflector.rb": env.get_template("inflector.j2"),
67
+ }
82
68
 
83
- for name, template in extra_files.items():
84
- filename = gem_path / name
69
+ all_specs = {}
70
+ all_apis = {}
71
+ all_models = {}
72
+ for spec_path in specs:
73
+ version = spec_path.parent.name
74
+
75
+ spec = openapi.load(spec_path)
76
+ all_specs[version] = spec
77
+
78
+ apis = openapi.apis(spec)
79
+ all_apis[version] = apis
80
+
81
+ models = openapi.models(spec)
82
+ all_models[version] = models
83
+
84
+ env.globals["openapi"] = spec
85
+ env.globals["version"] = version
86
+
87
+ gem_path = output / GEM_NAME / version
88
+ gem_path.mkdir(parents=True, exist_ok=True)
89
+
90
+ for name, template in extra_files.items():
91
+ filename = gem_path / name
92
+ with filename.open("w") as fp:
93
+ fp.write(template.render(apis=apis, models=models))
94
+
95
+ for name, model in models.items():
96
+ filename = formatter.snake_case(name) + ".rb"
97
+ model_path = gem_path / "models" / filename
98
+ model_path.parent.mkdir(parents=True, exist_ok=True)
99
+ with model_path.open("w") as fp:
100
+ fp.write(model_j2.render(name=name, model=model))
101
+
102
+ for name, operations in apis.items():
103
+ filename = formatter.snake_case(name) + "_api.rb"
104
+ api_path = gem_path / "api" / filename
105
+ api_path.parent.mkdir(parents=True, exist_ok=True)
106
+ with api_path.open("w") as fp:
107
+ fp.write(api_j2.render(name=name, operations=operations))
108
+
109
+ models_output = output / GEM_NAME / "models.rb"
110
+ with models_output.open("w") as fp:
111
+ fp.write(package_j2.render(all_apis=all_apis, all_models=all_models))
112
+
113
+ common_output = output / GEM_NAME
114
+ for name, template in common_files.items():
115
+ filename = common_output / name
85
116
  with filename.open("w") as fp:
86
- fp.write(template.render(apis=apis, models=models))
87
-
88
- for name, model in models.items():
89
- filename = formatter.snake_case(name) + ".rb"
90
- model_path = gem_path / "models" / filename
91
- model_path.parent.mkdir(parents=True, exist_ok=True)
92
- with model_path.open("w") as fp:
93
- fp.write(model_j2.render(name=name, model=model))
94
-
95
- for name, operations in apis.items():
96
- filename = formatter.snake_case(name) + "_api.rb"
97
- api_path = gem_path / "api" / filename
98
- api_path.parent.mkdir(parents=True, exist_ok=True)
99
- with api_path.open("w") as fp:
100
- fp.write(api_j2.render(name=name, operations=operations))
117
+ fp.write(template.render(all_apis=all_apis, all_specs=all_specs, all_models=all_models))
@@ -32,7 +32,10 @@ def type_to_ruby(schema, alternative_name=None):
32
32
  if name:
33
33
  if "enum" in schema:
34
34
  return name
35
- if not (schema.get("additionalProperties") and not schema.get("properties")) and schema.get("type", "object") == "object":
35
+ if (
36
+ not (schema.get("additionalProperties") and not schema.get("properties"))
37
+ and schema.get("type", "object") == "object"
38
+ ):
36
39
  return name
37
40
 
38
41
  type_ = schema.get("type")
@@ -117,9 +120,9 @@ def child_models(schema, alternative_name=None, seen=None):
117
120
  seen=seen,
118
121
  )
119
122
 
120
- if (
121
- schema.get("type") == "object" or "properties" in schema or has_sub_models
122
- ) and not ("additionalProperties" in schema and "properties" not in schema):
123
+ if (schema.get("type") == "object" or "properties" in schema or has_sub_models) and not (
124
+ "additionalProperties" in schema and "properties" not in schema
125
+ ):
123
126
  if not has_sub_models and name is None:
124
127
  # this is a basic map object so we don't need a type
125
128
  return
@@ -458,7 +461,6 @@ def get_default(operation, attribute_path):
458
461
 
459
462
 
460
463
  def get_container(operation, attribute_path, with_type=False):
461
-
462
464
  def get_type(parameter):
463
465
  if with_type:
464
466
  return f", {get_type_for_parameter(parameter)}"
@@ -468,7 +470,11 @@ def get_container(operation, attribute_path, with_type=False):
468
470
  for name, parameter in parameters(operation):
469
471
  if name == attribute_name:
470
472
  if parameter["required"]:
471
- return '{}, "{}"{}'.format(name, ".".join(formatter.attribute_name(a) for a in attribute_path.split(".")[1:]), get_type(parameter))
473
+ return '{}, "{}"{}'.format(
474
+ name,
475
+ ".".join(formatter.attribute_name(a) for a in attribute_path.split(".")[1:]),
476
+ get_type(parameter),
477
+ )
472
478
  return f'opts, "{formatter.attribute_path(attribute_path)}"{get_type(parameter)}'
473
479
 
474
480
 
@@ -9,7 +9,7 @@ module {{ module_name }}::{{ version|upper }}
9
9
  class {{ classname }}
10
10
  attr_accessor :api_client
11
11
 
12
- def initialize(api_client = APIClient.default)
12
+ def initialize(api_client = {{ module_name }}::APIClient.default)
13
13
  @api_client = api_client
14
14
  end
15
15
 
@@ -40,15 +40,14 @@ module {{ module_name }}::{{ version|upper }}
40
40
  {%- endfor %}
41
41
  # @return [Array<({% if returnType %}{{ returnType }}{% else %}nil{% endif %}, Integer, Hash)>] {% if returnType %}{{ returnType }} data{% else %}nil{% endif %}, response status code and response headers
42
42
  def {{ operation.operationId|snake_case }}_with_http_info({% for name, parameter in operation|parameters if parameter.required %}{{ name|attribute_name }}, {% endfor %}opts = {})
43
-
44
- if @api_client.config.unstable_operations.has_key?(:{{ operation.operationId|snake_case }})
45
- unstable_enabled = @api_client.config.unstable_operations[:{{ operation.operationId|snake_case }}]
46
- if unstable_enabled
47
- @api_client.config.logger.warn format("Using unstable operation '%s'", "{{ operation.operationId|snake_case }}")
48
- else
49
- raise APIError.new(message: format("Unstable operation '%s' is disabled", "{{ operation.operationId|snake_case }}"))
50
- end
43
+ {%- if "x-unstable" in operation %}
44
+ unstable_enabled = @api_client.config.unstable_operations["{{ version }}.{{ operation.operationId|snake_case }}".to_sym]
45
+ if unstable_enabled
46
+ @api_client.config.logger.warn format("Using unstable operation '%s'", "{{ version }}.{{ operation.operationId|snake_case }}")
47
+ else
48
+ raise {{ module_name }}::APIError.new(message: format("Unstable operation '%s' is disabled", "{{ version }}.{{ operation.operationId|snake_case }}"))
51
49
  end
50
+ {%- endif %}
52
51
 
53
52
  if @api_client.config.debugging
54
53
  @api_client.config.logger.debug 'Calling API: {{classname}}.{{ operation.operationId|snake_case }} ...'
@@ -198,7 +197,8 @@ module {{ module_name }}::{{ version|upper }}
198
197
  :form_params => form_params,
199
198
  :body => post_body,
200
199
  :auth_names => auth_names,
201
- :return_type => return_type
200
+ :return_type => return_type,
201
+ :api_version => "{{ version|upper }}"
202
202
  )
203
203
 
204
204
  data, status_code, headers = @api_client.call_api(Net::HTTP::{{ httpMethod|camel_case }}, local_var_path, new_options)
@@ -218,8 +218,9 @@ module {{ module_name }}::{{ version|upper }}
218
218
  #
219
219
  # @yield [{{ get_type_at_path(operation, pagination.resultsPath) }}] Paginated items
220
220
  def {{ operation.operationId|snake_case }}_with_pagination({% for name, parameter in operation|parameters if parameter.required %}{{ name|attribute_name }}, {% endfor %}opts = {})
221
+ api_version = "{{ version|upper }}"
221
222
  page_size = @api_client.get_attribute_from_path({{ get_container(operation, pagination.limitParam) }}, {{ get_default(operation, pagination.limitParam) }})
222
- @api_client.set_attribute_from_path({{ get_container(operation, pagination.limitParam, True) }}, page_size)
223
+ @api_client.set_attribute_from_path(api_version, {{ get_container(operation, pagination.limitParam, True) }}, page_size)
223
224
  while true do
224
225
  response = {{ operation.operationId|snake_case }}({% for name, parameter in operation|parameters if parameter.required %}{{ name|attribute_name }}, {% endfor %}opts)
225
226
  @api_client.get_attribute_from_path(response, "{{ pagination.resultsPath|attribute_path }}").each { |item| yield(item) }
@@ -227,10 +228,10 @@ module {{ module_name }}::{{ version|upper }}
227
228
  break
228
229
  end
229
230
  {%- if pagination.pageOffsetParam %}
230
- @api_client.set_attribute_from_path({{ get_container(operation, pagination.pageOffsetParam, True) }}, @api_client.get_attribute_from_path({{ get_container(operation, pagination.pageOffsetParam) }}, 0) + page_size)
231
+ @api_client.set_attribute_from_path(api_version, {{ get_container(operation, pagination.pageOffsetParam, True) }}, @api_client.get_attribute_from_path({{ get_container(operation, pagination.pageOffsetParam) }}, 0) + page_size)
231
232
  {%- endif %}
232
233
  {%- if pagination.cursorParam %}
233
- @api_client.set_attribute_from_path({{ get_container(operation, pagination.cursorParam, True) }}, @api_client.get_attribute_from_path(response, "{{ pagination.cursorPath }}"))
234
+ @api_client.set_attribute_from_path(api_version, {{ get_container(operation, pagination.cursorParam, True) }}, @api_client.get_attribute_from_path(response, "{{ pagination.cursorPath }}"))
234
235
  {%- endif %}
235
236
  end
236
237
  end
@@ -8,8 +8,12 @@ require 'logger'
8
8
  require 'tempfile'
9
9
  require 'time'
10
10
  require 'httparty'
11
+ begin
12
+ require 'zstandard'
13
+ rescue LoadError
14
+ end
11
15
 
12
- module {{ module_name }}::{{ version|upper }}
16
+ module {{ module_name }}
13
17
  class APIClient
14
18
  # The Configuration object holding settings to be used in the API client.
15
19
  attr_accessor :config
@@ -100,7 +104,7 @@ module {{ module_name }}::{{ version|upper }}
100
104
  end
101
105
 
102
106
  if opts[:return_type]
103
- data = deserialize(response, opts[:return_type])
107
+ data = deserialize(opts[:api_version], response, opts[:return_type])
104
108
  else
105
109
  data = nil
106
110
  end
@@ -187,6 +191,8 @@ module {{ module_name }}::{{ version|upper }}
187
191
  gzip.close
188
192
  elsif header_params['Content-Encoding'] == 'deflate'
189
193
  data = Zlib::deflate(data)
194
+ elsif header_params['Content-Encoding'] == 'zstd1'
195
+ data = Zstandard.deflate(data)
190
196
  end
191
197
  data
192
198
  end
@@ -205,9 +211,10 @@ module {{ module_name }}::{{ version|upper }}
205
211
 
206
212
  # Deserialize the response to the given return type.
207
213
  #
214
+ # @param [String] the api version
208
215
  # @param [Response] response HTTP response
209
216
  # @param [String] return_type some examples: "User", "Array<User>", "Hash<String, Integer>"
210
- def deserialize(response, return_type)
217
+ def deserialize(api_version, response, return_type)
211
218
  body = response.body
212
219
 
213
220
  # handle file downloading - return the File instance processed in request callbacks
@@ -240,14 +247,14 @@ module {{ module_name }}::{{ version|upper }}
240
247
  end
241
248
  end
242
249
 
243
- convert_to_type data, return_type
250
+ convert_to_type data, return_type, api_version
244
251
  end
245
252
 
246
253
  # Convert data to the given return type.
247
254
  # @param [Object] data Data to be converted
248
255
  # @param [String] return_type Return type
249
256
  # @return [Mixed] Data in a particular type
250
- def convert_to_type(data, return_type)
257
+ def convert_to_type(data, return_type, api_version)
251
258
  return nil if data.nil?
252
259
  case return_type
253
260
  when 'String'
@@ -270,16 +277,16 @@ module {{ module_name }}::{{ version|upper }}
270
277
  when /\AArray<(.+)>\z/
271
278
  # e.g. Array<Pet>
272
279
  sub_type = $1
273
- data.map { |item| convert_to_type(item, sub_type) }
280
+ data.map { |item| convert_to_type(item, sub_type, api_version) }
274
281
  when /\AHash\<String, (.+)\>\z/
275
282
  # e.g. Hash<String, Integer>
276
283
  sub_type = $1
277
284
  {}.tap do |hash|
278
- data.each { |k, v| hash[k] = convert_to_type(v, sub_type) }
285
+ data.each { |k, v| hash[k] = convert_to_type(v, sub_type, api_version) }
279
286
  end
280
287
  else
281
288
  # models (e.g. Pet) or oneOf
282
- klass = {{ module_name }}::{{ version|upper }}.const_get(return_type)
289
+ klass = {{ module_name }}.const_get(api_version).const_get(return_type)
283
290
  klass.respond_to?(:openapi_one_of) ? klass.build(data) : klass.build_from_hash(data)
284
291
  end
285
292
  end
@@ -296,7 +303,7 @@ module {{ module_name }}::{{ version|upper }}
296
303
  def build_request_url(path, opts = {})
297
304
  # Add leading and trailing slashes to path
298
305
  path = "/#{path}".gsub(/\/+/, '/')
299
- @config.base_url(opts[:operation]) + path
306
+ @config.base_url("#{opts[:api_version].respond_to?(:downcase) ? opts[:api_version].downcase : opts[:api_version]}.#{opts[:operation]}") + path
300
307
  end
301
308
 
302
309
  # Update header and query params based on authentication settings.
@@ -411,12 +418,13 @@ module {{ module_name }}::{{ version|upper }}
411
418
 
412
419
  # Set an attribute at the given path
413
420
  #
421
+ # @param [String] api_version The api version
414
422
  # @param [Object] obj The source object
415
423
  # @param [String] attribute_path The path spefication, separated by "."
416
424
  # @param [Object] builder The class matching the top level attribute
417
425
  # @param [Object] value The value to set
418
426
  # @!visibility private
419
- def set_attribute_from_path(obj, attribute_path, builder, value)
427
+ def set_attribute_from_path(api_version, obj, attribute_path, builder, value)
420
428
  attrs = attribute_path.split(".")
421
429
  last = attrs.pop
422
430
  i = 0
@@ -427,7 +435,7 @@ module {{ module_name }}::{{ version|upper }}
427
435
  else
428
436
  obj = obj.send(attr)
429
437
  end
430
- builder = DatadogAPIClient::V2.const_get(builder.openapi_types[attr.to_sym]) if i > 0
438
+ builder = DatadogAPIClient.const_get(api_version).const_get(builder.openapi_types[attr.to_sym]) if i > 0
431
439
  obj = builder.new if obj.nil?
432
440
  i += 1
433
441
  end
@@ -439,4 +447,48 @@ module {{ module_name }}::{{ version|upper }}
439
447
  end
440
448
  end
441
449
  end
450
+
451
+ class APIError < StandardError
452
+ attr_reader :code, :response_headers, :response_body
453
+
454
+ # Usage examples:
455
+ # APIError.new
456
+ # APIError.new("message")
457
+ # APIError.new(:code => 500, :response_headers => {}, :response_body => "")
458
+ # APIError.new(:code => 404, :message => "Not Found")
459
+ def initialize(arg = nil)
460
+ if arg.is_a? Hash
461
+ if arg.key?(:message) || arg.key?('message')
462
+ super(arg[:message] || arg['message'])
463
+ else
464
+ super arg
465
+ end
466
+
467
+ arg.each do |k, v|
468
+ instance_variable_set "@#{k}", v
469
+ end
470
+ else
471
+ super arg
472
+ end
473
+ end
474
+
475
+ # Override to_s to display a friendly error message
476
+ def to_s
477
+ message
478
+ end
479
+
480
+ def message
481
+ if @message.nil?
482
+ msg = "Error message: the server returns an error"
483
+ else
484
+ msg = @message
485
+ end
486
+
487
+ msg += "\nHTTP status code: #{code}" if code
488
+ msg += "\nResponse headers: #{response_headers}" if response_headers
489
+ msg += "\nResponse body: #{response_body}" if response_body
490
+
491
+ msg
492
+ end
493
+ end
442
494
  end
@@ -2,7 +2,7 @@
2
2
  {% include "api_info.j2" %}
3
3
  =end
4
4
 
5
- module {{ module_name }}::{{ version|upper }}
5
+ module {{ module_name }}
6
6
  class Configuration
7
7
  # Defines url scheme
8
8
  attr_accessor :scheme
@@ -148,13 +148,15 @@ module {{ module_name }}::{{ version|upper }}
148
148
  @compress = true
149
149
  @logger = defined?(Rails) ? Rails.logger : Logger.new(STDOUT)
150
150
  @unstable_operations = {
151
- {%- for path in openapi.paths.values() %}
152
- {%- for operation in path.values() %}
151
+ {%- for version, apis in all_apis.items() %}
152
+ {%- for operations in apis.values() %}
153
+ {%- for _, _, operation in operations|sort(attribute="2.operationId") %}
153
154
  {%- if "x-unstable" in operation %}
154
- {{ operation.operationId|snake_case }}: false,
155
+ "{{ version }}.{{ operation.operationId|snake_case }}": false,
155
156
  {%- endif %}
156
157
  {%- endfor %}
157
158
  {%- endfor %}
159
+ {%- endfor %}
158
160
  }
159
161
  @server_variables[:site] = ENV['DD_SITE'] if ENV.key? 'DD_SITE'
160
162
  {%- for name, schema in openapi.components.securitySchemes.items() if "x-env-name" in schema and schema.in == "header" and schema.type == "apiKey" %}
@@ -191,10 +193,10 @@ module {{ module_name }}::{{ version|upper }}
191
193
 
192
194
  # Returns base URL for specified operation based on server settings
193
195
  def base_url(operation = nil)
194
- index = server_operation_index.fetch(operation, server_index)
196
+ index = server_operation_index.fetch(operation.to_sym, server_index)
195
197
  return "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') if index == nil
196
198
 
197
- server_url(index, server_operation_variables.fetch(operation, server_variables), operation_server_settings[operation])
199
+ server_url(index, server_operation_variables.fetch(operation.to_sym, server_variables), operation_server_settings[operation.to_sym])
198
200
  end
199
201
 
200
202
  # Gets API key (with prefix if set).
@@ -294,11 +296,12 @@ module {{ module_name }}::{{ version|upper }}
294
296
 
295
297
  def operation_server_settings
296
298
  {
297
- {%- for path in openapi.paths.values() %}
299
+ {%- for version, spec in all_specs.items() %}
300
+ {%- for path in spec.paths.values() %}
298
301
  {%- for operation in path.values() %}
299
302
  {%- for server in operation.servers %}
300
303
  {%- if loop.first %}
301
- {{ operation.operationId|snake_case }}: [
304
+ "{{ version }}.{{ operation.operationId|snake_case }}": [
302
305
  {%- endif %}
303
306
  {{ server_configuration(server)|indent(10) }}{% if not loop.last %},{% endif %}
304
307
  {%- if loop.last %}
@@ -307,6 +310,7 @@ module {{ module_name }}::{{ version|upper }}
307
310
  {%- endfor %}
308
311
  {%- endfor %}
309
312
  {%- endfor %}
313
+ {%- endfor %}
310
314
  }
311
315
  end
312
316
 
@@ -8,7 +8,7 @@ require 'datadog_api_client'
8
8
  {%- if context._enable_operations %}
9
9
  DatadogAPIClient::V2.configure do |config|
10
10
  {%- for operation in context._enable_operations %}
11
- config.unstable_operations[:{{ operation|snake_case }}] = true
11
+ config.unstable_operations["{{ version }}.{{ operation|snake_case }}".to_sym] = true
12
12
  {%- endfor %}
13
13
  end
14
14
  {%- endif %}
@@ -33,8 +33,13 @@ opts = {
33
33
  {%- endfor %}
34
34
  }
35
35
  {%- endif %}
36
+
37
+ {%- if context.pagination %}
38
+ api_instance.{{ context.api_request.operation_id|snake_case }}_with_pagination({{ parameters }}) { |item| puts item }
39
+ {%- else %}
36
40
  {%- if context.status_code != 204 %}
37
41
  p api_instance.{{ context.api_request.operation_id|snake_case }}({{ parameters }})
38
42
  {%- else %}
39
43
  api_instance.{{ context.api_request.operation_id|snake_case }}({{ parameters }})
40
44
  {%- endif %}
45
+ {%- endif %}
@@ -0,0 +1,28 @@
1
+ require 'zeitwerk'
2
+
3
+ module {{ module_name }}
4
+ class {{ module_name }}Inflector < Zeitwerk::Inflector
5
+ def camelize(basename, abspath)
6
+ model_name = "#{abspath.match('v[0-9]')}.#{basename}"
7
+ overrides[model_name] || basename.split('_').each(&:capitalize!).join
8
+ end
9
+
10
+ def overrides
11
+ @overrides ||= {
12
+ # Models
13
+ {%- for version, models in all_models.items() %}
14
+ {%- for model in models|sort %}
15
+ "{{ version }}.{{ model|snake_case }}" => "{{ model }}",
16
+ {%- endfor %}
17
+ {%- endfor %}
18
+ # APIs
19
+ {%- for version, apis in all_apis.items() %}
20
+ {%- for api in apis|sort %}
21
+ {%- set name = api.replace(" ", "") + "API" %}
22
+ "{{ version }}.{{ api|snake_case }}_api" => "{{ name }}"{%-if not loop.last %},{% endif %}
23
+ {%- endfor %}{%-if not loop.last %},{% endif %}
24
+ {%- endfor %}
25
+ }
26
+ end
27
+ end
28
+ end
@@ -10,7 +10,7 @@ module {{ module_name }}::{{ version|upper }}
10
10
  # @!visibility private
11
11
  def build_from_hash(value)
12
12
  constantValues = self.class.constants.select { |c| self.class::const_get(c) == value }
13
- constantValues.empty? ? {{ module_name }}::{{ version|upper }}::UnparsedObject.new(value) : value
13
+ constantValues.empty? ? {{ module_name }}::UnparsedObject.new(value) : value
14
14
  end
15
15
 
16
16
  module ClassMethods
@@ -107,7 +107,7 @@ module {{ module_name }}::{{ version|upper }}
107
107
  # models (e.g. Pet) or oneOf
108
108
  klass = {{ module_name }}::{{ version|upper }}.const_get(type)
109
109
  res = klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
110
- if res.instance_of? {{ module_name }}::{{ version|upper }}::UnparsedObject
110
+ if res.instance_of? {{ module_name }}::UnparsedObject
111
111
  self._unparsed = true
112
112
  end
113
113
  res
@@ -81,7 +81,7 @@
81
81
  data
82
82
  else
83
83
  self._unparsed = true
84
- {{ module_name }}::{{ version|upper }}::UnparsedObject.new(data)
84
+ {{ module_name }}::UnparsedObject.new(data)
85
85
  end
86
86
 
87
87
  {%- endif %}
@@ -5,22 +5,17 @@
5
5
  # Common files
6
6
  require 'datadog_api_client/version'
7
7
  require 'datadog_api_client/user_agent'
8
- require '{{ gem_name }}/{{ version }}/api_client'
9
- require '{{ gem_name }}/{{ version }}/api_error'
10
- require '{{ gem_name }}/{{ version }}/configuration'
8
+ require '{{ gem_name }}/api_client'
9
+ require '{{ gem_name }}/configuration'
10
+ require '{{ gem_name }}/api_key_configuration'
11
11
 
12
- # Models
12
+ # Model base
13
+ ## Load in the model_base modules which also initializes the V1 and V2 namespaces
14
+ {%- for version, models in all_models.items() %}
13
15
  require '{{ gem_name }}/{{ version }}/model_base'
14
- {%- for model in models|sort %}
15
- require '{{ gem_name }}/{{ version }}/models/{{ model|snake_case }}'
16
16
  {%- endfor %}
17
17
 
18
- # APIs
19
- {%- for api in apis|sort %}
20
- require '{{ gem_name }}/{{ version }}/api/{{ api|snake_case }}_api'
21
- {%- endfor %}
22
-
23
- module {{ module_name }}::{{ version|upper }}
18
+ module {{ module_name }}
24
19
  class << self
25
20
  # Customize default settings for the SDK using block.
26
21
  # {{ module_name }}::{{ version|upper }}.configure do |config|
@@ -26,8 +26,6 @@ jobs:
26
26
  app_id: ${{ secrets.PIPELINE_GITHUB_APP_ID }}
27
27
  private_key: ${{ secrets.PIPELINE_GITHUB_APP_PRIVATE_KEY }}
28
28
  repository: DataDog/datadog-api-spec
29
- - name: Checkout code
30
- uses: actions/checkout@v2
31
29
  - name: Post PR review status check
32
30
  uses: DataDog/github-actions/post-review-status@v1.0.0
33
31
  with:
@@ -0,0 +1,49 @@
1
+ name: "CodeQL"
2
+
3
+ on:
4
+ push:
5
+ branches: [ "master" ]
6
+ pull_request:
7
+ # The branches below must be a subset of the branches above
8
+ branches: [ "master" ]
9
+
10
+ jobs:
11
+ analyze:
12
+ name: Analyze
13
+ runs-on: ubuntu-latest
14
+ permissions:
15
+ actions: read
16
+ contents: read
17
+ security-events: write
18
+
19
+ strategy:
20
+ fail-fast: false
21
+ matrix:
22
+ language: [ 'ruby' ]
23
+ # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
24
+ # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
25
+
26
+ steps:
27
+ - name: Checkout repository
28
+ uses: actions/checkout@v3
29
+
30
+ # Initializes the CodeQL tools for scanning.
31
+ - name: Initialize CodeQL
32
+ uses: github/codeql-action/init@v2
33
+ with:
34
+ languages: ${{ matrix.language }}
35
+ # If you wish to specify custom queries, you can do so here or in a config file.
36
+ # By default, queries listed here will override any specified in a config file.
37
+ # Prefix the list here with "+" to use these queries and those in the config file.
38
+
39
+ # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
40
+ # queries: security-extended,security-and-quality
41
+
42
+
43
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
44
+ # If this step fails, then you should remove it and run the build manually (see below)
45
+ - name: Autobuild
46
+ uses: github/codeql-action/autobuild@v2
47
+
48
+ - name: Perform CodeQL Analysis
49
+ uses: github/codeql-action/analyze@v2
@@ -13,7 +13,7 @@ jobs:
13
13
  runs-on: ubuntu-latest
14
14
 
15
15
  steps:
16
- - uses: actions/checkout@v2
16
+ - uses: actions/checkout@v3
17
17
  with:
18
18
  # Fetch all history for applying timestamps to every page
19
19
  fetch-depth: 0
@@ -21,7 +21,7 @@ jobs:
21
21
  with:
22
22
  app_id: ${{ secrets.PIPELINE_GITHUB_APP_ID }}
23
23
  private_key: ${{ secrets.PIPELINE_GITHUB_APP_PRIVATE_KEY }}
24
- - uses: actions/checkout@v2
24
+ - uses: actions/checkout@v3
25
25
  with:
26
26
  fetch-depth: 0
27
27
  token: ${{ steps.get_token.outputs.token }}
@@ -11,7 +11,7 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
  if: github.event_name == 'workflow_dispatch' || (github.event_name == 'release' && github.event.action == 'published')
13
13
  steps:
14
- - uses: actions/checkout@v2
14
+ - uses: actions/checkout@v3
15
15
  with:
16
16
  ref: ${{ github.event.release.tag_name }}
17
17