Recommendation API endpoints
Use the Recommendation API endpoints to manage recommendations. Before you run an endpoint, make sure that you authenticate the API request.
openapi: 3.0.2 components: schemas: AboutInfo: title: About info description: Basic information about the running service type: object properties: api_versions: type: array items: type: string example: - 1 version: type: string example: 1 component: type: string example: analysis-service product: type: string example: TrueSight Helix Capacity Optimization OptimizerEvaluation: title: OptimizerEvaluation type: object required: - rule_ids properties: rule_ids: description: list of rules type: array minItems: 1 items: type: string example: '0xff56aa' task_id: type: string example: '123' OptimizerProcessInstance: title: OptimizerProcessInstance type: object properties: process_id: description: identifier of the process type: integer format: int64 ApiError: title: ApiError description: An error message returned by the server type: object required: - code - message properties: code: type: string message: type: string transient: type: boolean RecommCleanupFilter: title: RecommCleanupFilter type: object required: - ent_ids properties: ent_ids: description: entities for which to delete recommendations type: array items: type: integer example: 12345 RuleConditionType: title: RuleConditionType type: string description: The type of rule condition enum: - INVALID - IDLE_VM - IDLE_DB - OVERALLOCATED_VM - POWER_ON_OFF - FORMULA - RI_VM - UNATTACHED_VOLUMES - FORECASTED_SATURATION - FORECASTED_SATURATION_K8S_INFRA - FORECASTED_SATURATION_CONTAINER - OLD_SNAPSHOT - CLUSTER_UNDER_SUBSCRIPTION - CLUSTER_OVER_SUBSCRIPTION - OVERALLOCATED_CONTAINER - DATA_THRESHOLD - MONITOR_VIOLATIONS - DATA_INGESTION - DATAMART - DATA_STATISTIC - CLUSTER_IDLE_VMS example: INVALID AlertPointSeverity: title: AlertPointSeverity type: string description: The alert point severity enum: - OK - WARNING - CRITICAL - EFFICIENCY_LOW - EFFICIENCY_MEDIUM - EFFICIENCY_HIGH example: EFFICIENCY_HIGH RecommendationDetails: title: RecommendationDetails type: object description: Defines generic details of a recommendation properties: type: $ref: '#/components/schemas/RuleConditionType' discriminator: propertyName: type mapping: IDLE_VM: '#/components/schemas/IdleVmRecommendationDetails' OLD_SNAPSHOT: '#/components/schemas/OldSnapshotRecommendationDetails' OVERALLOCATED_VM: '#/components/schemas/OverallocatedVmRecommendationDetails' OVERALLOCATED_CONTAINER: '#/components/schemas/OverallocatedContainerRecommendationDetails' FORECASTED_SATURATION: '#/components/schemas/ForecastedSaturationRecommendationDetails' FORECASTED_SATURATION_CONTAINER: >- #/components/schemas/ForecastedSaturationContainerRecommendationDetails CLUSTER_UNDER_SUBSCRIPTION: '#/components/schemas/ClusterUnderSubscriptionRecommendationDetails' CLUSTER_OVER_SUBSCRIPTION: '#/components/schemas/ClusterOverSubscriptionRecommendationDetails' DATA_INGESTION: '#/components/schemas/DataIngestionRecommendationDetails' CLUSTER_IDLE_VMS: '#/components/schemas/ClusterIdleVmsRecommendationDetails' DATA_THRESHOLD: '#/components/schemas/DataThresholdRecommendationDetails' MONITOR_VIOLATIONS: '#/components/schemas/MonitorViolationRecommendationDetails' DATAMART: '#/components/schemas/DatamartRecommendationDetails' DATA_STATISTIC: '#/components/schemas/DataStatisticRecommendationDetails' AttachedVolume: title: AttachedVolume type: object description: information related to a volume attached to a VM properties: id: type: string name: type: string IdleVmRecommendationDetails: allOf: - $ref: '#/components/schemas/RecommendationDetails' - title: Defines details of an idle VM recommendation type: object properties: idle_days_threshold: type: number description: threshold in percentage to consider a VM idle example: 90 idle_days: type: number description: number of days in which the machine is idle example: 10 uptime_days: type: number description: number of days in which the machine is running example: 15 powered_off_days: type: number description: number of days in which the machine is powered off example: 5 storage_size_in_bytes: type: number description: storage size in bytes of the VM example: 100000000 cpu_num: type: number description: number of cpu cores of the VM example: 2 total_real_mem: type: number description: size of VM memory example: 100000000 instance_type: type: string description: VM instance type example: x2large demand_cpu: type: number description: demand for the CPU example: 1 demand_memory: type: number description: demand for the memory example: 1000 demand_storage: type: number description: demand for the storage example: 1000 attached_volumes: type: array items: $ref: '#/components/schemas/AttachedVolume' OldSnapshotRecommendationDetails: allOf: - $ref: '#/components/schemas/RecommendationDetails' - title: Defines details of an old snapshot recommendation type: object properties: oldest_snapshot_age: type: number description: age of the oldest snapshot in days example: 90 total_snapshot_size: type: number description: total size of snapshot example: 100000 threshold: type: number description: threshold for snapshot age example: 90 OverallocatedVmRecommendationDetails: allOf: - $ref: '#/components/schemas/RecommendationDetails' - title: Defines details of an Overallocated VM recommendation type: object properties: utilization_metrics_level: type: string description: level of utilization metrics example: A utilization_strategy: type: string description: utilization strategy use for sizing evaluation example: null alerted_resources: type: array items: type: string description: list of alerted resources example: 'cpu, memory' cpu_spare_threshold: type: number description: >- minimum amount of spare CPU cores to consider the CPU underutilized example: 1 memory_spare_threshold: type: number description: >- minimum amount of spare memory (in GB) to consider the memory underutilized example: 3 storage_spare_threshold: type: number description: >- minimum amount of spare storage space (in GB) to consider the storage underutilized example: 50 source_vcpu: type: number description: number of virtual cores of the VM example: 2 source_memory_gb: type: number description: size of memory (in GB) of the VM example: 8 source_internal_storage_gb: type: number description: size of internal storage (in GB) of the VM example: 100 source_external_storage_gb: type: number description: size of internal storage (in GB) attached to the VM example: 100 source_instance_type: type: string description: instance type of the VM example: t2.xlarge demand_vcpu: type: number description: cpu demand (in number of cores) example: 2 demand_memory: type: number description: memory demand (in GB) example: 3 demand_storage: type: number description: storage demand (in GB) example: 50 target_vcpu: type: number description: number of virtual cores of the suggested VM example: 2 target_memory_gb: type: number description: size of memory (in GB) of the suggested VM example: 2 target_internal_storage_gb: type: number description: size of internal storage (in GB) of the suggested VM example: 2 targete_external_storage_gb: type: number description: size of external storage (in GB) of the suggested VM example: 2 target_instance_type: type: string description: instance type of the suggested VM example: t2.micro OverallocatedContainerRecommendationDetails: allOf: - $ref: '#/components/schemas/RecommendationDetails' - title: Defines details of an Overallocated Container recommendation type: object properties: alerted_resources: type: array items: type: string description: list of alerted resources example: 'cpu, memory' container_Name: type: string description: container name example: ade-reporting cluster_id: type: string description: cluster id example: 1234 cluster_Name: type: string description: cluster name example: pun-ranchk8s-lb.bmc.com namespace_id: type: string description: namespace id example: 5678 namespace_Name: type: string description: namespace name example: pun-ranchk8s-lb.bmc.com cpu_request: type: number description: cpu request for a container in cores example: 2 cpu_request_demand: type: number description: cpu request demand for a container in cores example: 2 recommended_cpu_request: type: number description: cpu request for a container in cores example: 1 cpu_limit: type: number description: cpu limit for a container in cores example: 2 cpu_limit_demand: type: number description: cpu limit demand for a container in cores example: 2 recommended_cpu_limit: type: number description: cpu limit for a container in cores example: 1 cpu_headroom: type: number description: cpu headroom % example: 30 memory_request: type: number description: memory request for a container in bytes example: 2 memory_request_demand: type: number description: memory request demand for a container in bytes example: 2 recommended_memory_request: type: number description: memory request for a container in bytes example: 1 memory_limit: type: number description: memory limit for a container in bytes example: 2 memory_limit_demand: type: number description: memory limit demand for a container in bytes example: 2 recommended_memory_limit: type: number description: memory limit for a container in bytes example: 1 memory_headroom: type: number description: memory headroom % example: 30 global_jvm_max_heap: type: integer format: int64 default: -1 description: >- The currently set JVM max heap, in bytes. This is a global parameter and it is reported only when the POD runs a single container, running a single JVM process. A negative value means "not available". example: 262144000 global_jvm_heap_demand: type: integer format: int64 default: -1 description: >- The computed JVM heap demand, in bytes. This is a global parameter and it is reported only when the POD runs a single container, running a single JVM process. A negative value means "not available". example: 104857550 recommended_global_jvm_max_heap: type: integer format: int64 default: -1 description: >- The computed JVM max heap recommendation, in bytes. This is a global parameter and it is reported only when the POD runs a single container, running a single JVM process. A negative value means "not available". This is the value to be passed through the "-Xmx" JVM option. example: 104857600 recommended_global_jvm_max_heap_pct: type: number format: double description: >- The computed JVM max heap recommendation, as a percentage of the maximum available RAM (provided by the limit). This is a global parameter and it is reported only when the POD runs a single container, running a single JVM process. This is the value to be passed through the "-XX:MaxRAMPercentage=" JVM option. example: 20.2 ForecastedSaturationRecommendationDetails: allOf: - $ref: '#/components/schemas/RecommendationDetails' - title: Defines details of forecasted saturation recommendation type: object properties: alerted_resources: type: array items: type: string description: list of alerted resources example: - cpu - memory cluster_id: type: string description: cluster id example: 1234 cluster_name: type: string description: cluster name example: pun-ranchk8s-lb.bmc.com global_warning_threshold: type: number description: global warnign threshold in days example: 30 global_critical_threshold: type: number description: global critical threshold in days example: 10 long_term_threshold: type: number description: global long term threshold in days example: 90 global_days_to_saturation: type: number description: global number of days before resource saturation example: 5 cpu_threshold_absolute_value: type: number description: cpu threshold for saturation in absolute value example: 2.5 cpu_threshold_pct_value: type: number description: cpu threshold for saturation in percentage value example: 0.85 cpu_days_to_saturation: type: number description: number of days before cpu saturation example: 10 cpu_saturation_starting_value: type: number description: cpu value when saturation starts example: 10 cpu_slope: type: number description: slope for CPU example: 0.0012456 cpu_conf_value: type: number description: cpu configuration value (number of cores) example: 2 cpu_short_term_forecast: type: number description: cpu forecasted value in short period example: 2 cpu_long_term_forecast: type: number description: cpu forecasted value in long period example: 2 memory_threshold_absolute_value: type: number description: memory threshold for saturation in absolute value example: 100000 memory_threshold_pct_value: type: number description: cpu threshold for saturation in percentage value example: 0.85 memory_days_to_saturation: type: number description: number of days before memory saturation example: 10 memory_saturation_starting_value: type: number description: memory value when saturation starts example: 10 memory_slope: type: number description: slope for memory example: 0.0012456 memory_conf_value: type: number description: memory configuration value (GB) example: 2 memory_short_term_forecast: type: number description: memory forecasted value in short period example: 10000 memory_long_term_forecast: type: number description: memory forecasted value in long period example: 2 storage_threshold_absolute_value: type: number description: storage threshold for saturation in absolute value example: 100000 storage_threshold_pct_value: type: number description: storage threshold for saturation in percentage value example: 0.85 storage_days_to_saturation: type: number description: number of days before storage saturation example: 10 storage_saturation_starting_value: type: number description: storage value when saturation starts example: 10 storage_slope: type: number description: slope for storage example: 0.0012456 storage_conf_value: type: number description: storage configuration value (GB) example: 100 storage_short_term_forecast: type: number description: storage forecasted value in short period example: 2 storage_long_term_forecast: type: number description: storage forecasted value in long period example: 2 dts_memory_usage_metric: type: string description: memory usge metrics in indicator example: MEM_USED rule_type: type: string description: rule type example: K8S_NAMESPACE metadata: description: Metadata for the indicators type: object additionalProperties: type: number ForecastedSaturationContainerRecommendationDetails: allOf: - $ref: '#/components/schemas/RecommendationDetails' - title: Defines details of forecasted saturation container recommendation type: object properties: alerted_resources: type: array items: type: string description: list of alerted resources example: - cpu - memory container_Name: type: string description: container name example: ade-reporting namespace_id: type: string description: namespace id example: 5678 cluster_id: type: string description: cluster id example: 1234 cluster_Name: type: string description: cluster name example: pun-ranchk8s-lb.bmc.com namespace_Name: type: string description: namespace name example: pun-ranchk8s-lb.bmc.com global_warning_threshold: type: number description: global warning threshold in days example: 30 global_critical_threshold: type: number description: global critical threshold in days example: 10 long_term_threshold: type: number description: global long term threshold in days example: 90 cpu_utilization_threshold: type: number description: cpu utilization threshold in days example: 10 cpu_utilization_threshold_pct: type: number description: cpu utilization threshold in % example: 30 global_days_to_saturation: type: number description: global number of days before resource saturation example: 5 cpu_days_to_saturation: type: number description: number of days before resource saturation for resource CPU example: 5 cpu_request: type: number description: current cpu request in cores example: 2 cpu_limit_util: type: number description: cpu limit utilization in cores example: 2 cpu_used_vs_request: type: number description: cpu used over cpu request in % example: 40 recommended_cpu_request: type: number description: recommended cpu request in cores example: 1 cpu_limit: type: number description: current cpu limit in cores example: 2 cpu_used_vs_limit: type: number description: cpu used over cpu limit in % example: 40 recommended_cpu_limit: type: number description: recommended cpu limit in cores example: 1 daily_cpu_trend: type: number description: daily cpu trend in cores example: 1 cpu_short_term_recomm: type: number description: cpu limit recommendation for the short period example: 2 cpu_long_term_recomm: type: number description: cpu limit recommendation for the long period example: 2 memory_request: type: number description: current memory request in bytes example: 2000 memory_request_demand: type: number description: memory request demand for a container in bytes example: 2000 memory_used_vs_request: type: number description: memory used over memory request in % example: 40 recommended_memory_request: type: number description: recommended memory request in bytes example: 1000 memory_limit: type: number description: current cpu limit in byte example: 2000 memory_limit_demand: type: number description: memory limit demand for a container in bytes example: 3000 memory_used_vs_limit: type: number description: memory used over memory limit in % example: 40 recommended_memory_limit: type: number description: recommended memory limit in bytes example: 1000 memory_headroom: type: number description: memory headroom % example: 30 global_jvm_max_heap: type: integer format: int64 default: -1 description: >- The currently set JVM max heap, in bytes. This is a global parameter and it is reported only when the POD runs a single container, running a single JVM process. A negative value means "not available". example: 262144000 global_jvm_heap_demand: type: integer format: int64 default: -1 description: >- The computed JVM heap demand, in bytes. This is a global parameter and it is reported only when the POD runs a single container, running a single JVM process. A negative value means "not available". example: 104857550 recommended_global_jvm_max_heap: type: integer format: int64 default: -1 description: >- The computed JVM max heap recommendation, in bytes. This is a global parameter and it is reported only when the POD runs a single container, running a single JVM process. A negative value means "not available". This is the value to be passed through the "-Xmx" JVM option. example: 104857600 recommended_global_jvm_max_heap_pct: type: number format: double description: >- The computed JVM max heap recommendation, as a percentage of the maximum available RAM (provided by the limit). This is a global parameter and it is reported only when the POD runs a single container, running a single JVM process. This is the value to be passed through the "-XX:MaxRAMPercentage=" JVM option. example: 20.2 metadata: description: Metadata for the indicators type: object additionalProperties: type: object ClusterUnderSubscriptionRecommendationDetails: allOf: - $ref: '#/components/schemas/RecommendationDetails' - title: Defines details of a cluster under subscription recommendation type: object properties: alerted_resources: type: array items: type: string description: list of alerted resources example: - cpu - memory cpu_density: type: number description: CPU density cpu_density_threshold: type: number description: CPU density threshold memory_oversubscription: type: number description: memory oversubscription memory_oversubscription_threshold: type: number description: memory oversubscription threshold storage_oversubscription: type: number description: storage oversubscription storage_oversubscription_threshold: type: number description: storage oversubscription threshold ClusterOverSubscriptionRecommendationDetails: allOf: - $ref: '#/components/schemas/RecommendationDetails' - title: Defines details of a cluster over subscription recommendation type: object properties: alerted_resources: type: array items: type: string description: list of alerted resources example: - cpu - memory cpu_density: type: number description: CPU density cpu_density_threshold: type: number description: CPU density threshold memory_oversubscription: type: number description: memory oversubscription memory_oversubscription_threshold: type: number description: memory oversubscription threshold storage_oversubscription: type: number description: storage oversubscription storage_oversubscription_threshold: type: number description: storage oversubscription threshold overallocated_vms_count: type: number description: number of overallocated VMs metadata: description: Metadata for the indicators type: object additionalProperties: type: object ETLStatus: title: ETLStatus type: string description: The status of the ETL related to data ingestion enum: - REDUCED_DATA_INGESTION - NO_DATA_INGESTION - MISSING_EXPECTED_RUN example: VMWARE_VMS DataIngestionRecommendationDetails: allOf: - $ref: '#/components/schemas/RecommendationDetails' - title: Defines details of a data ingestion recommendation type: object properties: etl_name: type: string description: name of the alerted ETL example: VMWare vCenter Data Extractor etl_src_id: type: number description: source id of the alerted ETL example: 2 scheduler_name: type: string description: name of the scheduler where the ETL is executed example: Remote scheduler etl_status: $ref: '#/components/schemas/ETLStatus' last_day_avg_loaded_samples: type: number description: >- average number of samples loaded by the ETL in the last complete day example: 100 last_month_avg_loaded_samples: type: number description: >- average number of samples loaded by the ETL in the last complete month example: 300 threshold: type: number description: threshold in percentage example: 75 ClusterIdleVmsRecommendationDetails: allOf: - $ref: '#/components/schemas/RecommendationDetails' - title: Defines details of an idle VM recommendation type: object properties: idle_vms_count: type: number description: count of idle VMs belonging to the cluster example: 20 total_cpu: type: number description: sum of all CPU cores of idle VMs belonging to the cluster example: 10 total_memory_size: type: number description: sum of memory (in bytes) of idle VMs belonging to the cluster example: 100000000 total_storage_size: type: number description: >- sum of storage size (in bytes) of idle VMs belonging to the cluster example: 100000000 Comparator: title: Comparator type: string description: Type of comparator enum: - GREATER - GREATER_OR_EQUAL - LESS_OR_EQUAL - LESS - DIFFERENT_MORE example: GREATER DataThresholdRecommendationDetails: allOf: - $ref: '#/components/schemas/RecommendationDetails' - title: Defines details of a data vs threshold recommendation type: object properties: statistic: type: string example: average resolution: type: string example: summary time_period: type: string example: D30 metric_name: type: string example: CPU_UTIL resource_name: type: string example: VMNIC1 comparator: $ref: '#/components/schemas/Comparator' values: type: array items: type: number format: double example: 22.5 ts: type: array items: type: string format: date-time unit: type: string example: PCT threshold: type: number format: double example: 75 aggregation_function: type: string example: average MonitorViolationRecommendationDetails: allOf: - $ref: '#/components/schemas/RecommendationDetails' - title: Defines details of a monitor violation recommendation type: object properties: timePeriod: type: string example: D30 metric_name: type: string example: CPU_UTIL resource_name: type: string example: VMNIC1 comparator: $ref: '#/components/schemas/Comparator' samples_count_type: type: string example: poor statistic: type: string example: count_poor total_samples_count: type: integer example: 22 matching_samples_count: type: integer example: 11 value: type: number format: double example: 12.8 threshold: type: number format: double example: 75 DatamartRecommendationDetails: allOf: - $ref: '#/components/schemas/RecommendationDetails' - title: Defines details of a datamart based recommendation type: object properties: datamart_id: type: integer format: int64 example: 123 value_column_name: type: string example: value threshold_column_name: type: string example: threshold metricName: type: string example: CPU_UTIL metric_description: type: string example: CPU Utilization % metric_unit: type: string example: B value: type: number format: double example: 22.5 comparator: $ref: '#/components/schemas/Comparator' threshold: type: number format: double example: 50 resource_name: type: string example: VMNIC1 additional_columns: description: additional columns type: object additionalProperties: type: string DataStatisticRecommendationDetails: allOf: - $ref: '#/components/schemas/RecommendationDetails' - title: Defines details of a data vs statistic recommendation type: object properties: statistic: type: string example: average resolution: type: string example: summary time_period: type: string example: D30 metric_name: type: string example: CPU_UTIL resource_name: type: string example: VMNIC1 comparator: $ref: '#/components/schemas/Comparator' values: type: array items: type: number format: double example: 22.5 ts: type: array items: type: string format: date-time unit: type: string example: PCT thresholds: type: array items: type: number format: double example: 75 is_missing_point: type: boolean scaling_factor: type: number example: 0.3 aggregation_function: type: string example: average baseline_statistic: type: string example: maximum baseline_time_period: type: string example: D30 baseline_aggregation_function: type: string example: maximum Recommendation: title: Recommendation description: Recommendation details type: object properties: provider_id: type: string description: Identifier of the cloud provider example: aws entity_id: type: number description: Identifier of the entity (system/workload) resource_id: type: string description: Identifier of the resource resource_name: type: string description: Name of the resource rule_id: type: string description: Identifier of the rule that generated the recommendation type: $ref: '#/components/schemas/RuleConditionType' finding: type: string description: Description of what has been detected by the rule short_finding: type: string description: Short description of what has been detected by the rule recommendation: type: string description: Description of the suggested actions short_recommendation: type: string description: Short description of the suggested actions cost_saving: type: number description: Estimated cost saving (number) cost_saving_currency: type: string description: Currency of cost saving severity: $ref: '#/components/schemas/AlertPointSeverity' optimal: type: boolean description: >- Flag to determine the optimal recommendation among conflicting ones. For instance, if both Idle VM and Overallocated VM recommendations have been produced for the same system, only the Idle VM one is marked as optimal because it is considered more efficient details: $ref: '#/components/schemas/RecommendationDetails' RecommendationResponse: title: Recommendations response description: Recommendations response type: object properties: recommendations: type: array description: The list of recommendations items: $ref: '#/components/schemas/Recommendation' AlertType: title: AlertType type: string description: The type of alert enum: - NO_RECOMMENDATION - FORECAST_SATURATION - FORECAST_SATURATION_K8S_INFRA - FORECAST_SATURATION_CONTAINER - IDLE_VM - OVERALLOCATED_VM - CLUSTER_OVER_SUBSCRIPTION - CLUSTER_UNDER_SUBSCRIPTION - OLD_SNAPSHOTS - GENERIC - RESERVED_INSTANCE - ON_OFF_WORKLOAD - IDLE_DB - UNATTACHED_VOLUMES - OVERALLOCATED_CONTAINER - DATA_INGESTION example: NO_RECOMMENDATION SearchRequest: title: Search filter request description: Filter for search. type: object properties: entity_ids: type: array items: type: integer types: type: array items: $ref: '#/components/schemas/AlertType' rule_ids: type: array items: type: integer severity: type: array items: $ref: '#/components/schemas/AlertPointSeverity' responses: BadRequest: description: Bad request content: application/json: schema: $ref: '#/components/schemas/ApiError' NotFound: description: Not Found content: application/json: schema: $ref: '#/components/schemas/ApiError' InternalServerError: description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ApiError' tags: - name: About description: The status of the service - name: Recommendations description: Search and retrieve generated recommendations - name: Process description: Execute the optimizer process paths: /opt/api/optimizer/about: get: summary: About info description: About info operationId: about security: [] tags: - About responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AboutInfo' /opt/api/v1/optimizer/recommendations: post: summary: Generate recommendations description: 'Given a set of rules, start evaluating optimizer rules.' operationId: generateRecommendations tags: - Process requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/OptimizerEvaluation' responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/OptimizerProcessInstance' '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' delete: summary: Clear recommendations description: 'Given a set of filters, clears existing recommendations' operationId: clearRecommendations tags: - Process requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RecommCleanupFilter' responses: '200': description: Ok '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' '/opt/api/v1/optimizer/recommendations/entities/{entity_id}': get: summary: Return recommendations generated for a specific entity description: Return recommendations generated for a specific entity operationId: getRecommendationsByEntity tags: - Recommendations parameters: - name: entity_id in: path required: true schema: type: integer description: The id of the entity example: 13 responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/RecommendationResponse' '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' /opt/api/v1/optimizer/recommendations/search: post: summary: Return recommendations that match search criteria description: Return recommendations that match search criteria operationId: getRecommendationsBySearch tags: - Recommendations requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SearchRequest' responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/RecommendationResponse' '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError'