soilsidekick 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +9 -0
  3. data/README.md +267 -0
  4. data/Rakefile +10 -0
  5. data/docs/AIAnalysis.md +22 -0
  6. data/docs/AIAnalysisRecommendationsInner.md +22 -0
  7. data/docs/AIServicesApi.md +327 -0
  8. data/docs/BeginnerGuidance.md +34 -0
  9. data/docs/BeginnerGuidanceDetailedExplanation.md +24 -0
  10. data/docs/BeginnerGuidanceMetadata.md +22 -0
  11. data/docs/BeginnerGuidanceRequest.md +24 -0
  12. data/docs/BeginnerGuidanceRequestLocation.md +20 -0
  13. data/docs/BeginnerGuidanceRequestPlantContext.md +20 -0
  14. data/docs/CalculateCarbonCreditsRequest.md +26 -0
  15. data/docs/CalculateEnvironmentalImpactRequest.md +26 -0
  16. data/docs/CalculateEnvironmentalImpactRequestProposedTreatmentsInner.md +18 -0
  17. data/docs/CalculateEnvironmentalImpactRequestSoilData.md +28 -0
  18. data/docs/CalculateEnvironmentalImpactRequestWaterBodyData.md +18 -0
  19. data/docs/CarbonApi.md +79 -0
  20. data/docs/CarbonCreditCalculation.md +22 -0
  21. data/docs/CarbonCreditCalculationCalculationDetails.md +28 -0
  22. data/docs/CarbonCreditCalculationCalculationDetailsMetadata.md +22 -0
  23. data/docs/CarbonCreditCalculationCreditRecord.md +26 -0
  24. data/docs/ConsumerPlantCareApi.md +247 -0
  25. data/docs/County.md +26 -0
  26. data/docs/CountyLookup200Response.md +18 -0
  27. data/docs/CountyLookupRequest.md +18 -0
  28. data/docs/DynamicCare.md +28 -0
  29. data/docs/DynamicCareCareRecommendations.md +24 -0
  30. data/docs/DynamicCareCareRecommendationsHumidity.md +22 -0
  31. data/docs/DynamicCareCareRecommendationsLight.md +22 -0
  32. data/docs/DynamicCareCareRecommendationsWatering.md +24 -0
  33. data/docs/DynamicCareCurrentConditions.md +26 -0
  34. data/docs/DynamicCareMetadata.md +22 -0
  35. data/docs/DynamicCarePlant.md +22 -0
  36. data/docs/DynamicCareRequest.md +28 -0
  37. data/docs/DynamicCareRequestContainerDetails.md +22 -0
  38. data/docs/DynamicCareRequestEnvironment.md +20 -0
  39. data/docs/DynamicCareRequestLocation.md +22 -0
  40. data/docs/EnvironmentalApi.md +87 -0
  41. data/docs/EnvironmentalImpact.md +22 -0
  42. data/docs/EnvironmentalImpactDetailedAnalysis.md +26 -0
  43. data/docs/EnvironmentalImpactDetailedAnalysisEcoAlternatives.md +18 -0
  44. data/docs/EnvironmentalImpactDetailedAnalysisEcoAlternativesAlternativesInner.md +26 -0
  45. data/docs/EnvironmentalImpactDetailedAnalysisRunoffRisk.md +22 -0
  46. data/docs/EnvironmentalImpactImpactAssessment.md +26 -0
  47. data/docs/Error.md +22 -0
  48. data/docs/GenerateSmartReportSummaryRequest.md +20 -0
  49. data/docs/GenerateVRTPrescriptionRequest.md +22 -0
  50. data/docs/GeographicApi.md +79 -0
  51. data/docs/GetAgriculturalIntelligenceRequest.md +20 -0
  52. data/docs/GetLiveAgriculturalDataRequest.md +24 -0
  53. data/docs/GetPlantingCalendarRequest.md +20 -0
  54. data/docs/GetSatelliteDataRequest.md +20 -0
  55. data/docs/GetSeasonalPlanningAssistantRequest.md +26 -0
  56. data/docs/GetSeasonalPlanningAssistantRequestLocation.md +22 -0
  57. data/docs/GetSoilDataRequest.md +18 -0
  58. data/docs/GetTerritorialWaterAnalyticsRequest.md +22 -0
  59. data/docs/GetTerritorialWaterAnalyticsRequestDateRange.md +20 -0
  60. data/docs/LeafEnginesApi.md +87 -0
  61. data/docs/LeafEnginesCompatibility.md +22 -0
  62. data/docs/LeafEnginesCompatibilityData.md +32 -0
  63. data/docs/LeafEnginesCompatibilityDataBreakdown.md +22 -0
  64. data/docs/LeafEnginesCompatibilityDataBreakdownSoil.md +22 -0
  65. data/docs/LeafEnginesCompatibilityDataMetadata.md +22 -0
  66. data/docs/LeafEnginesCompatibilityUsage.md +20 -0
  67. data/docs/LeafenginesQueryRequest.md +22 -0
  68. data/docs/LeafenginesQueryRequestLocation.md +24 -0
  69. data/docs/LeafenginesQueryRequestOptions.md +22 -0
  70. data/docs/LeafenginesQueryRequestPlant.md +24 -0
  71. data/docs/LeafenginesQueryRequestPlantCareRequirements.md +22 -0
  72. data/docs/LeafenginesQueryRequestPlantCareRequirementsSoilPhRange.md +20 -0
  73. data/docs/LiveAgriculturalData.md +30 -0
  74. data/docs/LiveAgriculturalDataData.md +24 -0
  75. data/docs/PlantingCalendar.md +26 -0
  76. data/docs/SafeIdentification.md +26 -0
  77. data/docs/SafeIdentificationConfidenceBreakdown.md +24 -0
  78. data/docs/SafeIdentificationIdentification.md +22 -0
  79. data/docs/SafeIdentificationIdentificationPrimaryMatch.md +24 -0
  80. data/docs/SafeIdentificationMetadata.md +22 -0
  81. data/docs/SafeIdentificationRequest.md +22 -0
  82. data/docs/SafeIdentificationRequestContext.md +22 -0
  83. data/docs/SafeIdentificationRequestLocation.md +22 -0
  84. data/docs/SafeIdentificationRequestLocationCoordinates.md +20 -0
  85. data/docs/SafeIdentificationSafetyAnalysis.md +24 -0
  86. data/docs/SafeIdentificationSafetyAnalysisLookalikesInner.md +24 -0
  87. data/docs/SatelliteData.md +26 -0
  88. data/docs/SatelliteDataApi.md +79 -0
  89. data/docs/SeasonalPlanningResponse.md +24 -0
  90. data/docs/SeasonalPlanningResponseRecommendations.md +22 -0
  91. data/docs/SeasonalPlanningResponseWeatherData.md +28 -0
  92. data/docs/SmartReportSummary.md +22 -0
  93. data/docs/SmartReportSummarySummary.md +24 -0
  94. data/docs/SoilAnalysisApi.md +231 -0
  95. data/docs/SoilData.md +38 -0
  96. data/docs/TerritorialWaterAnalytics.md +22 -0
  97. data/docs/TerritorialWaterAnalyticsAnalytics.md +24 -0
  98. data/docs/TurboQuantApi.md +87 -0
  99. data/docs/TurboQuantCapabilities.md +30 -0
  100. data/docs/TurboQuantCapabilitiesEstimatedLatencyMs.md +20 -0
  101. data/docs/TurboQuantCapabilitiesRequest.md +22 -0
  102. data/docs/VRTApi.md +79 -0
  103. data/docs/VRTPrescription.md +24 -0
  104. data/docs/VRTPrescriptionZonesInner.md +22 -0
  105. data/docs/VisualCropAnalysis.md +24 -0
  106. data/docs/VisualCropAnalysisAnalysis.md +26 -0
  107. data/docs/VisualCropAnalysisRequest.md +24 -0
  108. data/docs/VisualCropAnalysisRequestLocation.md +22 -0
  109. data/docs/WaterQuality.md +30 -0
  110. data/docs/WaterQualityApi.md +151 -0
  111. data/git_push.sh +57 -0
  112. data/lib/soilsidekick/api/ai_services_api.rb +378 -0
  113. data/lib/soilsidekick/api/carbon_api.rb +90 -0
  114. data/lib/soilsidekick/api/consumer_plant_care_api.rb +289 -0
  115. data/lib/soilsidekick/api/environmental_api.rb +111 -0
  116. data/lib/soilsidekick/api/geographic_api.rb +90 -0
  117. data/lib/soilsidekick/api/leaf_engines_api.rb +111 -0
  118. data/lib/soilsidekick/api/satellite_data_api.rb +90 -0
  119. data/lib/soilsidekick/api/soil_analysis_api.rb +247 -0
  120. data/lib/soilsidekick/api/turbo_quant_api.rb +111 -0
  121. data/lib/soilsidekick/api/vrt_api.rb +90 -0
  122. data/lib/soilsidekick/api/water_quality_api.rb +158 -0
  123. data/lib/soilsidekick/api_client.rb +397 -0
  124. data/lib/soilsidekick/api_error.rb +58 -0
  125. data/lib/soilsidekick/api_model_base.rb +88 -0
  126. data/lib/soilsidekick/configuration.rb +312 -0
  127. data/lib/soilsidekick/models/ai_analysis.rb +167 -0
  128. data/lib/soilsidekick/models/ai_analysis_recommendations_inner.rb +199 -0
  129. data/lib/soilsidekick/models/beginner_guidance.rb +228 -0
  130. data/lib/soilsidekick/models/beginner_guidance_detailed_explanation.rb +179 -0
  131. data/lib/soilsidekick/models/beginner_guidance_metadata.rb +165 -0
  132. data/lib/soilsidekick/models/beginner_guidance_request.rb +229 -0
  133. data/lib/soilsidekick/models/beginner_guidance_request_location.rb +156 -0
  134. data/lib/soilsidekick/models/beginner_guidance_request_plant_context.rb +158 -0
  135. data/lib/soilsidekick/models/calculate_carbon_credits_request.rb +264 -0
  136. data/lib/soilsidekick/models/calculate_environmental_impact_request.rb +247 -0
  137. data/lib/soilsidekick/models/calculate_environmental_impact_request_proposed_treatments_inner.rb +181 -0
  138. data/lib/soilsidekick/models/calculate_environmental_impact_request_soil_data.rb +238 -0
  139. data/lib/soilsidekick/models/calculate_environmental_impact_request_water_body_data.rb +147 -0
  140. data/lib/soilsidekick/models/carbon_credit_calculation.rb +165 -0
  141. data/lib/soilsidekick/models/carbon_credit_calculation_calculation_details.rb +192 -0
  142. data/lib/soilsidekick/models/carbon_credit_calculation_calculation_details_metadata.rb +167 -0
  143. data/lib/soilsidekick/models/carbon_credit_calculation_credit_record.rb +217 -0
  144. data/lib/soilsidekick/models/county.rb +183 -0
  145. data/lib/soilsidekick/models/county_lookup200_response.rb +149 -0
  146. data/lib/soilsidekick/models/county_lookup_request.rb +183 -0
  147. data/lib/soilsidekick/models/dynamic_care.rb +196 -0
  148. data/lib/soilsidekick/models/dynamic_care_care_recommendations.rb +175 -0
  149. data/lib/soilsidekick/models/dynamic_care_care_recommendations_humidity.rb +165 -0
  150. data/lib/soilsidekick/models/dynamic_care_care_recommendations_light.rb +165 -0
  151. data/lib/soilsidekick/models/dynamic_care_care_recommendations_watering.rb +208 -0
  152. data/lib/soilsidekick/models/dynamic_care_current_conditions.rb +183 -0
  153. data/lib/soilsidekick/models/dynamic_care_metadata.rb +165 -0
  154. data/lib/soilsidekick/models/dynamic_care_plant.rb +199 -0
  155. data/lib/soilsidekick/models/dynamic_care_request.rb +262 -0
  156. data/lib/soilsidekick/models/dynamic_care_request_container_details.rb +199 -0
  157. data/lib/soilsidekick/models/dynamic_care_request_environment.rb +203 -0
  158. data/lib/soilsidekick/models/dynamic_care_request_location.rb +194 -0
  159. data/lib/soilsidekick/models/environmental_impact.rb +167 -0
  160. data/lib/soilsidekick/models/environmental_impact_detailed_analysis.rb +183 -0
  161. data/lib/soilsidekick/models/environmental_impact_detailed_analysis_eco_alternatives.rb +149 -0
  162. data/lib/soilsidekick/models/environmental_impact_detailed_analysis_eco_alternatives_alternatives_inner.rb +183 -0
  163. data/lib/soilsidekick/models/environmental_impact_detailed_analysis_runoff_risk.rb +199 -0
  164. data/lib/soilsidekick/models/environmental_impact_impact_assessment.rb +183 -0
  165. data/lib/soilsidekick/models/error.rb +165 -0
  166. data/lib/soilsidekick/models/generate_smart_report_summary_request.rb +215 -0
  167. data/lib/soilsidekick/models/generate_vrt_prescription_request.rb +223 -0
  168. data/lib/soilsidekick/models/get_agricultural_intelligence_request.rb +225 -0
  169. data/lib/soilsidekick/models/get_live_agricultural_data_request.rb +277 -0
  170. data/lib/soilsidekick/models/get_planting_calendar_request.rb +201 -0
  171. data/lib/soilsidekick/models/get_satellite_data_request.rb +226 -0
  172. data/lib/soilsidekick/models/get_seasonal_planning_assistant_request.rb +245 -0
  173. data/lib/soilsidekick/models/get_seasonal_planning_assistant_request_location.rb +165 -0
  174. data/lib/soilsidekick/models/get_soil_data_request.rb +176 -0
  175. data/lib/soilsidekick/models/get_territorial_water_analytics_request.rb +201 -0
  176. data/lib/soilsidekick/models/get_territorial_water_analytics_request_date_range.rb +156 -0
  177. data/lib/soilsidekick/models/leaf_engines_compatibility.rb +165 -0
  178. data/lib/soilsidekick/models/leaf_engines_compatibility_data.rb +247 -0
  179. data/lib/soilsidekick/models/leaf_engines_compatibility_data_breakdown.rb +165 -0
  180. data/lib/soilsidekick/models/leaf_engines_compatibility_data_breakdown_soil.rb +169 -0
  181. data/lib/soilsidekick/models/leaf_engines_compatibility_data_metadata.rb +167 -0
  182. data/lib/soilsidekick/models/leaf_engines_compatibility_usage.rb +156 -0
  183. data/lib/soilsidekick/models/leafengines_query_request.rb +199 -0
  184. data/lib/soilsidekick/models/leafengines_query_request_location.rb +174 -0
  185. data/lib/soilsidekick/models/leafengines_query_request_options.rb +165 -0
  186. data/lib/soilsidekick/models/leafengines_query_request_plant.rb +174 -0
  187. data/lib/soilsidekick/models/leafengines_query_request_plant_care_requirements.rb +211 -0
  188. data/lib/soilsidekick/models/leafengines_query_request_plant_care_requirements_soil_ph_range.rb +156 -0
  189. data/lib/soilsidekick/models/live_agricultural_data.rb +237 -0
  190. data/lib/soilsidekick/models/live_agricultural_data_data.rb +174 -0
  191. data/lib/soilsidekick/models/planting_calendar.rb +185 -0
  192. data/lib/soilsidekick/models/safe_identification.rb +184 -0
  193. data/lib/soilsidekick/models/safe_identification_confidence_breakdown.rb +174 -0
  194. data/lib/soilsidekick/models/safe_identification_identification.rb +200 -0
  195. data/lib/soilsidekick/models/safe_identification_identification_primary_match.rb +175 -0
  196. data/lib/soilsidekick/models/safe_identification_metadata.rb +167 -0
  197. data/lib/soilsidekick/models/safe_identification_request.rb +183 -0
  198. data/lib/soilsidekick/models/safe_identification_request_context.rb +223 -0
  199. data/lib/soilsidekick/models/safe_identification_request_location.rb +205 -0
  200. data/lib/soilsidekick/models/safe_identification_request_location_coordinates.rb +156 -0
  201. data/lib/soilsidekick/models/safe_identification_safety_analysis.rb +215 -0
  202. data/lib/soilsidekick/models/safe_identification_safety_analysis_lookalikes_inner.rb +177 -0
  203. data/lib/soilsidekick/models/satellite_data.rb +185 -0
  204. data/lib/soilsidekick/models/seasonal_planning_response.rb +174 -0
  205. data/lib/soilsidekick/models/seasonal_planning_response_recommendations.rb +169 -0
  206. data/lib/soilsidekick/models/seasonal_planning_response_weather_data.rb +192 -0
  207. data/lib/soilsidekick/models/smart_report_summary.rb +165 -0
  208. data/lib/soilsidekick/models/smart_report_summary_summary.rb +178 -0
  209. data/lib/soilsidekick/models/soil_data.rb +239 -0
  210. data/lib/soilsidekick/models/territorial_water_analytics.rb +165 -0
  211. data/lib/soilsidekick/models/territorial_water_analytics_analytics.rb +174 -0
  212. data/lib/soilsidekick/models/turbo_quant_capabilities.rb +253 -0
  213. data/lib/soilsidekick/models/turbo_quant_capabilities_estimated_latency_ms.rb +156 -0
  214. data/lib/soilsidekick/models/turbo_quant_capabilities_request.rb +201 -0
  215. data/lib/soilsidekick/models/visual_crop_analysis.rb +174 -0
  216. data/lib/soilsidekick/models/visual_crop_analysis_analysis.rb +219 -0
  217. data/lib/soilsidekick/models/visual_crop_analysis_request.rb +234 -0
  218. data/lib/soilsidekick/models/visual_crop_analysis_request_location.rb +165 -0
  219. data/lib/soilsidekick/models/vrt_prescription.rb +176 -0
  220. data/lib/soilsidekick/models/vrt_prescription_zones_inner.rb +165 -0
  221. data/lib/soilsidekick/models/water_quality.rb +235 -0
  222. data/lib/soilsidekick/version.rb +15 -0
  223. data/lib/soilsidekick.rb +146 -0
  224. data/soilsidekick.gemspec +39 -0
  225. data/spec/api/ai_services_api_spec.rb +95 -0
  226. data/spec/api/carbon_api_spec.rb +47 -0
  227. data/spec/api/consumer_plant_care_api_spec.rb +80 -0
  228. data/spec/api/environmental_api_spec.rb +50 -0
  229. data/spec/api/geographic_api_spec.rb +47 -0
  230. data/spec/api/leaf_engines_api_spec.rb +50 -0
  231. data/spec/api/satellite_data_api_spec.rb +47 -0
  232. data/spec/api/soil_analysis_api_spec.rb +74 -0
  233. data/spec/api/turbo_quant_api_spec.rb +50 -0
  234. data/spec/api/vrt_api_spec.rb +47 -0
  235. data/spec/api/water_quality_api_spec.rb +59 -0
  236. data/spec/models/ai_analysis_recommendations_inner_spec.rb +52 -0
  237. data/spec/models/ai_analysis_spec.rb +48 -0
  238. data/spec/models/beginner_guidance_detailed_explanation_spec.rb +54 -0
  239. data/spec/models/beginner_guidance_metadata_spec.rb +48 -0
  240. data/spec/models/beginner_guidance_request_location_spec.rb +42 -0
  241. data/spec/models/beginner_guidance_request_plant_context_spec.rb +42 -0
  242. data/spec/models/beginner_guidance_request_spec.rb +58 -0
  243. data/spec/models/beginner_guidance_spec.rb +84 -0
  244. data/spec/models/calculate_carbon_credits_request_spec.rb +64 -0
  245. data/spec/models/calculate_environmental_impact_request_proposed_treatments_inner_spec.rb +40 -0
  246. data/spec/models/calculate_environmental_impact_request_soil_data_spec.rb +74 -0
  247. data/spec/models/calculate_environmental_impact_request_spec.rb +60 -0
  248. data/spec/models/calculate_environmental_impact_request_water_body_data_spec.rb +36 -0
  249. data/spec/models/carbon_credit_calculation_calculation_details_metadata_spec.rb +48 -0
  250. data/spec/models/carbon_credit_calculation_calculation_details_spec.rb +66 -0
  251. data/spec/models/carbon_credit_calculation_credit_record_spec.rb +64 -0
  252. data/spec/models/carbon_credit_calculation_spec.rb +48 -0
  253. data/spec/models/county_lookup200_response_spec.rb +36 -0
  254. data/spec/models/county_lookup_request_spec.rb +36 -0
  255. data/spec/models/county_spec.rb +60 -0
  256. data/spec/models/dynamic_care_care_recommendations_humidity_spec.rb +48 -0
  257. data/spec/models/dynamic_care_care_recommendations_light_spec.rb +48 -0
  258. data/spec/models/dynamic_care_care_recommendations_spec.rb +54 -0
  259. data/spec/models/dynamic_care_care_recommendations_watering_spec.rb +58 -0
  260. data/spec/models/dynamic_care_current_conditions_spec.rb +60 -0
  261. data/spec/models/dynamic_care_metadata_spec.rb +48 -0
  262. data/spec/models/dynamic_care_plant_spec.rb +52 -0
  263. data/spec/models/dynamic_care_request_container_details_spec.rb +52 -0
  264. data/spec/models/dynamic_care_request_environment_spec.rb +50 -0
  265. data/spec/models/dynamic_care_request_location_spec.rb +48 -0
  266. data/spec/models/dynamic_care_request_spec.rb +70 -0
  267. data/spec/models/dynamic_care_spec.rb +66 -0
  268. data/spec/models/environmental_impact_detailed_analysis_eco_alternatives_alternatives_inner_spec.rb +60 -0
  269. data/spec/models/environmental_impact_detailed_analysis_eco_alternatives_spec.rb +36 -0
  270. data/spec/models/environmental_impact_detailed_analysis_runoff_risk_spec.rb +52 -0
  271. data/spec/models/environmental_impact_detailed_analysis_spec.rb +60 -0
  272. data/spec/models/environmental_impact_impact_assessment_spec.rb +60 -0
  273. data/spec/models/environmental_impact_spec.rb +48 -0
  274. data/spec/models/error_spec.rb +48 -0
  275. data/spec/models/generate_smart_report_summary_request_spec.rb +46 -0
  276. data/spec/models/generate_vrt_prescription_request_spec.rb +52 -0
  277. data/spec/models/get_agricultural_intelligence_request_spec.rb +46 -0
  278. data/spec/models/get_live_agricultural_data_request_spec.rb +58 -0
  279. data/spec/models/get_planting_calendar_request_spec.rb +42 -0
  280. data/spec/models/get_satellite_data_request_spec.rb +42 -0
  281. data/spec/models/get_seasonal_planning_assistant_request_location_spec.rb +48 -0
  282. data/spec/models/get_seasonal_planning_assistant_request_spec.rb +64 -0
  283. data/spec/models/get_soil_data_request_spec.rb +36 -0
  284. data/spec/models/get_territorial_water_analytics_request_date_range_spec.rb +42 -0
  285. data/spec/models/get_territorial_water_analytics_request_spec.rb +52 -0
  286. data/spec/models/leaf_engines_compatibility_data_breakdown_soil_spec.rb +48 -0
  287. data/spec/models/leaf_engines_compatibility_data_breakdown_spec.rb +48 -0
  288. data/spec/models/leaf_engines_compatibility_data_metadata_spec.rb +48 -0
  289. data/spec/models/leaf_engines_compatibility_data_spec.rb +82 -0
  290. data/spec/models/leaf_engines_compatibility_spec.rb +48 -0
  291. data/spec/models/leaf_engines_compatibility_usage_spec.rb +42 -0
  292. data/spec/models/leafengines_query_request_location_spec.rb +54 -0
  293. data/spec/models/leafengines_query_request_options_spec.rb +48 -0
  294. data/spec/models/leafengines_query_request_plant_care_requirements_soil_ph_range_spec.rb +42 -0
  295. data/spec/models/leafengines_query_request_plant_care_requirements_spec.rb +56 -0
  296. data/spec/models/leafengines_query_request_plant_spec.rb +54 -0
  297. data/spec/models/leafengines_query_request_spec.rb +48 -0
  298. data/spec/models/live_agricultural_data_data_spec.rb +54 -0
  299. data/spec/models/live_agricultural_data_spec.rb +76 -0
  300. data/spec/models/planting_calendar_spec.rb +60 -0
  301. data/spec/models/safe_identification_confidence_breakdown_spec.rb +54 -0
  302. data/spec/models/safe_identification_identification_primary_match_spec.rb +54 -0
  303. data/spec/models/safe_identification_identification_spec.rb +52 -0
  304. data/spec/models/safe_identification_metadata_spec.rb +48 -0
  305. data/spec/models/safe_identification_request_context_spec.rb +60 -0
  306. data/spec/models/safe_identification_request_location_coordinates_spec.rb +42 -0
  307. data/spec/models/safe_identification_request_location_spec.rb +48 -0
  308. data/spec/models/safe_identification_request_spec.rb +48 -0
  309. data/spec/models/safe_identification_safety_analysis_lookalikes_inner_spec.rb +54 -0
  310. data/spec/models/safe_identification_safety_analysis_spec.rb +58 -0
  311. data/spec/models/safe_identification_spec.rb +60 -0
  312. data/spec/models/satellite_data_spec.rb +60 -0
  313. data/spec/models/seasonal_planning_response_recommendations_spec.rb +48 -0
  314. data/spec/models/seasonal_planning_response_spec.rb +54 -0
  315. data/spec/models/seasonal_planning_response_weather_data_spec.rb +66 -0
  316. data/spec/models/smart_report_summary_spec.rb +48 -0
  317. data/spec/models/smart_report_summary_summary_spec.rb +54 -0
  318. data/spec/models/soil_data_spec.rb +96 -0
  319. data/spec/models/territorial_water_analytics_analytics_spec.rb +54 -0
  320. data/spec/models/territorial_water_analytics_spec.rb +48 -0
  321. data/spec/models/turbo_quant_capabilities_estimated_latency_ms_spec.rb +42 -0
  322. data/spec/models/turbo_quant_capabilities_request_spec.rb +52 -0
  323. data/spec/models/turbo_quant_capabilities_spec.rb +80 -0
  324. data/spec/models/visual_crop_analysis_analysis_spec.rb +64 -0
  325. data/spec/models/visual_crop_analysis_request_location_spec.rb +48 -0
  326. data/spec/models/visual_crop_analysis_request_spec.rb +58 -0
  327. data/spec/models/visual_crop_analysis_spec.rb +54 -0
  328. data/spec/models/vrt_prescription_spec.rb +54 -0
  329. data/spec/models/vrt_prescription_zones_inner_spec.rb +48 -0
  330. data/spec/models/water_quality_spec.rb +76 -0
  331. data/spec/spec_helper.rb +111 -0
  332. metadata +543 -0
@@ -0,0 +1,174 @@
1
+ =begin
2
+ #SoilSidekick Pro API
3
+
4
+ #Agricultural intelligence and soil analysis API with tier-based access control. ## What's New in 1.2.0 - **Consumer Plant Care APIs**: Three new endpoints addressing top pain points in plant ID apps: - `/safe-identification`: Toxic lookalike warnings and environmental context - `/dynamic-care`: Hyper-localized, real-time care recommendations - `/beginner-guidance`: Judgment-free, jargon-free plant guidance ## Authentication All endpoints require an API key passed via the `x-api-key` header: ``` x-api-key: ak_your_api_key_here ``` API keys are generated through the dashboard and use the `ak_*` format. ## Rate Limiting Rate limits are enforced based on your subscription tier: - **Free**: 10 req/min, 100 req/hour, 1,000 req/day - **Starter**: 30 req/min, 500 req/hour, 5,000 req/day - **Pro**: 100 req/min, 2,000 req/hour, 25,000 req/day - **Enterprise**: 500 req/min, 10,000 req/hour, 100,000 req/day Rate limit information is returned in response headers: - `X-RateLimit-Limit`: Maximum requests in window - `X-RateLimit-Remaining`: Remaining requests in window - `X-RateLimit-Reset`: Unix timestamp when limit resets ## Response Time SLAs All endpoints return response time headers for performance monitoring: - `X-Response-Time`: Human-readable response time (e.g., \"245ms\") - `X-Response-Time-Ms`: Response time in milliseconds - `X-Response-Time-Target`: Target response time for this endpoint - `X-Response-Time-Max`: Maximum acceptable response time - `X-Response-Time-Status`: Performance status (`optimal`, `acceptable`, `exceeded`) ### Response Time Targets by Category | Category | Target | Maximum | Endpoints | |----------|--------|---------|-----------| | **Fast** | 200ms | 500ms | county-lookup, check-subscription | | **Standard** | 500ms | 1,500ms | get-soil-data, territorial-water-quality | | **Complex** | 2,000ms | 5,000ms | agricultural-intelligence, gpt5-chat, visual-crop-analysis | | **Heavy** | 5,000ms | 15,000ms | live-agricultural-data, generate-vrt-prescription |
5
+
6
+ The version of the OpenAPI document: 3.0.0
7
+ Contact: support@soilsidekickpro.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.23.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module SoilSidekick
17
+ class LiveAgriculturalDataData < ApiModelBase
18
+ attr_accessor :weather
19
+
20
+ attr_accessor :soil
21
+
22
+ attr_accessor :crop
23
+
24
+ attr_accessor :environmental
25
+
26
+ # Attribute mapping from ruby-style variable name to JSON key.
27
+ def self.attribute_map
28
+ {
29
+ :'weather' => :'weather',
30
+ :'soil' => :'soil',
31
+ :'crop' => :'crop',
32
+ :'environmental' => :'environmental'
33
+ }
34
+ end
35
+
36
+ # Returns attribute mapping this model knows about
37
+ def self.acceptable_attribute_map
38
+ attribute_map
39
+ end
40
+
41
+ # Returns all the JSON keys this model knows about
42
+ def self.acceptable_attributes
43
+ acceptable_attribute_map.values
44
+ end
45
+
46
+ # Attribute type mapping.
47
+ def self.openapi_types
48
+ {
49
+ :'weather' => :'Object',
50
+ :'soil' => :'Object',
51
+ :'crop' => :'Object',
52
+ :'environmental' => :'Object'
53
+ }
54
+ end
55
+
56
+ # List of attributes with nullable: true
57
+ def self.openapi_nullable
58
+ Set.new([
59
+ ])
60
+ end
61
+
62
+ # Initializes the object
63
+ # @param [Hash] attributes Model attributes in the form of hash
64
+ def initialize(attributes = {})
65
+ if (!attributes.is_a?(Hash))
66
+ fail ArgumentError, "The input argument (attributes) must be a hash in `SoilSidekick::LiveAgriculturalDataData` initialize method"
67
+ end
68
+
69
+ # check to see if the attribute exists and convert string to symbol for hash key
70
+ acceptable_attribute_map = self.class.acceptable_attribute_map
71
+ attributes = attributes.each_with_object({}) { |(k, v), h|
72
+ if (!acceptable_attribute_map.key?(k.to_sym))
73
+ fail ArgumentError, "`#{k}` is not a valid attribute in `SoilSidekick::LiveAgriculturalDataData`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
74
+ end
75
+ h[k.to_sym] = v
76
+ }
77
+
78
+ if attributes.key?(:'weather')
79
+ self.weather = attributes[:'weather']
80
+ end
81
+
82
+ if attributes.key?(:'soil')
83
+ self.soil = attributes[:'soil']
84
+ end
85
+
86
+ if attributes.key?(:'crop')
87
+ self.crop = attributes[:'crop']
88
+ end
89
+
90
+ if attributes.key?(:'environmental')
91
+ self.environmental = attributes[:'environmental']
92
+ end
93
+ end
94
+
95
+ # Show invalid properties with the reasons. Usually used together with valid?
96
+ # @return Array for valid properties with the reasons
97
+ def list_invalid_properties
98
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
99
+ invalid_properties = Array.new
100
+ invalid_properties
101
+ end
102
+
103
+ # Check to see if the all the properties in the model are valid
104
+ # @return true if the model is valid
105
+ def valid?
106
+ warn '[DEPRECATED] the `valid?` method is obsolete'
107
+ true
108
+ end
109
+
110
+ # Checks equality by comparing each attribute.
111
+ # @param [Object] Object to be compared
112
+ def ==(o)
113
+ return true if self.equal?(o)
114
+ self.class == o.class &&
115
+ weather == o.weather &&
116
+ soil == o.soil &&
117
+ crop == o.crop &&
118
+ environmental == o.environmental
119
+ end
120
+
121
+ # @see the `==` method
122
+ # @param [Object] Object to be compared
123
+ def eql?(o)
124
+ self == o
125
+ end
126
+
127
+ # Calculates hash code according to all attributes.
128
+ # @return [Integer] Hash code
129
+ def hash
130
+ [weather, soil, crop, environmental].hash
131
+ end
132
+
133
+ # Builds the object from hash
134
+ # @param [Hash] attributes Model attributes in the form of hash
135
+ # @return [Object] Returns the model itself
136
+ def self.build_from_hash(attributes)
137
+ return nil unless attributes.is_a?(Hash)
138
+ attributes = attributes.transform_keys(&:to_sym)
139
+ transformed_hash = {}
140
+ openapi_types.each_pair do |key, type|
141
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
142
+ transformed_hash["#{key}"] = nil
143
+ elsif type =~ /\AArray<(.*)>/i
144
+ # check to ensure the input is an array given that the attribute
145
+ # is documented as an array but the input is not
146
+ if attributes[attribute_map[key]].is_a?(Array)
147
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
148
+ end
149
+ elsif !attributes[attribute_map[key]].nil?
150
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
151
+ end
152
+ end
153
+ new(transformed_hash)
154
+ end
155
+
156
+ # Returns the object in the form of hash
157
+ # @return [Hash] Returns the object in the form of hash
158
+ def to_hash
159
+ hash = {}
160
+ self.class.attribute_map.each_pair do |attr, param|
161
+ value = self.send(attr)
162
+ if value.nil?
163
+ is_nullable = self.class.openapi_nullable.include?(attr)
164
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
165
+ end
166
+
167
+ hash[param] = _to_hash(value)
168
+ end
169
+ hash
170
+ end
171
+
172
+ end
173
+
174
+ end
@@ -0,0 +1,185 @@
1
+ =begin
2
+ #SoilSidekick Pro API
3
+
4
+ #Agricultural intelligence and soil analysis API with tier-based access control. ## What's New in 1.2.0 - **Consumer Plant Care APIs**: Three new endpoints addressing top pain points in plant ID apps: - `/safe-identification`: Toxic lookalike warnings and environmental context - `/dynamic-care`: Hyper-localized, real-time care recommendations - `/beginner-guidance`: Judgment-free, jargon-free plant guidance ## Authentication All endpoints require an API key passed via the `x-api-key` header: ``` x-api-key: ak_your_api_key_here ``` API keys are generated through the dashboard and use the `ak_*` format. ## Rate Limiting Rate limits are enforced based on your subscription tier: - **Free**: 10 req/min, 100 req/hour, 1,000 req/day - **Starter**: 30 req/min, 500 req/hour, 5,000 req/day - **Pro**: 100 req/min, 2,000 req/hour, 25,000 req/day - **Enterprise**: 500 req/min, 10,000 req/hour, 100,000 req/day Rate limit information is returned in response headers: - `X-RateLimit-Limit`: Maximum requests in window - `X-RateLimit-Remaining`: Remaining requests in window - `X-RateLimit-Reset`: Unix timestamp when limit resets ## Response Time SLAs All endpoints return response time headers for performance monitoring: - `X-Response-Time`: Human-readable response time (e.g., \"245ms\") - `X-Response-Time-Ms`: Response time in milliseconds - `X-Response-Time-Target`: Target response time for this endpoint - `X-Response-Time-Max`: Maximum acceptable response time - `X-Response-Time-Status`: Performance status (`optimal`, `acceptable`, `exceeded`) ### Response Time Targets by Category | Category | Target | Maximum | Endpoints | |----------|--------|---------|-----------| | **Fast** | 200ms | 500ms | county-lookup, check-subscription | | **Standard** | 500ms | 1,500ms | get-soil-data, territorial-water-quality | | **Complex** | 2,000ms | 5,000ms | agricultural-intelligence, gpt5-chat, visual-crop-analysis | | **Heavy** | 5,000ms | 15,000ms | live-agricultural-data, generate-vrt-prescription |
5
+
6
+ The version of the OpenAPI document: 3.0.0
7
+ Contact: support@soilsidekickpro.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.23.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module SoilSidekick
17
+ class PlantingCalendar < ApiModelBase
18
+ attr_accessor :crop_type
19
+
20
+ attr_accessor :optimal_planting_window
21
+
22
+ attr_accessor :climate_factors
23
+
24
+ attr_accessor :soil_factors
25
+
26
+ attr_accessor :recommendations
27
+
28
+ # Attribute mapping from ruby-style variable name to JSON key.
29
+ def self.attribute_map
30
+ {
31
+ :'crop_type' => :'crop_type',
32
+ :'optimal_planting_window' => :'optimal_planting_window',
33
+ :'climate_factors' => :'climate_factors',
34
+ :'soil_factors' => :'soil_factors',
35
+ :'recommendations' => :'recommendations'
36
+ }
37
+ end
38
+
39
+ # Returns attribute mapping this model knows about
40
+ def self.acceptable_attribute_map
41
+ attribute_map
42
+ end
43
+
44
+ # Returns all the JSON keys this model knows about
45
+ def self.acceptable_attributes
46
+ acceptable_attribute_map.values
47
+ end
48
+
49
+ # Attribute type mapping.
50
+ def self.openapi_types
51
+ {
52
+ :'crop_type' => :'String',
53
+ :'optimal_planting_window' => :'GetTerritorialWaterAnalyticsRequestDateRange',
54
+ :'climate_factors' => :'Object',
55
+ :'soil_factors' => :'Object',
56
+ :'recommendations' => :'Array<String>'
57
+ }
58
+ end
59
+
60
+ # List of attributes with nullable: true
61
+ def self.openapi_nullable
62
+ Set.new([
63
+ ])
64
+ end
65
+
66
+ # Initializes the object
67
+ # @param [Hash] attributes Model attributes in the form of hash
68
+ def initialize(attributes = {})
69
+ if (!attributes.is_a?(Hash))
70
+ fail ArgumentError, "The input argument (attributes) must be a hash in `SoilSidekick::PlantingCalendar` initialize method"
71
+ end
72
+
73
+ # check to see if the attribute exists and convert string to symbol for hash key
74
+ acceptable_attribute_map = self.class.acceptable_attribute_map
75
+ attributes = attributes.each_with_object({}) { |(k, v), h|
76
+ if (!acceptable_attribute_map.key?(k.to_sym))
77
+ fail ArgumentError, "`#{k}` is not a valid attribute in `SoilSidekick::PlantingCalendar`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
78
+ end
79
+ h[k.to_sym] = v
80
+ }
81
+
82
+ if attributes.key?(:'crop_type')
83
+ self.crop_type = attributes[:'crop_type']
84
+ end
85
+
86
+ if attributes.key?(:'optimal_planting_window')
87
+ self.optimal_planting_window = attributes[:'optimal_planting_window']
88
+ end
89
+
90
+ if attributes.key?(:'climate_factors')
91
+ self.climate_factors = attributes[:'climate_factors']
92
+ end
93
+
94
+ if attributes.key?(:'soil_factors')
95
+ self.soil_factors = attributes[:'soil_factors']
96
+ end
97
+
98
+ if attributes.key?(:'recommendations')
99
+ if (value = attributes[:'recommendations']).is_a?(Array)
100
+ self.recommendations = value
101
+ end
102
+ end
103
+ end
104
+
105
+ # Show invalid properties with the reasons. Usually used together with valid?
106
+ # @return Array for valid properties with the reasons
107
+ def list_invalid_properties
108
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
109
+ invalid_properties = Array.new
110
+ invalid_properties
111
+ end
112
+
113
+ # Check to see if the all the properties in the model are valid
114
+ # @return true if the model is valid
115
+ def valid?
116
+ warn '[DEPRECATED] the `valid?` method is obsolete'
117
+ true
118
+ end
119
+
120
+ # Checks equality by comparing each attribute.
121
+ # @param [Object] Object to be compared
122
+ def ==(o)
123
+ return true if self.equal?(o)
124
+ self.class == o.class &&
125
+ crop_type == o.crop_type &&
126
+ optimal_planting_window == o.optimal_planting_window &&
127
+ climate_factors == o.climate_factors &&
128
+ soil_factors == o.soil_factors &&
129
+ recommendations == o.recommendations
130
+ end
131
+
132
+ # @see the `==` method
133
+ # @param [Object] Object to be compared
134
+ def eql?(o)
135
+ self == o
136
+ end
137
+
138
+ # Calculates hash code according to all attributes.
139
+ # @return [Integer] Hash code
140
+ def hash
141
+ [crop_type, optimal_planting_window, climate_factors, soil_factors, recommendations].hash
142
+ end
143
+
144
+ # Builds the object from hash
145
+ # @param [Hash] attributes Model attributes in the form of hash
146
+ # @return [Object] Returns the model itself
147
+ def self.build_from_hash(attributes)
148
+ return nil unless attributes.is_a?(Hash)
149
+ attributes = attributes.transform_keys(&:to_sym)
150
+ transformed_hash = {}
151
+ openapi_types.each_pair do |key, type|
152
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
153
+ transformed_hash["#{key}"] = nil
154
+ elsif type =~ /\AArray<(.*)>/i
155
+ # check to ensure the input is an array given that the attribute
156
+ # is documented as an array but the input is not
157
+ if attributes[attribute_map[key]].is_a?(Array)
158
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
159
+ end
160
+ elsif !attributes[attribute_map[key]].nil?
161
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
162
+ end
163
+ end
164
+ new(transformed_hash)
165
+ end
166
+
167
+ # Returns the object in the form of hash
168
+ # @return [Hash] Returns the object in the form of hash
169
+ def to_hash
170
+ hash = {}
171
+ self.class.attribute_map.each_pair do |attr, param|
172
+ value = self.send(attr)
173
+ if value.nil?
174
+ is_nullable = self.class.openapi_nullable.include?(attr)
175
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
176
+ end
177
+
178
+ hash[param] = _to_hash(value)
179
+ end
180
+ hash
181
+ end
182
+
183
+ end
184
+
185
+ end
@@ -0,0 +1,184 @@
1
+ =begin
2
+ #SoilSidekick Pro API
3
+
4
+ #Agricultural intelligence and soil analysis API with tier-based access control. ## What's New in 1.2.0 - **Consumer Plant Care APIs**: Three new endpoints addressing top pain points in plant ID apps: - `/safe-identification`: Toxic lookalike warnings and environmental context - `/dynamic-care`: Hyper-localized, real-time care recommendations - `/beginner-guidance`: Judgment-free, jargon-free plant guidance ## Authentication All endpoints require an API key passed via the `x-api-key` header: ``` x-api-key: ak_your_api_key_here ``` API keys are generated through the dashboard and use the `ak_*` format. ## Rate Limiting Rate limits are enforced based on your subscription tier: - **Free**: 10 req/min, 100 req/hour, 1,000 req/day - **Starter**: 30 req/min, 500 req/hour, 5,000 req/day - **Pro**: 100 req/min, 2,000 req/hour, 25,000 req/day - **Enterprise**: 500 req/min, 10,000 req/hour, 100,000 req/day Rate limit information is returned in response headers: - `X-RateLimit-Limit`: Maximum requests in window - `X-RateLimit-Remaining`: Remaining requests in window - `X-RateLimit-Reset`: Unix timestamp when limit resets ## Response Time SLAs All endpoints return response time headers for performance monitoring: - `X-Response-Time`: Human-readable response time (e.g., \"245ms\") - `X-Response-Time-Ms`: Response time in milliseconds - `X-Response-Time-Target`: Target response time for this endpoint - `X-Response-Time-Max`: Maximum acceptable response time - `X-Response-Time-Status`: Performance status (`optimal`, `acceptable`, `exceeded`) ### Response Time Targets by Category | Category | Target | Maximum | Endpoints | |----------|--------|---------|-----------| | **Fast** | 200ms | 500ms | county-lookup, check-subscription | | **Standard** | 500ms | 1,500ms | get-soil-data, territorial-water-quality | | **Complex** | 2,000ms | 5,000ms | agricultural-intelligence, gpt5-chat, visual-crop-analysis | | **Heavy** | 5,000ms | 15,000ms | live-agricultural-data, generate-vrt-prescription |
5
+
6
+ The version of the OpenAPI document: 3.0.0
7
+ Contact: support@soilsidekickpro.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.23.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module SoilSidekick
17
+ # Safe plant identification response with toxic lookalike analysis
18
+ class SafeIdentification < ApiModelBase
19
+ attr_accessor :success
20
+
21
+ attr_accessor :identification
22
+
23
+ attr_accessor :safety_analysis
24
+
25
+ attr_accessor :confidence_breakdown
26
+
27
+ attr_accessor :metadata
28
+
29
+ # Attribute mapping from ruby-style variable name to JSON key.
30
+ def self.attribute_map
31
+ {
32
+ :'success' => :'success',
33
+ :'identification' => :'identification',
34
+ :'safety_analysis' => :'safety_analysis',
35
+ :'confidence_breakdown' => :'confidence_breakdown',
36
+ :'metadata' => :'metadata'
37
+ }
38
+ end
39
+
40
+ # Returns attribute mapping this model knows about
41
+ def self.acceptable_attribute_map
42
+ attribute_map
43
+ end
44
+
45
+ # Returns all the JSON keys this model knows about
46
+ def self.acceptable_attributes
47
+ acceptable_attribute_map.values
48
+ end
49
+
50
+ # Attribute type mapping.
51
+ def self.openapi_types
52
+ {
53
+ :'success' => :'Boolean',
54
+ :'identification' => :'SafeIdentificationIdentification',
55
+ :'safety_analysis' => :'SafeIdentificationSafetyAnalysis',
56
+ :'confidence_breakdown' => :'SafeIdentificationConfidenceBreakdown',
57
+ :'metadata' => :'SafeIdentificationMetadata'
58
+ }
59
+ end
60
+
61
+ # List of attributes with nullable: true
62
+ def self.openapi_nullable
63
+ Set.new([
64
+ ])
65
+ end
66
+
67
+ # Initializes the object
68
+ # @param [Hash] attributes Model attributes in the form of hash
69
+ def initialize(attributes = {})
70
+ if (!attributes.is_a?(Hash))
71
+ fail ArgumentError, "The input argument (attributes) must be a hash in `SoilSidekick::SafeIdentification` initialize method"
72
+ end
73
+
74
+ # check to see if the attribute exists and convert string to symbol for hash key
75
+ acceptable_attribute_map = self.class.acceptable_attribute_map
76
+ attributes = attributes.each_with_object({}) { |(k, v), h|
77
+ if (!acceptable_attribute_map.key?(k.to_sym))
78
+ fail ArgumentError, "`#{k}` is not a valid attribute in `SoilSidekick::SafeIdentification`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
79
+ end
80
+ h[k.to_sym] = v
81
+ }
82
+
83
+ if attributes.key?(:'success')
84
+ self.success = attributes[:'success']
85
+ end
86
+
87
+ if attributes.key?(:'identification')
88
+ self.identification = attributes[:'identification']
89
+ end
90
+
91
+ if attributes.key?(:'safety_analysis')
92
+ self.safety_analysis = attributes[:'safety_analysis']
93
+ end
94
+
95
+ if attributes.key?(:'confidence_breakdown')
96
+ self.confidence_breakdown = attributes[:'confidence_breakdown']
97
+ end
98
+
99
+ if attributes.key?(:'metadata')
100
+ self.metadata = attributes[:'metadata']
101
+ end
102
+ end
103
+
104
+ # Show invalid properties with the reasons. Usually used together with valid?
105
+ # @return Array for valid properties with the reasons
106
+ def list_invalid_properties
107
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
108
+ invalid_properties = Array.new
109
+ invalid_properties
110
+ end
111
+
112
+ # Check to see if the all the properties in the model are valid
113
+ # @return true if the model is valid
114
+ def valid?
115
+ warn '[DEPRECATED] the `valid?` method is obsolete'
116
+ true
117
+ end
118
+
119
+ # Checks equality by comparing each attribute.
120
+ # @param [Object] Object to be compared
121
+ def ==(o)
122
+ return true if self.equal?(o)
123
+ self.class == o.class &&
124
+ success == o.success &&
125
+ identification == o.identification &&
126
+ safety_analysis == o.safety_analysis &&
127
+ confidence_breakdown == o.confidence_breakdown &&
128
+ metadata == o.metadata
129
+ end
130
+
131
+ # @see the `==` method
132
+ # @param [Object] Object to be compared
133
+ def eql?(o)
134
+ self == o
135
+ end
136
+
137
+ # Calculates hash code according to all attributes.
138
+ # @return [Integer] Hash code
139
+ def hash
140
+ [success, identification, safety_analysis, confidence_breakdown, metadata].hash
141
+ end
142
+
143
+ # Builds the object from hash
144
+ # @param [Hash] attributes Model attributes in the form of hash
145
+ # @return [Object] Returns the model itself
146
+ def self.build_from_hash(attributes)
147
+ return nil unless attributes.is_a?(Hash)
148
+ attributes = attributes.transform_keys(&:to_sym)
149
+ transformed_hash = {}
150
+ openapi_types.each_pair do |key, type|
151
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
152
+ transformed_hash["#{key}"] = nil
153
+ elsif type =~ /\AArray<(.*)>/i
154
+ # check to ensure the input is an array given that the attribute
155
+ # is documented as an array but the input is not
156
+ if attributes[attribute_map[key]].is_a?(Array)
157
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
158
+ end
159
+ elsif !attributes[attribute_map[key]].nil?
160
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
161
+ end
162
+ end
163
+ new(transformed_hash)
164
+ end
165
+
166
+ # Returns the object in the form of hash
167
+ # @return [Hash] Returns the object in the form of hash
168
+ def to_hash
169
+ hash = {}
170
+ self.class.attribute_map.each_pair do |attr, param|
171
+ value = self.send(attr)
172
+ if value.nil?
173
+ is_nullable = self.class.openapi_nullable.include?(attr)
174
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
175
+ end
176
+
177
+ hash[param] = _to_hash(value)
178
+ end
179
+ hash
180
+ end
181
+
182
+ end
183
+
184
+ end