{"openapi":"3.1.0","info":{"title":"Kanika Price","description":"Gold Treasury market intelligence, purity conversion and quote API. Every price carries source, timestamp, staleness and confidence.","version":"0.3.2"},"paths":{"/":{"get":{"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api":{"get":{"summary":"Api Index","operationId":"api_index_api_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/health":{"get":{"summary":"Health","operationId":"health_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/sources":{"get":{"summary":"Sources","operationId":"sources_api_v1_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/brief":{"get":{"summary":"Market Brief","operationId":"market_brief_api_v1_brief_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/intelligence/regional":{"get":{"summary":"Regional Intelligence","operationId":"regional_intelligence_api_v1_intelligence_regional_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/intelligence/headlines":{"get":{"summary":"Headline Intelligence","operationId":"headline_intelligence_api_v1_intelligence_headlines_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":12,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/intelligence/signal":{"get":{"summary":"Commercial Signal","operationId":"commercial_signal_api_v1_intelligence_signal_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/intelligence/chart":{"get":{"summary":"Gold Chart","operationId":"gold_chart_api_v1_intelligence_chart_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":10,"default":120,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/market/spot":{"get":{"summary":"Market Spot","operationId":"market_spot_api_v1_market_spot_get","parameters":[{"name":"currency","in":"query","required":false,"schema":{"type":"string","pattern":"^(USD|MYR)$","default":"USD","title":"Currency"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/gold/prices":{"get":{"summary":"Gold Prices","operationId":"gold_prices_api_v1_gold_prices_get","parameters":[{"name":"purity","in":"query","required":false,"schema":{"type":"integer","default":916,"title":"Purity"}},{"name":"currency","in":"query","required":false,"schema":{"type":"string","pattern":"^(USD|MYR)$","default":"MYR","title":"Currency"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/gold/official-retail":{"get":{"summary":"Official Retail Rates","operationId":"official_retail_rates_api_v1_gold_official_retail_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/gold/official-retail/history":{"get":{"summary":"Official Retail History","operationId":"official_retail_history_api_v1_gold_official_retail_history_get","parameters":[{"name":"purity","in":"query","required":false,"schema":{"type":"string","pattern":"^(916|999)$","default":"916","title":"Purity"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":2,"default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/gold/convert":{"post":{"summary":"Gold Convert","operationId":"gold_convert_api_v1_gold_convert_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoldConversionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/gold/quote":{"post":{"summary":"Gold Quote","operationId":"gold_quote_api_v1_gold_quote_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoldQuoteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/market/observations":{"post":{"summary":"Add Manual Observation","operationId":"add_manual_observation_api_v1_market_observations_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManualObservation"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/market/history":{"get":{"summary":"Market History","operationId":"market_history_api_v1_market_history_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/predictions/gold":{"get":{"summary":"Gold Prediction","operationId":"gold_prediction_api_v1_predictions_gold_get","parameters":[{"name":"horizon_minutes","in":"query","required":false,"schema":{"type":"integer","maximum":1440,"minimum":1,"default":60,"title":"Horizon Minutes"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/diamonds/market":{"get":{"summary":"Diamond Market","operationId":"diamond_market_api_v1_diamonds_market_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/diamonds/quote":{"post":{"summary":"Diamond Quote","operationId":"diamond_quote_api_v1_diamonds_quote_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiamondQuoteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/diamonds/estimate":{"post":{"summary":"Diamond Estimate","operationId":"diamond_estimate_api_v1_diamonds_estimate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiamondEstimateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/intelligence/forecast":{"get":{"summary":"Intelligence Forecast","description":"Provisional market-parity scenarios for staff planning horizons.","operationId":"intelligence_forecast_api_v1_intelligence_forecast_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/intelligence/forecast-myr":{"get":{"summary":"Intelligence Forecast Myr","description":"MYR market-parity scenarios; all unit and purity conversion remains server-side.","operationId":"intelligence_forecast_myr_api_v1_intelligence_forecast_myr_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/intelligence/jj-workflows":{"get":{"summary":"Jj Workflows","description":"Separate staff and customer decisions so unlike JJ/Kanika prices are never compared as one rate.","operationId":"jj_workflows_api_v1_intelligence_jj_workflows_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/intelligence/customer-value-context":{"get":{"summary":"Customer Value Context","description":"Disclose whether Kanika-owned redemption terms have been configured.","operationId":"customer_value_context_api_v1_intelligence_customer_value_context_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/intelligence/customer-value":{"post":{"summary":"Customer Value","description":"Calculate a customer break-even from supplied commercial terms and the live official rate.","operationId":"customer_value_api_v1_intelligence_customer_value_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerValueRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/intelligence/purchase-context":{"get":{"summary":"Purchase Context","description":"Explain today's internal gold-buying context without issuing a trade instruction.","operationId":"purchase_context_api_v1_intelligence_purchase_context_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/intelligence/briefing-v2":{"get":{"summary":"Briefing V2","operationId":"briefing_v2_api_v1_intelligence_briefing_v2_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/intelligence/technical-v2":{"get":{"summary":"Technical V2","operationId":"technical_v2_api_v1_intelligence_technical_v2_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/intelligence/economics-v2":{"get":{"summary":"Economics","operationId":"economics_api_v1_intelligence_economics_v2_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/intelligence/learning-v3":{"get":{"summary":"Learning V3","operationId":"learning_v3_api_v1_intelligence_learning_v3_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/intelligence/visual-v4":{"get":{"summary":"Visual V4","operationId":"visual_v4_api_v1_intelligence_visual_v4_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/intelligence/events-v4":{"get":{"summary":"Events V4","operationId":"events_v4_api_v1_intelligence_events_v4_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"CustomerValueRequest":{"properties":{"weight_g":{"anyOf":[{"type":"number","maximum":1000000.0,"exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Weight G"},"checkout_fee_total":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Checkout Fee Total"},"redemption_offer_per_g":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Redemption Offer Per G"},"redemption_fee_total":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Redemption Fee Total"}},"type":"object","required":["weight_g","checkout_fee_total","redemption_offer_per_g","redemption_fee_total"],"title":"CustomerValueRequest"},"DiamondEstimateRequest":{"properties":{"carat":{"anyOf":[{"type":"number","maximum":100.0,"exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Carat"},"reference_price_per_carat":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Reference Price Per Carat"},"shape":{"type":"string","maxLength":40,"minLength":2,"title":"Shape"},"color":{"type":"string","maxLength":10,"minLength":1,"title":"Color"},"clarity":{"type":"string","maxLength":10,"minLength":1,"title":"Clarity"},"cut_multiplier":{"anyOf":[{"type":"number","maximum":2.0,"exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Cut Multiplier","default":"1"},"shape_multiplier":{"anyOf":[{"type":"number","maximum":2.0,"exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Shape Multiplier","default":"1"},"certification_multiplier":{"anyOf":[{"type":"number","maximum":2.0,"exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Certification Multiplier","default":"1"},"currency":{"type":"string","title":"Currency","default":"USD"}},"type":"object","required":["carat","reference_price_per_carat","shape","color","clarity"],"title":"DiamondEstimateRequest"},"DiamondQuoteRequest":{"properties":{"carat":{"anyOf":[{"type":"number","maximum":6.0,"minimum":0.3},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Carat"},"color":{"type":"string","title":"Color","default":"G"},"clarity":{"type":"string","title":"Clarity","default":"VS2"},"shape":{"type":"string","title":"Shape","default":"ROUND"},"currency":{"type":"string","title":"Currency","default":"MYR"},"commercial_adjustment_pct":{"anyOf":[{"type":"number","maximum":200.0,"minimum":-50.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Commercial Adjustment Pct","default":"0"}},"type":"object","required":["carat"],"title":"DiamondQuoteRequest"},"GoldConversionRequest":{"properties":{"weight_g":{"anyOf":[{"type":"number","maximum":1000000.0,"exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Weight G"},"from_purity":{"type":"integer","title":"From Purity"},"to_purity":{"type":"integer","title":"To Purity"}},"type":"object","required":["weight_g","from_purity","to_purity"],"title":"GoldConversionRequest"},"GoldQuoteRequest":{"properties":{"side":{"$ref":"#/components/schemas/QuoteSide"},"purity":{"type":"integer","title":"Purity","default":916},"weight_g":{"anyOf":[{"type":"number","maximum":1000000.0,"exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Weight G"},"currency":{"type":"string","title":"Currency","default":"MYR"},"spread_bps":{"anyOf":[{"type":"number","maximum":5000.0,"minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Spread Bps","default":"0"},"making_fee_per_g":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Making Fee Per G","default":"0"},"fixed_fee":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Fixed Fee","default":"0"}},"type":"object","required":["side","weight_g"],"title":"GoldQuoteRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ManualObservation":{"properties":{"source":{"type":"string","maxLength":64,"minLength":2,"title":"Source"},"usd_per_troy_ounce":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Usd Per Troy Ounce"},"observed_at":{"type":"string","format":"date-time","title":"Observed At"},"notes":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Notes"}},"type":"object","required":["source","usd_per_troy_ounce","observed_at"],"title":"ManualObservation"},"QuoteSide":{"type":"string","enum":["BUY_FROM_CUSTOMER","SELL_TO_CUSTOMER"],"title":"QuoteSide"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}