{"openapi":"3.1.0","info":{"title":"304NotModified","description":"Réponses factuelles vérifiées, sourcées et datées, partagées entre agents IA. Guide pour les agents : https://304notfound.com/llms.txt","version":"0.2.0"},"paths":{"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/llms.txt":{"get":{"summary":"Llms Txt","operationId":"llms_txt_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/v1/domains":{"get":{"summary":"Domaines couverts et durée de fraîcheur de leurs réponses","operationId":"public_domains_v1_domains_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/keys":{"post":{"summary":"Obtenir une clé d'API gratuite (sans inscription)","operationId":"self_service_key_v1_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SelfServiceKeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/answer":{"post":{"summary":"Answer","operationId":"answer_v1_answer_post","parameters":[{"name":"x-client","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Client"}},{"name":"user-agent","in":"header","required":false,"schema":{"type":"string","default":"","title":"User-Agent"}},{"name":"idempotency-key","in":"header","required":false,"schema":{"type":"string","maxLength":200,"description":"Facultatif : même valeur pour les relances d'une même demande. La réponse enregistrée est renvoyée pendant 24 h, sans être décomptée deux fois.","default":"","title":"Idempotency-Key"},"description":"Facultatif : même valeur pour les relances d'une même demande. La réponse enregistrée est renvoyée pendant 24 h, sans être décomptée deux fois."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnswerRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/calc/ichimoku-rvol":{"post":{"tags":["Calculs sur vos données"],"summary":"Ichimoku confirmé par le volume relatif, sur vos bougies","operationId":"calc_ichimoku_v1_calc_ichimoku_rvol_post","parameters":[{"name":"x-client","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Client"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IchimokuIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/calc/regime":{"post":{"tags":["Calculs sur vos données"],"summary":"Régime de marché (tendance, volatilité, direction) sur vos bougies","operationId":"calc_regime_v1_calc_regime_post","parameters":[{"name":"x-client","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Client"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegimeIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/calc/position-size":{"post":{"tags":["Calculs sur vos données"],"summary":"Taille de position pour un risque fixé (stop donné ou par l'ATR)","operationId":"calc_position_v1_calc_position_size_post","parameters":[{"name":"x-client","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Client"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PositionIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/services":{"get":{"tags":["Services"],"summary":"Catalogue des services : contrats, prix, délais, limites","operationId":"list_services_v1_services_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/services/{service_id}":{"get":{"tags":["Services"],"summary":"Contrat d'un service","operationId":"get_service_v1_services__service_id__get","parameters":[{"name":"service_id","in":"path","required":true,"schema":{"type":"string","title":"Service Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/services/{service_id}/quote":{"post":{"tags":["Services"],"summary":"Devis : prix ferme pour ces paramètres","operationId":"quote_v1_services__service_id__quote_post","parameters":[{"name":"service_id","in":"path","required":true,"schema":{"type":"string","title":"Service Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/services/{service_id}/run":{"post":{"tags":["Services"],"summary":"Exécuter un service","operationId":"run_v1_services__service_id__run_post","parameters":[{"name":"service_id","in":"path","required":true,"schema":{"type":"string","title":"Service Id"}},{"name":"x-client","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Client"}},{"name":"user-agent","in":"header","required":false,"schema":{"type":"string","default":"","title":"User-Agent"}},{"name":"idempotency-key","in":"header","required":false,"schema":{"type":"string","maxLength":200,"description":"Facultatif : même valeur pour les relances. Le résultat enregistré est renvoyé, sans nouvelle exécution ni nouvelle facturation.","default":"","title":"Idempotency-Key"},"description":"Facultatif : même valeur pour les relances. Le résultat enregistré est renvoyé, sans nouvelle exécution ni nouvelle facturation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/feedback":{"post":{"summary":"Feedback","operationId":"feedback_v1_feedback_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AnswerRequest":{"properties":{"question":{"type":"string","maxLength":500,"minLength":3,"title":"Question"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain","description":"Indice facultatif : actualite, droit, entreprise, facturation, finances, formation, general, impots, logiciel, prix, reglementation, vie_quotidienne"},"context":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Context","description":"Facultatif : la tâche en cours de l'agent (sans données personnelles). Aide à améliorer le service."}},"type":"object","required":["question"],"title":"AnswerRequest"},"CandleIn":{"properties":{"time":{"type":"integer","title":"Time","description":"Horodatage Unix (secondes) de l'ouverture de la bougie."},"open":{"type":"number","exclusiveMinimum":0.0,"title":"Open"},"high":{"type":"number","exclusiveMinimum":0.0,"title":"High"},"low":{"type":"number","exclusiveMinimum":0.0,"title":"Low"},"close":{"type":"number","exclusiveMinimum":0.0,"title":"Close"},"volume":{"type":"number","minimum":0.0,"title":"Volume","default":0.0}},"type":"object","required":["time","open","high","low","close"],"title":"CandleIn"},"FeedbackRequest":{"properties":{"request_id":{"type":"string","maxLength":64,"minLength":1,"title":"Request Id"},"useful":{"type":"boolean","title":"Useful","description":"La réponse a-t-elle aidé l'agent à accomplir sa tâche ?"},"issue":{"anyOf":[{"type":"string","enum":["wrong","outdated","incomplete","bad_source","off_topic","contradiction","other"]},{"type":"null"}],"title":"Issue"},"comment":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Comment"}},"type":"object","required":["request_id","useful"],"title":"FeedbackRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IchimokuIn":{"properties":{"candles":{"items":{"$ref":"#/components/schemas/CandleIn"},"type":"array","maxItems":5000,"minItems":2,"title":"Candles","description":"Bougies clôturées, de la plus ancienne à la plus récente (vos propres données)."},"series":{"type":"integer","maximum":500.0,"minimum":0.0,"title":"Series","description":"Nombre de dernières bougies à détailler (0 = la dernière seulement).","default":0},"tenkan":{"type":"integer","maximum":200.0,"minimum":2.0,"title":"Tenkan","default":9},"kijun":{"type":"integer","maximum":400.0,"minimum":2.0,"title":"Kijun","default":26},"senkou_b":{"type":"integer","maximum":800.0,"minimum":2.0,"title":"Senkou B","default":52},"displacement":{"type":"integer","maximum":400.0,"minimum":1.0,"title":"Displacement","default":26},"rvol_window":{"type":"integer","maximum":500.0,"minimum":2.0,"title":"Rvol Window","default":20},"rvol_confirm":{"type":"number","maximum":20.0,"exclusiveMinimum":0.0,"title":"Rvol Confirm","description":"Seuil de volume relatif qui confirme un événement.","default":1.5}},"type":"object","required":["candles"],"title":"IchimokuIn"},"PositionIn":{"properties":{"equity":{"type":"number","exclusiveMinimum":0.0,"title":"Equity","description":"Capital total du compte."},"cash":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Cash","description":"Liquidités disponibles (par défaut : le capital)."},"direction":{"type":"string","enum":["LONG","SHORT"],"title":"Direction"},"entry_price":{"type":"number","exclusiveMinimum":0.0,"title":"Entry Price"},"stop_distance":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Stop Distance","description":"Distance du stop en prix ; sinon calculée par l'ATR des bougies."},"candles":{"anyOf":[{"items":{"$ref":"#/components/schemas/CandleIn"},"type":"array","maxItems":5000,"minItems":2},{"type":"null"}],"title":"Candles"},"atr_period":{"type":"integer","maximum":200.0,"minimum":2.0,"title":"Atr Period","default":14},"atr_multiplier":{"type":"number","maximum":20.0,"exclusiveMinimum":0.0,"title":"Atr Multiplier","default":1.5},"risk_pct":{"type":"number","maximum":0.2,"exclusiveMinimum":0.0,"title":"Risk Pct","description":"Part du capital risquée si le stop est touché.","default":0.01},"take_profit_r":{"type":"number","maximum":50.0,"exclusiveMinimum":0.0,"title":"Take Profit R","default":2.0},"max_notional_pct":{"type":"number","maximum":10.0,"exclusiveMinimum":0.0,"title":"Max Notional Pct","default":0.25},"commission_bps":{"type":"number","maximum":1000.0,"minimum":0.0,"title":"Commission Bps","default":5.0},"spread_bps":{"type":"number","maximum":1000.0,"minimum":0.0,"title":"Spread Bps","default":2.0},"slippage_bps":{"type":"number","maximum":1000.0,"minimum":0.0,"title":"Slippage Bps","default":3.0}},"type":"object","required":["equity","direction","entry_price"],"title":"PositionIn"},"QuoteRequest":{"properties":{"params":{"additionalProperties":true,"type":"object","title":"Params","description":"Paramètres du service (voir input_schema dans GET /v1/services/{id})."}},"type":"object","required":["params"],"title":"QuoteRequest"},"RegimeIn":{"properties":{"candles":{"items":{"$ref":"#/components/schemas/CandleIn"},"type":"array","maxItems":5000,"minItems":2,"title":"Candles","description":"Bougies clôturées, de la plus ancienne à la plus récente (vos propres données)."},"series":{"type":"integer","maximum":500.0,"minimum":0.0,"title":"Series","description":"Nombre de dernières bougies à détailler (0 = la dernière seulement).","default":0},"adx_period":{"type":"integer","maximum":200.0,"minimum":2.0,"title":"Adx Period","default":14},"atr_period":{"type":"integer","maximum":200.0,"minimum":2.0,"title":"Atr Period","default":14},"regime_lookback":{"type":"integer","maximum":2000.0,"minimum":10.0,"title":"Regime Lookback","default":100}},"type":"object","required":["candles"],"title":"RegimeIn"},"RunRequest":{"properties":{"params":{"additionalProperties":true,"type":"object","title":"Params","description":"Paramètres du service (voir input_schema dans GET /v1/services/{id})."},"quote_id":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Quote Id","description":"Devis à utiliser (prix ferme)."},"max_price_eur":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Max Price Eur","description":"Budget maximal pour cet appel : au-delà, rien n'est exécuté (402)."}},"type":"object","required":["params"],"title":"RunRequest"},"SelfServiceKeyRequest":{"properties":{"agent":{"type":"string","maxLength":100,"minLength":1,"title":"Agent","description":"Nom (et version) de votre agent ou de votre outil."},"use_case":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Use Case","description":"Facultatif : à quoi vont servir vos questions (sans données personnelles)."},"contact":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Contact","description":"Facultatif : une adresse ou une page pour vous joindre."}},"type":"object","required":["agent"],"title":"SelfServiceKeyRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}