datadog_api_client 2.29.1 → 2.30.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (325) hide show
  1. checksums.yaml +4 -4
  2. data/.apigentools-info +4 -4
  3. data/.generator/schemas/v1/openapi.yaml +591 -464
  4. data/.generator/schemas/v2/openapi.yaml +4175 -744
  5. data/.github/CODEOWNERS +5 -5
  6. data/.github/workflows/docs.yml +2 -2
  7. data/.github/workflows/prepare_release.yml +1 -1
  8. data/.github/workflows/test.yml +4 -1
  9. data/CHANGELOG.md +42 -0
  10. data/Gemfile +1 -1
  11. data/LICENSE-3rdparty.csv +1 -1
  12. data/RELEASING.md +1 -1
  13. data/examples/v1/azure-integration/UpdateAzureHostFilters.rb +9 -6
  14. data/examples/v1/azure-integration/UpdateAzureIntegration.rb +0 -6
  15. data/examples/v1/logs-pipelines/CreateLogsPipeline.rb +1 -0
  16. data/examples/v1/logs-pipelines/UpdateLogsPipeline.rb +1 -0
  17. data/examples/v1/monitors/CreateMonitor_1303514967.rb +32 -0
  18. data/examples/v1/monitors/ListMonitors.rb +1 -1
  19. data/examples/v1/monitors/{ListMonitors_3448441939.rb → ListMonitors_2154432960.rb} +1 -1
  20. data/examples/v1/monitors/{ListMonitors_2966492814.rb → ListMonitors_463213563.rb} +1 -1
  21. data/examples/v2/action-connection/CreateActionConnection.rb +22 -0
  22. data/examples/v2/action-connection/DeleteActionConnection.rb +5 -0
  23. data/examples/v2/action-connection/DeleteActionConnection_2142905164.rb +8 -0
  24. data/examples/v2/action-connection/GetActionConnection.rb +5 -0
  25. data/examples/v2/action-connection/UpdateActionConnection.rb +22 -0
  26. data/examples/v2/agentless-scanning/ListAwsScanOptions.rb +5 -0
  27. data/examples/v2/{apps → app-builder}/CreateApp.rb +4 -4
  28. data/examples/v2/{apps → app-builder}/DeleteApp.rb +1 -1
  29. data/examples/v2/{apps → app-builder}/DeleteApps.rb +2 -2
  30. data/examples/v2/{apps → app-builder}/GetApp.rb +1 -1
  31. data/examples/v2/{apps → app-builder}/ListApps.rb +1 -1
  32. data/examples/v2/app-builder/PublishApp.rb +11 -0
  33. data/examples/v2/app-builder/UnpublishApp.rb +11 -0
  34. data/examples/v2/{apps → app-builder}/UpdateApp.rb +2 -2
  35. data/examples/v2/ci-visibility-pipelines/CreateCIAppPipelineEvent_819339921.rb +29 -0
  36. data/examples/v2/csm-coverage-analysis/GetCSMCloudAccountsCoverageAnalysis.rb +5 -0
  37. data/examples/v2/csm-coverage-analysis/GetCSMHostsAndContainersCoverageAnalysis.rb +5 -0
  38. data/examples/v2/csm-coverage-analysis/GetCSMServerlessCoverageAnalysis.rb +5 -0
  39. data/examples/v2/data-deletion/CreateDataDeletionRequest.rb +1 -0
  40. data/examples/v2/events/CreateEvent.rb +1 -1
  41. data/examples/v2/logs/ListLogs.rb +12 -6
  42. data/examples/v2/logs/ListLogsGet.rb +1 -1
  43. data/examples/v2/logs/ListLogsGet_175182691.rb +5 -0
  44. data/examples/v2/logs/ListLogs_3400928236.rb +23 -0
  45. data/examples/v2/logs/ListLogs_534975433.rb +29 -0
  46. data/examples/v2/microsoft-teams-integration/CreateWorkflowsWebhookHandle.rb +15 -0
  47. data/examples/v2/microsoft-teams-integration/CreateWorkflowsWebhookHandle_1716851881.rb +15 -0
  48. data/examples/v2/microsoft-teams-integration/DeleteWorkflowsWebhookHandle.rb +5 -0
  49. data/examples/v2/microsoft-teams-integration/DeleteWorkflowsWebhookHandle_107549514.rb +8 -0
  50. data/examples/v2/microsoft-teams-integration/GetWorkflowsWebhookHandle.rb +5 -0
  51. data/examples/v2/microsoft-teams-integration/GetWorkflowsWebhookHandle_3421443805.rb +8 -0
  52. data/examples/v2/microsoft-teams-integration/ListWorkflowsWebhookHandles.rb +5 -0
  53. data/examples/v2/microsoft-teams-integration/ListWorkflowsWebhookHandles_620762083.rb +5 -0
  54. data/examples/v2/microsoft-teams-integration/UpdateWorkflowsWebhookHandle.rb +15 -0
  55. data/examples/v2/microsoft-teams-integration/UpdateWorkflowsWebhookHandle_163189594.rb +18 -0
  56. data/examples/v2/security-monitoring/CreateSecurityMonitoringSuppression.rb +1 -0
  57. data/examples/v2/security-monitoring/CreateSecurityMonitoringSuppression_3192265332.rb +1 -0
  58. data/examples/v2/security-monitoring/CreateSignalNotificationRule.rb +30 -0
  59. data/examples/v2/security-monitoring/CreateVulnerabilityNotificationRule.rb +30 -0
  60. data/examples/v2/security-monitoring/DeleteSignalNotificationRule.rb +8 -0
  61. data/examples/v2/security-monitoring/DeleteVulnerabilityNotificationRule.rb +8 -0
  62. data/examples/v2/security-monitoring/GetSBOM.rb +5 -0
  63. data/examples/v2/security-monitoring/GetSignalNotificationRule.rb +8 -0
  64. data/examples/v2/security-monitoring/GetSignalNotificationRules.rb +5 -0
  65. data/examples/v2/security-monitoring/GetVulnerabilityNotificationRule.rb +8 -0
  66. data/examples/v2/security-monitoring/GetVulnerabilityNotificationRules.rb +5 -0
  67. data/examples/v2/security-monitoring/ListVulnerabilities.rb +10 -0
  68. data/examples/v2/security-monitoring/ListVulnerableAssets.rb +10 -0
  69. data/examples/v2/security-monitoring/PatchSignalNotificationRule.rb +35 -0
  70. data/examples/v2/security-monitoring/PatchVulnerabilityNotificationRule.rb +35 -0
  71. data/examples/v2/security-monitoring/RunHistoricalJob.rb +2 -2
  72. data/examples/v2/usage-metering/GetActiveBillingDimensions.rb +0 -3
  73. data/examples/v2/usage-metering/GetBillingDimensionMapping.rb +0 -3
  74. data/examples/v2/usage-metering/GetMonthlyCostAttribution.rb +0 -3
  75. data/lib/datadog_api_client/configuration.rb +2 -5
  76. data/lib/datadog_api_client/inflector.rb +145 -44
  77. data/lib/datadog_api_client/v1/api/monitors_api.rb +28 -4
  78. data/lib/datadog_api_client/v1/models/azure_account.rb +42 -13
  79. data/lib/datadog_api_client/v1/models/dashboard.rb +0 -2
  80. data/lib/datadog_api_client/v1/models/logs_pipeline.rb +23 -1
  81. data/lib/datadog_api_client/v1/models/monitor_formula_and_function_cost_aggregator.rb +34 -0
  82. data/lib/datadog_api_client/v1/models/monitor_formula_and_function_cost_data_source.rb +28 -0
  83. data/lib/datadog_api_client/v1/models/{azure_account_metrics_config.rb → monitor_formula_and_function_cost_query_definition.rb} +81 -16
  84. data/lib/datadog_api_client/v1/models/monitor_formula_and_function_query_definition.rb +2 -1
  85. data/lib/datadog_api_client/v1/models/monitor_type.rb +1 -0
  86. data/lib/datadog_api_client/v1/models/monitor_update_request.rb +1 -1
  87. data/lib/datadog_api_client/v1/models/resource_provider_config.rb +115 -0
  88. data/lib/datadog_api_client/v1/models/synthetics_step.rb +11 -1
  89. data/lib/datadog_api_client/v1/models/usage_summary_date.rb +184 -4
  90. data/lib/datadog_api_client/v1/models/usage_summary_date_org.rb +183 -3
  91. data/lib/datadog_api_client/v1/models/usage_summary_response.rb +183 -3
  92. data/lib/datadog_api_client/v2/api/action_connection_api.rb +295 -0
  93. data/lib/datadog_api_client/v2/api/agentless_scanning_api.rb +86 -0
  94. data/lib/datadog_api_client/v2/api/{apps_api.rb → app_builder_api.rb} +184 -38
  95. data/lib/datadog_api_client/v2/api/csm_coverage_analysis_api.rb +212 -0
  96. data/lib/datadog_api_client/v2/api/logs_api.rb +8 -8
  97. data/lib/datadog_api_client/v2/api/metrics_api.rb +1 -1
  98. data/lib/datadog_api_client/v2/api/microsoft_teams_integration_api.rb +331 -0
  99. data/lib/datadog_api_client/v2/api/restriction_policies_api.rb +13 -3
  100. data/lib/datadog_api_client/v2/api/security_monitoring_api.rb +1123 -1
  101. data/lib/datadog_api_client/v2/api/usage_metering_api.rb +1 -19
  102. data/lib/datadog_api_client/v2/models/action_connection_attributes.rb +144 -0
  103. data/lib/datadog_api_client/v2/models/{app_builder_error_errors_items.rb → action_connection_attributes_update.rb} +18 -18
  104. data/lib/datadog_api_client/v2/models/action_connection_data.rb +154 -0
  105. data/lib/datadog_api_client/v2/models/{delete_app_response_data_type.rb → action_connection_data_type.rb} +3 -3
  106. data/lib/datadog_api_client/v2/models/action_connection_data_update.rb +144 -0
  107. data/lib/datadog_api_client/v2/models/action_connection_integration.rb +63 -0
  108. data/lib/datadog_api_client/v2/models/action_connection_integration_update.rb +63 -0
  109. data/lib/datadog_api_client/v2/models/advisory.rb +154 -0
  110. data/lib/datadog_api_client/v2/models/app_builder_event.rb +1 -1
  111. data/lib/datadog_api_client/v2/models/{get_app_response_data_type.rb → app_definition_type.rb} +2 -2
  112. data/lib/datadog_api_client/v2/models/{deployment_included_type.rb → app_deployment_type.rb} +2 -2
  113. data/lib/datadog_api_client/v2/models/app_meta.rb +15 -25
  114. data/lib/datadog_api_client/v2/models/{get_app_response_relationship.rb → app_relationship.rb} +5 -5
  115. data/lib/datadog_api_client/v2/models/asset.rb +165 -0
  116. data/lib/datadog_api_client/v2/models/asset_attributes.rb +218 -0
  117. data/lib/datadog_api_client/v2/models/{script_data_type.rb → asset_entity_type.rb} +3 -3
  118. data/lib/datadog_api_client/v2/models/asset_operating_system.rb +133 -0
  119. data/lib/datadog_api_client/v2/models/asset_risks.rb +163 -0
  120. data/lib/datadog_api_client/v2/models/asset_type.rb +30 -0
  121. data/lib/datadog_api_client/v2/models/{disable_app_response_data_attributes.rb → asset_version.rb} +21 -11
  122. data/lib/datadog_api_client/v2/models/aws_assume_role.rb +191 -0
  123. data/lib/datadog_api_client/v2/models/{input_schema_data_type.rb → aws_assume_role_type.rb} +3 -3
  124. data/lib/datadog_api_client/v2/models/aws_assume_role_update.rb +166 -0
  125. data/lib/datadog_api_client/v2/models/aws_credentials.rb +62 -0
  126. data/lib/datadog_api_client/v2/models/aws_credentials_update.rb +62 -0
  127. data/lib/datadog_api_client/v2/models/aws_integration.rb +144 -0
  128. data/lib/datadog_api_client/v2/models/{deploy_app_response_data_type.rb → aws_integration_type.rb} +3 -3
  129. data/lib/datadog_api_client/v2/models/aws_integration_update.rb +133 -0
  130. data/lib/datadog_api_client/v2/models/aws_scan_options_attributes.rb +135 -0
  131. data/lib/datadog_api_client/v2/models/{input_schema_data.rb → aws_scan_options_data.rb} +8 -8
  132. data/lib/datadog_api_client/v2/models/aws_scan_options_response.rb +107 -0
  133. data/lib/datadog_api_client/v2/models/{delete_apps_request_data_items_type.rb → aws_scan_options_type.rb} +3 -3
  134. data/lib/datadog_api_client/v2/models/change_event_custom_attributes.rb +1 -1
  135. data/lib/datadog_api_client/v2/models/change_event_custom_attributes_changed_resource.rb +1 -1
  136. data/lib/datadog_api_client/v2/models/change_event_custom_attributes_changed_resource_type.rb +1 -0
  137. data/lib/datadog_api_client/v2/models/ci_app_create_pipeline_event_request_attributes.rb +11 -1
  138. data/lib/datadog_api_client/v2/models/{deployment_included_meta.rb → code_location.rb} +41 -33
  139. data/lib/datadog_api_client/v2/models/component.rb +6 -6
  140. data/lib/datadog_api_client/v2/models/component_grid.rb +6 -6
  141. data/lib/datadog_api_client/v2/models/component_grid_properties.rb +4 -4
  142. data/lib/datadog_api_client/v2/models/component_grid_properties_is_visible.rb +1 -1
  143. data/lib/datadog_api_client/v2/models/component_grid_type.rb +1 -1
  144. data/lib/datadog_api_client/v2/models/component_properties.rb +3 -3
  145. data/lib/datadog_api_client/v2/models/component_properties_is_visible.rb +1 -1
  146. data/lib/datadog_api_client/v2/models/component_type.rb +1 -1
  147. data/lib/datadog_api_client/v2/models/create_action_connection_request.rb +123 -0
  148. data/lib/datadog_api_client/v2/models/{script.rb → create_action_connection_response.rb} +5 -5
  149. data/lib/datadog_api_client/v2/models/create_app_request.rb +2 -2
  150. data/lib/datadog_api_client/v2/models/create_app_request_data.rb +4 -4
  151. data/lib/datadog_api_client/v2/models/create_app_request_data_attributes.rb +19 -41
  152. data/lib/datadog_api_client/v2/models/create_app_response.rb +2 -2
  153. data/lib/datadog_api_client/v2/models/create_app_response_data.rb +5 -5
  154. data/lib/datadog_api_client/v2/models/create_data_deletion_request_body_data.rb +24 -3
  155. data/lib/datadog_api_client/v2/models/{disable_app_response_data_type.rb → create_data_deletion_request_body_data_type.rb} +3 -3
  156. data/lib/datadog_api_client/v2/models/create_notification_rule_parameters.rb +105 -0
  157. data/lib/datadog_api_client/v2/models/create_notification_rule_parameters_data.rb +144 -0
  158. data/lib/datadog_api_client/v2/models/create_notification_rule_parameters_data_attributes.rb +195 -0
  159. data/lib/datadog_api_client/v2/models/csm_cloud_accounts_coverage_analysis_attributes.rb +145 -0
  160. data/lib/datadog_api_client/v2/models/{disable_app_response_data.rb → csm_cloud_accounts_coverage_analysis_data.rb} +9 -19
  161. data/lib/datadog_api_client/v2/models/csm_cloud_accounts_coverage_analysis_response.rb +105 -0
  162. data/lib/datadog_api_client/v2/models/csm_coverage_analysis.rb +135 -0
  163. data/lib/datadog_api_client/v2/models/csm_hosts_and_containers_coverage_analysis_attributes.rb +145 -0
  164. data/lib/datadog_api_client/v2/models/csm_hosts_and_containers_coverage_analysis_data.rb +125 -0
  165. data/lib/datadog_api_client/v2/models/csm_hosts_and_containers_coverage_analysis_response.rb +105 -0
  166. data/lib/datadog_api_client/v2/models/csm_serverless_coverage_analysis_attributes.rb +125 -0
  167. data/lib/datadog_api_client/v2/models/csm_serverless_coverage_analysis_data.rb +125 -0
  168. data/lib/datadog_api_client/v2/models/csm_serverless_coverage_analysis_response.rb +105 -0
  169. data/lib/datadog_api_client/v2/models/custom_connection.rb +5 -5
  170. data/lib/datadog_api_client/v2/models/custom_connection_attributes.rb +3 -3
  171. data/lib/datadog_api_client/v2/models/custom_connection_attributes_on_prem_runner.rb +3 -3
  172. data/lib/datadog_api_client/v2/models/custom_connection_type.rb +1 -1
  173. data/lib/datadog_api_client/v2/models/cvss.rb +165 -0
  174. data/lib/datadog_api_client/v2/models/delete_app_response.rb +1 -1
  175. data/lib/datadog_api_client/v2/models/delete_app_response_data.rb +4 -4
  176. data/lib/datadog_api_client/v2/models/delete_apps_request.rb +2 -2
  177. data/lib/datadog_api_client/v2/models/delete_apps_request_data_items.rb +5 -5
  178. data/lib/datadog_api_client/v2/models/delete_apps_response.rb +2 -2
  179. data/lib/datadog_api_client/v2/models/delete_apps_response_data_items.rb +5 -5
  180. data/lib/datadog_api_client/v2/models/dependency_location.rb +207 -0
  181. data/lib/datadog_api_client/v2/models/{deploy_app_response_data.rb → deployment.rb} +11 -11
  182. data/lib/datadog_api_client/v2/models/{deploy_app_response_data_attributes.rb → deployment_attributes.rb} +5 -5
  183. data/lib/datadog_api_client/v2/models/{deployment_relationship_meta.rb → deployment_metadata.rb} +9 -9
  184. data/lib/datadog_api_client/v2/models/deployment_relationship.rb +4 -4
  185. data/lib/datadog_api_client/v2/models/deployment_relationship_data.rb +5 -5
  186. data/lib/datadog_api_client/v2/models/entity_v3.rb +2 -1
  187. data/lib/datadog_api_client/v2/models/entity_v3_api.rb +180 -0
  188. data/lib/datadog_api_client/v2/models/entity_v3_api_datadog.rb +126 -0
  189. data/lib/datadog_api_client/v2/models/entity_v3_api_kind.rb +26 -0
  190. data/lib/datadog_api_client/v2/models/entity_v3_api_spec.rb +151 -0
  191. data/lib/datadog_api_client/v2/models/entity_v3_api_spec_interface_definition.rb +80 -0
  192. data/lib/datadog_api_client/v2/models/{entity_v3_metadata_owner.rb → entity_v3_api_spec_interface_file_ref.rb} +12 -12
  193. data/lib/datadog_api_client/v2/models/entity_v3_metadata.rb +1 -1
  194. data/lib/datadog_api_client/v2/models/epss.rb +144 -0
  195. data/lib/datadog_api_client/v2/models/{input_schema.rb → get_action_connection_response.rb} +5 -5
  196. data/lib/datadog_api_client/v2/models/get_app_response.rb +7 -7
  197. data/lib/datadog_api_client/v2/models/get_app_response_data.rb +6 -6
  198. data/lib/datadog_api_client/v2/models/get_app_response_data_attributes.rb +20 -42
  199. data/lib/datadog_api_client/v2/models/get_sbom_response.rb +123 -0
  200. data/lib/datadog_api_client/v2/models/historical_job_options.rb +168 -0
  201. data/lib/datadog_api_client/v2/models/historical_job_query.rb +171 -0
  202. data/lib/datadog_api_client/v2/models/{app_builder_error.rb → http_body.rb} +21 -13
  203. data/lib/datadog_api_client/v2/models/http_credentials.rb +62 -0
  204. data/lib/datadog_api_client/v2/models/http_credentials_update.rb +62 -0
  205. data/lib/datadog_api_client/v2/models/http_header.rb +150 -0
  206. data/lib/datadog_api_client/v2/models/http_header_update.rb +149 -0
  207. data/lib/datadog_api_client/v2/models/http_integration.rb +171 -0
  208. data/lib/datadog_api_client/v2/models/http_integration_type.rb +26 -0
  209. data/lib/datadog_api_client/v2/models/http_integration_update.rb +156 -0
  210. data/lib/datadog_api_client/v2/models/http_token.rb +171 -0
  211. data/lib/datadog_api_client/v2/models/http_token_auth.rb +169 -0
  212. data/lib/datadog_api_client/v2/models/http_token_auth_type.rb +26 -0
  213. data/lib/datadog_api_client/v2/models/http_token_auth_update.rb +169 -0
  214. data/lib/datadog_api_client/v2/models/http_token_update.rb +181 -0
  215. data/lib/datadog_api_client/v2/models/job_definition.rb +6 -18
  216. data/lib/datadog_api_client/v2/models/jsonapi_error_item.rb +21 -1
  217. data/lib/datadog_api_client/v2/models/{app_builder_error_errors_items_source.rb → jsonapi_error_item_source.rb} +16 -6
  218. data/lib/datadog_api_client/v2/models/library.rb +133 -0
  219. data/lib/datadog_api_client/v2/models/links.rb +185 -0
  220. data/lib/datadog_api_client/v2/models/list_apps_response.rb +5 -5
  221. data/lib/datadog_api_client/v2/models/list_apps_response_data_items.rb +8 -8
  222. data/lib/datadog_api_client/v2/models/list_apps_response_data_items_attributes.rb +6 -6
  223. data/lib/datadog_api_client/v2/models/list_apps_response_data_items_relationships.rb +2 -2
  224. data/lib/datadog_api_client/v2/models/list_apps_response_meta.rb +2 -2
  225. data/lib/datadog_api_client/v2/models/list_apps_response_meta_page.rb +3 -3
  226. data/lib/datadog_api_client/v2/models/list_vulnerabilities_response.rb +145 -0
  227. data/lib/datadog_api_client/v2/models/list_vulnerable_assets_response.rb +145 -0
  228. data/lib/datadog_api_client/v2/models/logs_archive_destination_s3.rb +11 -1
  229. data/lib/datadog_api_client/v2/models/logs_archive_encryption_s3.rb +133 -0
  230. data/lib/datadog_api_client/v2/models/logs_archive_encryption_s3_type.rb +28 -0
  231. data/lib/datadog_api_client/v2/models/metadata.rb +165 -0
  232. data/lib/datadog_api_client/v2/models/microsoft_teams_create_workflows_webhook_handle_request.rb +123 -0
  233. data/lib/datadog_api_client/v2/models/microsoft_teams_update_workflows_webhook_handle_request.rb +123 -0
  234. data/lib/datadog_api_client/v2/models/microsoft_teams_update_workflows_webhook_handle_request_data.rb +144 -0
  235. data/lib/datadog_api_client/v2/models/microsoft_teams_workflows_webhook_handle_attributes.rb +144 -0
  236. data/lib/datadog_api_client/v2/models/{input_schema_data_attributes_parameters_items_data_attributes.rb → microsoft_teams_workflows_webhook_handle_request_attributes.rb} +46 -51
  237. data/lib/datadog_api_client/v2/models/microsoft_teams_workflows_webhook_handle_request_data.rb +144 -0
  238. data/lib/datadog_api_client/v2/models/microsoft_teams_workflows_webhook_handle_response.rb +123 -0
  239. data/lib/datadog_api_client/v2/models/microsoft_teams_workflows_webhook_handle_response_data.rb +147 -0
  240. data/lib/datadog_api_client/v2/models/{create_app_response_data_type.rb → microsoft_teams_workflows_webhook_handle_type.rb} +3 -3
  241. data/lib/datadog_api_client/v2/models/microsoft_teams_workflows_webhook_handles_response.rb +125 -0
  242. data/lib/datadog_api_client/v2/models/microsoft_teams_workflows_webhook_response_attributes.rb +123 -0
  243. data/lib/datadog_api_client/v2/models/notification_rule.rb +168 -0
  244. data/lib/datadog_api_client/v2/models/notification_rule_attributes.rb +311 -0
  245. data/lib/datadog_api_client/v2/models/{input_schema_data_attributes_parameters_items.rb → notification_rule_response.rb} +9 -5
  246. data/lib/datadog_api_client/v2/models/{create_app_request_data_type.rb → notification_rules_type.rb} +3 -3
  247. data/lib/datadog_api_client/v2/models/patch_notification_rule_parameters.rb +105 -0
  248. data/lib/datadog_api_client/v2/models/patch_notification_rule_parameters_data.rb +165 -0
  249. data/lib/datadog_api_client/v2/models/patch_notification_rule_parameters_data_attributes.rb +165 -0
  250. data/lib/datadog_api_client/v2/models/{disable_app_response.rb → publish_app_response.rb} +5 -5
  251. data/lib/datadog_api_client/v2/models/query.rb +7 -7
  252. data/lib/datadog_api_client/v2/models/query_type.rb +1 -1
  253. data/lib/datadog_api_client/v2/models/remediation.rb +278 -0
  254. data/lib/datadog_api_client/v2/models/rule_severity.rb +31 -0
  255. data/lib/datadog_api_client/v2/models/rule_types_items.rb +42 -0
  256. data/lib/datadog_api_client/v2/models/{deployment_included_attributes.rb → rule_user.rb} +21 -11
  257. data/lib/datadog_api_client/v2/models/{script_data.rb → sbom.rb} +8 -8
  258. data/lib/datadog_api_client/v2/models/sbom_attributes.rb +230 -0
  259. data/lib/datadog_api_client/v2/models/sbom_component.rb +185 -0
  260. data/lib/datadog_api_client/v2/models/sbom_component_type.rb +37 -0
  261. data/lib/datadog_api_client/v2/models/sbom_metadata.rb +105 -0
  262. data/lib/datadog_api_client/v2/models/{script_data_attributes.rb → sbom_metadata_component.rb} +6 -16
  263. data/lib/datadog_api_client/v2/models/sbom_type.rb +26 -0
  264. data/lib/datadog_api_client/v2/models/security_monitoring_reference_table.rb +2 -2
  265. data/lib/datadog_api_client/v2/models/security_monitoring_rule_case_create.rb +2 -2
  266. data/lib/datadog_api_client/v2/models/security_monitoring_rule_evaluation_window.rb +1 -1
  267. data/lib/datadog_api_client/v2/models/security_monitoring_rule_impossible_travel_options.rb +1 -1
  268. data/lib/datadog_api_client/v2/models/security_monitoring_rule_keep_alive.rb +1 -1
  269. data/lib/datadog_api_client/v2/models/security_monitoring_rule_new_value_options.rb +1 -1
  270. data/lib/datadog_api_client/v2/models/security_monitoring_rule_options.rb +6 -6
  271. data/lib/datadog_api_client/v2/models/security_monitoring_rule_third_party_options.rb +1 -1
  272. data/lib/datadog_api_client/v2/models/security_monitoring_rule_update_payload.rb +1 -1
  273. data/lib/datadog_api_client/v2/models/security_monitoring_signal_rule_create_payload.rb +1 -1
  274. data/lib/datadog_api_client/v2/models/security_monitoring_signal_rule_payload.rb +1 -1
  275. data/lib/datadog_api_client/v2/models/security_monitoring_signal_rule_response.rb +1 -1
  276. data/lib/datadog_api_client/v2/models/security_monitoring_standard_rule_create_payload.rb +1 -1
  277. data/lib/datadog_api_client/v2/models/security_monitoring_standard_rule_payload.rb +1 -1
  278. data/lib/datadog_api_client/v2/models/security_monitoring_standard_rule_response.rb +1 -1
  279. data/lib/datadog_api_client/v2/models/security_monitoring_standard_rule_test_payload.rb +1 -1
  280. data/lib/datadog_api_client/v2/models/security_monitoring_suppression_attributes.rb +11 -1
  281. data/lib/datadog_api_client/v2/models/security_monitoring_suppression_create_attributes.rb +11 -1
  282. data/lib/datadog_api_client/v2/models/security_monitoring_suppression_update_attributes.rb +12 -1
  283. data/lib/datadog_api_client/v2/models/security_monitoring_third_party_rule_case_create.rb +1 -1
  284. data/lib/datadog_api_client/v2/models/selectors.rb +160 -0
  285. data/lib/datadog_api_client/v2/models/spec_version.rb +31 -0
  286. data/lib/datadog_api_client/v2/models/token_type.rb +26 -0
  287. data/lib/datadog_api_client/v2/models/trigger_source.rb +28 -0
  288. data/lib/datadog_api_client/v2/models/unpublish_app_response.rb +105 -0
  289. data/lib/datadog_api_client/v2/models/update_action_connection_request.rb +123 -0
  290. data/lib/datadog_api_client/v2/models/{deploy_app_response.rb → update_action_connection_response.rb} +5 -5
  291. data/lib/datadog_api_client/v2/models/update_app_request.rb +2 -2
  292. data/lib/datadog_api_client/v2/models/update_app_request_data.rb +6 -6
  293. data/lib/datadog_api_client/v2/models/update_app_request_data_attributes.rb +19 -41
  294. data/lib/datadog_api_client/v2/models/update_app_response.rb +7 -7
  295. data/lib/datadog_api_client/v2/models/update_app_response_data.rb +6 -6
  296. data/lib/datadog_api_client/v2/models/update_app_response_data_attributes.rb +20 -42
  297. data/lib/datadog_api_client/v2/models/url_param.rb +150 -0
  298. data/lib/datadog_api_client/v2/models/url_param_update.rb +149 -0
  299. data/lib/datadog_api_client/v2/models/vulnerabilities_type.rb +26 -0
  300. data/lib/datadog_api_client/v2/models/vulnerability.rb +186 -0
  301. data/lib/datadog_api_client/v2/models/vulnerability_attributes.rb +462 -0
  302. data/lib/datadog_api_client/v2/models/{deployment_meta.rb → vulnerability_cvss.rb} +43 -34
  303. data/lib/datadog_api_client/v2/models/vulnerability_dependency_locations.rb +143 -0
  304. data/lib/datadog_api_client/v2/models/vulnerability_ecosystem.rb +36 -0
  305. data/lib/datadog_api_client/v2/models/vulnerability_relationships.rb +123 -0
  306. data/lib/datadog_api_client/v2/models/vulnerability_relationships_affects.rb +123 -0
  307. data/lib/datadog_api_client/v2/models/{deployment_included.rb → vulnerability_relationships_affects_data.rb} +38 -29
  308. data/lib/datadog_api_client/v2/models/vulnerability_risks.rb +198 -0
  309. data/lib/datadog_api_client/v2/models/vulnerability_severity.rb +31 -0
  310. data/lib/datadog_api_client/v2/models/vulnerability_status.rb +30 -0
  311. data/lib/datadog_api_client/v2/models/vulnerability_tool.rb +28 -0
  312. data/lib/datadog_api_client/v2/models/vulnerability_type.rb +67 -0
  313. data/lib/datadog_api_client/version.rb +1 -1
  314. metadata +194 -56
  315. data/examples/v2/app-deployment/DeployApp.rb +0 -11
  316. data/examples/v2/app-deployment/DisableApp.rb +0 -11
  317. data/lib/datadog_api_client/v2/api/app_deployment_api.rb +0 -168
  318. data/lib/datadog_api_client/v2/models/delete_apps_response_data_items_type.rb +0 -26
  319. data/lib/datadog_api_client/v2/models/deployment_relationship_data_type.rb +0 -26
  320. data/lib/datadog_api_client/v2/models/input_schema_data_attributes.rb +0 -107
  321. data/lib/datadog_api_client/v2/models/input_schema_data_attributes_parameters_items_data.rb +0 -105
  322. data/lib/datadog_api_client/v2/models/list_apps_response_data_items_type.rb +0 -26
  323. data/lib/datadog_api_client/v2/models/update_app_request_data_type.rb +0 -26
  324. data/lib/datadog_api_client/v2/models/update_app_response_data_type.rb +0 -26
  325. data/lib/datadog_api_client/v2/models/update_app_response_relationship.rb +0 -117
@@ -505,6 +505,140 @@ module DatadogAPIClient::V2
505
505
  return data, status_code, headers
506
506
  end
507
507
 
508
+ # Create a new signal-based rule.
509
+ #
510
+ # @see #create_signal_notification_rule_with_http_info
511
+ def create_signal_notification_rule(body, opts = {})
512
+ data, _status_code, _headers = create_signal_notification_rule_with_http_info(body, opts)
513
+ data
514
+ end
515
+
516
+ # Create a new signal-based rule.
517
+ #
518
+ # Create a new notification rule for security signals and return the created rule.
519
+ #
520
+ # @param body [CreateNotificationRuleParameters] The body of the create notification rule request is composed of the rule type and the rule attributes: the rule name, the selectors, the notification targets, and the rule enabled status.
521
+ # @param opts [Hash] the optional parameters
522
+ # @return [Array<(NotificationRuleResponse, Integer, Hash)>] NotificationRuleResponse data, response status code and response headers
523
+ def create_signal_notification_rule_with_http_info(body, opts = {})
524
+
525
+ if @api_client.config.debugging
526
+ @api_client.config.logger.debug 'Calling API: SecurityMonitoringAPI.create_signal_notification_rule ...'
527
+ end
528
+ # verify the required parameter 'body' is set
529
+ if @api_client.config.client_side_validation && body.nil?
530
+ fail ArgumentError, "Missing the required parameter 'body' when calling SecurityMonitoringAPI.create_signal_notification_rule"
531
+ end
532
+ # resource path
533
+ local_var_path = '/api/v2/security/signals/notification_rules'
534
+
535
+ # query parameters
536
+ query_params = opts[:query_params] || {}
537
+
538
+ # header parameters
539
+ header_params = opts[:header_params] || {}
540
+ # HTTP header 'Accept' (if needed)
541
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
542
+ # HTTP header 'Content-Type'
543
+ header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])
544
+
545
+ # form parameters
546
+ form_params = opts[:form_params] || {}
547
+
548
+ # http body (model)
549
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(body)
550
+
551
+ # return_type
552
+ return_type = opts[:debug_return_type] || 'NotificationRuleResponse'
553
+
554
+ # auth_names
555
+ auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth, :AuthZ]
556
+
557
+ new_options = opts.merge(
558
+ :operation => :create_signal_notification_rule,
559
+ :header_params => header_params,
560
+ :query_params => query_params,
561
+ :form_params => form_params,
562
+ :body => post_body,
563
+ :auth_names => auth_names,
564
+ :return_type => return_type,
565
+ :api_version => "V2"
566
+ )
567
+
568
+ data, status_code, headers = @api_client.call_api(Net::HTTP::Post, local_var_path, new_options)
569
+ if @api_client.config.debugging
570
+ @api_client.config.logger.debug "API called: SecurityMonitoringAPI#create_signal_notification_rule\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
571
+ end
572
+ return data, status_code, headers
573
+ end
574
+
575
+ # Create a new vulnerability-based rule.
576
+ #
577
+ # @see #create_vulnerability_notification_rule_with_http_info
578
+ def create_vulnerability_notification_rule(body, opts = {})
579
+ data, _status_code, _headers = create_vulnerability_notification_rule_with_http_info(body, opts)
580
+ data
581
+ end
582
+
583
+ # Create a new vulnerability-based rule.
584
+ #
585
+ # Create a new notification rule for security vulnerabilities and return the created rule.
586
+ #
587
+ # @param body [CreateNotificationRuleParameters] The body of the create notification rule request is composed of the rule type and the rule attributes: the rule name, the selectors, the notification targets, and the rule enabled status.
588
+ # @param opts [Hash] the optional parameters
589
+ # @return [Array<(NotificationRuleResponse, Integer, Hash)>] NotificationRuleResponse data, response status code and response headers
590
+ def create_vulnerability_notification_rule_with_http_info(body, opts = {})
591
+
592
+ if @api_client.config.debugging
593
+ @api_client.config.logger.debug 'Calling API: SecurityMonitoringAPI.create_vulnerability_notification_rule ...'
594
+ end
595
+ # verify the required parameter 'body' is set
596
+ if @api_client.config.client_side_validation && body.nil?
597
+ fail ArgumentError, "Missing the required parameter 'body' when calling SecurityMonitoringAPI.create_vulnerability_notification_rule"
598
+ end
599
+ # resource path
600
+ local_var_path = '/api/v2/security/vulnerabilities/notification_rules'
601
+
602
+ # query parameters
603
+ query_params = opts[:query_params] || {}
604
+
605
+ # header parameters
606
+ header_params = opts[:header_params] || {}
607
+ # HTTP header 'Accept' (if needed)
608
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
609
+ # HTTP header 'Content-Type'
610
+ header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])
611
+
612
+ # form parameters
613
+ form_params = opts[:form_params] || {}
614
+
615
+ # http body (model)
616
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(body)
617
+
618
+ # return_type
619
+ return_type = opts[:debug_return_type] || 'NotificationRuleResponse'
620
+
621
+ # auth_names
622
+ auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth, :AuthZ]
623
+
624
+ new_options = opts.merge(
625
+ :operation => :create_vulnerability_notification_rule,
626
+ :header_params => header_params,
627
+ :query_params => query_params,
628
+ :form_params => form_params,
629
+ :body => post_body,
630
+ :auth_names => auth_names,
631
+ :return_type => return_type,
632
+ :api_version => "V2"
633
+ )
634
+
635
+ data, status_code, headers = @api_client.call_api(Net::HTTP::Post, local_var_path, new_options)
636
+ if @api_client.config.debugging
637
+ @api_client.config.logger.debug "API called: SecurityMonitoringAPI#create_vulnerability_notification_rule\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
638
+ end
639
+ return data, status_code, headers
640
+ end
641
+
508
642
  # Delete an existing job.
509
643
  #
510
644
  # @see #delete_historical_job_with_http_info
@@ -771,6 +905,136 @@ module DatadogAPIClient::V2
771
905
  return data, status_code, headers
772
906
  end
773
907
 
908
+ # Delete a signal-based rule.
909
+ #
910
+ # @see #delete_signal_notification_rule_with_http_info
911
+ def delete_signal_notification_rule(id, opts = {})
912
+ delete_signal_notification_rule_with_http_info(id, opts)
913
+ nil
914
+ end
915
+
916
+ # Delete a signal-based rule.
917
+ #
918
+ # Delete a notification rule for security signals.
919
+ #
920
+ # @param id [String] ID of the notification rule.
921
+ # @param opts [Hash] the optional parameters
922
+ # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
923
+ def delete_signal_notification_rule_with_http_info(id, opts = {})
924
+
925
+ if @api_client.config.debugging
926
+ @api_client.config.logger.debug 'Calling API: SecurityMonitoringAPI.delete_signal_notification_rule ...'
927
+ end
928
+ # verify the required parameter 'id' is set
929
+ if @api_client.config.client_side_validation && id.nil?
930
+ fail ArgumentError, "Missing the required parameter 'id' when calling SecurityMonitoringAPI.delete_signal_notification_rule"
931
+ end
932
+ # resource path
933
+ local_var_path = '/api/v2/security/signals/notification_rules/{id}'.sub('{id}', CGI.escape(id.to_s).gsub('%2F', '/'))
934
+
935
+ # query parameters
936
+ query_params = opts[:query_params] || {}
937
+
938
+ # header parameters
939
+ header_params = opts[:header_params] || {}
940
+ # HTTP header 'Accept' (if needed)
941
+ header_params['Accept'] = @api_client.select_header_accept(['*/*'])
942
+
943
+ # form parameters
944
+ form_params = opts[:form_params] || {}
945
+
946
+ # http body (model)
947
+ post_body = opts[:debug_body]
948
+
949
+ # return_type
950
+ return_type = opts[:debug_return_type]
951
+
952
+ # auth_names
953
+ auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth, :AuthZ]
954
+
955
+ new_options = opts.merge(
956
+ :operation => :delete_signal_notification_rule,
957
+ :header_params => header_params,
958
+ :query_params => query_params,
959
+ :form_params => form_params,
960
+ :body => post_body,
961
+ :auth_names => auth_names,
962
+ :return_type => return_type,
963
+ :api_version => "V2"
964
+ )
965
+
966
+ data, status_code, headers = @api_client.call_api(Net::HTTP::Delete, local_var_path, new_options)
967
+ if @api_client.config.debugging
968
+ @api_client.config.logger.debug "API called: SecurityMonitoringAPI#delete_signal_notification_rule\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
969
+ end
970
+ return data, status_code, headers
971
+ end
972
+
973
+ # Delete a vulnerability-based rule.
974
+ #
975
+ # @see #delete_vulnerability_notification_rule_with_http_info
976
+ def delete_vulnerability_notification_rule(id, opts = {})
977
+ delete_vulnerability_notification_rule_with_http_info(id, opts)
978
+ nil
979
+ end
980
+
981
+ # Delete a vulnerability-based rule.
982
+ #
983
+ # Delete a notification rule for security vulnerabilities.
984
+ #
985
+ # @param id [String] ID of the notification rule.
986
+ # @param opts [Hash] the optional parameters
987
+ # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
988
+ def delete_vulnerability_notification_rule_with_http_info(id, opts = {})
989
+
990
+ if @api_client.config.debugging
991
+ @api_client.config.logger.debug 'Calling API: SecurityMonitoringAPI.delete_vulnerability_notification_rule ...'
992
+ end
993
+ # verify the required parameter 'id' is set
994
+ if @api_client.config.client_side_validation && id.nil?
995
+ fail ArgumentError, "Missing the required parameter 'id' when calling SecurityMonitoringAPI.delete_vulnerability_notification_rule"
996
+ end
997
+ # resource path
998
+ local_var_path = '/api/v2/security/vulnerabilities/notification_rules/{id}'.sub('{id}', CGI.escape(id.to_s).gsub('%2F', '/'))
999
+
1000
+ # query parameters
1001
+ query_params = opts[:query_params] || {}
1002
+
1003
+ # header parameters
1004
+ header_params = opts[:header_params] || {}
1005
+ # HTTP header 'Accept' (if needed)
1006
+ header_params['Accept'] = @api_client.select_header_accept(['*/*'])
1007
+
1008
+ # form parameters
1009
+ form_params = opts[:form_params] || {}
1010
+
1011
+ # http body (model)
1012
+ post_body = opts[:debug_body]
1013
+
1014
+ # return_type
1015
+ return_type = opts[:debug_return_type]
1016
+
1017
+ # auth_names
1018
+ auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth, :AuthZ]
1019
+
1020
+ new_options = opts.merge(
1021
+ :operation => :delete_vulnerability_notification_rule,
1022
+ :header_params => header_params,
1023
+ :query_params => query_params,
1024
+ :form_params => form_params,
1025
+ :body => post_body,
1026
+ :auth_names => auth_names,
1027
+ :return_type => return_type,
1028
+ :api_version => "V2"
1029
+ )
1030
+
1031
+ data, status_code, headers = @api_client.call_api(Net::HTTP::Delete, local_var_path, new_options)
1032
+ if @api_client.config.debugging
1033
+ @api_client.config.logger.debug "API called: SecurityMonitoringAPI#delete_vulnerability_notification_rule\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1034
+ end
1035
+ return data, status_code, headers
1036
+ end
1037
+
774
1038
  # Modify the triage assignee of a security signal.
775
1039
  #
776
1040
  # @see #edit_security_monitoring_signal_assignee_with_http_info
@@ -1134,6 +1398,85 @@ module DatadogAPIClient::V2
1134
1398
  return data, status_code, headers
1135
1399
  end
1136
1400
 
1401
+ # Get SBOM.
1402
+ #
1403
+ # @see #get_sbom_with_http_info
1404
+ def get_sbom(asset_type, filter_asset_name, opts = {})
1405
+ data, _status_code, _headers = get_sbom_with_http_info(asset_type, filter_asset_name, opts)
1406
+ data
1407
+ end
1408
+
1409
+ # Get SBOM.
1410
+ #
1411
+ # Get a single SBOM related to an asset by its type and name.
1412
+ #
1413
+ #
1414
+ # @param asset_type [AssetType] The type of the asset for the SBOM request.
1415
+ # @param filter_asset_name [String] The name of the asset for the SBOM request.
1416
+ # @param opts [Hash] the optional parameters
1417
+ # @option opts [String] :filter_repo_digest The container image `repo_digest` for the SBOM request. When the requested asset type is 'Image', this filter is mandatory.
1418
+ # @return [Array<(GetSBOMResponse, Integer, Hash)>] GetSBOMResponse data, response status code and response headers
1419
+ def get_sbom_with_http_info(asset_type, filter_asset_name, opts = {})
1420
+
1421
+ if @api_client.config.debugging
1422
+ @api_client.config.logger.debug 'Calling API: SecurityMonitoringAPI.get_sbom ...'
1423
+ end
1424
+ # verify the required parameter 'asset_type' is set
1425
+ if @api_client.config.client_side_validation && asset_type.nil?
1426
+ fail ArgumentError, "Missing the required parameter 'asset_type' when calling SecurityMonitoringAPI.get_sbom"
1427
+ end
1428
+ # verify enum value
1429
+ allowable_values = ['Repository', 'Service', 'Host', 'HostImage', 'Image']
1430
+ if @api_client.config.client_side_validation && !allowable_values.include?(asset_type)
1431
+ fail ArgumentError, "invalid value for \"asset_type\", must be one of #{allowable_values}"
1432
+ end
1433
+ # verify the required parameter 'filter_asset_name' is set
1434
+ if @api_client.config.client_side_validation && filter_asset_name.nil?
1435
+ fail ArgumentError, "Missing the required parameter 'filter_asset_name' when calling SecurityMonitoringAPI.get_sbom"
1436
+ end
1437
+ # resource path
1438
+ local_var_path = '/api/v2/security/sboms/{asset_type}'.sub('{asset_type}', CGI.escape(asset_type.to_s).gsub('%2F', '/'))
1439
+
1440
+ # query parameters
1441
+ query_params = opts[:query_params] || {}
1442
+ query_params[:'filter[asset_name]'] = filter_asset_name
1443
+ query_params[:'filter[repo_digest]'] = opts[:'filter_repo_digest'] if !opts[:'filter_repo_digest'].nil?
1444
+
1445
+ # header parameters
1446
+ header_params = opts[:header_params] || {}
1447
+ # HTTP header 'Accept' (if needed)
1448
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
1449
+
1450
+ # form parameters
1451
+ form_params = opts[:form_params] || {}
1452
+
1453
+ # http body (model)
1454
+ post_body = opts[:debug_body]
1455
+
1456
+ # return_type
1457
+ return_type = opts[:debug_return_type] || 'GetSBOMResponse'
1458
+
1459
+ # auth_names
1460
+ auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth]
1461
+
1462
+ new_options = opts.merge(
1463
+ :operation => :get_sbom,
1464
+ :header_params => header_params,
1465
+ :query_params => query_params,
1466
+ :form_params => form_params,
1467
+ :body => post_body,
1468
+ :auth_names => auth_names,
1469
+ :return_type => return_type,
1470
+ :api_version => "V2"
1471
+ )
1472
+
1473
+ data, status_code, headers = @api_client.call_api(Net::HTTP::Get, local_var_path, new_options)
1474
+ if @api_client.config.debugging
1475
+ @api_client.config.logger.debug "API called: SecurityMonitoringAPI#get_sbom\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1476
+ end
1477
+ return data, status_code, headers
1478
+ end
1479
+
1137
1480
  # Get a security filter.
1138
1481
  #
1139
1482
  # @see #get_security_filter_with_http_info
@@ -1397,7 +1740,257 @@ module DatadogAPIClient::V2
1397
1740
  return data, status_code, headers
1398
1741
  end
1399
1742
 
1400
- # List findings.
1743
+ # Get details of a signal-based rule.
1744
+ #
1745
+ # @see #get_signal_notification_rule_with_http_info
1746
+ def get_signal_notification_rule(id, opts = {})
1747
+ data, _status_code, _headers = get_signal_notification_rule_with_http_info(id, opts)
1748
+ data
1749
+ end
1750
+
1751
+ # Get details of a signal-based rule.
1752
+ #
1753
+ # Get the details of a notification rule for security signals.
1754
+ #
1755
+ # @param id [String] ID of the notification rule.
1756
+ # @param opts [Hash] the optional parameters
1757
+ # @return [Array<(NotificationRuleResponse, Integer, Hash)>] NotificationRuleResponse data, response status code and response headers
1758
+ def get_signal_notification_rule_with_http_info(id, opts = {})
1759
+
1760
+ if @api_client.config.debugging
1761
+ @api_client.config.logger.debug 'Calling API: SecurityMonitoringAPI.get_signal_notification_rule ...'
1762
+ end
1763
+ # verify the required parameter 'id' is set
1764
+ if @api_client.config.client_side_validation && id.nil?
1765
+ fail ArgumentError, "Missing the required parameter 'id' when calling SecurityMonitoringAPI.get_signal_notification_rule"
1766
+ end
1767
+ # resource path
1768
+ local_var_path = '/api/v2/security/signals/notification_rules/{id}'.sub('{id}', CGI.escape(id.to_s).gsub('%2F', '/'))
1769
+
1770
+ # query parameters
1771
+ query_params = opts[:query_params] || {}
1772
+
1773
+ # header parameters
1774
+ header_params = opts[:header_params] || {}
1775
+ # HTTP header 'Accept' (if needed)
1776
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
1777
+
1778
+ # form parameters
1779
+ form_params = opts[:form_params] || {}
1780
+
1781
+ # http body (model)
1782
+ post_body = opts[:debug_body]
1783
+
1784
+ # return_type
1785
+ return_type = opts[:debug_return_type] || 'NotificationRuleResponse'
1786
+
1787
+ # auth_names
1788
+ auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth, :AuthZ]
1789
+
1790
+ new_options = opts.merge(
1791
+ :operation => :get_signal_notification_rule,
1792
+ :header_params => header_params,
1793
+ :query_params => query_params,
1794
+ :form_params => form_params,
1795
+ :body => post_body,
1796
+ :auth_names => auth_names,
1797
+ :return_type => return_type,
1798
+ :api_version => "V2"
1799
+ )
1800
+
1801
+ data, status_code, headers = @api_client.call_api(Net::HTTP::Get, local_var_path, new_options)
1802
+ if @api_client.config.debugging
1803
+ @api_client.config.logger.debug "API called: SecurityMonitoringAPI#get_signal_notification_rule\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1804
+ end
1805
+ return data, status_code, headers
1806
+ end
1807
+
1808
+ # Get the list of signal-based rules.
1809
+ #
1810
+ # @see #get_signal_notification_rules_with_http_info
1811
+ def get_signal_notification_rules(opts = {})
1812
+ data, _status_code, _headers = get_signal_notification_rules_with_http_info(opts)
1813
+ data
1814
+ end
1815
+
1816
+ # Get the list of signal-based rules.
1817
+ #
1818
+ # Returns the list of notification rules for security signals.
1819
+ #
1820
+ # @param opts [Hash] the optional parameters
1821
+ # @return [Array<(Object, Integer, Hash)>] Object data, response status code and response headers
1822
+ def get_signal_notification_rules_with_http_info(opts = {})
1823
+
1824
+ if @api_client.config.debugging
1825
+ @api_client.config.logger.debug 'Calling API: SecurityMonitoringAPI.get_signal_notification_rules ...'
1826
+ end
1827
+ # resource path
1828
+ local_var_path = '/api/v2/security/signals/notification_rules'
1829
+
1830
+ # query parameters
1831
+ query_params = opts[:query_params] || {}
1832
+
1833
+ # header parameters
1834
+ header_params = opts[:header_params] || {}
1835
+ # HTTP header 'Accept' (if needed)
1836
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
1837
+
1838
+ # form parameters
1839
+ form_params = opts[:form_params] || {}
1840
+
1841
+ # http body (model)
1842
+ post_body = opts[:debug_body]
1843
+
1844
+ # return_type
1845
+ return_type = opts[:debug_return_type] || 'Object'
1846
+
1847
+ # auth_names
1848
+ auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth, :AuthZ]
1849
+
1850
+ new_options = opts.merge(
1851
+ :operation => :get_signal_notification_rules,
1852
+ :header_params => header_params,
1853
+ :query_params => query_params,
1854
+ :form_params => form_params,
1855
+ :body => post_body,
1856
+ :auth_names => auth_names,
1857
+ :return_type => return_type,
1858
+ :api_version => "V2"
1859
+ )
1860
+
1861
+ data, status_code, headers = @api_client.call_api(Net::HTTP::Get, local_var_path, new_options)
1862
+ if @api_client.config.debugging
1863
+ @api_client.config.logger.debug "API called: SecurityMonitoringAPI#get_signal_notification_rules\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1864
+ end
1865
+ return data, status_code, headers
1866
+ end
1867
+
1868
+ # Get details of a vulnerability-based rule.
1869
+ #
1870
+ # @see #get_vulnerability_notification_rule_with_http_info
1871
+ def get_vulnerability_notification_rule(id, opts = {})
1872
+ data, _status_code, _headers = get_vulnerability_notification_rule_with_http_info(id, opts)
1873
+ data
1874
+ end
1875
+
1876
+ # Get details of a vulnerability-based rule.
1877
+ #
1878
+ # Get the details of a notification rule for security vulnerabilities.
1879
+ #
1880
+ # @param id [String] ID of the notification rule.
1881
+ # @param opts [Hash] the optional parameters
1882
+ # @return [Array<(NotificationRuleResponse, Integer, Hash)>] NotificationRuleResponse data, response status code and response headers
1883
+ def get_vulnerability_notification_rule_with_http_info(id, opts = {})
1884
+
1885
+ if @api_client.config.debugging
1886
+ @api_client.config.logger.debug 'Calling API: SecurityMonitoringAPI.get_vulnerability_notification_rule ...'
1887
+ end
1888
+ # verify the required parameter 'id' is set
1889
+ if @api_client.config.client_side_validation && id.nil?
1890
+ fail ArgumentError, "Missing the required parameter 'id' when calling SecurityMonitoringAPI.get_vulnerability_notification_rule"
1891
+ end
1892
+ # resource path
1893
+ local_var_path = '/api/v2/security/vulnerabilities/notification_rules/{id}'.sub('{id}', CGI.escape(id.to_s).gsub('%2F', '/'))
1894
+
1895
+ # query parameters
1896
+ query_params = opts[:query_params] || {}
1897
+
1898
+ # header parameters
1899
+ header_params = opts[:header_params] || {}
1900
+ # HTTP header 'Accept' (if needed)
1901
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
1902
+
1903
+ # form parameters
1904
+ form_params = opts[:form_params] || {}
1905
+
1906
+ # http body (model)
1907
+ post_body = opts[:debug_body]
1908
+
1909
+ # return_type
1910
+ return_type = opts[:debug_return_type] || 'NotificationRuleResponse'
1911
+
1912
+ # auth_names
1913
+ auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth, :AuthZ]
1914
+
1915
+ new_options = opts.merge(
1916
+ :operation => :get_vulnerability_notification_rule,
1917
+ :header_params => header_params,
1918
+ :query_params => query_params,
1919
+ :form_params => form_params,
1920
+ :body => post_body,
1921
+ :auth_names => auth_names,
1922
+ :return_type => return_type,
1923
+ :api_version => "V2"
1924
+ )
1925
+
1926
+ data, status_code, headers = @api_client.call_api(Net::HTTP::Get, local_var_path, new_options)
1927
+ if @api_client.config.debugging
1928
+ @api_client.config.logger.debug "API called: SecurityMonitoringAPI#get_vulnerability_notification_rule\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1929
+ end
1930
+ return data, status_code, headers
1931
+ end
1932
+
1933
+ # Get the list of vulnerability-based rules.
1934
+ #
1935
+ # @see #get_vulnerability_notification_rules_with_http_info
1936
+ def get_vulnerability_notification_rules(opts = {})
1937
+ data, _status_code, _headers = get_vulnerability_notification_rules_with_http_info(opts)
1938
+ data
1939
+ end
1940
+
1941
+ # Get the list of vulnerability-based rules.
1942
+ #
1943
+ # Returns the list of notification rules for security vulnerabilities.
1944
+ #
1945
+ # @param opts [Hash] the optional parameters
1946
+ # @return [Array<(Object, Integer, Hash)>] Object data, response status code and response headers
1947
+ def get_vulnerability_notification_rules_with_http_info(opts = {})
1948
+
1949
+ if @api_client.config.debugging
1950
+ @api_client.config.logger.debug 'Calling API: SecurityMonitoringAPI.get_vulnerability_notification_rules ...'
1951
+ end
1952
+ # resource path
1953
+ local_var_path = '/api/v2/security/vulnerabilities/notification_rules'
1954
+
1955
+ # query parameters
1956
+ query_params = opts[:query_params] || {}
1957
+
1958
+ # header parameters
1959
+ header_params = opts[:header_params] || {}
1960
+ # HTTP header 'Accept' (if needed)
1961
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
1962
+
1963
+ # form parameters
1964
+ form_params = opts[:form_params] || {}
1965
+
1966
+ # http body (model)
1967
+ post_body = opts[:debug_body]
1968
+
1969
+ # return_type
1970
+ return_type = opts[:debug_return_type] || 'Object'
1971
+
1972
+ # auth_names
1973
+ auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth, :AuthZ]
1974
+
1975
+ new_options = opts.merge(
1976
+ :operation => :get_vulnerability_notification_rules,
1977
+ :header_params => header_params,
1978
+ :query_params => query_params,
1979
+ :form_params => form_params,
1980
+ :body => post_body,
1981
+ :auth_names => auth_names,
1982
+ :return_type => return_type,
1983
+ :api_version => "V2"
1984
+ )
1985
+
1986
+ data, status_code, headers = @api_client.call_api(Net::HTTP::Get, local_var_path, new_options)
1987
+ if @api_client.config.debugging
1988
+ @api_client.config.logger.debug "API called: SecurityMonitoringAPI#get_vulnerability_notification_rules\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1989
+ end
1990
+ return data, status_code, headers
1991
+ end
1992
+
1993
+ # List findings.
1401
1994
  #
1402
1995
  # @see #list_findings_with_http_info
1403
1996
  def list_findings(opts = {})
@@ -1920,6 +2513,391 @@ module DatadogAPIClient::V2
1920
2513
  return data, status_code, headers
1921
2514
  end
1922
2515
 
2516
+ # List vulnerabilities.
2517
+ #
2518
+ # @see #list_vulnerabilities_with_http_info
2519
+ def list_vulnerabilities(opts = {})
2520
+ data, _status_code, _headers = list_vulnerabilities_with_http_info(opts)
2521
+ data
2522
+ end
2523
+
2524
+ # List vulnerabilities.
2525
+ #
2526
+ # Get a list of vulnerabilities.
2527
+ #
2528
+ # ### Pagination
2529
+ #
2530
+ # Pagination is enabled by default in both `vulnerabilities` and `assets`. The size of the page varies depending on the endpoint and cannot be modified. To automate the request of the next page, you can use the links section in the response.
2531
+ #
2532
+ # This endpoint will return paginated responses. The pages are stored in the links section of the response:
2533
+ #
2534
+ # ```JSON
2535
+ # {
2536
+ # "data": [...],
2537
+ # "meta": {...},
2538
+ # "links": {
2539
+ # "self": "https://.../api/v2/security/vulnerabilities",
2540
+ # "first": "https://.../api/v2/security/vulnerabilities?page[number]=1&page[token]=abc",
2541
+ # "last": "https://.../api/v2/security/vulnerabilities?page[number]=43&page[token]=abc",
2542
+ # "next": "https://.../api/v2/security/vulnerabilities?page[number]=2&page[token]=abc"
2543
+ # }
2544
+ # }
2545
+ # ```
2546
+ #
2547
+ #
2548
+ # - `links.previous` is empty if the first page is requested.
2549
+ # - `links.next` is empty if the last page is requested.
2550
+ #
2551
+ # #### Token
2552
+ #
2553
+ # Vulnerabilities can be created, updated or deleted at any point in time.
2554
+ #
2555
+ # Upon the first request, a token is created to ensure consistency across subsequent paginated requests.
2556
+ #
2557
+ # A token is valid only for 24 hours.
2558
+ #
2559
+ # #### First request
2560
+ #
2561
+ # We consider a request to be the first request when there is no `page[token]` parameter.
2562
+ #
2563
+ # The response of this first request contains the newly created token in the `links` section.
2564
+ #
2565
+ # This token can then be used in the subsequent paginated requests.
2566
+ #
2567
+ # #### Subsequent requests
2568
+ #
2569
+ # Any request containing valid `page[token]` and `page[number]` parameters will be considered a subsequent request.
2570
+ #
2571
+ # If the `token` is invalid, a `404` response will be returned.
2572
+ #
2573
+ # If the page `number` is invalid, a `400` response will be returned.
2574
+ #
2575
+ # ### Filtering
2576
+ #
2577
+ # The request can include some filter parameters to filter the data to be retrieved. The format of the filter parameters follows the [JSON:API format](https://jsonapi.org/format/#fetching-filtering): `filter[$prop_name]`, where `prop_name` is the property name in the entity being filtered by.
2578
+ #
2579
+ # All filters can include multiple values, where data will be filtered with an OR clause: `filter[title]=Title1,Title2` will filter all vulnerabilities where title is equal to `Title1` OR `Title2`.
2580
+ #
2581
+ # String filters are case sensitive.
2582
+ #
2583
+ # Boolean filters accept `true` or `false` as values.
2584
+ #
2585
+ # Number filters must include an operator as a second filter input: `filter[$prop_name][$operator]`. For example, for the vulnerabilities endpoint: `filter[cvss.base.score][lte]=8`.
2586
+ #
2587
+ # Available operators are: `eq` (==), `lt` (<), `lte` (<=), `gt` (>) and `gte` (>=).
2588
+ #
2589
+ # ### Metadata
2590
+ #
2591
+ # Following [JSON:API format](https://jsonapi.org/format/#document-meta), object including non-standard meta-information.
2592
+ #
2593
+ # This endpoint includes the meta member in the response. For more details on each of the properties included in this section, check the endpoints response tables.
2594
+ #
2595
+ # ```JSON
2596
+ # {
2597
+ # "data": [...],
2598
+ # "meta": {
2599
+ # "total": 1500,
2600
+ # "count": 18732,
2601
+ # "token": "some_token"
2602
+ # },
2603
+ # "links": {...}
2604
+ # }
2605
+ # ```
2606
+ #
2607
+ #
2608
+ # @param opts [Hash] the optional parameters
2609
+ # @option opts [String] :page_token Its value must come from the `links` section of the response of the first request. Do not manually edit it.
2610
+ # @option opts [Integer] :page_number The page number to be retrieved. It should be equal or greater than `1`
2611
+ # @option opts [VulnerabilityType] :filter_type Filter by vulnerability type.
2612
+ # @option opts [Float] :filter_cvss_base_score_op Filter by vulnerability base (i.e. from the original advisory) severity score.
2613
+ # @option opts [VulnerabilitySeverity] :filter_cvss_base_severity Filter by vulnerability base severity.
2614
+ # @option opts [String] :filter_cvss_base_vector Filter by vulnerability base CVSS vector.
2615
+ # @option opts [Float] :filter_cvss_datadog_score_op Filter by vulnerability Datadog severity score.
2616
+ # @option opts [VulnerabilitySeverity] :filter_cvss_datadog_severity Filter by vulnerability Datadog severity.
2617
+ # @option opts [String] :filter_cvss_datadog_vector Filter by vulnerability Datadog CVSS vector.
2618
+ # @option opts [VulnerabilityStatus] :filter_status Filter by the status of the vulnerability.
2619
+ # @option opts [VulnerabilityTool] :filter_tool Filter by the tool of the vulnerability.
2620
+ # @option opts [String] :filter_library_name Filter by library name.
2621
+ # @option opts [String] :filter_library_version Filter by library version.
2622
+ # @option opts [String] :filter_advisory_id Filter by advisory ID.
2623
+ # @option opts [Boolean] :filter_risks_exploitation_probability Filter by exploitation probability.
2624
+ # @option opts [Boolean] :filter_risks_poc_exploit_available Filter by POC exploit availability.
2625
+ # @option opts [Boolean] :filter_risks_exploit_available Filter by public exploit availability.
2626
+ # @option opts [Float] :filter_risks_epss_score_op Filter by vulnerability [EPSS](https://www.first.org/epss/) severity score.
2627
+ # @option opts [VulnerabilitySeverity] :filter_risks_epss_severity Filter by vulnerability [EPSS](https://www.first.org/epss/) severity.
2628
+ # @option opts [String] :filter_language Filter by language.
2629
+ # @option opts [VulnerabilityEcosystem] :filter_ecosystem Filter by ecosystem.
2630
+ # @option opts [String] :filter_code_location_location Filter by vulnerability location.
2631
+ # @option opts [String] :filter_code_location_file_path Filter by vulnerability file path.
2632
+ # @option opts [String] :filter_code_location_method Filter by method.
2633
+ # @option opts [Boolean] :filter_fix_available Filter by fix availability.
2634
+ # @option opts [String] :filter_repo_digests Filter by vulnerability `repo_digest` (when the vulnerability is related to `Image` asset).
2635
+ # @option opts [String] :filter_asset_name Filter by asset name.
2636
+ # @option opts [AssetType] :filter_asset_type Filter by asset type.
2637
+ # @option opts [String] :filter_asset_version_first Filter by the first version of the asset this vulnerability has been detected on.
2638
+ # @option opts [String] :filter_asset_version_last Filter by the last version of the asset this vulnerability has been detected on.
2639
+ # @option opts [String] :filter_asset_repository_url Filter by the repository url associated to the asset.
2640
+ # @option opts [Boolean] :filter_asset_risks_in_production Filter whether the asset is in production or not.
2641
+ # @option opts [Boolean] :filter_asset_risks_under_attack Filter whether the asset is under attack or not.
2642
+ # @option opts [Boolean] :filter_asset_risks_is_publicly_accessible Filter whether the asset is publicly accessible or not.
2643
+ # @option opts [Boolean] :filter_asset_risks_has_privileged_access Filter whether the asset is publicly accessible or not.
2644
+ # @option opts [Boolean] :filter_asset_risks_has_access_to_sensitive_data Filter whether the asset has access to sensitive data or not.
2645
+ # @option opts [String] :filter_asset_environments Filter by asset environments.
2646
+ # @option opts [String] :filter_asset_arch Filter by asset architecture.
2647
+ # @option opts [String] :filter_asset_operating_system_name Filter by asset operating system name.
2648
+ # @option opts [String] :filter_asset_operating_system_version Filter by asset operating system version.
2649
+ # @return [Array<(ListVulnerabilitiesResponse, Integer, Hash)>] ListVulnerabilitiesResponse data, response status code and response headers
2650
+ def list_vulnerabilities_with_http_info(opts = {})
2651
+
2652
+ if @api_client.config.debugging
2653
+ @api_client.config.logger.debug 'Calling API: SecurityMonitoringAPI.list_vulnerabilities ...'
2654
+ end
2655
+ if @api_client.config.client_side_validation && !opts[:'page_number'].nil? && opts[:'page_number'] < 1
2656
+ fail ArgumentError, 'invalid value for "opts[:"page_number"]" when calling SecurityMonitoringAPI.list_vulnerabilities, must be greater than or equal to 1.'
2657
+ end
2658
+ allowable_values = ['AdminConsoleActive', 'CodeInjection', 'CommandInjection', 'ComponentWithKnownVulnerability', 'DangerousWorkflows', 'DefaultAppDeployed', 'DefaultHtmlEscapeInvalid', 'DirectoryListingLeak', 'EmailHtmlInjection', 'EndOfLife', 'HardcodedPassword', 'HardcodedSecret', 'HeaderInjection', 'HstsHeaderMissing', 'InsecureAuthProtocol', 'InsecureCookie', 'InsecureJspLayout', 'LdapInjection', 'MaliciousPackage', 'MandatoryRemediation', 'NoHttpOnlyCookie', 'NoSameSiteCookie', 'NoSqlMongoDbInjection', 'PathTraversal', 'ReflectionInjection', 'RiskyLicense', 'SessionRewriting', 'SessionTimeout', 'SqlInjection', 'Ssrf', 'StackTraceLeak', 'TrustBoundaryViolation', 'Unmaintained', 'UntrustedDeserialization', 'UnvalidatedRedirect', 'VerbTampering', 'WeakCipher', 'WeakHash', 'WeakRandomness', 'XContentTypeHeaderMissing', 'XPathInjection', 'Xss']
2659
+ if @api_client.config.client_side_validation && opts[:'filter_type'] && !allowable_values.include?(opts[:'filter_type'])
2660
+ fail ArgumentError, "invalid value for \"filter_type\", must be one of #{allowable_values}"
2661
+ end
2662
+ if @api_client.config.client_side_validation && !opts[:'filter_cvss_base_score_op'].nil? && opts[:'filter_cvss_base_score_op'] > 10
2663
+ fail ArgumentError, 'invalid value for "opts[:"filter_cvss_base_score_op"]" when calling SecurityMonitoringAPI.list_vulnerabilities, must be smaller than or equal to 10.'
2664
+ end
2665
+ if @api_client.config.client_side_validation && !opts[:'filter_cvss_base_score_op'].nil? && opts[:'filter_cvss_base_score_op'] < 0
2666
+ fail ArgumentError, 'invalid value for "opts[:"filter_cvss_base_score_op"]" when calling SecurityMonitoringAPI.list_vulnerabilities, must be greater than or equal to 0.'
2667
+ end
2668
+ allowable_values = ['Unknown', 'None', 'Low', 'Medium', 'High', 'Critical']
2669
+ if @api_client.config.client_side_validation && opts[:'filter_cvss_base_severity'] && !allowable_values.include?(opts[:'filter_cvss_base_severity'])
2670
+ fail ArgumentError, "invalid value for \"filter_cvss_base_severity\", must be one of #{allowable_values}"
2671
+ end
2672
+ if @api_client.config.client_side_validation && !opts[:'filter_cvss_datadog_score_op'].nil? && opts[:'filter_cvss_datadog_score_op'] > 10
2673
+ fail ArgumentError, 'invalid value for "opts[:"filter_cvss_datadog_score_op"]" when calling SecurityMonitoringAPI.list_vulnerabilities, must be smaller than or equal to 10.'
2674
+ end
2675
+ if @api_client.config.client_side_validation && !opts[:'filter_cvss_datadog_score_op'].nil? && opts[:'filter_cvss_datadog_score_op'] < 0
2676
+ fail ArgumentError, 'invalid value for "opts[:"filter_cvss_datadog_score_op"]" when calling SecurityMonitoringAPI.list_vulnerabilities, must be greater than or equal to 0.'
2677
+ end
2678
+ allowable_values = ['Unknown', 'None', 'Low', 'Medium', 'High', 'Critical']
2679
+ if @api_client.config.client_side_validation && opts[:'filter_cvss_datadog_severity'] && !allowable_values.include?(opts[:'filter_cvss_datadog_severity'])
2680
+ fail ArgumentError, "invalid value for \"filter_cvss_datadog_severity\", must be one of #{allowable_values}"
2681
+ end
2682
+ allowable_values = ['Open', 'Muted', 'Remediated', 'InProgress', 'AutoClosed']
2683
+ if @api_client.config.client_side_validation && opts[:'filter_status'] && !allowable_values.include?(opts[:'filter_status'])
2684
+ fail ArgumentError, "invalid value for \"filter_status\", must be one of #{allowable_values}"
2685
+ end
2686
+ allowable_values = ['IAST', 'SCA', 'Infra']
2687
+ if @api_client.config.client_side_validation && opts[:'filter_tool'] && !allowable_values.include?(opts[:'filter_tool'])
2688
+ fail ArgumentError, "invalid value for \"filter_tool\", must be one of #{allowable_values}"
2689
+ end
2690
+ if @api_client.config.client_side_validation && !opts[:'filter_risks_epss_score_op'].nil? && opts[:'filter_risks_epss_score_op'] > 1
2691
+ fail ArgumentError, 'invalid value for "opts[:"filter_risks_epss_score_op"]" when calling SecurityMonitoringAPI.list_vulnerabilities, must be smaller than or equal to 1.'
2692
+ end
2693
+ if @api_client.config.client_side_validation && !opts[:'filter_risks_epss_score_op'].nil? && opts[:'filter_risks_epss_score_op'] < 0
2694
+ fail ArgumentError, 'invalid value for "opts[:"filter_risks_epss_score_op"]" when calling SecurityMonitoringAPI.list_vulnerabilities, must be greater than or equal to 0.'
2695
+ end
2696
+ allowable_values = ['Unknown', 'None', 'Low', 'Medium', 'High', 'Critical']
2697
+ if @api_client.config.client_side_validation && opts[:'filter_risks_epss_severity'] && !allowable_values.include?(opts[:'filter_risks_epss_severity'])
2698
+ fail ArgumentError, "invalid value for \"filter_risks_epss_severity\", must be one of #{allowable_values}"
2699
+ end
2700
+ allowable_values = ['PyPI', 'Maven', 'NuGet', 'Npm', 'RubyGems', 'Go', 'Packagist', 'Ddeb', 'Rpm', 'Apk', 'Windows']
2701
+ if @api_client.config.client_side_validation && opts[:'filter_ecosystem'] && !allowable_values.include?(opts[:'filter_ecosystem'])
2702
+ fail ArgumentError, "invalid value for \"filter_ecosystem\", must be one of #{allowable_values}"
2703
+ end
2704
+ allowable_values = ['Repository', 'Service', 'Host', 'HostImage', 'Image']
2705
+ if @api_client.config.client_side_validation && opts[:'filter_asset_type'] && !allowable_values.include?(opts[:'filter_asset_type'])
2706
+ fail ArgumentError, "invalid value for \"filter_asset_type\", must be one of #{allowable_values}"
2707
+ end
2708
+ # resource path
2709
+ local_var_path = '/api/v2/security/vulnerabilities'
2710
+
2711
+ # query parameters
2712
+ query_params = opts[:query_params] || {}
2713
+ query_params[:'page[token]'] = opts[:'page_token'] if !opts[:'page_token'].nil?
2714
+ query_params[:'page[number]'] = opts[:'page_number'] if !opts[:'page_number'].nil?
2715
+ query_params[:'filter[type]'] = opts[:'filter_type'] if !opts[:'filter_type'].nil?
2716
+ query_params[:'filter[cvss.base.score][`$op`]'] = opts[:'filter_cvss_base_score_op'] if !opts[:'filter_cvss_base_score_op'].nil?
2717
+ query_params[:'filter[cvss.base.severity]'] = opts[:'filter_cvss_base_severity'] if !opts[:'filter_cvss_base_severity'].nil?
2718
+ query_params[:'filter[cvss.base.vector]'] = opts[:'filter_cvss_base_vector'] if !opts[:'filter_cvss_base_vector'].nil?
2719
+ query_params[:'filter[cvss.datadog.score][`$op`]'] = opts[:'filter_cvss_datadog_score_op'] if !opts[:'filter_cvss_datadog_score_op'].nil?
2720
+ query_params[:'filter[cvss.datadog.severity]'] = opts[:'filter_cvss_datadog_severity'] if !opts[:'filter_cvss_datadog_severity'].nil?
2721
+ query_params[:'filter[cvss.datadog.vector]'] = opts[:'filter_cvss_datadog_vector'] if !opts[:'filter_cvss_datadog_vector'].nil?
2722
+ query_params[:'filter[status]'] = opts[:'filter_status'] if !opts[:'filter_status'].nil?
2723
+ query_params[:'filter[tool]'] = opts[:'filter_tool'] if !opts[:'filter_tool'].nil?
2724
+ query_params[:'filter[library.name]'] = opts[:'filter_library_name'] if !opts[:'filter_library_name'].nil?
2725
+ query_params[:'filter[library.version]'] = opts[:'filter_library_version'] if !opts[:'filter_library_version'].nil?
2726
+ query_params[:'filter[advisory_id]'] = opts[:'filter_advisory_id'] if !opts[:'filter_advisory_id'].nil?
2727
+ query_params[:'filter[risks.exploitation_probability]'] = opts[:'filter_risks_exploitation_probability'] if !opts[:'filter_risks_exploitation_probability'].nil?
2728
+ query_params[:'filter[risks.poc_exploit_available]'] = opts[:'filter_risks_poc_exploit_available'] if !opts[:'filter_risks_poc_exploit_available'].nil?
2729
+ query_params[:'filter[risks.exploit_available]'] = opts[:'filter_risks_exploit_available'] if !opts[:'filter_risks_exploit_available'].nil?
2730
+ query_params[:'filter[risks.epss.score][`$op`]'] = opts[:'filter_risks_epss_score_op'] if !opts[:'filter_risks_epss_score_op'].nil?
2731
+ query_params[:'filter[risks.epss.severity]'] = opts[:'filter_risks_epss_severity'] if !opts[:'filter_risks_epss_severity'].nil?
2732
+ query_params[:'filter[language]'] = opts[:'filter_language'] if !opts[:'filter_language'].nil?
2733
+ query_params[:'filter[ecosystem]'] = opts[:'filter_ecosystem'] if !opts[:'filter_ecosystem'].nil?
2734
+ query_params[:'filter[code_location.location]'] = opts[:'filter_code_location_location'] if !opts[:'filter_code_location_location'].nil?
2735
+ query_params[:'filter[code_location.file_path]'] = opts[:'filter_code_location_file_path'] if !opts[:'filter_code_location_file_path'].nil?
2736
+ query_params[:'filter[code_location.method]'] = opts[:'filter_code_location_method'] if !opts[:'filter_code_location_method'].nil?
2737
+ query_params[:'filter[fix_available]'] = opts[:'filter_fix_available'] if !opts[:'filter_fix_available'].nil?
2738
+ query_params[:'filter[repo_digests]'] = opts[:'filter_repo_digests'] if !opts[:'filter_repo_digests'].nil?
2739
+ query_params[:'filter[asset.name]'] = opts[:'filter_asset_name'] if !opts[:'filter_asset_name'].nil?
2740
+ query_params[:'filter[asset.type]'] = opts[:'filter_asset_type'] if !opts[:'filter_asset_type'].nil?
2741
+ query_params[:'filter[asset.version.first]'] = opts[:'filter_asset_version_first'] if !opts[:'filter_asset_version_first'].nil?
2742
+ query_params[:'filter[asset.version.last]'] = opts[:'filter_asset_version_last'] if !opts[:'filter_asset_version_last'].nil?
2743
+ query_params[:'filter[asset.repository_url]'] = opts[:'filter_asset_repository_url'] if !opts[:'filter_asset_repository_url'].nil?
2744
+ query_params[:'filter[asset.risks.in_production]'] = opts[:'filter_asset_risks_in_production'] if !opts[:'filter_asset_risks_in_production'].nil?
2745
+ query_params[:'filter[asset.risks.under_attack]'] = opts[:'filter_asset_risks_under_attack'] if !opts[:'filter_asset_risks_under_attack'].nil?
2746
+ query_params[:'filter[asset.risks.is_publicly_accessible]'] = opts[:'filter_asset_risks_is_publicly_accessible'] if !opts[:'filter_asset_risks_is_publicly_accessible'].nil?
2747
+ query_params[:'filter[asset.risks.has_privileged_access]'] = opts[:'filter_asset_risks_has_privileged_access'] if !opts[:'filter_asset_risks_has_privileged_access'].nil?
2748
+ query_params[:'filter[asset.risks.has_access_to_sensitive_data]'] = opts[:'filter_asset_risks_has_access_to_sensitive_data'] if !opts[:'filter_asset_risks_has_access_to_sensitive_data'].nil?
2749
+ query_params[:'filter[asset.environments]'] = opts[:'filter_asset_environments'] if !opts[:'filter_asset_environments'].nil?
2750
+ query_params[:'filter[asset.arch]'] = opts[:'filter_asset_arch'] if !opts[:'filter_asset_arch'].nil?
2751
+ query_params[:'filter[asset.operating_system.name]'] = opts[:'filter_asset_operating_system_name'] if !opts[:'filter_asset_operating_system_name'].nil?
2752
+ query_params[:'filter[asset.operating_system.version]'] = opts[:'filter_asset_operating_system_version'] if !opts[:'filter_asset_operating_system_version'].nil?
2753
+
2754
+ # header parameters
2755
+ header_params = opts[:header_params] || {}
2756
+ # HTTP header 'Accept' (if needed)
2757
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
2758
+
2759
+ # form parameters
2760
+ form_params = opts[:form_params] || {}
2761
+
2762
+ # http body (model)
2763
+ post_body = opts[:debug_body]
2764
+
2765
+ # return_type
2766
+ return_type = opts[:debug_return_type] || 'ListVulnerabilitiesResponse'
2767
+
2768
+ # auth_names
2769
+ auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth]
2770
+
2771
+ new_options = opts.merge(
2772
+ :operation => :list_vulnerabilities,
2773
+ :header_params => header_params,
2774
+ :query_params => query_params,
2775
+ :form_params => form_params,
2776
+ :body => post_body,
2777
+ :auth_names => auth_names,
2778
+ :return_type => return_type,
2779
+ :api_version => "V2"
2780
+ )
2781
+
2782
+ data, status_code, headers = @api_client.call_api(Net::HTTP::Get, local_var_path, new_options)
2783
+ if @api_client.config.debugging
2784
+ @api_client.config.logger.debug "API called: SecurityMonitoringAPI#list_vulnerabilities\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
2785
+ end
2786
+ return data, status_code, headers
2787
+ end
2788
+
2789
+ # List vulnerable assets.
2790
+ #
2791
+ # @see #list_vulnerable_assets_with_http_info
2792
+ def list_vulnerable_assets(opts = {})
2793
+ data, _status_code, _headers = list_vulnerable_assets_with_http_info(opts)
2794
+ data
2795
+ end
2796
+
2797
+ # List vulnerable assets.
2798
+ #
2799
+ # Get a list of vulnerable assets.
2800
+ #
2801
+ # ### Pagination
2802
+ #
2803
+ # Please review the [Pagination section for the "List Vulnerabilities"](#pagination) endpoint.
2804
+ #
2805
+ # ### Filtering
2806
+ #
2807
+ # Please review the [Filtering section for the "List Vulnerabilities"](#filtering) endpoint.
2808
+ #
2809
+ # ### Metadata
2810
+ #
2811
+ # Please review the [Metadata section for the "List Vulnerabilities"](#metadata) endpoint.
2812
+ #
2813
+ #
2814
+ # @param opts [Hash] the optional parameters
2815
+ # @option opts [String] :page_token Its value must come from the `links` section of the response of the first request. Do not manually edit it.
2816
+ # @option opts [Integer] :page_number The page number to be retrieved. It should be equal or greater than `1`
2817
+ # @option opts [String] :filter_name Filter by name.
2818
+ # @option opts [AssetType] :filter_type Filter by type.
2819
+ # @option opts [String] :filter_version_first Filter by the first version of the asset since it has been vulnerable.
2820
+ # @option opts [String] :filter_version_last Filter by the last detected version of the asset.
2821
+ # @option opts [String] :filter_repository_url Filter by the repository url associated to the asset.
2822
+ # @option opts [Boolean] :filter_risks_in_production Filter whether the asset is in production or not.
2823
+ # @option opts [Boolean] :filter_risks_under_attack Filter whether the asset (Service) is under attack or not.
2824
+ # @option opts [Boolean] :filter_risks_is_publicly_accessible Filter whether the asset (Host) is publicly accessible or not.
2825
+ # @option opts [Boolean] :filter_risks_has_privileged_access Filter whether the asset (Host) has privileged access or not.
2826
+ # @option opts [Boolean] :filter_risks_has_access_to_sensitive_data Filter whether the asset (Host) has access to sensitive data or not.
2827
+ # @option opts [String] :filter_environments Filter by environment.
2828
+ # @option opts [String] :filter_arch Filter by architecture.
2829
+ # @option opts [String] :filter_operating_system_name Filter by operating system name.
2830
+ # @option opts [String] :filter_operating_system_version Filter by operating system version.
2831
+ # @return [Array<(ListVulnerableAssetsResponse, Integer, Hash)>] ListVulnerableAssetsResponse data, response status code and response headers
2832
+ def list_vulnerable_assets_with_http_info(opts = {})
2833
+
2834
+ if @api_client.config.debugging
2835
+ @api_client.config.logger.debug 'Calling API: SecurityMonitoringAPI.list_vulnerable_assets ...'
2836
+ end
2837
+ if @api_client.config.client_side_validation && !opts[:'page_number'].nil? && opts[:'page_number'] < 1
2838
+ fail ArgumentError, 'invalid value for "opts[:"page_number"]" when calling SecurityMonitoringAPI.list_vulnerable_assets, must be greater than or equal to 1.'
2839
+ end
2840
+ allowable_values = ['Repository', 'Service', 'Host', 'HostImage', 'Image']
2841
+ if @api_client.config.client_side_validation && opts[:'filter_type'] && !allowable_values.include?(opts[:'filter_type'])
2842
+ fail ArgumentError, "invalid value for \"filter_type\", must be one of #{allowable_values}"
2843
+ end
2844
+ # resource path
2845
+ local_var_path = '/api/v2/security/assets'
2846
+
2847
+ # query parameters
2848
+ query_params = opts[:query_params] || {}
2849
+ query_params[:'page[token]'] = opts[:'page_token'] if !opts[:'page_token'].nil?
2850
+ query_params[:'page[number]'] = opts[:'page_number'] if !opts[:'page_number'].nil?
2851
+ query_params[:'filter[name]'] = opts[:'filter_name'] if !opts[:'filter_name'].nil?
2852
+ query_params[:'filter[type]'] = opts[:'filter_type'] if !opts[:'filter_type'].nil?
2853
+ query_params[:'filter[version.first]'] = opts[:'filter_version_first'] if !opts[:'filter_version_first'].nil?
2854
+ query_params[:'filter[version.last]'] = opts[:'filter_version_last'] if !opts[:'filter_version_last'].nil?
2855
+ query_params[:'filter[repository_url]'] = opts[:'filter_repository_url'] if !opts[:'filter_repository_url'].nil?
2856
+ query_params[:'filter[risks.in_production]'] = opts[:'filter_risks_in_production'] if !opts[:'filter_risks_in_production'].nil?
2857
+ query_params[:'filter[risks.under_attack]'] = opts[:'filter_risks_under_attack'] if !opts[:'filter_risks_under_attack'].nil?
2858
+ query_params[:'filter[risks.is_publicly_accessible]'] = opts[:'filter_risks_is_publicly_accessible'] if !opts[:'filter_risks_is_publicly_accessible'].nil?
2859
+ query_params[:'filter[risks.has_privileged_access]'] = opts[:'filter_risks_has_privileged_access'] if !opts[:'filter_risks_has_privileged_access'].nil?
2860
+ query_params[:'filter[risks.has_access_to_sensitive_data]'] = opts[:'filter_risks_has_access_to_sensitive_data'] if !opts[:'filter_risks_has_access_to_sensitive_data'].nil?
2861
+ query_params[:'filter[environments]'] = opts[:'filter_environments'] if !opts[:'filter_environments'].nil?
2862
+ query_params[:'filter[arch]'] = opts[:'filter_arch'] if !opts[:'filter_arch'].nil?
2863
+ query_params[:'filter[operating_system.name]'] = opts[:'filter_operating_system_name'] if !opts[:'filter_operating_system_name'].nil?
2864
+ query_params[:'filter[operating_system.version]'] = opts[:'filter_operating_system_version'] if !opts[:'filter_operating_system_version'].nil?
2865
+
2866
+ # header parameters
2867
+ header_params = opts[:header_params] || {}
2868
+ # HTTP header 'Accept' (if needed)
2869
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
2870
+
2871
+ # form parameters
2872
+ form_params = opts[:form_params] || {}
2873
+
2874
+ # http body (model)
2875
+ post_body = opts[:debug_body]
2876
+
2877
+ # return_type
2878
+ return_type = opts[:debug_return_type] || 'ListVulnerableAssetsResponse'
2879
+
2880
+ # auth_names
2881
+ auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth]
2882
+
2883
+ new_options = opts.merge(
2884
+ :operation => :list_vulnerable_assets,
2885
+ :header_params => header_params,
2886
+ :query_params => query_params,
2887
+ :form_params => form_params,
2888
+ :body => post_body,
2889
+ :auth_names => auth_names,
2890
+ :return_type => return_type,
2891
+ :api_version => "V2"
2892
+ )
2893
+
2894
+ data, status_code, headers = @api_client.call_api(Net::HTTP::Get, local_var_path, new_options)
2895
+ if @api_client.config.debugging
2896
+ @api_client.config.logger.debug "API called: SecurityMonitoringAPI#list_vulnerable_assets\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
2897
+ end
2898
+ return data, status_code, headers
2899
+ end
2900
+
1923
2901
  # Mute or unmute a batch of findings.
1924
2902
  #
1925
2903
  # @see #mute_findings_with_http_info
@@ -1993,6 +2971,150 @@ module DatadogAPIClient::V2
1993
2971
  return data, status_code, headers
1994
2972
  end
1995
2973
 
2974
+ # Patch a signal-based rule.
2975
+ #
2976
+ # @see #patch_signal_notification_rule_with_http_info
2977
+ def patch_signal_notification_rule(id, body, opts = {})
2978
+ data, _status_code, _headers = patch_signal_notification_rule_with_http_info(id, body, opts)
2979
+ data
2980
+ end
2981
+
2982
+ # Patch a signal-based rule.
2983
+ #
2984
+ # Partially update the notification rule. All fields are optional; if a field is not provided, it is not updated.
2985
+ #
2986
+ # @param id [String] ID of the notification rule.
2987
+ # @param body [PatchNotificationRuleParameters]
2988
+ # @param opts [Hash] the optional parameters
2989
+ # @return [Array<(NotificationRuleResponse, Integer, Hash)>] NotificationRuleResponse data, response status code and response headers
2990
+ def patch_signal_notification_rule_with_http_info(id, body, opts = {})
2991
+
2992
+ if @api_client.config.debugging
2993
+ @api_client.config.logger.debug 'Calling API: SecurityMonitoringAPI.patch_signal_notification_rule ...'
2994
+ end
2995
+ # verify the required parameter 'id' is set
2996
+ if @api_client.config.client_side_validation && id.nil?
2997
+ fail ArgumentError, "Missing the required parameter 'id' when calling SecurityMonitoringAPI.patch_signal_notification_rule"
2998
+ end
2999
+ # verify the required parameter 'body' is set
3000
+ if @api_client.config.client_side_validation && body.nil?
3001
+ fail ArgumentError, "Missing the required parameter 'body' when calling SecurityMonitoringAPI.patch_signal_notification_rule"
3002
+ end
3003
+ # resource path
3004
+ local_var_path = '/api/v2/security/signals/notification_rules/{id}'.sub('{id}', CGI.escape(id.to_s).gsub('%2F', '/'))
3005
+
3006
+ # query parameters
3007
+ query_params = opts[:query_params] || {}
3008
+
3009
+ # header parameters
3010
+ header_params = opts[:header_params] || {}
3011
+ # HTTP header 'Accept' (if needed)
3012
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
3013
+ # HTTP header 'Content-Type'
3014
+ header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])
3015
+
3016
+ # form parameters
3017
+ form_params = opts[:form_params] || {}
3018
+
3019
+ # http body (model)
3020
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(body)
3021
+
3022
+ # return_type
3023
+ return_type = opts[:debug_return_type] || 'NotificationRuleResponse'
3024
+
3025
+ # auth_names
3026
+ auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth, :AuthZ]
3027
+
3028
+ new_options = opts.merge(
3029
+ :operation => :patch_signal_notification_rule,
3030
+ :header_params => header_params,
3031
+ :query_params => query_params,
3032
+ :form_params => form_params,
3033
+ :body => post_body,
3034
+ :auth_names => auth_names,
3035
+ :return_type => return_type,
3036
+ :api_version => "V2"
3037
+ )
3038
+
3039
+ data, status_code, headers = @api_client.call_api(Net::HTTP::Patch, local_var_path, new_options)
3040
+ if @api_client.config.debugging
3041
+ @api_client.config.logger.debug "API called: SecurityMonitoringAPI#patch_signal_notification_rule\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
3042
+ end
3043
+ return data, status_code, headers
3044
+ end
3045
+
3046
+ # Patch a vulnerability-based rule.
3047
+ #
3048
+ # @see #patch_vulnerability_notification_rule_with_http_info
3049
+ def patch_vulnerability_notification_rule(id, body, opts = {})
3050
+ data, _status_code, _headers = patch_vulnerability_notification_rule_with_http_info(id, body, opts)
3051
+ data
3052
+ end
3053
+
3054
+ # Patch a vulnerability-based rule.
3055
+ #
3056
+ # Partially update the notification rule. All fields are optional; if a field is not provided, it is not updated.
3057
+ #
3058
+ # @param id [String] ID of the notification rule.
3059
+ # @param body [PatchNotificationRuleParameters]
3060
+ # @param opts [Hash] the optional parameters
3061
+ # @return [Array<(NotificationRuleResponse, Integer, Hash)>] NotificationRuleResponse data, response status code and response headers
3062
+ def patch_vulnerability_notification_rule_with_http_info(id, body, opts = {})
3063
+
3064
+ if @api_client.config.debugging
3065
+ @api_client.config.logger.debug 'Calling API: SecurityMonitoringAPI.patch_vulnerability_notification_rule ...'
3066
+ end
3067
+ # verify the required parameter 'id' is set
3068
+ if @api_client.config.client_side_validation && id.nil?
3069
+ fail ArgumentError, "Missing the required parameter 'id' when calling SecurityMonitoringAPI.patch_vulnerability_notification_rule"
3070
+ end
3071
+ # verify the required parameter 'body' is set
3072
+ if @api_client.config.client_side_validation && body.nil?
3073
+ fail ArgumentError, "Missing the required parameter 'body' when calling SecurityMonitoringAPI.patch_vulnerability_notification_rule"
3074
+ end
3075
+ # resource path
3076
+ local_var_path = '/api/v2/security/vulnerabilities/notification_rules/{id}'.sub('{id}', CGI.escape(id.to_s).gsub('%2F', '/'))
3077
+
3078
+ # query parameters
3079
+ query_params = opts[:query_params] || {}
3080
+
3081
+ # header parameters
3082
+ header_params = opts[:header_params] || {}
3083
+ # HTTP header 'Accept' (if needed)
3084
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
3085
+ # HTTP header 'Content-Type'
3086
+ header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])
3087
+
3088
+ # form parameters
3089
+ form_params = opts[:form_params] || {}
3090
+
3091
+ # http body (model)
3092
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(body)
3093
+
3094
+ # return_type
3095
+ return_type = opts[:debug_return_type] || 'NotificationRuleResponse'
3096
+
3097
+ # auth_names
3098
+ auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth, :AuthZ]
3099
+
3100
+ new_options = opts.merge(
3101
+ :operation => :patch_vulnerability_notification_rule,
3102
+ :header_params => header_params,
3103
+ :query_params => query_params,
3104
+ :form_params => form_params,
3105
+ :body => post_body,
3106
+ :auth_names => auth_names,
3107
+ :return_type => return_type,
3108
+ :api_version => "V2"
3109
+ )
3110
+
3111
+ data, status_code, headers = @api_client.call_api(Net::HTTP::Patch, local_var_path, new_options)
3112
+ if @api_client.config.debugging
3113
+ @api_client.config.logger.debug "API called: SecurityMonitoringAPI#patch_vulnerability_notification_rule\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
3114
+ end
3115
+ return data, status_code, headers
3116
+ end
3117
+
1996
3118
  # Run a historical job.
1997
3119
  #
1998
3120
  # @see #run_historical_job_with_http_info