{"openapi":"3.1.0","info":{"title":"MARKO External Partner API","version":"v1","description":"Stable external API contract for the live environment.\n\nAuthentication flow for partner integrations:\n1. Generate an API key from the MARKO entity admin API section.\n2. Keep the raw API secret server-side and use it only to sign `POST /v1/auth/token`.\n3. Build the canonical message `MARKO-EXTERNAL-API-TOKEN-V1\\n{key_id}\\n{timestamp}\\n{nonce}`.\n4. Sign that message with HMAC-SHA256 and send the hex signature with `key_id`, `timestamp` and `nonce`.\n5. Use the returned short-lived bearer on business endpoints as `Authorization: Bearer <access_token>`.\nThe raw API secret must never be sent on business endpoints.\n\nThis public contract intentionally excludes beta endpoints."},"servers":[{"url":"https://partner-api.marko.fr/v1"}],"security":[{"BearerAuth":[]}],"externalDocs":{"description":"Download the matching Postman collection.","url":"/v1/postman.json"},"x-marko-authentication":{"token_endpoint":"/v1/auth/token","signature_algorithm":"HMAC-SHA256","canonical_message":"MARKO-EXTERNAL-API-TOKEN-V1\\n{key_id}\\n{timestamp}\\n{nonce}","business_authorization_header":"Authorization: Bearer <access_token>","raw_secret_usage":"server-side-token-exchange-only"},"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"MARKO short-lived bearer","description":"Use the `access_token` returned by `POST /v1/auth/token`. Do not send the raw API secret on business endpoints."}},"schemas":{"ProblemDetails":{"type":"object","required":["title","status","detail"],"properties":{"type":{"type":"string","default":"about:blank"},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"},"request_id":{"type":"string"},"scope":{"type":"string"},"route_id":{"type":"string"},"reason_code":{"type":"string"}}}}},"paths":{"/auth/token":{"post":{"operationId":"auth_token_exchange","summary":"Obtenir un bearer court","description":"Echange une cle API brute contre un bearer MARKO court. La signature HMAC-SHA256 est calculee avec la cle API brute sur le message canonique `MARKO-EXTERNAL-API-TOKEN-V1\\n{key_id}\\n{timestamp}\\n{nonce}`. Utilisez ensuite `Authorization: Bearer YOUR_BEARER_HERE` sur les endpoints metier.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-auth-token-exchange"}],"tags":["auth"],"x-marko-route-group":"auth","x-marko-required-scope":"","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"access_token":"YOUR_BEARER_HERE","token_type":"Bearer","expires_in":900,"issued_at":"2026-04-23T10:00:00Z","expires_at":"2026-04-23T10:15:00Z","key_id":"YOUR_PUBLIC_KEY_ID","environment":"live","entity_slug":"clubfunding"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[],"x-codeSamples":[{"lang":"Shell","label":"cURL + OpenSSL","source":"api_key=\"YOUR_API_KEY\"\nkey_id=\"YOUR_PUBLIC_KEY_ID\"\ntimestamp=\"$(date +%s)\"\nnonce=\"$(openssl rand -hex 16)\"\nmessage=\"$(printf 'MARKO-EXTERNAL-API-TOKEN-V1\\n%s\\n%s\\n%s' \"$key_id\" \"$timestamp\" \"$nonce\")\"\nsignature=\"$(printf \"%s\" \"$message\" | openssl dgst -sha256 -hmac \"$api_key\" -hex | awk '{print $2}')\"\n\ncurl -X POST \"https://partner-api.marko.fr/v1/auth/token\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-Request-ID: marko-auth-token\" \\\n  --data \"$(printf '{\"key_id\":\"%s\",\"timestamp\":%s,\"nonce\":\"%s\",\"signature\":\"%s\"}' \"$key_id\" \"$timestamp\" \"$nonce\" \"$signature\")\""},{"lang":"Python","label":"Python HMAC","source":"import hashlib\nimport hmac\nimport secrets\nimport time\n\nimport requests\n\napi_key = \"YOUR_API_KEY\"\nkey_id = \"YOUR_PUBLIC_KEY_ID\"\ntimestamp = int(time.time())\nnonce = secrets.token_urlsafe(24)\nmessage = f\"MARKO-EXTERNAL-API-TOKEN-V1\\n{key_id}\\n{timestamp}\\n{nonce}\"\nsignature = hmac.new(api_key.encode(), message.encode(), hashlib.sha256).hexdigest()\n\nresp = requests.post(\n    \"https://partner-api.marko.fr/v1/auth/token\",\n    headers={\"X-Request-ID\": \"marko-auth-token\"},\n    json={\n        \"key_id\": key_id,\n        \"timestamp\": timestamp,\n        \"nonce\": nonce,\n        \"signature\": signature,\n    },\n    timeout=30,\n)\nresp.raise_for_status()\naccess_token = resp.json()[\"access_token\"]"},{"lang":"TypeScript","label":"Node HMAC","source":"import { createHmac, randomBytes } from \"node:crypto\"\n\nconst apiKey = \"YOUR_API_KEY\"\nconst keyId = \"YOUR_PUBLIC_KEY_ID\"\nconst timestamp = Math.floor(Date.now() / 1000)\nconst nonce = randomBytes(24).toString(\"base64url\")\nconst message = `MARKO-EXTERNAL-API-TOKEN-V1\\n${keyId}\\n${timestamp}\\n${nonce}`\nconst signature = createHmac(\"sha256\", apiKey).update(message).digest(\"hex\")\n\nconst response = await fetch(\"https://partner-api.marko.fr/v1/auth/token\", {\n  method: \"POST\",\n  headers: {\n    \"Content-Type\": \"application/json\",\n    \"X-Request-ID\": \"marko-auth-token\",\n  },\n  body: JSON.stringify({\n    key_id: keyId,\n    timestamp,\n    nonce,\n    signature,\n  }),\n})\n\nconst { access_token: accessToken } = await response.json()"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["key_id","timestamp","nonce","signature"],"properties":{"key_id":{"type":"string","description":"Public identifier of the API key generated from the MARKO entity admin API section."},"timestamp":{"type":"integer","description":"Unix timestamp in seconds. Requests outside the accepted clock skew are rejected."},"nonce":{"type":"string","description":"Unique random value. Reusing a nonce for the same key is rejected."},"signature":{"type":"string","pattern":"^[A-Fa-f0-9]{64}$","description":"HMAC-SHA256 hex digest of the canonical exchange message."}}},"example":{"key_id":"YOUR_PUBLIC_KEY_ID","timestamp":1776926400,"nonce":"UNIQUE_NONCE_16_CHARS","signature":"HMAC_SHA256_HEX_SIGNATURE"}}}}}},"/entity":{"get":{"operationId":"entity_get","summary":"Recuperer la fiche de l'entite","description":"Expose l'entite rattachee a la cle API, sans changer de contexte.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-entity-get"}],"tags":["entity"],"x-marko-route-group":"read","x-marko-required-scope":"entity:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"11111111-1111-1111-1111-111111111111","name":"Clubfunding","type":"client","siren":"123456789","mode_reporting":"trimestriel","frequence_reporting":3,"date_reference_reporting":"2026-03-31","risk_threshold":75,"zone_vacances":"A","ai_enabled":true}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/portfolio/summary":{"get":{"operationId":"portfolio_summary","summary":"Recuperer la synthese portefeuille","description":"Retourne un resume portefeuille agrege pour l'entite de la cle, sans parametre de filtre. Les totaux excluent les ressources supprimees et les repartitions utilisent les codes de taxonomie effectifs.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-portfolio-summary"}],"tags":["portfolio"],"x-marko-route-group":"read","x-marko-required-scope":"portfolio:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"properties":{"total_operations":{"default":0,"title":"Total Operations","type":"integer"},"total_nominal":{"default":0.0,"title":"Total Nominal","type":"number"},"total_fonds":{"default":0,"title":"Total Fonds","type":"integer"},"total_spvs":{"default":0,"title":"Total Spvs","type":"integer"},"total_operateurs":{"default":0,"title":"Total Operateurs","type":"integer"},"operations_by_status":{"additionalProperties":{"type":"integer"},"title":"Operations By Status","type":"object"},"operations_by_classe_actif":{"additionalProperties":{"type":"integer"},"title":"Operations By Classe Actif","type":"object"},"operations_by_type_investissement":{"additionalProperties":{"type":"integer"},"title":"Operations By Type Investissement","type":"object"}},"title":"PublicPortfolioSummary","type":"object"},"example":{"total_operations":12,"total_nominal":24500000.0,"total_fonds":2,"total_spvs":5,"total_operateurs":4,"operations_by_status":{"instruction":10,"cloture":2},"operations_by_classe_actif":{"residentiel":8,"bureaux":4},"operations_by_type_investissement":{"dette_senior":9,"obligation_simple":3}}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/deals":{"get":{"operationId":"deals_list","summary":"Lister les deals","description":"Expose le pipeline CRM pre-closing de l'entité.","parameters":[{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":20},{"in":"query","name":"offset","required":false,"schema":{"type":"string"},"example":0},{"in":"query","name":"status","required":false,"schema":{"type":"string"},"example":"sourcing"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-deals-list"}],"tags":["deals"],"x-marko-route-group":"read","x-marko-required-scope":"deals:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"items":[{"id":"deal_001","name":"Pipeline Demo","status":"sourcing"}],"total":1}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"post":{"operationId":"deals_create","summary":"Créer un deal","description":"Crée un deal dans le pipeline pre-closing.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-deals-create"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["deals"],"x-marko-route-group":"write","x-marko-required-scope":"deals:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"deal_001","name":"Pipeline Demo","status":"sourcing"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"name":"Pipeline Demo","status":"sourcing","classe_actif":"immobilier"}}}}}},"/deals/{deal_id}":{"get":{"operationId":"deals_get","summary":"Récupérer un deal","description":"Retourne un deal unitaire du pipeline.","parameters":[{"in":"path","name":"deal_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-deals-get"}],"tags":["deals"],"x-marko-route-group":"read","x-marko-required-scope":"deals:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa","name":"Pipeline Demo","status":"ic"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"put":{"operationId":"deals_update","summary":"Mettre à jour un deal","description":"Met à jour un deal existant du pipeline.","parameters":[{"in":"path","name":"deal_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-deals-update"}],"tags":["deals"],"x-marko-route-group":"write","x-marko-required-scope":"deals:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa","status":"closing"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"status":"closing","responsable":"Team Origination"}}}}},"delete":{"operationId":"deals_delete","summary":"Supprimer un deal","description":"Supprime logiquement un deal du pipeline.","parameters":[{"in":"path","name":"deal_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-deals-delete"}],"tags":["deals"],"x-marko-route-group":"write","x-marko-required-scope":"deals:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"204":{"description":"Successful response"},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/deals/{deal_id}/notes":{"get":{"operationId":"deals_notes_list","summary":"Lister les notes d'un deal","description":"Expose les notes attachées à un deal.","parameters":[{"in":"path","name":"deal_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"},{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":20},{"in":"query","name":"offset","required":false,"schema":{"type":"string"},"example":0},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-deals-notes-list"}],"tags":["deals"],"x-marko-route-group":"read","x-marko-required-scope":"deals:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"items":[{"id":"note_001","content":"Rendez-vous sponsor"}],"total":1}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"post":{"operationId":"deals_notes_create","summary":"Créer une note de deal","description":"Ajoute une note sur un deal du pipeline.","parameters":[{"in":"path","name":"deal_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-deals-notes-create"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["deals"],"x-marko-route-group":"write","x-marko-required-scope":"deals:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"note_001","content":"Rendez-vous sponsor planifié"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"content":"Rendez-vous sponsor planifié"}}}}}},"/deal-notes/{note_id}":{"delete":{"operationId":"deals_notes_delete","summary":"Supprimer une note de deal","description":"Supprime une note rattachée au pipeline deals.","parameters":[{"in":"path","name":"note_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-deals-notes-delete"}],"tags":["deals"],"x-marko-route-group":"write","x-marko-required-scope":"deals:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"204":{"description":"Successful response"},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/fonds":{"get":{"operationId":"fonds_list","summary":"Lister les fonds","description":"Retourne les fonds visibles pour l'entite de la cle, par page bornee. Les en-tetes X-Marko-Limit, X-Marko-Offset et X-Marko-Has-More decrivent la page.","parameters":[{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":50},{"in":"query","name":"offset","required":false,"schema":{"type":"string"},"example":0},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-fonds-list"}],"tags":["fonds"],"x-marko-route-group":"read","x-marko-required-scope":"fonds:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":[{"id":"22222222-2222-2222-2222-222222222222","name":"Clubfunding Debt I","code":"CFD1","status":"active","date_creation":"2024-01-15","date_liquidation":null}]}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"post":{"operationId":"fonds_create","summary":"Créer un fonds","description":"Crée un fonds d'investissement dans l'entité.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-fonds-create"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["fonds"],"x-marko-route-group":"write","x-marko-required-scope":"fonds:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"22222222-2222-2222-2222-222222222223","name":"Clubfunding Debt II"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"name":"Clubfunding Debt II","code":"CFD2","status":"actif"}}}}}},"/spvs":{"get":{"operationId":"spvs_list","summary":"Lister les SPV","description":"Permet de rechercher un SPV par nom exact insensible a la casse via `name`, et de filtrer par fonds via `fond_id`. Le filtre par nom est un controle avant creation, pas une garantie d'unicite concurrente; conservez l'identifiant MARKO et utilisez Idempotency-Key pour les ecritures. Les en-tetes X-Marko-Limit, X-Marko-Offset et X-Marko-Has-More decrivent la page.","parameters":[{"in":"query","name":"name","required":false,"schema":{"type":"string","maxLength":255},"description":"Nom exact, insensible a la casse et aux espaces peripheriques.","example":"SPV Paris 19"},{"in":"query","name":"fond_id","required":false,"schema":{"type":"string"},"example":"22222222-2222-2222-2222-222222222222"},{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":50},{"in":"query","name":"offset","required":false,"schema":{"type":"string"},"example":0},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-spvs-list"}],"tags":["spvs"],"x-marko-route-group":"read","x-marko-required-scope":"spvs:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":[{"id":"33333333-3333-3333-3333-333333333333","fond_id":"22222222-2222-2222-2222-222222222222","name":"SPV Paris 19","siren":"987654321","forme_juridique":"SAS","montage":"direct","procedure_collective":"aucune","is_draft":false,"created_at":"2026-02-01T09:15:00Z","updated_at":"2026-03-20T10:00:00Z"}]}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"post":{"operationId":"spvs_create","summary":"Créer une SPV","description":"Crée une SPV sur l'entité et le fonds ciblé. La forme juridique, le SIREN et l'adresse peuvent etre fournis des la creation. Le type d'investissement reste porte par l'operation, car une meme SPV peut en regrouper plusieurs.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-spvs-create"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["spvs"],"x-marko-route-group":"write","x-marko-required-scope":"spvs:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"33333333-3333-3333-3333-333333333334","name":"SPV Marseille","forme_juridique":"SAS","siren":"123456782","adresse":"10 rue de la Republique, 13001 Marseille"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"name":"SPV Marseille","fond_id":"22222222-2222-2222-2222-222222222222","forme_juridique":"SAS","siren":"123456782","adresse":"10 rue de la Republique, 13001 Marseille"}}}}}},"/operations":{"get":{"operationId":"operations_list","summary":"Lister les operations","description":"Supporte la recherche par nom exact insensible a la casse, la pagination, le filtrage par statut et le filtrage par SPV. Le filtre par nom est un controle avant creation, pas une garantie d'unicite concurrente; conservez l'identifiant MARKO et utilisez external_id avec Idempotency-Key.","parameters":[{"in":"query","name":"name","required":false,"schema":{"type":"string","maxLength":255},"description":"Nom exact, insensible a la casse et aux espaces peripheriques.","example":"Clubfunding Demo Deal"},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":200},"description":"Nombre maximal d'operations retournees.","example":20},{"in":"query","name":"offset","required":false,"schema":{"type":"integer","minimum":0},"description":"Nombre d'operations a ignorer avant la page retournee.","example":0},{"in":"query","name":"status","required":false,"schema":{"type":"string","maxLength":180},"description":"Filter by the exact entity taxonomy code. `active` expands to the five active canonical MARKO statuses.","example":"active"},{"in":"query","name":"spv_id","required":false,"schema":{"type":"string","format":"uuid"},"description":"Identifiant MARKO exact du SPV rattache.","example":"33333333-3333-3333-3333-333333333333"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operations-list"}],"tags":["operations"],"x-marko-route-group":"read","x-marko-required-scope":"operations:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"items":{"properties":{"id":{"format":"uuid","title":"Id","type":"string"},"spv_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Spv Id"},"relationship_status":{"enum":["attached","pending_attachment"],"title":"Relationship Status","type":"string"},"relationship_label":{"title":"Relationship Label","type":"string"},"name":{"title":"Name","type":"string"},"status":{"title":"Status","type":"string"},"phase":{"title":"Phase","type":"string"},"type_investissement":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Type Investissement"},"type_operation":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Type Operation"},"classe_actif":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Classe Actif"},"statut_interne":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Statut Interne"},"statut_operationnel":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Statut Operationnel"},"sous_classe_actif":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Sous Classe Actif"},"version":{"title":"Version","type":"integer"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"updated_at":{"format":"date-time","title":"Updated At","type":"string"},"financial_summary":{"additionalProperties":true,"title":"Financial Summary","type":"object"},"reporting_summary":{"additionalProperties":true,"title":"Reporting Summary","type":"object"}},"required":["id","relationship_status","relationship_label","name","status","phase","version","created_at","updated_at"],"title":"PublicOperationItem","type":"object"},"type":"array"},"example":[{"id":"44444444-4444-4444-4444-444444444444","spv_id":"33333333-3333-3333-3333-333333333333","relationship_status":"attached","relationship_label":"Rattachée","name":"Clubfunding Demo Deal","status":"instruction","phase":"p03_financement","type_investissement":"dette_senior","type_operation":"acquisition_detention","classe_actif":"residentiel","statut_interne":"analyse","statut_operationnel":["commercialisation"],"sous_classe_actif":"residentiel_coliving","version":3,"created_at":"2026-03-10T08:00:00Z","updated_at":"2026-03-21T14:30:00Z","financial_summary":{"montant_nominal_contractuel":2500000,"montant_total":2500000},"reporting_summary":{"mode_reporting":"trimestriel","frequence_reporting":3,"reporting_status":"pending","taux_completude_reporting":68.5}}]}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/operations/{operation_id}":{"get":{"operationId":"operations_get","summary":"Recuperer une operation","description":"Retourne le detail d'une operation par son identifiant MARKO.","parameters":[{"in":"path","name":"operation_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"44444444-4444-4444-4444-444444444444"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operations-get"}],"tags":["operations"],"x-marko-route-group":"read","x-marko-required-scope":"operations:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"properties":{"id":{"format":"uuid","title":"Id","type":"string"},"spv_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Spv Id"},"relationship_status":{"enum":["attached","pending_attachment"],"title":"Relationship Status","type":"string"},"relationship_label":{"title":"Relationship Label","type":"string"},"name":{"title":"Name","type":"string"},"status":{"title":"Status","type":"string"},"phase":{"title":"Phase","type":"string"},"type_investissement":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Type Investissement"},"type_operation":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Type Operation"},"classe_actif":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Classe Actif"},"statut_interne":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Statut Interne"},"statut_operationnel":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Statut Operationnel"},"sous_classe_actif":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Sous Classe Actif"},"version":{"title":"Version","type":"integer"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"updated_at":{"format":"date-time","title":"Updated At","type":"string"},"financial_summary":{"additionalProperties":true,"title":"Financial Summary","type":"object"},"reporting_summary":{"additionalProperties":true,"title":"Reporting Summary","type":"object"}},"required":["id","relationship_status","relationship_label","name","status","phase","version","created_at","updated_at"],"title":"PublicOperationItem","type":"object"},"example":{"id":"44444444-4444-4444-4444-444444444444","spv_id":"33333333-3333-3333-3333-333333333333","relationship_status":"attached","relationship_label":"Rattachée","name":"Clubfunding Demo Deal","status":"instruction","phase":"p03_financement","type_investissement":"dette_senior","type_operation":"acquisition_detention","classe_actif":"residentiel","statut_interne":"analyse","statut_operationnel":["commercialisation"],"sous_classe_actif":"residentiel_coliving","version":3,"created_at":"2026-03-10T08:00:00Z","updated_at":"2026-03-21T14:30:00Z","financial_summary":{"montant_nominal_contractuel":2500000,"montant_total":2500000},"reporting_summary":{"mode_reporting":"trimestriel","frequence_reporting":3,"reporting_status":"pending","taux_completude_reporting":68.5}}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"404":{"description":"Operation not found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Not Found","status":404,"detail":"Operation not found","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"delete":{"operationId":"operations_delete","summary":"Supprimer une opération","description":"Supprime logiquement une opération existante.","parameters":[{"in":"path","name":"operation_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operations-delete"}],"tags":["operations"],"x-marko-route-group":"write","x-marko-required-scope":"operations:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"204":{"description":"Successful response"},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/operations/external/{external_id}":{"get":{"operationId":"operations_external_get","summary":"Récupérer une opération par identifiant externe","description":"Résout l'identifiant stable du système partenaire et retourne immédiatement l'identifiant MARKO et la ressource courante. Les codes `custom__...` sont générés par MARKO : conservez toujours le code renvoyé au lieu de le construire.","parameters":[{"in":"path","name":"external_id","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_~-][A-Za-z0-9._:~-]{0,254}$","minLength":1,"maxLength":255},"example":"CF-OP-001"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operations-external-get"}],"tags":["operations"],"x-marko-route-group":"read","x-marko-required-scope":"operations:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"properties":{"id":{"format":"uuid","title":"Id","type":"string"},"spv_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Spv Id"},"lead_operateur_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Lead Operateur Id"},"name":{"title":"Name","type":"string"},"status":{"title":"Status","type":"string"},"type_investissement":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Type Investissement"},"type_operation":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Type Operation"},"classe_actif":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Classe Actif"},"statut_interne":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Statut Interne"},"statut_operationnel":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Statut Operationnel"},"sous_classe_actif":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Sous Classe Actif"},"data":{"additionalProperties":true,"title":"Data","type":"object"},"kpi_snapshot":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Kpi Snapshot"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"updated_at":{"format":"date-time","title":"Updated At","type":"string"}},"required":["id","name","status","created_at","updated_at"],"title":"ExternalOperationResourceResponse","type":"object"},"example":{"id":"44444444-4444-4444-4444-444444444444","spv_id":"33333333-3333-3333-3333-333333333333","name":"ClubFunding Demo Deal","status":"custom__a3e08c7bde__projet_emis","data":{},"created_at":"2026-08-22T08:00:00Z","updated_at":"2026-08-22T08:00:00Z"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"put":{"operationId":"operations_upsert","summary":"Creer ou mettre a jour une operation externe","description":"Crée ou met à jour immédiatement une opération à partir d'un identifiant partenaire stable. La réponse contient directement marko_id. Une valeur de taxonomie inconnue est créée pour l'entité, visible immédiatement et signalée dans taxonomy_additions. Le segment généré des codes `custom__...` n'est pas prévisible : le client doit conserver le code renvoyé et le réutiliser. Une création répond 201; une mise à jour, restauration ou répétition sans changement répond 200. Les notes utilisent leur endpoint dédié; seul POST /operations/batch reste asynchrone.","parameters":[{"in":"path","name":"external_id","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_~-][A-Za-z0-9._:~-]{0,254}$","minLength":1,"maxLength":255},"example":"CF-OP-001"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operations-upsert"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["operations"],"x-marko-route-group":"import","x-marko-required-scope":"operations:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"properties":{"external_id":{"title":"External Id","type":"string"},"marko_id":{"format":"uuid","title":"Marko Id","type":"string"},"outcome":{"enum":["created","updated","noop","restored","bound"],"title":"Outcome","type":"string"},"resource":{"properties":{"id":{"format":"uuid","title":"Id","type":"string"},"spv_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Spv Id"},"lead_operateur_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Lead Operateur Id"},"name":{"title":"Name","type":"string"},"status":{"title":"Status","type":"string"},"type_investissement":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Type Investissement"},"type_operation":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Type Operation"},"classe_actif":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Classe Actif"},"statut_interne":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Statut Interne"},"statut_operationnel":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Statut Operationnel"},"sous_classe_actif":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Sous Classe Actif"},"data":{"additionalProperties":true,"title":"Data","type":"object"},"kpi_snapshot":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Kpi Snapshot"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"updated_at":{"format":"date-time","title":"Updated At","type":"string"}},"required":["id","name","status","created_at","updated_at"],"title":"ExternalOperationResourceResponse","type":"object"},"taxonomy_additions":{"items":{"properties":{"parent_code":{"anyOf":[{"enum":["due_diligence","en_cours","en_recouvrement","termine"],"type":"string"},{"type":"null"}],"default":null,"title":"Parent Code"},"code":{"title":"Code","type":"string"},"dimension":{"enum":["operation_status","investment_type","operation_type","asset_class","internal_status","operational_status","follow_up_category"],"title":"Dimension","type":"string"},"display_label":{"title":"Display Label","type":"string"},"source_kind":{"enum":["marko","partner","entity"],"title":"Source Kind","type":"string"},"source_display_name":{"title":"Source Display Name","type":"string"},"is_visible":{"title":"Is Visible","type":"boolean"},"is_active":{"title":"Is Active","type":"boolean"},"position":{"title":"Position","type":"integer"},"usage_count":{"default":0,"title":"Usage Count","type":"integer"},"label_editable":{"title":"Label Editable","type":"boolean"},"canonical_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Canonical Code"},"icon_key":{"anyOf":[{"enum":["tag","briefcase","building","landmark","home","map","layers","shield","trending-up","calendar","circle-check","triangle-alert"],"type":"string"},{"type":"null"}],"default":null,"title":"Icon Key"}},"required":["code","dimension","display_label","source_kind","source_display_name","is_visible","is_active","position","label_editable"],"title":"EntityTaxonomyOptionResponse","type":"object"},"title":"Taxonomy Additions","type":"array"},"request_id":{"title":"Request Id","type":"string"}},"required":["external_id","marko_id","outcome","resource","request_id"],"title":"ExternalOperationSyncUpsertResponse","type":"object"},"example":{"external_id":"CF-OP-001","marko_id":"44444444-4444-4444-4444-444444444444","outcome":"created","resource":{"id":"44444444-4444-4444-4444-444444444444","spv_id":null,"lead_operateur_id":null,"name":"Clubfunding Demo Deal","status":"custom__a3e08c7bde__projet_emis","type_investissement":"dette_senior","type_operation":"acquisition_detention","classe_actif":"residentiel","statut_interne":"analyse","statut_operationnel":["commercialisation"],"sous_classe_actif":"residentiel_coliving","data":{"adresse":"12 rue de la Paix, Paris"},"created_at":"2026-08-22T08:00:00Z","updated_at":"2026-08-22T08:00:00Z"},"taxonomy_additions":[{"code":"custom__a3e08c7bde__projet_emis","dimension":"operation_status","display_label":"Projet émis","source_kind":"partner","source_display_name":"ClubFunding","is_visible":true,"is_active":true,"position":10000,"usage_count":0,"label_editable":true,"canonical_code":null}],"request_id":"req_cf_operation_upsert"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"200":{"description":"Successful response for the accompanying request example","content":{"application/json":{"schema":{"properties":{"external_id":{"title":"External Id","type":"string"},"marko_id":{"format":"uuid","title":"Marko Id","type":"string"},"outcome":{"enum":["created","updated","noop","restored","bound"],"title":"Outcome","type":"string"},"resource":{"properties":{"id":{"format":"uuid","title":"Id","type":"string"},"spv_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Spv Id"},"lead_operateur_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Lead Operateur Id"},"name":{"title":"Name","type":"string"},"status":{"title":"Status","type":"string"},"type_investissement":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Type Investissement"},"type_operation":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Type Operation"},"classe_actif":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Classe Actif"},"statut_interne":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Statut Interne"},"statut_operationnel":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Statut Operationnel"},"sous_classe_actif":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Sous Classe Actif"},"data":{"additionalProperties":true,"title":"Data","type":"object"},"kpi_snapshot":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Kpi Snapshot"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"updated_at":{"format":"date-time","title":"Updated At","type":"string"}},"required":["id","name","status","created_at","updated_at"],"title":"ExternalOperationResourceResponse","type":"object"},"taxonomy_additions":{"items":{"properties":{"parent_code":{"anyOf":[{"enum":["due_diligence","en_cours","en_recouvrement","termine"],"type":"string"},{"type":"null"}],"default":null,"title":"Parent Code"},"code":{"title":"Code","type":"string"},"dimension":{"enum":["operation_status","investment_type","operation_type","asset_class","internal_status","operational_status","follow_up_category"],"title":"Dimension","type":"string"},"display_label":{"title":"Display Label","type":"string"},"source_kind":{"enum":["marko","partner","entity"],"title":"Source Kind","type":"string"},"source_display_name":{"title":"Source Display Name","type":"string"},"is_visible":{"title":"Is Visible","type":"boolean"},"is_active":{"title":"Is Active","type":"boolean"},"position":{"title":"Position","type":"integer"},"usage_count":{"default":0,"title":"Usage Count","type":"integer"},"label_editable":{"title":"Label Editable","type":"boolean"},"canonical_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Canonical Code"},"icon_key":{"anyOf":[{"enum":["tag","briefcase","building","landmark","home","map","layers","shield","trending-up","calendar","circle-check","triangle-alert"],"type":"string"},{"type":"null"}],"default":null,"title":"Icon Key"}},"required":["code","dimension","display_label","source_kind","source_display_name","is_visible","is_active","position","label_editable"],"title":"EntityTaxonomyOptionResponse","type":"object"},"title":"Taxonomy Additions","type":"array"},"request_id":{"title":"Request Id","type":"string"}},"required":["external_id","marko_id","outcome","resource","request_id"],"title":"ExternalOperationSyncUpsertResponse","type":"object"},"example":{"external_id":"CF-OP-001","marko_id":"44444444-4444-4444-4444-444444444444","outcome":"updated","resource":{"id":"44444444-4444-4444-4444-444444444444","spv_id":null,"lead_operateur_id":null,"name":"Clubfunding Demo Deal - Mise à jour","status":"custom__a3e08c7bde__projet_emis","type_investissement":"dette_senior","type_operation":"acquisition_detention","classe_actif":"residentiel","statut_interne":"analyse","statut_operationnel":["commercialisation"],"sous_classe_actif":"residentiel_coliving","data":{"adresse":"14 rue de la Paix, Paris"},"created_at":"2026-08-22T08:00:00Z","updated_at":"2026-08-22T09:30:00Z"},"taxonomy_additions":[],"request_id":"req_cf_operation_update"}}},"x-marko-request-example":{"name":"Clubfunding Demo Deal - Mise à jour","status":"custom__a3e08c7bde__projet_emis","type_investissement":"dette_senior","type_operation":"acquisition_detention","classe_actif":"residentiel","statut_interne":"analyse","statut_operationnel":["commercialisation"],"sous_classe_actif":"residentiel_coliving","data":{"adresse":"14 rue de la Paix, Paris"},"kpi_snapshot":{"date_reference":"2026-07-31","crd_total":2400000,"valeur_venale":3500000,"ltv":0.6857}}},"404":{"description":"Existing MARKO operation or related resource not found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Not Found","status":404,"detail":"Existing MARKO operation or related resource not found","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"spv_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Spv Id"},"lead_operateur_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Lead Operateur Id"},"existing_marko_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Existing Marko Id"},"name":{"maxLength":255,"minLength":1,"title":"Name","type":"string"},"status":{"anyOf":[{"maxLength":255,"minLength":1,"type":"string"},{"type":"null"}],"default":null,"title":"Status"},"type_investissement":{"anyOf":[{"maxLength":255,"minLength":1,"type":"string"},{"type":"null"}],"default":null,"title":"Type Investissement"},"type_operation":{"anyOf":[{"maxLength":255,"minLength":1,"type":"string"},{"type":"null"}],"default":null,"title":"Type Operation"},"classe_actif":{"anyOf":[{"maxLength":255,"minLength":1,"type":"string"},{"type":"null"}],"default":null,"title":"Classe Actif"},"statut_interne":{"anyOf":[{"maxLength":255,"minLength":1,"type":"string"},{"type":"null"}],"default":null,"title":"Statut Interne"},"statut_operationnel":{"anyOf":[{"items":{"maxLength":255,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},{"type":"null"}],"default":null,"title":"Statut Operationnel"},"sous_classe_actif":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Sous Classe Actif"},"data":{"additionalProperties":true,"title":"Data","type":"object"},"kpi_snapshot":{"anyOf":[{"properties":{"date_reference":{"anyOf":[{"format":"date","type":"string"},{"type":"null"}],"default":null,"title":"Date Reference"},"crd_total":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Crd Total"},"crd_total_source":{"anyOf":[{"maxLength":32,"type":"string"},{"type":"null"}],"default":null,"title":"Crd Total Source"},"crd_senior":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Crd Senior"},"crd_mezzanine":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Crd Mezzanine"},"valeur_venale":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Valeur Venale"},"noi":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Noi"},"service_dette":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Service Dette"},"ltv":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Ltv"},"dscr":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Dscr"},"icr":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Icr"},"ltc":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Ltc"},"debt_yield":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Debt Yield"},"risk_score_simple":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Risk Score Simple"},"pct_perte_estimee":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Pct Perte Estimee"}},"title":"ExternalKpiSnapshotInput","type":"object"},{"type":"null"}],"default":null}},"required":["name"],"title":"ExternalOperationUpsertRequest","type":"object"},"example":{"name":"Clubfunding Demo Deal","status":"Projet émis","type_investissement":"dette_senior","type_operation":"acquisition_detention","classe_actif":"residentiel","statut_interne":"analyse","statut_operationnel":["commercialisation"],"sous_classe_actif":"residentiel_coliving","data":{"adresse":"12 rue de la Paix, Paris"},"kpi_snapshot":{"date_reference":"2026-07-15","crd_total":2500000,"valeur_venale":3400000,"ltv":0.7353}}}}}}},"/taxonomies":{"get":{"operationId":"taxonomies_list","summary":"Lister une taxonomie d'entité","description":"Retourne les options visibles décidées par l'administrateur de l'entité. Une option courante masquée peut être demandée avec current_code afin de rester affichable sans être proposée pour une nouvelle sélection.","parameters":[{"in":"query","name":"dimension","required":false,"schema":{"type":"string","enum":["operation_status","investment_type","operation_type","asset_class","internal_status","operational_status","follow_up_category"]},"example":"operation_status"},{"in":"query","name":"current_code","required":false,"schema":{"type":"string","maxLength":180},"description":"Code courant à inclure même s'il est masqué."},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-taxonomies-list"}],"tags":["taxonomies"],"x-marko-route-group":"read","x-marko-required-scope":"operations:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"properties":{"items":{"items":{"properties":{"parent_code":{"anyOf":[{"enum":["due_diligence","en_cours","en_recouvrement","termine"],"type":"string"},{"type":"null"}],"default":null,"title":"Parent Code"},"code":{"title":"Code","type":"string"},"dimension":{"enum":["operation_status","investment_type","operation_type","asset_class","internal_status","operational_status","follow_up_category"],"title":"Dimension","type":"string"},"display_label":{"title":"Display Label","type":"string"},"source_kind":{"enum":["marko","partner","entity"],"title":"Source Kind","type":"string"},"source_display_name":{"title":"Source Display Name","type":"string"},"is_visible":{"title":"Is Visible","type":"boolean"},"is_active":{"title":"Is Active","type":"boolean"},"position":{"title":"Position","type":"integer"},"usage_count":{"default":0,"title":"Usage Count","type":"integer"},"label_editable":{"title":"Label Editable","type":"boolean"},"canonical_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Canonical Code"},"icon_key":{"anyOf":[{"enum":["tag","briefcase","building","landmark","home","map","layers","shield","trending-up","calendar","circle-check","triangle-alert"],"type":"string"},{"type":"null"}],"default":null,"title":"Icon Key"}},"required":["code","dimension","display_label","source_kind","source_display_name","is_visible","is_active","position","label_editable"],"title":"EntityTaxonomyOptionResponse","type":"object"},"title":"Items","type":"array"}},"required":["items"],"title":"EntityTaxonomyOptionListResponse","type":"object"},"example":{"items":[{"code":"instruction","dimension":"operation_status","display_label":"Instruction","source_kind":"marko","source_display_name":"MARKO","is_visible":true,"is_active":true,"position":1,"usage_count":0,"label_editable":false,"canonical_code":"instruction"}]}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/operations/taxonomy":{"get":{"operationId":"operations_taxonomy","summary":"Lister le socle canonique MARKO historique","description":"Endpoint legacy: retourne uniquement le socle canonique MARKO historique. Les écritures acceptent aussi les valeurs propres à l'entité. Utilisez `GET /v1/taxonomies?dimension=...` pour la liste visible et autoritative, y compris les options ClubFunding.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operations-taxonomy"}],"tags":["operations"],"x-marko-route-group":"read","x-marko-required-scope":"operations:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":true,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"default_status":"sourcing","statuses":[{"code":"sourcing","label":"Analyse initiale"},{"code":"instruction","label":"Instruction"},{"code":"travaux","label":"Travaux"},{"code":"commercialisation","label":"Commercialisation"},{"code":"livraison","label":"Livraison"},{"code":"cloture","label":"Clôture"},{"code":"perte","label":"Perdue"}],"statuts_internes":[{"code":"due_diligence","label":"Due diligence"},{"code":"en_cours","label":"En cours"},{"code":"en_recouvrement","label":"En recouvrement"},{"code":"analyse","label":"Analyse"},{"code":"comite","label":"Comité"},{"code":"closing","label":"Closing"},{"code":"sain","label":"Sain"},{"code":"avenant","label":"Avenant"},{"code":"pre_contentieux","label":"Précontentieux"},{"code":"contentieux_judiciaire","label":"Contentieux judiciaire"},{"code":"lj","label":"LJ"},{"code":"rj_sauvegarde","label":"RJ ou sauvegarde"},{"code":"procedure_preventive","label":"Procédure préventive"},{"code":"protocole_transactionnel","label":"Protocole transactionnel"},{"code":"pre_contentieux_recouvrement","label":"Précontentieux"},{"code":"remboursement_partiel","label":"Sortie partielle"},{"code":"recouvrement_partiel","label":"Recouvrement partiel"},{"code":"termine","label":"Terminé"}],"statuts_operationnels":[{"code":"montage_et_faisabilite","label":"Montage et faisabilité"},{"code":"offre_foncier","label":"Offre - Foncier"},{"code":"promesse_unilaterale_de_vente","label":"Promesse unilatérale de vente"},{"code":"acquisition_du_foncier","label":"Acquisition du foncier"},{"code":"evictions","label":"Évictions"},{"code":"depot_de_la_dp","label":"Dépôt de la DP"},{"code":"dp_purge","label":"DP purgé"},{"code":"depot_du_pc","label":"Dépôt du PC"},{"code":"pc_purge","label":"PC purgé"},{"code":"depot_du_pcm","label":"Dépôt du PCM"},{"code":"pcm_purge","label":"PCM purgé"},{"code":"gfa","label":"GFA"},{"code":"travaux","label":"Travaux"},{"code":"commercialisation","label":"Commercialisation"},{"code":"commercialisation_locative","label":"Commercialisation locative"},{"code":"achevement_dat","label":"Achèvement (DAT)"},{"code":"livraison","label":"Livraison / Cession d'actif"},{"code":"leve_des_reserves","label":"Levée des réserves"},{"code":"suivi_du_sav","label":"Suivi du SAV"},{"code":"decennale","label":"Décennale"}]}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/operations/batch":{"post":{"operationId":"operations_batch","summary":"Importer un lot d'operations externes","description":"Accepte jusqu'à 500 opérations, 10 000 notes et 20 Mio par requête. Le job est durable et chaque élément possède son propre résultat. `category` dans les notes est une chaine libre de 1 a 80 caracteres.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operations-batch"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["operations"],"x-marko-route-group":"import","x-marko-required-scope":"operations:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"202":{"description":"Successful response","content":{"application/json":{"schema":{"properties":{"job_id":{"format":"uuid","title":"Job Id","type":"string"},"status":{"title":"Status","type":"string"},"status_url":{"title":"Status Url","type":"string"},"results_url":{"title":"Results Url","type":"string"},"received_counts":{"additionalProperties":{"type":"integer"},"title":"Received Counts","type":"object"},"idempotency_key":{"title":"Idempotency Key","type":"string"},"replayed":{"default":false,"title":"Replayed","type":"boolean"}},"required":["job_id","status","status_url","results_url","received_counts","idempotency_key"],"title":"ExternalImportAcceptedResponse","type":"object"},"example":{"job_id":"88888888-8888-8888-8888-888888888888","status":"accepted","status_url":"/v1/import-jobs/88888888-8888-8888-8888-888888888888","results_url":"/v1/import-jobs/88888888-8888-8888-8888-888888888888/items","received_counts":{"operations":1,"notes":1},"idempotency_key":"client-nightly-2026-07-15-001","replayed":false}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"operations":{"items":{"additionalProperties":false,"properties":{"spv_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Spv Id"},"lead_operateur_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Lead Operateur Id"},"existing_marko_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Existing Marko Id"},"name":{"maxLength":255,"minLength":1,"title":"Name","type":"string"},"status":{"anyOf":[{"maxLength":255,"minLength":1,"type":"string"},{"type":"null"}],"default":null,"title":"Status"},"type_investissement":{"anyOf":[{"maxLength":255,"minLength":1,"type":"string"},{"type":"null"}],"default":null,"title":"Type Investissement"},"type_operation":{"anyOf":[{"maxLength":255,"minLength":1,"type":"string"},{"type":"null"}],"default":null,"title":"Type Operation"},"classe_actif":{"anyOf":[{"maxLength":255,"minLength":1,"type":"string"},{"type":"null"}],"default":null,"title":"Classe Actif"},"statut_interne":{"anyOf":[{"maxLength":255,"minLength":1,"type":"string"},{"type":"null"}],"default":null,"title":"Statut Interne"},"statut_operationnel":{"anyOf":[{"items":{"maxLength":255,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},{"type":"null"}],"default":null,"title":"Statut Operationnel"},"sous_classe_actif":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Sous Classe Actif"},"data":{"additionalProperties":true,"title":"Data","type":"object"},"kpi_snapshot":{"anyOf":[{"properties":{"date_reference":{"anyOf":[{"format":"date","type":"string"},{"type":"null"}],"default":null,"title":"Date Reference"},"crd_total":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Crd Total"},"crd_total_source":{"anyOf":[{"maxLength":32,"type":"string"},{"type":"null"}],"default":null,"title":"Crd Total Source"},"crd_senior":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Crd Senior"},"crd_mezzanine":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Crd Mezzanine"},"valeur_venale":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Valeur Venale"},"noi":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Noi"},"service_dette":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Service Dette"},"ltv":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Ltv"},"dscr":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Dscr"},"icr":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Icr"},"ltc":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Ltc"},"debt_yield":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Debt Yield"},"risk_score_simple":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Risk Score Simple"},"pct_perte_estimee":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Pct Perte Estimee"}},"title":"ExternalKpiSnapshotInput","type":"object"},{"type":"null"}],"default":null},"external_id":{"maxLength":255,"minLength":1,"pattern":"^[A-Za-z0-9_~-][A-Za-z0-9._:~-]{0,254}$","title":"External Id","type":"string"},"notes":{"items":{"additionalProperties":false,"properties":{"date":{"format":"date-time","title":"Date","type":"string"},"text":{"anyOf":[{"maxLength":10000,"minLength":1,"type":"string"},{"type":"null"}],"default":null,"title":"Text"},"category":{"default":"libre","maxLength":80,"minLength":1,"title":"Category","type":"string"},"description_i18n":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"default":null,"title":"Description I18N"},"source_created_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"title":"Source Created At"},"source_updated_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"title":"Source Updated At"},"existing_marko_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Existing Marko Id"},"external_id":{"maxLength":255,"minLength":1,"pattern":"^[A-Za-z0-9_~-][A-Za-z0-9._:~-]{0,254}$","title":"External Id","type":"string"}},"required":["date","external_id"],"title":"ExternalNoteImport","type":"object"},"maxItems":10000,"title":"Notes","type":"array"}},"required":["name","external_id"],"title":"ExternalOperationBatchItem","type":"object"},"maxItems":500,"minItems":1,"title":"Operations","type":"array"}},"required":["operations"],"title":"ExternalOperationBatchRequest","type":"object"},"example":{"operations":[{"external_id":"CF-OP-001","name":"Clubfunding Demo Deal","status":"instruction","data":{"adresse":"12 rue de la Paix, Paris"},"kpi_snapshot":{"date_reference":"2026-07-15","crd_total":2500000},"notes":[{"external_id":"CF-NOTE-001","date":"2026-07-15T09:30:00Z","text":"Pièces complémentaires attendues.","category":"call"}]}]}}}}}},"/operations/external/{operation_external_id}/notes/external/{note_external_id}":{"get":{"operationId":"operations_notes_external_get","summary":"Récupérer un suivi par identifiants externes","description":"Retourne la note uniquement si elle appartient à l'opération externe indiquée.","parameters":[{"in":"path","name":"operation_external_id","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_~-][A-Za-z0-9._:~-]{0,254}$","minLength":1,"maxLength":255},"example":"CF-OP-001"},{"in":"path","name":"note_external_id","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_~-][A-Za-z0-9._:~-]{0,254}$","minLength":1,"maxLength":255},"example":"CF-NOTE-002"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operations-notes-external-get"}],"tags":["operations"],"x-marko-route-group":"read","x-marko-required-scope":"operations:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"properties":{"id":{"format":"uuid","title":"Id","type":"string"},"operation_id":{"format":"uuid","title":"Operation Id","type":"string"},"date":{"format":"date-time","title":"Date","type":"string"},"text":{"title":"Text","type":"string"},"category":{"title":"Category","type":"string"},"description_i18n":{"additionalProperties":{"type":"string"},"title":"Description I18N","type":"object"},"source_created_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"title":"Source Created At"},"source_updated_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"title":"Source Updated At"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"updated_at":{"format":"date-time","title":"Updated At","type":"string"}},"required":["id","operation_id","date","text","category","created_at","updated_at"],"title":"ExternalNoteResourceResponse","type":"object"},"example":{"id":"55555555-5555-5555-5555-555555555555","operation_id":"44444444-4444-4444-4444-444444444444","date":"2026-08-22T08:00:00Z","category":"custom__a3e08c7bde__comite","text":"Comité: prorogation à documenter.","description_i18n":{},"created_at":"2026-08-22T08:00:00Z","updated_at":"2026-08-22T08:00:00Z"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"put":{"operationId":"operations_notes_upsert","summary":"Importer une note de suivi externe","description":"Crée ou met à jour immédiatement une note historique datée sur une opération référencée par son identifiant externe. La réponse contient directement son marko_id. Une catégorie inconnue devient une option d'entité visible, avec la source partenaire. Une mise à jour versionnée doit porter un source_updated_at strictement plus récent lorsque la note en possède déjà un.","parameters":[{"in":"path","name":"operation_external_id","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_~-][A-Za-z0-9._:~-]{0,254}$","minLength":1,"maxLength":255},"example":"CF-OP-001"},{"in":"path","name":"note_external_id","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_~-][A-Za-z0-9._:~-]{0,254}$","minLength":1,"maxLength":255},"example":"CF-NOTE-002"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operations-notes-upsert"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["operations"],"x-marko-route-group":"import","x-marko-required-scope":"operations:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"properties":{"external_id":{"title":"External Id","type":"string"},"marko_id":{"format":"uuid","title":"Marko Id","type":"string"},"outcome":{"enum":["created","updated","noop","restored","bound"],"title":"Outcome","type":"string"},"resource":{"properties":{"id":{"format":"uuid","title":"Id","type":"string"},"operation_id":{"format":"uuid","title":"Operation Id","type":"string"},"date":{"format":"date-time","title":"Date","type":"string"},"text":{"title":"Text","type":"string"},"category":{"title":"Category","type":"string"},"description_i18n":{"additionalProperties":{"type":"string"},"title":"Description I18N","type":"object"},"source_created_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"title":"Source Created At"},"source_updated_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"title":"Source Updated At"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"updated_at":{"format":"date-time","title":"Updated At","type":"string"}},"required":["id","operation_id","date","text","category","created_at","updated_at"],"title":"ExternalNoteResourceResponse","type":"object"},"taxonomy_additions":{"items":{"properties":{"parent_code":{"anyOf":[{"enum":["due_diligence","en_cours","en_recouvrement","termine"],"type":"string"},{"type":"null"}],"default":null,"title":"Parent Code"},"code":{"title":"Code","type":"string"},"dimension":{"enum":["operation_status","investment_type","operation_type","asset_class","internal_status","operational_status","follow_up_category"],"title":"Dimension","type":"string"},"display_label":{"title":"Display Label","type":"string"},"source_kind":{"enum":["marko","partner","entity"],"title":"Source Kind","type":"string"},"source_display_name":{"title":"Source Display Name","type":"string"},"is_visible":{"title":"Is Visible","type":"boolean"},"is_active":{"title":"Is Active","type":"boolean"},"position":{"title":"Position","type":"integer"},"usage_count":{"default":0,"title":"Usage Count","type":"integer"},"label_editable":{"title":"Label Editable","type":"boolean"},"canonical_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Canonical Code"},"icon_key":{"anyOf":[{"enum":["tag","briefcase","building","landmark","home","map","layers","shield","trending-up","calendar","circle-check","triangle-alert"],"type":"string"},{"type":"null"}],"default":null,"title":"Icon Key"}},"required":["code","dimension","display_label","source_kind","source_display_name","is_visible","is_active","position","label_editable"],"title":"EntityTaxonomyOptionResponse","type":"object"},"title":"Taxonomy Additions","type":"array"},"request_id":{"title":"Request Id","type":"string"}},"required":["external_id","marko_id","outcome","resource","request_id"],"title":"ExternalNoteSyncUpsertResponse","type":"object"},"example":{"external_id":"CF-NOTE-002","marko_id":"55555555-5555-5555-5555-555555555555","outcome":"created","resource":{"id":"55555555-5555-5555-5555-555555555555","operation_id":"44444444-4444-4444-4444-444444444444","date":"2026-07-16T14:00:00Z","category":"custom__a3e08c7bde__comite","text":"Comité: prorogation à documenter.","description_i18n":{"fr":"Comité : prorogation à documenter.","en":"Committee: extension to document."},"source_created_at":"2026-07-16T14:00:00Z","source_updated_at":"2026-07-16T14:00:00Z","created_at":"2026-08-22T08:00:00Z","updated_at":"2026-08-22T08:00:00Z"},"taxonomy_additions":[{"code":"custom__a3e08c7bde__comite","dimension":"follow_up_category","display_label":"comite","source_kind":"partner","source_display_name":"ClubFunding","is_visible":true,"is_active":true,"position":10000,"usage_count":0,"label_editable":true,"canonical_code":null}],"request_id":"req_cf_note_upsert"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"200":{"description":"Additional successful response","content":{"application/json":{"schema":{"properties":{"external_id":{"title":"External Id","type":"string"},"marko_id":{"format":"uuid","title":"Marko Id","type":"string"},"outcome":{"enum":["created","updated","noop","restored","bound"],"title":"Outcome","type":"string"},"resource":{"properties":{"id":{"format":"uuid","title":"Id","type":"string"},"operation_id":{"format":"uuid","title":"Operation Id","type":"string"},"date":{"format":"date-time","title":"Date","type":"string"},"text":{"title":"Text","type":"string"},"category":{"title":"Category","type":"string"},"description_i18n":{"additionalProperties":{"type":"string"},"title":"Description I18N","type":"object"},"source_created_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"title":"Source Created At"},"source_updated_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"title":"Source Updated At"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"updated_at":{"format":"date-time","title":"Updated At","type":"string"}},"required":["id","operation_id","date","text","category","created_at","updated_at"],"title":"ExternalNoteResourceResponse","type":"object"},"taxonomy_additions":{"items":{"properties":{"parent_code":{"anyOf":[{"enum":["due_diligence","en_cours","en_recouvrement","termine"],"type":"string"},{"type":"null"}],"default":null,"title":"Parent Code"},"code":{"title":"Code","type":"string"},"dimension":{"enum":["operation_status","investment_type","operation_type","asset_class","internal_status","operational_status","follow_up_category"],"title":"Dimension","type":"string"},"display_label":{"title":"Display Label","type":"string"},"source_kind":{"enum":["marko","partner","entity"],"title":"Source Kind","type":"string"},"source_display_name":{"title":"Source Display Name","type":"string"},"is_visible":{"title":"Is Visible","type":"boolean"},"is_active":{"title":"Is Active","type":"boolean"},"position":{"title":"Position","type":"integer"},"usage_count":{"default":0,"title":"Usage Count","type":"integer"},"label_editable":{"title":"Label Editable","type":"boolean"},"canonical_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Canonical Code"},"icon_key":{"anyOf":[{"enum":["tag","briefcase","building","landmark","home","map","layers","shield","trending-up","calendar","circle-check","triangle-alert"],"type":"string"},{"type":"null"}],"default":null,"title":"Icon Key"}},"required":["code","dimension","display_label","source_kind","source_display_name","is_visible","is_active","position","label_editable"],"title":"EntityTaxonomyOptionResponse","type":"object"},"title":"Taxonomy Additions","type":"array"},"request_id":{"title":"Request Id","type":"string"}},"required":["external_id","marko_id","outcome","resource","request_id"],"title":"ExternalNoteSyncUpsertResponse","type":"object"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"description":"One historical follow-up note owned by MARKO after import.","properties":{"date":{"format":"date-time","title":"Date","type":"string"},"text":{"anyOf":[{"maxLength":10000,"minLength":1,"type":"string"},{"type":"null"}],"default":null,"title":"Text"},"category":{"default":"libre","maxLength":80,"minLength":1,"title":"Category","type":"string"},"description_i18n":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"default":null,"title":"Description I18N"},"source_created_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"title":"Source Created At"},"source_updated_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"title":"Source Updated At"},"existing_marko_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Existing Marko Id"}},"required":["date"],"title":"ExternalNoteUpsertRequest","type":"object"},"example":{"date":"2026-07-16T14:00:00Z","text":"Comité: prorogation à documenter.","category":"comite","description_i18n":{"fr":"Comité : prorogation à documenter.","en":"Committee: extension to document."},"source_created_at":"2026-07-16T14:00:00Z","source_updated_at":"2026-07-16T14:00:00Z"}}}}}},"/import-jobs/{job_id}":{"get":{"operationId":"import-jobs_get","summary":"Suivre un job d'import","description":"Retourne les compteurs completed, noop, failed et conflict du job durable. Pour un import d'une operation, `operation_id` est renseigne des que la cible MARKO existe; sinon `error_code` et `error_message` decrivent l'echec.","parameters":[{"in":"path","name":"job_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"88888888-8888-8888-8888-888888888888"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-import-jobs-get"}],"tags":["import-jobs"],"x-marko-route-group":"read","x-marko-required-scope":"operations:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"properties":{"job_id":{"format":"uuid","title":"Job Id","type":"string"},"status":{"title":"Status","type":"string"},"total_operations":{"title":"Total Operations","type":"integer"},"total_notes":{"title":"Total Notes","type":"integer"},"processed_items":{"title":"Processed Items","type":"integer"},"completed_items":{"title":"Completed Items","type":"integer"},"noop_items":{"title":"Noop Items","type":"integer"},"failed_items":{"title":"Failed Items","type":"integer"},"conflict_items":{"title":"Conflict Items","type":"integer"},"cancel_requested":{"title":"Cancel Requested","type":"boolean"},"accepted_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"title":"Accepted At"},"started_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"title":"Started At"},"completed_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"title":"Completed At"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"updated_at":{"format":"date-time","title":"Updated At","type":"string"},"results_url":{"title":"Results Url","type":"string"},"operation_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Operation Id"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Error Code"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Error Message"}},"required":["job_id","status","total_operations","total_notes","processed_items","completed_items","noop_items","failed_items","conflict_items","cancel_requested","created_at","updated_at","results_url"],"title":"ExternalImportJobResponse","type":"object"},"example":{"job_id":"88888888-8888-8888-8888-888888888888","status":"partial","total_operations":500,"total_notes":5000,"processed_items":5500,"completed_items":5497,"noop_items":1,"failed_items":1,"conflict_items":1,"cancel_requested":false,"accepted_at":"2026-07-16T08:00:00Z","started_at":"2026-07-16T08:00:01Z","completed_at":"2026-07-16T08:04:20Z","created_at":"2026-07-16T08:00:00Z","updated_at":"2026-07-16T08:04:20Z","results_url":"/v1/import-jobs/88888888-8888-8888-8888-888888888888/items","operation_id":null,"error_code":null,"error_message":null}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/import-jobs/{job_id}/items":{"get":{"operationId":"import-jobs_items","summary":"Lister les résultats d'un import","description":"Filtre les résultats par `status` ou `item_kind` pour diagnostiquer et reprendre un lot.","parameters":[{"in":"path","name":"job_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"88888888-8888-8888-8888-888888888888"},{"in":"query","name":"status","required":false,"schema":{"type":"string"},"example":"failed"},{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":100},{"in":"query","name":"offset","required":false,"schema":{"type":"string"},"example":0},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-import-jobs-items"}],"tags":["import-jobs"],"x-marko-route-group":"read","x-marko-required-scope":"operations:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"properties":{"items":{"items":{"properties":{"id":{"format":"uuid","title":"Id","type":"string"},"item_kind":{"title":"Item Kind","type":"string"},"position":{"title":"Position","type":"integer"},"external_id":{"title":"External Id","type":"string"},"parent_external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Parent External Id"},"status":{"title":"Status","type":"string"},"target_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Target Id"},"attempts":{"title":"Attempts","type":"integer"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Result"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Error Code"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Error Message"},"conflict_payload":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Conflict Payload"},"resolved_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"title":"Resolved At"}},"required":["id","item_kind","position","external_id","status","attempts"],"title":"ExternalImportItemResponse","type":"object"},"title":"Items","type":"array"},"total":{"title":"Total","type":"integer"},"limit":{"title":"Limit","type":"integer"},"offset":{"title":"Offset","type":"integer"}},"required":["items","total","limit","offset"],"title":"ExternalImportItemsResponse","type":"object"},"example":{"items":[{"id":"aaaaaaaa-8888-8888-8888-888888888888","item_kind":"operation","position":42,"external_id":"CF-OP-042","status":"failed","attempts":1,"error_code":"marko_http_422","error_message":"Imported item failed MARKO validation"}],"total":1,"limit":100,"offset":0}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/import-jobs/{job_id}/retry":{"post":{"operationId":"import-jobs_retry","summary":"Relancer les éléments échoués","description":"Réenfile un job failed ou partial; les éléments déjà terminés restent des no-op.","parameters":[{"in":"path","name":"job_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"88888888-8888-8888-8888-888888888888"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-import-jobs-retry"}],"tags":["import-jobs"],"x-marko-route-group":"import","x-marko-required-scope":"operations:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"properties":{"job_id":{"format":"uuid","title":"Job Id","type":"string"},"status":{"title":"Status","type":"string"},"total_operations":{"title":"Total Operations","type":"integer"},"total_notes":{"title":"Total Notes","type":"integer"},"processed_items":{"title":"Processed Items","type":"integer"},"completed_items":{"title":"Completed Items","type":"integer"},"noop_items":{"title":"Noop Items","type":"integer"},"failed_items":{"title":"Failed Items","type":"integer"},"conflict_items":{"title":"Conflict Items","type":"integer"},"cancel_requested":{"title":"Cancel Requested","type":"boolean"},"accepted_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"title":"Accepted At"},"started_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"title":"Started At"},"completed_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"title":"Completed At"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"updated_at":{"format":"date-time","title":"Updated At","type":"string"},"results_url":{"title":"Results Url","type":"string"},"operation_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Operation Id"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Error Code"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Error Message"}},"required":["job_id","status","total_operations","total_notes","processed_items","completed_items","noop_items","failed_items","conflict_items","cancel_requested","created_at","updated_at","results_url"],"title":"ExternalImportJobResponse","type":"object"},"example":{"job_id":"88888888-8888-8888-8888-888888888888","status":"queued","total_operations":500,"total_notes":5000,"processed_items":0,"completed_items":0,"noop_items":0,"failed_items":0,"conflict_items":0,"cancel_requested":false,"created_at":"2026-07-16T08:00:00Z","updated_at":"2026-07-16T08:05:00Z","results_url":"/v1/import-jobs/88888888-8888-8888-8888-888888888888/items"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/import-jobs/{job_id}/cancel":{"post":{"operationId":"import-jobs_cancel","summary":"Demander l'arrêt d'un import","description":"Demande un arrêt propre au prochain point de reprise durable.","parameters":[{"in":"path","name":"job_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"88888888-8888-8888-8888-888888888888"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-import-jobs-cancel"}],"tags":["import-jobs"],"x-marko-route-group":"import","x-marko-required-scope":"operations:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"properties":{"job_id":{"format":"uuid","title":"Job Id","type":"string"},"status":{"title":"Status","type":"string"},"total_operations":{"title":"Total Operations","type":"integer"},"total_notes":{"title":"Total Notes","type":"integer"},"processed_items":{"title":"Processed Items","type":"integer"},"completed_items":{"title":"Completed Items","type":"integer"},"noop_items":{"title":"Noop Items","type":"integer"},"failed_items":{"title":"Failed Items","type":"integer"},"conflict_items":{"title":"Conflict Items","type":"integer"},"cancel_requested":{"title":"Cancel Requested","type":"boolean"},"accepted_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"title":"Accepted At"},"started_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"title":"Started At"},"completed_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"title":"Completed At"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"updated_at":{"format":"date-time","title":"Updated At","type":"string"},"results_url":{"title":"Results Url","type":"string"},"operation_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Operation Id"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Error Code"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Error Message"}},"required":["job_id","status","total_operations","total_notes","processed_items","completed_items","noop_items","failed_items","conflict_items","cancel_requested","created_at","updated_at","results_url"],"title":"ExternalImportJobResponse","type":"object"},"example":{"job_id":"88888888-8888-8888-8888-888888888888","status":"running","total_operations":500,"total_notes":5000,"processed_items":100,"completed_items":100,"noop_items":0,"failed_items":0,"conflict_items":0,"cancel_requested":true,"created_at":"2026-07-16T08:00:00Z","updated_at":"2026-07-16T08:06:00Z","results_url":"/v1/import-jobs/88888888-8888-8888-8888-888888888888/items"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/operations/{operation_id}/comments":{"get":{"operationId":"operations_comments_list","summary":"Lister les notes de suivi MARKO","description":"Retourne les notes triées par date métier avec texte et catégorie libre.","parameters":[{"in":"path","name":"operation_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"44444444-4444-4444-4444-444444444444"},{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":20},{"in":"query","name":"offset","required":false,"schema":{"type":"string"},"example":0},{"in":"query","name":"category","required":false,"schema":{"type":"string"},"example":"call"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operations-comments-list"}],"tags":["operations"],"x-marko-route-group":"read","x-marko-required-scope":"operations:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"items":[{"id":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa","operation_id":"44444444-4444-4444-4444-444444444444","user_id":"external-api:client","author_name":"API externe","content":"Pièces complémentaires attendues.","note_type":"call","date":"2026-07-15T09:30:00Z","text":"Pièces complémentaires attendues.","category":"call","is_resolved":false,"created_at":"2026-07-16T08:00:00Z","updated_at":"2026-07-16T08:00:00Z"}],"total":1,"limit":20,"offset":0}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"post":{"operationId":"operations_comments_create","summary":"Créer une note de suivi MARKO","description":"Crée une note sans identifiant externe; pour un import idempotent, utilisez la route notes/external. `category` est une chaine libre de 1 a 80 caracteres; valeurs conseillees: call, comite, juridique ou libre.","parameters":[{"in":"path","name":"operation_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"44444444-4444-4444-4444-444444444444"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operations-comments-create"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["operations"],"x-marko-route-group":"write","x-marko-required-scope":"operations:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb","date":"2026-07-16T14:00:00Z","text":"Comité: prorogation à documenter.","category":"comite"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"date":"2026-07-16T14:00:00Z","text":"Comité: prorogation à documenter.","category":"comite"}}}}}},"/comments/{comment_id}":{"put":{"operationId":"comments_update","summary":"Modifier une note de suivi","description":"Modifie la date métier, le texte ou la catégorie d'une note MARKO.","parameters":[{"in":"path","name":"comment_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-comments-update"}],"tags":["comments"],"x-marko-route-group":"write","x-marko-required-scope":"operations:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa","date":"2026-07-16T15:00:00Z","text":"Prorogation validée, avenant attendu.","category":"juridique"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"date":"2026-07-16T15:00:00Z","text":"Prorogation validée, avenant attendu.","category":"juridique"}}}}},"delete":{"operationId":"comments_delete","summary":"Supprimer une note de suivi","description":"Supprime la note; l'événement de suppression reste dans la chronologie.","parameters":[{"in":"path","name":"comment_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-comments-delete"}],"tags":["comments"],"x-marko-route-group":"write","x-marko-required-scope":"operations:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"204":{"description":"Successful response"},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/operations/{operation_id}/chronicle":{"get":{"operationId":"operations_chronicle","summary":"Lire l'historique technique d'une opération","description":"Historique paginé des transitions, changements de champs et événements d'audit.","parameters":[{"in":"path","name":"operation_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"44444444-4444-4444-4444-444444444444"},{"in":"query","name":"page","required":false,"schema":{"type":"string"},"example":1},{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":50},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operations-chronicle"}],"tags":["operations"],"x-marko-route-group":"read","x-marko-required-scope":"operations:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"items":[],"total":0,"page":1,"pages":0,"limit":50}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/operations/{operation_id}/chronicle/narrative":{"get":{"operationId":"operations_chronicle_narrative","summary":"Lire la chronologie narrative d'une opération","description":"Agrège notamment les notes de suivi. Pour une note importée, metadata expose note_date, note_text et note_category.","parameters":[{"in":"path","name":"operation_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"44444444-4444-4444-4444-444444444444"},{"in":"query","name":"category","required":false,"schema":{"type":"string"},"example":"comment"},{"in":"query","name":"page","required":false,"schema":{"type":"string"},"example":1},{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":50},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operations-chronicle-narrative"}],"tags":["operations"],"x-marko-route-group":"read","x-marko-required-scope":"operations:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"operation_id":"44444444-4444-4444-4444-444444444444","entries":[{"id":"cm_aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa","timestamp":"2026-07-15T09:30:00Z","category":"comment","title":"Note d'appel ajoutée via l'API externe","description":"Pièces complémentaires attendues.","severity":"info","metadata":{"note_date":"2026-07-15T09:30:00Z","note_text":"Pièces complémentaires attendues.","note_category":"call"}}],"total":1,"page":1,"pages":1,"limit":50,"sources_queried":["comments"]}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/documents":{"get":{"operationId":"documents_list","summary":"Lister les documents","description":"Peut filtrer sur une operation MARKO ou une `operation_external_id`.","parameters":[{"in":"query","name":"operation_external_id","required":false,"schema":{"type":"string"},"example":"CF-OP-001"},{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":20},{"in":"query","name":"offset","required":false,"schema":{"type":"string"},"example":0},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-documents-list"}],"tags":["documents"],"x-marko-route-group":"read","x-marko-required-scope":"documents:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":[{"id":"55555555-5555-5555-5555-555555555555","operation_id":"44444444-4444-4444-4444-444444444444","spv_id":"33333333-3333-3333-3333-333333333333","fond_id":null,"type":"term_sheet","filename":"term-sheet.pdf","state":"active","version":1,"storage_path":"https://partner-api.marko.fr/api/documents/download/clubfunding/55555555-5555-5555-5555-555555555555?exp=1760000000&sig=abc123","partner_metadata":{"langue":"fr"},"created_at":"2026-03-18T11:00:00Z"}]}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/documents/{document_id}":{"get":{"operationId":"documents_get","summary":"Recuperer un document","description":"Retourne le metadata d'un document et son URL de telechargement si disponible.","parameters":[{"in":"path","name":"document_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"55555555-5555-5555-5555-555555555555"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-documents-get"}],"tags":["documents"],"x-marko-route-group":"read","x-marko-required-scope":"documents:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"55555555-5555-5555-5555-555555555555","operation_id":"44444444-4444-4444-4444-444444444444","spv_id":"33333333-3333-3333-3333-333333333333","fond_id":null,"type":"term_sheet","filename":"term-sheet.pdf","state":"active","version":1,"storage_path":"https://partner-api.marko.fr/api/documents/download/clubfunding/55555555-5555-5555-5555-555555555555?exp=1760000000&sig=abc123","partner_metadata":{"langue":"fr"},"created_at":"2026-03-18T11:00:00Z"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"put":{"operationId":"documents_update","summary":"Mettre à jour un document","description":"Met à jour les métadonnées d'un document existant.","parameters":[{"in":"path","name":"document_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-documents-update"}],"tags":["documents"],"x-marko-route-group":"write","x-marko-required-scope":"documents:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa","filename":"reporting-maj.pdf"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"filename":"reporting-maj.pdf","type":"reporting"}}}}},"delete":{"operationId":"documents_delete","summary":"Supprimer un document","description":"Supprime logiquement un document existant.","parameters":[{"in":"path","name":"document_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-documents-delete"}],"tags":["documents"],"x-marko-route-group":"write","x-marko-required-scope":"documents:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"204":{"description":"Successful response"},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/documents/{document_id}/attach-operation":{"post":{"operationId":"documents_attach-operation","summary":"Rattacher un document à une opération","description":"Rattache atomiquement un document non affecté à une opération MARKO. Une relance avec la même clé d'idempotence rejoue la première réponse; une nouvelle intention échoue si le document est déjà rattaché.","parameters":[{"in":"path","name":"document_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"55555555-5555-5555-5555-555555555555"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-documents-attach-operation"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["documents"],"x-marko-route-group":"write","x-marko-required-scope":"documents:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"55555555-5555-5555-5555-555555555555","operation_id":"44444444-4444-4444-4444-444444444444","spv_id":null,"fond_id":null,"type":"term_sheet","filename":"term-sheet.pdf","state":"active","version":2,"storage_path":null,"partner_metadata":{"langue":"fr"},"created_at":"2026-03-18T11:00:00Z"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"operation_id":"44444444-4444-4444-4444-444444444444"}}}}}},"/documents/external/{external_id}":{"put":{"operationId":"documents_create","summary":"Creer le metadata d'un document","description":"Route idempotente pour declarer un document avant upload physique.","parameters":[{"in":"path","name":"external_id","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_~-][A-Za-z0-9._:~-]{0,254}$","minLength":1,"maxLength":255},"example":"CF-DOC-001"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-documents-create"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["documents"],"x-marko-route-group":"write","x-marko-required-scope":"documents:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"external_id":"CF-DOC-001","document_id":"55555555-5555-5555-5555-555555555555","created":true,"document":{"id":"55555555-5555-5555-5555-555555555555","operation_id":"44444444-4444-4444-4444-444444444444","spv_id":"33333333-3333-3333-3333-333333333333","fond_id":null,"type":"term_sheet","filename":"term-sheet.pdf","state":"active","version":1,"storage_path":null,"partner_metadata":{"langue":"fr"},"created_at":"2026-03-26T09:10:00Z"}}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"operation_external_id":"CF-OP-001","type":"term_sheet","filename":"term-sheet.pdf","partner_metadata":{"langue":"fr"}}}}}}},"/documents/external/{external_id}/upload":{"put":{"operationId":"documents_upload","summary":"Uploader un document","description":"Upload multipart/form-data idempotent avec rattachement a une operation via `operation_id` ou `operation_external_id`.","parameters":[{"in":"path","name":"external_id","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_~-][A-Za-z0-9._:~-]{0,254}$","minLength":1,"maxLength":255},"example":"CF-DOC-001"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-documents-upload"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["documents"],"x-marko-route-group":"upload","x-marko-required-scope":"documents:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"external_id":"CF-DOC-001","document_id":"55555555-5555-5555-5555-555555555555","created":true,"document":{"id":"55555555-5555-5555-5555-555555555555","operation_id":"44444444-4444-4444-4444-444444444444","spv_id":"33333333-3333-3333-3333-333333333333","fond_id":null,"type":"term_sheet","filename":"term-sheet.pdf","state":"active","version":1,"storage_path":"https://partner-api.marko.fr/api/documents/download/clubfunding/55555555-5555-5555-5555-555555555555?exp=1760000000&sig=abc123","partner_metadata":{"langue":"fr"},"created_at":"2026-03-26T09:12:00Z"}}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object"},"example":{"type":"term_sheet","operation_external_id":"CF-OP-001","partner_metadata":"{\"langue\":\"fr\"}","file":"./term-sheet.pdf"}}}}}},"/users":{"get":{"operationId":"users_list","summary":"Lister les utilisateurs de l'entité","description":"Expose les utilisateurs Better Auth rattachés à l'entité de la clé.","parameters":[{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":20},{"in":"query","name":"offset","required":false,"schema":{"type":"string"},"example":0},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-list"}],"tags":["users"],"x-marko-route-group":"read","x-marko-required-scope":"users:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"items":[{"id":"usr_001","email":"ops@clubfunding.fr","name":"Ops Clubfunding","role":"entity_tech","status":"approved"}],"total":1}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"post":{"operationId":"users_create","summary":"Inviter un utilisateur","description":"Crée un utilisateur d'entité et déclenche le flux d'activation Better Auth.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-create"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["users"],"x-marko-route-group":"write","x-marko-required-scope":"users:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"usr_002","email":"new.user@clubfunding.fr","name":"Nouveau User","role":"viewer","status":"approved"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"email":"new.user@clubfunding.fr","name":"Nouveau User","role":"viewer"}}}}}},"/users/{user_id}":{"put":{"operationId":"users_update","summary":"Mettre à jour un utilisateur","description":"Met à jour le rôle d'un utilisateur de l'entité.","parameters":[{"in":"path","name":"user_id","required":true,"schema":{"type":"string"},"example":"usr_001"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-update"}],"tags":["users"],"x-marko-route-group":"write","x-marko-required-scope":"users:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"usr_001","role":"entity_tech","status":"approved"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"role":"entity_tech"}}}}},"delete":{"operationId":"users_delete","summary":"Retirer un utilisateur","description":"Annule immédiatement une invitation non activée ou retire les accès d'un compte actif et lance son workflow durable d'effacement RGPD.","parameters":[{"in":"path","name":"user_id","required":true,"schema":{"type":"string"},"example":"usr_002"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-delete"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["users"],"x-marko-route-group":"write","x-marko-required-scope":"users:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"202":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"action":"offboarding_accepted","status":"in_progress","privacy_case_id":"00000000-0000-0000-0000-000000000001","replayed":false,"manual_review_required":false}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/users/{user_id}/actions/suspend":{"post":{"operationId":"users_suspend","summary":"Suspendre un utilisateur","description":"Suspend un utilisateur activé de l'entité.","parameters":[{"in":"path","name":"user_id","required":true,"schema":{"type":"string"},"example":"usr_001"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-suspend"}],"tags":["users"],"x-marko-route-group":"write","x-marko-required-scope":"users:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"usr_001","status":"suspended"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/users/{user_id}/actions/unsuspend":{"post":{"operationId":"users_unsuspend","summary":"Réactiver un utilisateur","description":"Réactive un utilisateur suspendu.","parameters":[{"in":"path","name":"user_id","required":true,"schema":{"type":"string"},"example":"usr_001"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-unsuspend"}],"tags":["users"],"x-marko-route-group":"write","x-marko-required-scope":"users:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"usr_001","status":"approved"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/users/{user_id}/actions/resend-invitation":{"post":{"operationId":"users_resend-invitation","summary":"Renvoyer une invitation","description":"Régénère le flux d'activation pour un utilisateur non activé.","parameters":[{"in":"path","name":"user_id","required":true,"schema":{"type":"string"},"example":"usr_002"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-resend-invitation"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["users"],"x-marko-route-group":"write","x-marko-required-scope":"users:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"204":{"description":"Successful response"},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/users/{user_id}/actions/reset-password":{"post":{"operationId":"users_reset-password","summary":"Déclencher un reset mot de passe","description":"Déclenche le flux Better Auth de reset ou réactivation.","parameters":[{"in":"path","name":"user_id","required":true,"schema":{"type":"string"},"example":"usr_001"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-reset-password"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["users"],"x-marko-route-group":"write","x-marko-required-scope":"users:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"204":{"description":"Successful response"},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/users/me":{"get":{"operationId":"users_me_get","summary":"Lire le profil d'un utilisateur délégué","description":"Nécessite exactement un header `X-Marko-Delegated-User-Id` ou `X-Marko-Delegated-User-Email` pour résoudre le sujet utilisateur dans la même entité.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-me-get"}],"tags":["users"],"x-marko-route-group":"read","x-marko-required-scope":"users:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"usr_001","email":"ops@clubfunding.fr","name":"Ops Clubfunding","role":"viewer","status":"approved"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"put":{"operationId":"users_me_update","summary":"Mettre à jour le profil d'un utilisateur délégué","description":"Met à jour le profil du sujet utilisateur délégué résolu via header.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-me-update"}],"tags":["users"],"x-marko-route-group":"write","x-marko-required-scope":"users:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"usr_001","name":"Ops Clubfunding"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"name":"Ops Clubfunding","first_name":"Ops","last_name":"Team"}}}}}},"/users/me/preferences":{"get":{"operationId":"users_preferences_get","summary":"Lire les préférences d'un utilisateur délégué","description":"Retourne les préférences du sujet utilisateur délégué résolu via header.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-preferences-get"}],"tags":["users"],"x-marko-route-group":"read","x-marko-required-scope":"users:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"user_id":"usr_001","preferences":{"locale":"fr"},"alert_budget_daily":5}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"put":{"operationId":"users_preferences_update","summary":"Mettre à jour les préférences d'un utilisateur délégué","description":"Met à jour les préférences du sujet utilisateur délégué résolu via header.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-preferences-update"}],"tags":["users"],"x-marko-route-group":"write","x-marko-required-scope":"users:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"user_id":"usr_001","preferences":{"locale":"fr"},"alert_budget_daily":8}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"preferences":{"locale":"fr"},"alert_budget_daily":8}}}}}},"/users/me/alert-preferences":{"get":{"operationId":"users_alert-preferences_get","summary":"Lire les préférences d'alerte d'un utilisateur délégué","description":"Retourne les préférences d'alerte du sujet utilisateur délégué résolu via header.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-alert-preferences-get"}],"tags":["users"],"x-marko-route-group":"read","x-marko-required-scope":"users:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":[{"alert_type":"task_overdue","enabled":true,"min_severity":"warning"}]}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"put":{"operationId":"users_alert-preferences_update","summary":"Mettre à jour les préférences d'alerte d'un utilisateur délégué","description":"Met à jour les préférences d'alerte du sujet utilisateur délégué résolu via header.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-alert-preferences-update"}],"tags":["users"],"x-marko-route-group":"write","x-marko-required-scope":"users:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":[{"alert_type":"task_overdue","enabled":true,"min_severity":"warning"}]}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"preferences":[{"alert_type":"task_overdue","enabled":true,"min_severity":"warning"}]}}}}}},"/users/me/saved-views":{"get":{"operationId":"users_saved-views_list","summary":"Lister les vues sauvegardées du sujet délégué","description":"Exige un sujet utilisateur délégué résolu via header, une allowlist explicite sur la clé, et la capacité `saved_views`.","parameters":[{"in":"query","name":"entity_type","required":false,"schema":{"type":"string"},"example":"operations"},{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":20},{"in":"query","name":"offset","required":false,"schema":{"type":"string"},"example":0},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-saved-views-list"}],"tags":["users"],"x-marko-route-group":"read","x-marko-required-scope":"users:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":[{"id":"11111111-1111-1111-1111-111111111111","entity_type":"operations","name":"Pipeline closing","is_default":false}]}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"post":{"operationId":"users_saved-views_create","summary":"Créer une vue sauvegardée pour le sujet délégué","description":"Exige une allowlist explicite sur la clé et la capacité `saved_views`.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-saved-views-create"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["users"],"x-marko-route-group":"write","x-marko-required-scope":"users:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"11111111-1111-1111-1111-111111111111","entity_type":"operations","name":"Pipeline closing","is_default":false}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"entity_type":"operations","name":"Pipeline closing","filters":{"status":"closing"},"columns":["name","status"],"sort":{"sort_by":"updated_at","sort_order":"desc"}}}}}}},"/users/me/saved-views/{view_id}":{"get":{"operationId":"users_saved-views_get","summary":"Lire une vue sauvegardée du sujet délégué","description":"Retourne une vue sauvegardée possédée par le sujet utilisateur délégué.","parameters":[{"in":"path","name":"view_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"11111111-1111-1111-1111-111111111111"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-saved-views-get"}],"tags":["users"],"x-marko-route-group":"read","x-marko-required-scope":"users:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"11111111-1111-1111-1111-111111111111","entity_type":"operations","name":"Pipeline closing","is_default":false}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"put":{"operationId":"users_saved-views_update","summary":"Mettre à jour une vue sauvegardée du sujet délégué","description":"Exige une allowlist explicite sur la clé et la capacité `saved_views`.","parameters":[{"in":"path","name":"view_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"11111111-1111-1111-1111-111111111111"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-saved-views-update"}],"tags":["users"],"x-marko-route-group":"write","x-marko-required-scope":"users:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"11111111-1111-1111-1111-111111111111","name":"Pipeline closing v2","is_default":true}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"name":"Pipeline closing v2","is_default":true}}}}},"delete":{"operationId":"users_saved-views_delete","summary":"Supprimer une vue sauvegardée du sujet délégué","description":"Exige une allowlist explicite sur la clé et la capacité `saved_views`.","parameters":[{"in":"path","name":"view_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"11111111-1111-1111-1111-111111111111"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-saved-views-delete"}],"tags":["users"],"x-marko-route-group":"write","x-marko-required-scope":"users:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"204":{"description":"Successful response"},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/users/me/custom-dashboards":{"get":{"operationId":"users_custom-dashboards_list","summary":"Lister les dashboards personnalisés du sujet délégué","description":"Exige une allowlist explicite sur la clé et la capacité `custom_dashboards`.","parameters":[{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":20},{"in":"query","name":"offset","required":false,"schema":{"type":"string"},"example":0},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-custom-dashboards-list"}],"tags":["users"],"x-marko-route-group":"read","x-marko-required-scope":"users:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":[{"id":"22222222-2222-2222-2222-222222222222","name":"Pilotage portefeuille","is_shared":false,"widget_count":3}]}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"post":{"operationId":"users_custom-dashboards_create","summary":"Créer un dashboard personnalisé pour le sujet délégué","description":"Exige une allowlist explicite sur la clé et la capacité `custom_dashboards`.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-custom-dashboards-create"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["users"],"x-marko-route-group":"write","x-marko-required-scope":"users:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"22222222-2222-2222-2222-222222222222","name":"Pilotage portefeuille","is_shared":false}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"name":"Pilotage portefeuille","layout":[{"widget_type":"kpi_card","title":"Total nominal"}],"filters":{"fund_id":"fond_001"}}}}}}},"/users/me/custom-dashboards/{dashboard_id}":{"get":{"operationId":"users_custom-dashboards_get","summary":"Lire un dashboard personnalisé du sujet délégué","description":"Retourne un dashboard possédé par le sujet utilisateur délégué.","parameters":[{"in":"path","name":"dashboard_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"22222222-2222-2222-2222-222222222222"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-custom-dashboards-get"}],"tags":["users"],"x-marko-route-group":"read","x-marko-required-scope":"users:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"22222222-2222-2222-2222-222222222222","name":"Pilotage portefeuille","is_shared":false}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"put":{"operationId":"users_custom-dashboards_update","summary":"Mettre à jour un dashboard personnalisé du sujet délégué","description":"Exige une allowlist explicite sur la clé et la capacité `custom_dashboards`.","parameters":[{"in":"path","name":"dashboard_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"22222222-2222-2222-2222-222222222222"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-custom-dashboards-update"}],"tags":["users"],"x-marko-route-group":"write","x-marko-required-scope":"users:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"22222222-2222-2222-2222-222222222222","name":"Pilotage portefeuille v2","is_shared":false}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"name":"Pilotage portefeuille v2","is_shared":false}}}}},"delete":{"operationId":"users_custom-dashboards_delete","summary":"Supprimer un dashboard personnalisé du sujet délégué","description":"Exige une allowlist explicite sur la clé et la capacité `custom_dashboards`.","parameters":[{"in":"path","name":"dashboard_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"22222222-2222-2222-2222-222222222222"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-custom-dashboards-delete"}],"tags":["users"],"x-marko-route-group":"write","x-marko-required-scope":"users:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"204":{"description":"Successful response"},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/users/me/rgpd/export":{"get":{"operationId":"users_rgpd_export","summary":"Exporter les données personnelles du sujet délégué","description":"Exige une allowlist explicite sur la clé et la capacité `rgpd_export`.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-rgpd-export"}],"tags":["users"],"x-marko-route-group":"read","x-marko-required-scope":"users:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"user_id":"usr_001","profile":{"email":"ops@clubfunding.fr"},"preferences":{},"notifications":[]}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/users/me/rgpd/inventory":{"get":{"operationId":"users_rgpd_inventory","summary":"Lister l'inventaire RGPD du sujet délégué","description":"Exige une allowlist explicite sur la clé et la capacité `rgpd_inventory`.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-rgpd-inventory"}],"tags":["users"],"x-marko-route-group":"read","x-marko-required-scope":"users:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"user_id":"usr_001","auth_database":{"user":{"has_data":true}}}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/users/me/rgpd/erasure":{"delete":{"operationId":"users_rgpd_erasure","summary":"Exercer le droit à l'effacement pour le sujet délégué","description":"Exige une allowlist explicite sur la clé et la capacité `rgpd_erasure`, avec `{\"confirm\": true}`.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-users-rgpd-erasure"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["users"],"x-marko-route-group":"write","x-marko-required-scope":"users:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"user_id":"usr_001","actions":["profile_anonymized"]}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"confirm":true}}}}}},"/settings":{"get":{"operationId":"settings_get","summary":"Lire les paramètres de l'entité","description":"Expose les paramètres métier et branding de l'entité.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-settings-get"}],"tags":["settings"],"x-marko-route-group":"read","x-marko-required-scope":"settings:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"11111111-1111-1111-1111-111111111111","name":"Clubfunding","mode_reporting":"trimestriel","frequence_reporting":3,"risk_threshold":75,"ai_enabled":true}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"put":{"operationId":"settings_update","summary":"Mettre à jour les paramètres de l'entité","description":"Met à jour les paramètres de reporting et de branding de l'entité.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-settings-update"}],"tags":["settings"],"x-marko-route-group":"write","x-marko-required-scope":"settings:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"risk_threshold":80,"zone_vacances":"A"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"risk_threshold":80,"zone_vacances":"A"}}}}}},"/rcci/summary":{"get":{"operationId":"rcci_summary","summary":"Synthèse RCCI","description":"Agrège les covenants en tension, les documents manquants et les opérations à risque de l'entité.","parameters":[{"in":"query","name":"risk_threshold","required":false,"schema":{"type":"string"},"example":40},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-rcci-summary"}],"tags":["rcci"],"x-marko-route-group":"read","x-marko-required-scope":"portfolio:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"covenants_breach_count":2,"covenants_warning_count":3,"documents_missing_count":4,"operations_at_risk_count":1,"covenants":[],"documents":[],"risk_operations":[]}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/field-definitions":{"get":{"operationId":"field-definitions_list","summary":"Lister le dictionnaire de champs","description":"Expose le référentiel métier des champs MARKO avec filtres et pagination.","parameters":[{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":20},{"in":"query","name":"offset","required":false,"schema":{"type":"string"},"example":0},{"in":"query","name":"importance","required":false,"schema":{"type":"string"},"example":"essentielle"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-field-definitions-list"}],"tags":["field-definitions"],"x-marko-route-group":"read","x-marko-required-scope":"operations:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"items":[{"id":"11111111-1111-1111-1111-111111111111","field_key":"montant_pret","label_fr":"Montant du prêt","value_type":"numeric","importance":"essentielle","source_type":"document"}],"total":1,"limit":20,"offset":0}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/field-definitions/by-key/{field_key}":{"get":{"operationId":"field-definitions_by-key","summary":"Récupérer une définition de champ par clé","description":"Retourne la définition détaillée d'un champ métier par field_key.","parameters":[{"in":"path","name":"field_key","required":true,"schema":{"type":"string"},"example":"montant_pret"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-field-definitions-by-key"}],"tags":["field-definitions"],"x-marko-route-group":"read","x-marko-required-scope":"operations:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"11111111-1111-1111-1111-111111111111","field_key":"montant_pret","label_fr":"Montant du prêt","value_type":"numeric","importance":"essentielle","source_type":"document"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/field-definitions/{field_id}":{"get":{"operationId":"field-definitions_get","summary":"Récupérer une définition de champ","description":"Retourne la définition détaillée d'un champ métier par identifiant.","parameters":[{"in":"path","name":"field_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"11111111-1111-1111-1111-111111111111"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-field-definitions-get"}],"tags":["field-definitions"],"x-marko-route-group":"read","x-marko-required-scope":"operations:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"11111111-1111-1111-1111-111111111111","field_key":"montant_pret","label_fr":"Montant du prêt","value_type":"numeric","importance":"essentielle","source_type":"document"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/fonds/{fond_id}":{"get":{"operationId":"fonds_get","summary":"Récupérer un fonds","description":"Retourne le détail d'un fonds MARKO.","parameters":[{"in":"path","name":"fond_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"22222222-2222-2222-2222-222222222222"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-fonds-get"}],"tags":["fonds"],"x-marko-route-group":"read","x-marko-required-scope":"fonds:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"22222222-2222-2222-2222-222222222222","name":"Clubfunding Debt I","spv_count":4}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"put":{"operationId":"fonds_update","summary":"Mettre à jour un fonds","description":"Met à jour les métadonnées d'un fonds.","parameters":[{"in":"path","name":"fond_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"22222222-2222-2222-2222-222222222222"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-fonds-update"}],"tags":["fonds"],"x-marko-route-group":"write","x-marko-required-scope":"fonds:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"22222222-2222-2222-2222-222222222222","name":"Clubfunding Debt I Updated"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"name":"Clubfunding Debt I Updated"}}}}},"delete":{"operationId":"fonds_delete","summary":"Supprimer un fonds","description":"Supprime logiquement un fonds.","parameters":[{"in":"path","name":"fond_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"22222222-2222-2222-2222-222222222222"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-fonds-delete"}],"tags":["fonds"],"x-marko-route-group":"write","x-marko-required-scope":"fonds:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"204":{"description":"Successful response"},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/spvs/external/{external_id}":{"get":{"operationId":"spvs_external_get","summary":"Récupérer une SPV par identifiant externe","description":"Résout l'identifiant stable du partenaire vers la SPV MARKO.","parameters":[{"in":"path","name":"external_id","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_~-][A-Za-z0-9._:~-]{0,254}$","minLength":1,"maxLength":255},"example":"CF-SPV-001"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-spvs-external-get"}],"tags":["spvs"],"x-marko-route-group":"read","x-marko-required-scope":"spvs:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"properties":{"name":{"title":"Name","type":"string"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Siren"},"forme_juridique":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Forme Juridique"},"capital_social":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Capital Social"},"montage":{"anyOf":[{"description":"Type de montage financier du SPV.","enum":["dette_senior","mezzanine","equity","mix"],"title":"MontageFinancier","type":"string"},{"type":"null"}],"default":null},"date_creation":{"anyOf":[{"format":"date","type":"string"},{"type":"null"}],"default":null,"title":"Date Creation"},"identite_entreprise":{"anyOf":[{"description":"Selected registry identity, bound to the company it describes.","properties":{"siren":{"pattern":"^\\d{9}$","title":"Siren","type":"string"},"siret":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Siret"},"representant_legal":{"anyOf":[{"description":"A single dirigeant (director/officer) of the company.","properties":{"nom":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Nom"},"prenom":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Prenom"},"qualite":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Qualite"},"date_naissance":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Naissance"},"denomination":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Denomination"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Siren"},"personne_morale":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Personne Morale"},"qualites":{"items":{"type":"string"},"title":"Qualites","type":"array"},"date_prise_de_poste":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Prise De Poste"},"adresse":{"anyOf":[{"properties":{"adresse_ligne_1":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 1"},"adresse_ligne_2":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 2"},"adresse_ligne_3":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 3"},"complement_adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Complement Adresse"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code Postal"},"ville":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Ville"},"pays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Pays"},"code_pays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code Pays"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Longitude"}},"title":"SIRENAdresse","type":"object"},{"type":"null"}],"default":null},"forme_juridique":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Forme Juridique"}},"title":"SIRENDirigeant","type":"object"},{"type":"null"}],"default":null},"presidents":{"anyOf":[{"items":{"description":"A single dirigeant (director/officer) of the company.","properties":{"nom":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Nom"},"prenom":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Prenom"},"qualite":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Qualite"},"date_naissance":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Naissance"},"denomination":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Denomination"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Siren"},"personne_morale":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Personne Morale"},"qualites":{"items":{"type":"string"},"title":"Qualites","type":"array"},"date_prise_de_poste":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Prise De Poste"},"adresse":{"anyOf":[{"properties":{"adresse_ligne_1":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 1"},"adresse_ligne_2":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 2"},"adresse_ligne_3":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 3"},"complement_adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Complement Adresse"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code Postal"},"ville":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Ville"},"pays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Pays"},"code_pays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code Pays"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Longitude"}},"title":"SIRENAdresse","type":"object"},{"type":"null"}],"default":null},"forme_juridique":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Forme Juridique"}},"title":"SIRENDirigeant","type":"object"},"type":"array"},{"type":"null"}],"default":null,"title":"Presidents"},"beneficiaires_effectifs":{"anyOf":[{"items":{"description":"Only the declared person's name; no private address or birth data.","properties":{"nom":{"maxLength":300,"minLength":1,"title":"Nom","type":"string"},"prenom":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"title":"Prenom"}},"required":["nom"],"title":"SIRENBeneficiaireEffectif","type":"object"},"type":"array"},{"type":"null"}],"default":null,"title":"Beneficiaires Effectifs"},"adresse_siege":{"anyOf":[{"properties":{"adresse_ligne_1":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 1"},"adresse_ligne_2":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 2"},"adresse_ligne_3":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 3"},"complement_adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Complement Adresse"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code Postal"},"ville":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Ville"},"pays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Pays"},"code_pays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code Pays"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Longitude"}},"title":"SIRENAdresse","type":"object"},{"type":"null"}],"default":null},"is_radiee":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Is Radiee"},"entreprise_cessee":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Entreprise Cessee"},"date_radiation":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Radiation"},"date_cessation":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Cessation"},"numero_tva_intracommunautaire":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Numero Tva Intracommunautaire"},"date_cloture_exercice":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Cloture Exercice"},"date_prochaine_cloture_exercice":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Prochaine Cloture Exercice"},"date_cloture_exercice_exceptionnelle":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Cloture Exercice Exceptionnelle"}},"required":["siren"],"title":"SIRENCompanyIdentity","type":"object"},{"type":"null"}],"default":null},"dirigeants":{"items":{"description":"A single dirigeant (director/officer) of the company.","properties":{"nom":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Nom"},"prenom":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Prenom"},"qualite":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Qualite"},"date_naissance":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Naissance"},"denomination":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Denomination"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Siren"},"personne_morale":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Personne Morale"},"qualites":{"items":{"type":"string"},"title":"Qualites","type":"array"},"date_prise_de_poste":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Prise De Poste"},"adresse":{"anyOf":[{"properties":{"adresse_ligne_1":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 1"},"adresse_ligne_2":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 2"},"adresse_ligne_3":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 3"},"complement_adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Complement Adresse"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code Postal"},"ville":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Ville"},"pays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Pays"},"code_pays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code Pays"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Longitude"}},"title":"SIRENAdresse","type":"object"},{"type":"null"}],"default":null},"forme_juridique":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Forme Juridique"}},"title":"SIRENDirigeant","type":"object"},"maxItems":500,"title":"Dirigeants","type":"array"},"procedures_collectives":{"anyOf":[{"items":{"description":"A collective proceeding reported by the company provider.","properties":{"type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Type"},"date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date"},"tribunal":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Tribunal"}},"title":"SIRENProcedure","type":"object"},"maxItems":500,"type":"array"},{"type":"null"}],"default":null,"title":"Procedures Collectives"},"organisation_pappers":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Organisation Pappers"},"justice_pappers":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Justice Pappers"},"id":{"format":"uuid","title":"Id","type":"string"},"entity_id":{"format":"uuid","title":"Entity Id","type":"string"},"fond_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Fond Id"},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Region"},"beneficiaire_effectif":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Beneficiaire Effectif"},"date_ag_annuelle":{"anyOf":[{"format":"date","type":"string"},{"type":"null"}],"default":null,"title":"Date Ag Annuelle"},"resultat_net_ag":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Resultat Net Ag"},"pv_ag_document_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Pv Ag Document Id"},"procedure_collective":{"description":"Statut de procédure collective.","enum":["aucune","sauvegarde","redressement","liquidation"],"title":"ProcedureCollective","type":"string","default":"aucune"},"litiges_en_cours":{"default":false,"title":"Litiges En Cours","type":"boolean"},"litiges_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Litiges Detail"},"contentieux_items":{"default":[],"items":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Id"},"date_creation":{"anyOf":[{"format":"date","type":"string"},{"type":"null"}],"default":null,"title":"Date Creation"},"provision":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Provision"},"montant_demande":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Montant Demande"},"position":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Position"},"partie_adverse":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Partie Adverse"},"cabinet_avocat":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Cabinet Avocat"},"juridiction":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Juridiction"},"nature":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Nature"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Detail"},"document_ids":{"items":{"format":"uuid","type":"string"},"maxItems":20,"title":"Document Ids","type":"array"}},"title":"SpvContentieuxItem","type":"object"},"title":"Contentieux Items","type":"array"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"updated_at":{"format":"date-time","title":"Updated At","type":"string"},"operations_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":0,"title":"Operations Count"}},"required":["name","id","entity_id","created_at","updated_at"],"title":"SPVResponse","type":"object"},"example":{"id":"33333333-3333-3333-3333-333333333333","entity_id":"11111111-1111-1111-1111-111111111111","name":"SPV Paris 19","forme_juridique":"SAS","siren":"123456782","adresse":"10 rue de la République, 75019 Paris","created_at":"2026-08-22T08:00:00Z","updated_at":"2026-08-22T08:00:00Z"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"put":{"operationId":"spvs_external_upsert","summary":"Créer ou mettre à jour une SPV externe","description":"Upsert synchrone par identifiant partenaire. Une ressource MARKO supprimée logiquement est restaurée avec le même UUID. existing_marko_id permet de lier explicitement une SPV existante lors du premier envoi.","parameters":[{"in":"path","name":"external_id","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_~-][A-Za-z0-9._:~-]{0,254}$","minLength":1,"maxLength":255},"example":"CF-SPV-001"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-spvs-external-upsert"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["spvs"],"x-marko-route-group":"write","x-marko-required-scope":"spvs:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"properties":{"external_id":{"title":"External Id","type":"string"},"marko_id":{"format":"uuid","title":"Marko Id","type":"string"},"outcome":{"enum":["created","updated","noop","restored","bound"],"title":"Outcome","type":"string"},"resource":{"properties":{"name":{"title":"Name","type":"string"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Siren"},"forme_juridique":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Forme Juridique"},"capital_social":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Capital Social"},"montage":{"anyOf":[{"description":"Type de montage financier du SPV.","enum":["dette_senior","mezzanine","equity","mix"],"title":"MontageFinancier","type":"string"},{"type":"null"}],"default":null},"date_creation":{"anyOf":[{"format":"date","type":"string"},{"type":"null"}],"default":null,"title":"Date Creation"},"identite_entreprise":{"anyOf":[{"description":"Selected registry identity, bound to the company it describes.","properties":{"siren":{"pattern":"^\\d{9}$","title":"Siren","type":"string"},"siret":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Siret"},"representant_legal":{"anyOf":[{"description":"A single dirigeant (director/officer) of the company.","properties":{"nom":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Nom"},"prenom":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Prenom"},"qualite":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Qualite"},"date_naissance":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Naissance"},"denomination":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Denomination"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Siren"},"personne_morale":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Personne Morale"},"qualites":{"items":{"type":"string"},"title":"Qualites","type":"array"},"date_prise_de_poste":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Prise De Poste"},"adresse":{"anyOf":[{"properties":{"adresse_ligne_1":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 1"},"adresse_ligne_2":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 2"},"adresse_ligne_3":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 3"},"complement_adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Complement Adresse"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code Postal"},"ville":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Ville"},"pays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Pays"},"code_pays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code Pays"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Longitude"}},"title":"SIRENAdresse","type":"object"},{"type":"null"}],"default":null},"forme_juridique":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Forme Juridique"}},"title":"SIRENDirigeant","type":"object"},{"type":"null"}],"default":null},"presidents":{"anyOf":[{"items":{"description":"A single dirigeant (director/officer) of the company.","properties":{"nom":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Nom"},"prenom":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Prenom"},"qualite":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Qualite"},"date_naissance":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Naissance"},"denomination":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Denomination"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Siren"},"personne_morale":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Personne Morale"},"qualites":{"items":{"type":"string"},"title":"Qualites","type":"array"},"date_prise_de_poste":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Prise De Poste"},"adresse":{"anyOf":[{"properties":{"adresse_ligne_1":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 1"},"adresse_ligne_2":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 2"},"adresse_ligne_3":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 3"},"complement_adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Complement Adresse"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code Postal"},"ville":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Ville"},"pays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Pays"},"code_pays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code Pays"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Longitude"}},"title":"SIRENAdresse","type":"object"},{"type":"null"}],"default":null},"forme_juridique":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Forme Juridique"}},"title":"SIRENDirigeant","type":"object"},"type":"array"},{"type":"null"}],"default":null,"title":"Presidents"},"beneficiaires_effectifs":{"anyOf":[{"items":{"description":"Only the declared person's name; no private address or birth data.","properties":{"nom":{"maxLength":300,"minLength":1,"title":"Nom","type":"string"},"prenom":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"title":"Prenom"}},"required":["nom"],"title":"SIRENBeneficiaireEffectif","type":"object"},"type":"array"},{"type":"null"}],"default":null,"title":"Beneficiaires Effectifs"},"adresse_siege":{"anyOf":[{"properties":{"adresse_ligne_1":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 1"},"adresse_ligne_2":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 2"},"adresse_ligne_3":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 3"},"complement_adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Complement Adresse"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code Postal"},"ville":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Ville"},"pays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Pays"},"code_pays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code Pays"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Longitude"}},"title":"SIRENAdresse","type":"object"},{"type":"null"}],"default":null},"is_radiee":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Is Radiee"},"entreprise_cessee":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Entreprise Cessee"},"date_radiation":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Radiation"},"date_cessation":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Cessation"},"numero_tva_intracommunautaire":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Numero Tva Intracommunautaire"},"date_cloture_exercice":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Cloture Exercice"},"date_prochaine_cloture_exercice":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Prochaine Cloture Exercice"},"date_cloture_exercice_exceptionnelle":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Cloture Exercice Exceptionnelle"}},"required":["siren"],"title":"SIRENCompanyIdentity","type":"object"},{"type":"null"}],"default":null},"dirigeants":{"items":{"description":"A single dirigeant (director/officer) of the company.","properties":{"nom":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Nom"},"prenom":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Prenom"},"qualite":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Qualite"},"date_naissance":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Naissance"},"denomination":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Denomination"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Siren"},"personne_morale":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Personne Morale"},"qualites":{"items":{"type":"string"},"title":"Qualites","type":"array"},"date_prise_de_poste":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Prise De Poste"},"adresse":{"anyOf":[{"properties":{"adresse_ligne_1":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 1"},"adresse_ligne_2":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 2"},"adresse_ligne_3":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 3"},"complement_adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Complement Adresse"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code Postal"},"ville":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Ville"},"pays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Pays"},"code_pays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code Pays"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Longitude"}},"title":"SIRENAdresse","type":"object"},{"type":"null"}],"default":null},"forme_juridique":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Forme Juridique"}},"title":"SIRENDirigeant","type":"object"},"maxItems":500,"title":"Dirigeants","type":"array"},"procedures_collectives":{"anyOf":[{"items":{"description":"A collective proceeding reported by the company provider.","properties":{"type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Type"},"date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date"},"tribunal":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Tribunal"}},"title":"SIRENProcedure","type":"object"},"maxItems":500,"type":"array"},{"type":"null"}],"default":null,"title":"Procedures Collectives"},"organisation_pappers":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Organisation Pappers"},"justice_pappers":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Justice Pappers"},"id":{"format":"uuid","title":"Id","type":"string"},"entity_id":{"format":"uuid","title":"Entity Id","type":"string"},"fond_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Fond Id"},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Region"},"beneficiaire_effectif":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Beneficiaire Effectif"},"date_ag_annuelle":{"anyOf":[{"format":"date","type":"string"},{"type":"null"}],"default":null,"title":"Date Ag Annuelle"},"resultat_net_ag":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Resultat Net Ag"},"pv_ag_document_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Pv Ag Document Id"},"procedure_collective":{"description":"Statut de procédure collective.","enum":["aucune","sauvegarde","redressement","liquidation"],"title":"ProcedureCollective","type":"string","default":"aucune"},"litiges_en_cours":{"default":false,"title":"Litiges En Cours","type":"boolean"},"litiges_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Litiges Detail"},"contentieux_items":{"default":[],"items":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Id"},"date_creation":{"anyOf":[{"format":"date","type":"string"},{"type":"null"}],"default":null,"title":"Date Creation"},"provision":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Provision"},"montant_demande":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Montant Demande"},"position":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Position"},"partie_adverse":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Partie Adverse"},"cabinet_avocat":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Cabinet Avocat"},"juridiction":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Juridiction"},"nature":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Nature"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Detail"},"document_ids":{"items":{"format":"uuid","type":"string"},"maxItems":20,"title":"Document Ids","type":"array"}},"title":"SpvContentieuxItem","type":"object"},"title":"Contentieux Items","type":"array"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"updated_at":{"format":"date-time","title":"Updated At","type":"string"},"operations_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":0,"title":"Operations Count"}},"required":["name","id","entity_id","created_at","updated_at"],"title":"SPVResponse","type":"object"},"taxonomy_additions":{"items":{"properties":{"parent_code":{"anyOf":[{"enum":["due_diligence","en_cours","en_recouvrement","termine"],"type":"string"},{"type":"null"}],"default":null,"title":"Parent Code"},"code":{"title":"Code","type":"string"},"dimension":{"enum":["operation_status","investment_type","operation_type","asset_class","internal_status","operational_status","follow_up_category"],"title":"Dimension","type":"string"},"display_label":{"title":"Display Label","type":"string"},"source_kind":{"enum":["marko","partner","entity"],"title":"Source Kind","type":"string"},"source_display_name":{"title":"Source Display Name","type":"string"},"is_visible":{"title":"Is Visible","type":"boolean"},"is_active":{"title":"Is Active","type":"boolean"},"position":{"title":"Position","type":"integer"},"usage_count":{"default":0,"title":"Usage Count","type":"integer"},"label_editable":{"title":"Label Editable","type":"boolean"},"canonical_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Canonical Code"},"icon_key":{"anyOf":[{"enum":["tag","briefcase","building","landmark","home","map","layers","shield","trending-up","calendar","circle-check","triangle-alert"],"type":"string"},{"type":"null"}],"default":null,"title":"Icon Key"}},"required":["code","dimension","display_label","source_kind","source_display_name","is_visible","is_active","position","label_editable"],"title":"EntityTaxonomyOptionResponse","type":"object"},"title":"Taxonomy Additions","type":"array"},"request_id":{"title":"Request Id","type":"string"}},"required":["external_id","marko_id","outcome","resource","request_id"],"title":"ExternalSPVSyncUpsertResponse","type":"object"},"example":{"external_id":"CF-SPV-001","marko_id":"33333333-3333-3333-3333-333333333333","outcome":"created","resource":{"id":"33333333-3333-3333-3333-333333333333","entity_id":"11111111-1111-1111-1111-111111111111","name":"SPV Paris 19","created_at":"2026-08-22T08:00:00Z","updated_at":"2026-08-22T08:00:00Z"},"taxonomy_additions":[],"request_id":"req_cf_spv_upsert"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"200":{"description":"Additional successful response","content":{"application/json":{"schema":{"properties":{"external_id":{"title":"External Id","type":"string"},"marko_id":{"format":"uuid","title":"Marko Id","type":"string"},"outcome":{"enum":["created","updated","noop","restored","bound"],"title":"Outcome","type":"string"},"resource":{"properties":{"name":{"title":"Name","type":"string"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Siren"},"forme_juridique":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Forme Juridique"},"capital_social":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Capital Social"},"montage":{"anyOf":[{"description":"Type de montage financier du SPV.","enum":["dette_senior","mezzanine","equity","mix"],"title":"MontageFinancier","type":"string"},{"type":"null"}],"default":null},"date_creation":{"anyOf":[{"format":"date","type":"string"},{"type":"null"}],"default":null,"title":"Date Creation"},"identite_entreprise":{"anyOf":[{"description":"Selected registry identity, bound to the company it describes.","properties":{"siren":{"pattern":"^\\d{9}$","title":"Siren","type":"string"},"siret":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Siret"},"representant_legal":{"anyOf":[{"description":"A single dirigeant (director/officer) of the company.","properties":{"nom":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Nom"},"prenom":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Prenom"},"qualite":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Qualite"},"date_naissance":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Naissance"},"denomination":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Denomination"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Siren"},"personne_morale":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Personne Morale"},"qualites":{"items":{"type":"string"},"title":"Qualites","type":"array"},"date_prise_de_poste":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Prise De Poste"},"adresse":{"anyOf":[{"properties":{"adresse_ligne_1":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 1"},"adresse_ligne_2":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 2"},"adresse_ligne_3":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 3"},"complement_adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Complement Adresse"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code Postal"},"ville":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Ville"},"pays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Pays"},"code_pays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code Pays"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Longitude"}},"title":"SIRENAdresse","type":"object"},{"type":"null"}],"default":null},"forme_juridique":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Forme Juridique"}},"title":"SIRENDirigeant","type":"object"},{"type":"null"}],"default":null},"presidents":{"anyOf":[{"items":{"description":"A single dirigeant (director/officer) of the company.","properties":{"nom":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Nom"},"prenom":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Prenom"},"qualite":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Qualite"},"date_naissance":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Naissance"},"denomination":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Denomination"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Siren"},"personne_morale":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Personne Morale"},"qualites":{"items":{"type":"string"},"title":"Qualites","type":"array"},"date_prise_de_poste":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Prise De Poste"},"adresse":{"anyOf":[{"properties":{"adresse_ligne_1":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 1"},"adresse_ligne_2":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 2"},"adresse_ligne_3":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 3"},"complement_adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Complement Adresse"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code Postal"},"ville":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Ville"},"pays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Pays"},"code_pays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code Pays"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Longitude"}},"title":"SIRENAdresse","type":"object"},{"type":"null"}],"default":null},"forme_juridique":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Forme Juridique"}},"title":"SIRENDirigeant","type":"object"},"type":"array"},{"type":"null"}],"default":null,"title":"Presidents"},"beneficiaires_effectifs":{"anyOf":[{"items":{"description":"Only the declared person's name; no private address or birth data.","properties":{"nom":{"maxLength":300,"minLength":1,"title":"Nom","type":"string"},"prenom":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"title":"Prenom"}},"required":["nom"],"title":"SIRENBeneficiaireEffectif","type":"object"},"type":"array"},{"type":"null"}],"default":null,"title":"Beneficiaires Effectifs"},"adresse_siege":{"anyOf":[{"properties":{"adresse_ligne_1":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 1"},"adresse_ligne_2":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 2"},"adresse_ligne_3":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 3"},"complement_adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Complement Adresse"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code Postal"},"ville":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Ville"},"pays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Pays"},"code_pays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code Pays"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Longitude"}},"title":"SIRENAdresse","type":"object"},{"type":"null"}],"default":null},"is_radiee":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Is Radiee"},"entreprise_cessee":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Entreprise Cessee"},"date_radiation":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Radiation"},"date_cessation":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Cessation"},"numero_tva_intracommunautaire":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Numero Tva Intracommunautaire"},"date_cloture_exercice":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Cloture Exercice"},"date_prochaine_cloture_exercice":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Prochaine Cloture Exercice"},"date_cloture_exercice_exceptionnelle":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Cloture Exercice Exceptionnelle"}},"required":["siren"],"title":"SIRENCompanyIdentity","type":"object"},{"type":"null"}],"default":null},"dirigeants":{"items":{"description":"A single dirigeant (director/officer) of the company.","properties":{"nom":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Nom"},"prenom":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Prenom"},"qualite":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Qualite"},"date_naissance":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Naissance"},"denomination":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Denomination"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Siren"},"personne_morale":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Personne Morale"},"qualites":{"items":{"type":"string"},"title":"Qualites","type":"array"},"date_prise_de_poste":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Prise De Poste"},"adresse":{"anyOf":[{"properties":{"adresse_ligne_1":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 1"},"adresse_ligne_2":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 2"},"adresse_ligne_3":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse Ligne 3"},"complement_adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Complement Adresse"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code Postal"},"ville":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Ville"},"pays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Pays"},"code_pays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code Pays"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Longitude"}},"title":"SIRENAdresse","type":"object"},{"type":"null"}],"default":null},"forme_juridique":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Forme Juridique"}},"title":"SIRENDirigeant","type":"object"},"maxItems":500,"title":"Dirigeants","type":"array"},"procedures_collectives":{"anyOf":[{"items":{"description":"A collective proceeding reported by the company provider.","properties":{"type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Type"},"date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date"},"tribunal":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Tribunal"}},"title":"SIRENProcedure","type":"object"},"maxItems":500,"type":"array"},{"type":"null"}],"default":null,"title":"Procedures Collectives"},"organisation_pappers":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Organisation Pappers"},"justice_pappers":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Justice Pappers"},"id":{"format":"uuid","title":"Id","type":"string"},"entity_id":{"format":"uuid","title":"Entity Id","type":"string"},"fond_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Fond Id"},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Adresse"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Region"},"beneficiaire_effectif":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Beneficiaire Effectif"},"date_ag_annuelle":{"anyOf":[{"format":"date","type":"string"},{"type":"null"}],"default":null,"title":"Date Ag Annuelle"},"resultat_net_ag":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Resultat Net Ag"},"pv_ag_document_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Pv Ag Document Id"},"procedure_collective":{"description":"Statut de procédure collective.","enum":["aucune","sauvegarde","redressement","liquidation"],"title":"ProcedureCollective","type":"string","default":"aucune"},"litiges_en_cours":{"default":false,"title":"Litiges En Cours","type":"boolean"},"litiges_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Litiges Detail"},"contentieux_items":{"default":[],"items":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Id"},"date_creation":{"anyOf":[{"format":"date","type":"string"},{"type":"null"}],"default":null,"title":"Date Creation"},"provision":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Provision"},"montant_demande":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Montant Demande"},"position":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Position"},"partie_adverse":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Partie Adverse"},"cabinet_avocat":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Cabinet Avocat"},"juridiction":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Juridiction"},"nature":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Nature"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Detail"},"document_ids":{"items":{"format":"uuid","type":"string"},"maxItems":20,"title":"Document Ids","type":"array"}},"title":"SpvContentieuxItem","type":"object"},"title":"Contentieux Items","type":"array"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"updated_at":{"format":"date-time","title":"Updated At","type":"string"},"operations_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":0,"title":"Operations Count"}},"required":["name","id","entity_id","created_at","updated_at"],"title":"SPVResponse","type":"object"},"taxonomy_additions":{"items":{"properties":{"parent_code":{"anyOf":[{"enum":["due_diligence","en_cours","en_recouvrement","termine"],"type":"string"},{"type":"null"}],"default":null,"title":"Parent Code"},"code":{"title":"Code","type":"string"},"dimension":{"enum":["operation_status","investment_type","operation_type","asset_class","internal_status","operational_status","follow_up_category"],"title":"Dimension","type":"string"},"display_label":{"title":"Display Label","type":"string"},"source_kind":{"enum":["marko","partner","entity"],"title":"Source Kind","type":"string"},"source_display_name":{"title":"Source Display Name","type":"string"},"is_visible":{"title":"Is Visible","type":"boolean"},"is_active":{"title":"Is Active","type":"boolean"},"position":{"title":"Position","type":"integer"},"usage_count":{"default":0,"title":"Usage Count","type":"integer"},"label_editable":{"title":"Label Editable","type":"boolean"},"canonical_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Canonical Code"},"icon_key":{"anyOf":[{"enum":["tag","briefcase","building","landmark","home","map","layers","shield","trending-up","calendar","circle-check","triangle-alert"],"type":"string"},{"type":"null"}],"default":null,"title":"Icon Key"}},"required":["code","dimension","display_label","source_kind","source_display_name","is_visible","is_active","position","label_editable"],"title":"EntityTaxonomyOptionResponse","type":"object"},"title":"Taxonomy Additions","type":"array"},"request_id":{"title":"Request Id","type":"string"}},"required":["external_id","marko_id","outcome","resource","request_id"],"title":"ExternalSPVSyncUpsertResponse","type":"object"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"existing_marko_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Existing Marko Id"},"name":{"maxLength":255,"minLength":1,"title":"Name","type":"string"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Siren"},"forme_juridique":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"title":"Forme Juridique"},"capital_social":{"anyOf":[{"type":"number"},{"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":"string"},{"type":"null"}],"default":null,"title":"Capital Social"},"montage":{"anyOf":[{"description":"Type de montage financier du SPV.","enum":["dette_senior","mezzanine","equity","mix"],"title":"MontageFinancier","type":"string"},{"type":"null"}],"default":null},"date_creation":{"anyOf":[{"format":"date","type":"string"},{"type":"null"}],"default":null,"title":"Date Creation"},"adresse":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"title":"Adresse"},"region":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"title":"Region"},"beneficiaire_effectif":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"title":"Beneficiaire Effectif"},"fond_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Fond Id"}},"required":["name"],"title":"ExternalSPVUpsertRequest","type":"object"},"example":{"name":"SPV Paris 19","forme_juridique":"SAS","siren":"123456782","adresse":"10 rue de la République, 75019 Paris"}}}}}},"/spvs/{spv_id}":{"get":{"operationId":"spvs_get","summary":"Récupérer une SPV","description":"Retourne le détail d'une SPV MARKO.","parameters":[{"in":"path","name":"spv_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"33333333-3333-3333-3333-333333333333"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-spvs-get"}],"tags":["spvs"],"x-marko-route-group":"read","x-marko-required-scope":"spvs:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"33333333-3333-3333-3333-333333333333","name":"SPV Paris 19","operation_count":3}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"put":{"operationId":"spvs_update","summary":"Mettre à jour une SPV","description":"Met à jour les attributs d'une SPV.","parameters":[{"in":"path","name":"spv_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"33333333-3333-3333-3333-333333333333"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-spvs-update"}],"tags":["spvs"],"x-marko-route-group":"write","x-marko-required-scope":"spvs:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"33333333-3333-3333-3333-333333333333","name":"SPV Paris 19 Updated"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"name":"SPV Paris 19 Updated"}}}}},"delete":{"operationId":"spvs_delete","summary":"Supprimer une SPV","description":"Supprime logiquement une SPV.","parameters":[{"in":"path","name":"spv_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"33333333-3333-3333-3333-333333333333"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-spvs-delete"}],"tags":["spvs"],"x-marko-route-group":"write","x-marko-required-scope":"spvs:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"204":{"description":"Successful response"},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/search":{"get":{"operationId":"search_global","summary":"Recherche globale","description":"Recherche transversale sur operations, operateurs, SPV, fonds et documents.","parameters":[{"in":"query","name":"q","required":false,"schema":{"type":"string"},"example":"marko"},{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":5},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-search-global"}],"tags":["search"],"x-marko-route-group":"read","x-marko-required-scope":"search:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"query":"marko","groups":[],"total":0}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/search/content":{"get":{"operationId":"search_content","summary":"Recherche plein texte documentaire","description":"Recherche full-text dans le contenu documentaire indexé.","parameters":[{"in":"query","name":"q","required":false,"schema":{"type":"string"},"example":"covenant"},{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":10},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-search-content"}],"tags":["search"],"x-marko-route-group":"read","x-marko-required-scope":"search:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"query":"covenant","results":[],"total":0}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/operateurs":{"get":{"operationId":"operateurs_list","summary":"Lister les opérateurs","description":"Expose les opérateurs et leurs métadonnées principales. Utilisez `name` pour une correspondance exacte insensible à la casse ou `search` pour une recherche partielle; ces filtres sont mutuellement exclusifs.","parameters":[{"in":"query","name":"name","required":false,"schema":{"type":"string","maxLength":255},"description":"Nom exact, insensible à la casse et aux espaces périphériques; ne peut pas être combiné avec `search`.","example":"Promoteur Demo"},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":200,"default":20},"description":"Nombre maximal de résultats.","example":20},{"in":"query","name":"offset","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Décalage de pagination.","example":0},{"in":"query","name":"search","required":false,"schema":{"type":"string"},"description":"Recherche partielle littérale sur le nom ou le SIREN; ne peut pas être combinée avec `name`."},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operateurs-list"}],"tags":["operateurs"],"x-marko-route-group":"read","x-marko-required-scope":"operateurs:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"items":[{"id":"op_001","name":"Promoteur Demo","type":"promoteur"}],"total":1}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"post":{"operationId":"operateurs_create","summary":"Créer un opérateur","description":"Crée un opérateur dans l'entité.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operateurs-create"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["operateurs"],"x-marko-route-group":"write","x-marko-required-scope":"operateurs:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb","name":"Nouveau Promoteur"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"name":"Nouveau Promoteur","siren":"123456789","type":"promoteur"}}}}}},"/operateurs/external/{external_id}":{"get":{"operationId":"operateurs_external_get","summary":"Récupérer un opérateur par identifiant externe","description":"Résout l'identifiant stable du partenaire vers l'opérateur MARKO.","parameters":[{"in":"path","name":"external_id","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_~-][A-Za-z0-9._:~-]{0,254}$","minLength":1,"maxLength":255},"example":"CF-OPERATEUR-001"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operateurs-external-get"}],"tags":["operateurs"],"x-marko-route-group":"read","x-marko-required-scope":"operateurs:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Name"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Siren"},"type":{"anyOf":[{"description":"Type d'opérateur.","enum":["promoteur","marchand_de_biens","asset_manager","fonciere","entrepreneur_general"],"title":"OperateurType","type":"string"},{"type":"null"}],"default":null},"id":{"format":"uuid","title":"Id","type":"string"},"data":{"additionalProperties":true,"title":"Data","type":"object"},"source_extraction":{"title":"Source Extraction","type":"boolean"},"litiges_en_cours":{"title":"Litiges En Cours","type":"boolean"},"litiges_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Litiges Detail"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"updated_at":{"format":"date-time","title":"Updated At","type":"string"},"responsable_interne":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Responsable Interne"},"reputation_gouvernance_score":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Reputation Gouvernance Score"},"reputation_gouvernance_label":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Reputation Gouvernance Label"},"forme_societe_mere":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Forme Societe Mere"},"siren_mere":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Siren Mere"}},"required":["id","data","source_extraction","litiges_en_cours","created_at","updated_at"],"title":"OperateurResponse","type":"object"},"example":{"id":"aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa","name":"Promoteur Demo","siren":null,"data":{},"source_extraction":false,"litiges_en_cours":false,"created_at":"2026-08-22T08:00:00Z","updated_at":"2026-08-22T08:00:00Z"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"put":{"operationId":"operateurs_external_upsert","summary":"Créer ou mettre à jour un opérateur externe","description":"Upsert synchrone par identifiant partenaire, sans exiger de SIREN. Une ressource supprimée logiquement est restaurée avec le même UUID; existing_marko_id lie explicitement une cible existante lors du premier envoi.","parameters":[{"in":"path","name":"external_id","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_~-][A-Za-z0-9._:~-]{0,254}$","minLength":1,"maxLength":255},"example":"CF-OPERATEUR-001"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operateurs-external-upsert"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["operateurs"],"x-marko-route-group":"write","x-marko-required-scope":"operateurs:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"properties":{"external_id":{"title":"External Id","type":"string"},"marko_id":{"format":"uuid","title":"Marko Id","type":"string"},"outcome":{"enum":["created","updated","noop","restored","bound"],"title":"Outcome","type":"string"},"resource":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Name"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Siren"},"type":{"anyOf":[{"description":"Type d'opérateur.","enum":["promoteur","marchand_de_biens","asset_manager","fonciere","entrepreneur_general"],"title":"OperateurType","type":"string"},{"type":"null"}],"default":null},"id":{"format":"uuid","title":"Id","type":"string"},"data":{"additionalProperties":true,"title":"Data","type":"object"},"source_extraction":{"title":"Source Extraction","type":"boolean"},"litiges_en_cours":{"title":"Litiges En Cours","type":"boolean"},"litiges_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Litiges Detail"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"updated_at":{"format":"date-time","title":"Updated At","type":"string"},"responsable_interne":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Responsable Interne"},"reputation_gouvernance_score":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Reputation Gouvernance Score"},"reputation_gouvernance_label":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Reputation Gouvernance Label"},"forme_societe_mere":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Forme Societe Mere"},"siren_mere":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Siren Mere"}},"required":["id","data","source_extraction","litiges_en_cours","created_at","updated_at"],"title":"OperateurResponse","type":"object"},"taxonomy_additions":{"items":{"properties":{"parent_code":{"anyOf":[{"enum":["due_diligence","en_cours","en_recouvrement","termine"],"type":"string"},{"type":"null"}],"default":null,"title":"Parent Code"},"code":{"title":"Code","type":"string"},"dimension":{"enum":["operation_status","investment_type","operation_type","asset_class","internal_status","operational_status","follow_up_category"],"title":"Dimension","type":"string"},"display_label":{"title":"Display Label","type":"string"},"source_kind":{"enum":["marko","partner","entity"],"title":"Source Kind","type":"string"},"source_display_name":{"title":"Source Display Name","type":"string"},"is_visible":{"title":"Is Visible","type":"boolean"},"is_active":{"title":"Is Active","type":"boolean"},"position":{"title":"Position","type":"integer"},"usage_count":{"default":0,"title":"Usage Count","type":"integer"},"label_editable":{"title":"Label Editable","type":"boolean"},"canonical_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Canonical Code"},"icon_key":{"anyOf":[{"enum":["tag","briefcase","building","landmark","home","map","layers","shield","trending-up","calendar","circle-check","triangle-alert"],"type":"string"},{"type":"null"}],"default":null,"title":"Icon Key"}},"required":["code","dimension","display_label","source_kind","source_display_name","is_visible","is_active","position","label_editable"],"title":"EntityTaxonomyOptionResponse","type":"object"},"title":"Taxonomy Additions","type":"array"},"request_id":{"title":"Request Id","type":"string"}},"required":["external_id","marko_id","outcome","resource","request_id"],"title":"ExternalOperateurSyncUpsertResponse","type":"object"},"example":{"external_id":"CF-OPERATEUR-001","marko_id":"aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa","outcome":"created","resource":{"id":"aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa","name":"Promoteur Demo","data":{},"source_extraction":false,"litiges_en_cours":false,"created_at":"2026-08-22T08:00:00Z","updated_at":"2026-08-22T08:00:00Z"},"taxonomy_additions":[],"request_id":"req_cf_operateur_upsert"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"200":{"description":"Additional successful response","content":{"application/json":{"schema":{"properties":{"external_id":{"title":"External Id","type":"string"},"marko_id":{"format":"uuid","title":"Marko Id","type":"string"},"outcome":{"enum":["created","updated","noop","restored","bound"],"title":"Outcome","type":"string"},"resource":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Name"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Siren"},"type":{"anyOf":[{"description":"Type d'opérateur.","enum":["promoteur","marchand_de_biens","asset_manager","fonciere","entrepreneur_general"],"title":"OperateurType","type":"string"},{"type":"null"}],"default":null},"id":{"format":"uuid","title":"Id","type":"string"},"data":{"additionalProperties":true,"title":"Data","type":"object"},"source_extraction":{"title":"Source Extraction","type":"boolean"},"litiges_en_cours":{"title":"Litiges En Cours","type":"boolean"},"litiges_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Litiges Detail"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"updated_at":{"format":"date-time","title":"Updated At","type":"string"},"responsable_interne":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Responsable Interne"},"reputation_gouvernance_score":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Reputation Gouvernance Score"},"reputation_gouvernance_label":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Reputation Gouvernance Label"},"forme_societe_mere":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Forme Societe Mere"},"siren_mere":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Siren Mere"}},"required":["id","data","source_extraction","litiges_en_cours","created_at","updated_at"],"title":"OperateurResponse","type":"object"},"taxonomy_additions":{"items":{"properties":{"parent_code":{"anyOf":[{"enum":["due_diligence","en_cours","en_recouvrement","termine"],"type":"string"},{"type":"null"}],"default":null,"title":"Parent Code"},"code":{"title":"Code","type":"string"},"dimension":{"enum":["operation_status","investment_type","operation_type","asset_class","internal_status","operational_status","follow_up_category"],"title":"Dimension","type":"string"},"display_label":{"title":"Display Label","type":"string"},"source_kind":{"enum":["marko","partner","entity"],"title":"Source Kind","type":"string"},"source_display_name":{"title":"Source Display Name","type":"string"},"is_visible":{"title":"Is Visible","type":"boolean"},"is_active":{"title":"Is Active","type":"boolean"},"position":{"title":"Position","type":"integer"},"usage_count":{"default":0,"title":"Usage Count","type":"integer"},"label_editable":{"title":"Label Editable","type":"boolean"},"canonical_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Canonical Code"},"icon_key":{"anyOf":[{"enum":["tag","briefcase","building","landmark","home","map","layers","shield","trending-up","calendar","circle-check","triangle-alert"],"type":"string"},{"type":"null"}],"default":null,"title":"Icon Key"}},"required":["code","dimension","display_label","source_kind","source_display_name","is_visible","is_active","position","label_editable"],"title":"EntityTaxonomyOptionResponse","type":"object"},"title":"Taxonomy Additions","type":"array"},"request_id":{"title":"Request Id","type":"string"}},"required":["external_id","marko_id","outcome","resource","request_id"],"title":"ExternalOperateurSyncUpsertResponse","type":"object"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Name"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Siren"},"type":{"anyOf":[{"description":"Type d'opérateur.","enum":["promoteur","marchand_de_biens","asset_manager","fonciere","entrepreneur_general"],"title":"OperateurType","type":"string"},{"type":"null"}],"default":null},"data":{"additionalProperties":true,"title":"Data","type":"object"},"existing_marko_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Existing Marko Id"}},"title":"ExternalOperateurUpsertRequest","type":"object"},"example":{"name":"Promoteur Demo","type":"promoteur","data":{}}}}}}},"/operateurs/{operateur_id}":{"get":{"operationId":"operateurs_get","summary":"Récupérer un opérateur","description":"Retourne le détail d'un opérateur.","parameters":[{"in":"path","name":"operateur_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operateurs-get"}],"tags":["operateurs"],"x-marko-route-group":"read","x-marko-required-scope":"operateurs:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa","name":"Promoteur Demo"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"put":{"operationId":"operateurs_update","summary":"Mettre à jour un opérateur","description":"Met à jour l'identité ou les données d'un opérateur.","parameters":[{"in":"path","name":"operateur_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operateurs-update"}],"tags":["operateurs"],"x-marko-route-group":"write","x-marko-required-scope":"operateurs:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa","name":"Promoteur Demo Updated"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"name":"Promoteur Demo Updated"}}}}},"delete":{"operationId":"operateurs_delete","summary":"Supprimer un opérateur","description":"Supprime logiquement un opérateur.","parameters":[{"in":"path","name":"operateur_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operateurs-delete"}],"tags":["operateurs"],"x-marko-route-group":"write","x-marko-required-scope":"operateurs:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"204":{"description":"Successful response"},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/operateurs/{operateur_id}/third-party-risks":{"get":{"operationId":"operateurs_third-party-risks_list","summary":"Lister les risques tiers d'un opérateur","description":"Expose les événements de surveillance tiers rattachés à un opérateur.","parameters":[{"in":"path","name":"operateur_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"},{"in":"query","name":"active_only","required":false,"schema":{"type":"string"},"example":true},{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":20},{"in":"query","name":"offset","required":false,"schema":{"type":"string"},"example":0},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operateurs-third-party-risks-list"}],"tags":["operateurs"],"x-marko-route-group":"read","x-marko-required-scope":"third_party_risks:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"items":[{"id":"risk_001","severity":"warning","title":"Publication BODACC"}],"total":1}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"post":{"operationId":"operateurs_third-party-risks_create","summary":"Créer un événement de risque tiers","description":"Ajoute manuellement un événement de risque tiers pour un opérateur.","parameters":[{"in":"path","name":"operateur_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operateurs-third-party-risks-create"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["operateurs"],"x-marko-route-group":"write","x-marko-required-scope":"third_party_risks:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"risk_001","title":"Alerte manuelle","severity":"warning"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"operateur_id":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa","source":"manual","event_type":"watchlist","severity":"warning","title":"Alerte manuelle"}}}}}},"/operateurs/{operateur_id}/third-party-risks/summary":{"get":{"operationId":"operateurs_third-party-risks_summary","summary":"Résumé des risques tiers","description":"Retourne le score de risque tiers et les compteurs agrégés d'un opérateur.","parameters":[{"in":"path","name":"operateur_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operateurs-third-party-risks-summary"}],"tags":["operateurs"],"x-marko-route-group":"read","x-marko-required-scope":"third_party_risks:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"operateur_id":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa","active_events":1,"risk_score":42.0}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/operateurs/{operateur_id}/third-party-risks/{event_id}/resolve":{"post":{"operationId":"operateurs_third-party-risks_resolve","summary":"Résoudre un risque tiers","description":"Marque un événement tiers comme résolu.","parameters":[{"in":"path","name":"operateur_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"},{"in":"path","name":"event_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operateurs-third-party-risks-resolve"}],"tags":["operateurs"],"x-marko-route-group":"write","x-marko-required-scope":"third_party_risks:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb","is_resolved":true}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"resolved_at":"2026-04-13T10:00:00Z"}}}}}},"/alerts":{"get":{"operationId":"alerts_list","summary":"Lister les alertes","description":"Expose la projection alertes de l'entité avec filtres.","parameters":[{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":20},{"in":"query","name":"offset","required":false,"schema":{"type":"string"},"example":0},{"in":"query","name":"active_only","required":false,"schema":{"type":"string"},"example":true},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-alerts-list"}],"tags":["alerts"],"x-marko-route-group":"read","x-marko-required-scope":"alerts:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"items":[{"id":"alert_001","title":"Covenant en alerte","severity":"critical"}],"total":1}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/alerts/{alert_id}":{"get":{"operationId":"alerts_get","summary":"Récupérer une alerte","description":"Retourne une alerte unitaire.","parameters":[{"in":"path","name":"alert_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-1111-1111-1111-111111111111"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-alerts-get"}],"tags":["alerts"],"x-marko-route-group":"read","x-marko-required-scope":"alerts:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"aaaaaaaa-1111-1111-1111-111111111111","title":"Covenant en alerte"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/alerts/{alert_id}/actions/acknowledge":{"post":{"operationId":"alerts_acknowledge","summary":"Accuser réception d'une alerte","description":"Passe l'alerte au statut acknowledged.","parameters":[{"in":"path","name":"alert_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-1111-1111-1111-111111111111"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-alerts-acknowledge"}],"tags":["alerts"],"x-marko-route-group":"write","x-marko-required-scope":"alerts:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"aaaaaaaa-1111-1111-1111-111111111111","alert_status":"acknowledged"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/alerts/{alert_id}/actions/resolve":{"post":{"operationId":"alerts_resolve","summary":"Résoudre une alerte","description":"Passe l'alerte au statut resolved.","parameters":[{"in":"path","name":"alert_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-1111-1111-1111-111111111111"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-alerts-resolve"}],"tags":["alerts"],"x-marko-route-group":"write","x-marko-required-scope":"alerts:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"aaaaaaaa-1111-1111-1111-111111111111","alert_status":"resolved"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/alerts/{alert_id}/actions/snooze":{"post":{"operationId":"alerts_snooze","summary":"Mettre une alerte en snooze","description":"Snooze une alerte pour quelques jours.","parameters":[{"in":"path","name":"alert_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-1111-1111-1111-111111111111"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-alerts-snooze"}],"tags":["alerts"],"x-marko-route-group":"write","x-marko-required-scope":"alerts:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"aaaaaaaa-1111-1111-1111-111111111111","alert_status":"snoozed"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"days":7}}}}}},"/notifications":{"get":{"operationId":"notifications_list","summary":"Lister les notifications","description":"Expose les notifications de l'entité.","parameters":[{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":20},{"in":"query","name":"offset","required":false,"schema":{"type":"string"},"example":0},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-notifications-list"}],"tags":["notifications"],"x-marko-route-group":"read","x-marko-required-scope":"notifications:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"items":[{"id":"notif_001","title":"Nouveau document","read":false}],"total":1}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"post":{"operationId":"notifications_create","summary":"Créer une notification","description":"Crée une notification ciblée dans l'entité.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-notifications-create"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["notifications"],"x-marko-route-group":"write","x-marko-required-scope":"notifications:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"dddddddd-dddd-dddd-dddd-dddddddddddd","title":"Push partenaire"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"type":"custom","severity":"info","title":"Push partenaire","target_url":"/dashboard"}}}}}},"/notifications/unread-count":{"get":{"operationId":"notifications_unread-count","summary":"Compter les notifications non lues","description":"Retourne le compteur unread et le flag critique.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-notifications-unread-count"}],"tags":["notifications"],"x-marko-route-group":"read","x-marko-required-scope":"notifications:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"count":3,"has_critical":true}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/notifications/{notification_id}":{"get":{"operationId":"notifications_get","summary":"Récupérer une notification","description":"Retourne une notification unitaire.","parameters":[{"in":"path","name":"notification_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"cccccccc-cccc-cccc-cccc-cccccccccccc"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-notifications-get"}],"tags":["notifications"],"x-marko-route-group":"read","x-marko-required-scope":"notifications:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"cccccccc-cccc-cccc-cccc-cccccccccccc","title":"Nouveau document","read":false}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"delete":{"operationId":"notifications_delete","summary":"Supprimer une notification","description":"Supprime une notification de l'entité.","parameters":[{"in":"path","name":"notification_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"cccccccc-cccc-cccc-cccc-cccccccccccc"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-notifications-delete"}],"tags":["notifications"],"x-marko-route-group":"write","x-marko-required-scope":"notifications:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"204":{"description":"Successful response"},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/notifications/{notification_id}/actions/read":{"post":{"operationId":"notifications_mark-read","summary":"Marquer une notification comme lue","description":"Passe le drapeau read à true.","parameters":[{"in":"path","name":"notification_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"cccccccc-cccc-cccc-cccc-cccccccccccc"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-notifications-mark-read"}],"tags":["notifications"],"x-marko-route-group":"write","x-marko-required-scope":"notifications:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"cccccccc-cccc-cccc-cccc-cccccccccccc","read":true}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/notifications/actions/read-all":{"post":{"operationId":"notifications_read-all","summary":"Marquer tout comme lu","description":"Marque toutes les notifications comme lues.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-notifications-read-all"}],"tags":["notifications"],"x-marko-route-group":"write","x-marko-required-scope":"notifications:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"marked_read":12}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/notifications/{notification_id}/actions/false-positive":{"post":{"operationId":"notifications_false-positive","summary":"Qualifier un faux positif","description":"Marque une notification comme faux positif sans la supprimer.","parameters":[{"in":"path","name":"notification_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"cccccccc-cccc-cccc-cccc-cccccccccccc"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-notifications-false-positive"}],"tags":["notifications"],"x-marko-route-group":"write","x-marko-required-scope":"notifications:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"cccccccc-cccc-cccc-cccc-cccccccccccc","was_false_positive":true}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/calendar/events":{"get":{"operationId":"calendar_list","summary":"Lister les événements calendrier","description":"Expose les échéances et événements persistés de l'entité.","parameters":[{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":20},{"in":"query","name":"offset","required":false,"schema":{"type":"string"},"example":0},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-calendar-list"}],"tags":["calendar"],"x-marko-route-group":"read","x-marko-required-scope":"calendar:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"items":[{"id":"evt_001","title":"AG annuelle","event_type":"ag_date"}],"total":1}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"post":{"operationId":"calendar_create","summary":"Créer un événement calendrier","description":"Crée un événement manuel ou IA persisté.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-calendar-create"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["calendar"],"x-marko-route-group":"write","x-marko-required-scope":"calendar:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeef","title":"AG annuelle"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"title":"AG annuelle","event_date":"2026-06-30","event_type":"ag_date","source":"manual"}}}}}},"/calendar/events/{event_id}":{"get":{"operationId":"calendar_get","summary":"Récupérer un événement calendrier","description":"Retourne un événement calendrier unitaire.","parameters":[{"in":"path","name":"event_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-calendar-get"}],"tags":["calendar"],"x-marko-route-group":"read","x-marko-required-scope":"calendar:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee","title":"AG annuelle"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"put":{"operationId":"calendar_update","summary":"Mettre à jour un événement calendrier","description":"Met à jour un événement calendrier.","parameters":[{"in":"path","name":"event_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-calendar-update"}],"tags":["calendar"],"x-marko-route-group":"write","x-marko-required-scope":"calendar:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee","title":"AG annuelle validée"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"title":"AG annuelle validée"}}}}},"delete":{"operationId":"calendar_delete","summary":"Supprimer un événement calendrier","description":"Supprime un événement calendrier.","parameters":[{"in":"path","name":"event_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-calendar-delete"}],"tags":["calendar"],"x-marko-route-group":"write","x-marko-required-scope":"calendar:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"204":{"description":"Successful response"},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/calendar/events/{event_id}/actions/accept":{"post":{"operationId":"calendar_accept","summary":"Accepter un événement IA","description":"Accepte un événement proposé.","parameters":[{"in":"path","name":"event_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-calendar-accept"}],"tags":["calendar"],"x-marko-route-group":"write","x-marko-required-scope":"calendar:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee","accepted":true}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/calendar/events/{event_id}/actions/reject":{"post":{"operationId":"calendar_reject","summary":"Rejeter un événement IA","description":"Rejette un événement proposé.","parameters":[{"in":"path","name":"event_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-calendar-reject"}],"tags":["calendar"],"x-marko-route-group":"write","x-marko-required-scope":"calendar:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee","accepted":false}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/enrichment/siren/{siren}":{"get":{"operationId":"enrichment_siren","summary":"Lire les données société locales par SIREN","description":"Retourne uniquement les données déjà en cache ou présentes dans la base locale. Cet endpoint de lecture ne déclenche aucun appel facturable.","parameters":[{"in":"path","name":"siren","required":true,"schema":{"type":"string"},"example":"552120222"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-enrichment-siren"}],"tags":["enrichment"],"x-marko-route-group":"read","x-marko-required-scope":"operateurs:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"success":true,"data":{"siren":"552120222","raison_sociale":"Societe Generale","forme_juridique":"SA","source":"manual","is_radiee":false},"cached":false,"error":null}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/enrichment/siren/{siren}/resolve":{"post":{"operationId":"enrichment_siren_resolve","summary":"Résoudre une société par SIREN via Pappers","description":"Résout d'abord les données locales puis réserve de façon idempotente tout appel Pappers facturable. Requiert le header Idempotency-Key.","parameters":[{"in":"path","name":"siren","required":true,"schema":{"type":"string"},"example":"552120222"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-enrichment-siren-resolve"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["enrichment"],"x-marko-route-group":"write","x-marko-required-scope":"operateurs:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"success":true,"data":{"siren":"552120222","raison_sociale":"Societe Generale","forme_juridique":"SA","source":"pappers","is_radiee":false},"cached":false,"error":null}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/enrichment/siren/{siren}/validate":{"get":{"operationId":"enrichment_siren_validate","summary":"Valider un SIREN","description":"Vérifie le format et le checksum Luhn d'un SIREN sans appeler un provider externe.","parameters":[{"in":"path","name":"siren","required":true,"schema":{"type":"string"},"example":"552120222"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-enrichment-siren-validate"}],"tags":["enrichment"],"x-marko-route-group":"read","x-marko-required-scope":"operateurs:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"siren":"552120222","valid":true,"luhn_valid":true,"message":null}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/enrichment/siren/{siren}/cache":{"delete":{"operationId":"enrichment_siren_invalidate-cache","summary":"Invalider le cache SIREN","description":"Supprime l'entrée de cache. Une nouvelle résolution provider exige ensuite POST /v1/enrichment/siren/{siren}/resolve.","parameters":[{"in":"path","name":"siren","required":true,"schema":{"type":"string"},"example":"552120222"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-enrichment-siren-invalidate-cache"}],"tags":["enrichment"],"x-marko-route-group":"write","x-marko-required-scope":"operateurs:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"204":{"description":"Successful response"},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/operations/{operation_id}/repayments":{"get":{"operationId":"operations_repayments_list","summary":"Lister l'historique de remboursements","description":"Retourne les remboursements saisis sur une opération avec pagination.","parameters":[{"in":"path","name":"operation_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"44444444-4444-4444-4444-444444444444"},{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":20},{"in":"query","name":"offset","required":false,"schema":{"type":"string"},"example":0},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operations-repayments-list"}],"tags":["operations"],"x-marko-route-group":"read","x-marko-required-scope":"operations:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"items":[{"id":"99999999-9999-9999-9999-999999999999","operation_id":"44444444-4444-4444-4444-444444444444","date":"2026-03-31","principal":"50000.00","interest":"4200.00","total":"54200.00","remaining_balance":"950000.00","source":"manual"}],"total":1,"limit":20,"offset":0}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"post":{"operationId":"operations_repayments_create","summary":"Créer un remboursement","description":"Enregistre un remboursement sur une opération.","parameters":[{"in":"path","name":"operation_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"44444444-4444-4444-4444-444444444444"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-operations-repayments-create"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["operations"],"x-marko-route-group":"write","x-marko-required-scope":"operations:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"99999999-9999-9999-9999-999999999999","operation_id":"44444444-4444-4444-4444-444444444444","date":"2026-03-31","principal":"50000.00","interest":"4200.00","total":"54200.00","remaining_balance":"950000.00","source":"manual"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"date":"2026-03-31","principal":"50000.00","interest":"4200.00","total":"54200.00","remaining_balance":"950000.00","source":"manual"}}}}}},"/reports/inrev":{"get":{"operationId":"reports_inrev","summary":"Exporter le reporting INREV","description":"Génère le classeur INREV standard de l'entité au format XLSX.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-reports-inrev"}],"tags":["reports"],"x-marko-route-group":"read","x-marko-required-scope":"reporting:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","format":"binary"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/reporting/templates":{"get":{"operationId":"reporting_list","summary":"Lister les templates de reporting","description":"Expose les templates de reporting configurés pour l'entité.","parameters":[{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":20},{"in":"query","name":"offset","required":false,"schema":{"type":"string"},"example":0},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-reporting-list"}],"tags":["reporting"],"x-marko-route-group":"read","x-marko-required-scope":"reporting:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"items":[{"id":"tpl_001","name":"Quarterly Pack","template_type":"quarterly"}],"total":1}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"post":{"operationId":"reporting_create","summary":"Créer un template de reporting","description":"Crée un template de reporting personnalisé.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-reporting-create"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["reporting"],"x-marko-route-group":"write","x-marko-required-scope":"reporting:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"ffffffff-ffff-ffff-ffff-fffffffffffe","name":"Quarterly Pack"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"name":"Quarterly Pack","template_type":"quarterly","format":"pdf"}}}}}},"/reporting/templates/{template_id}":{"get":{"operationId":"reporting_get","summary":"Récupérer un template de reporting","description":"Retourne le détail d'un template de reporting.","parameters":[{"in":"path","name":"template_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"ffffffff-ffff-ffff-ffff-ffffffffffff"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-reporting-get"}],"tags":["reporting"],"x-marko-route-group":"read","x-marko-required-scope":"reporting:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"ffffffff-ffff-ffff-ffff-ffffffffffff","name":"Quarterly Pack"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"put":{"operationId":"reporting_update","summary":"Mettre à jour un template de reporting","description":"Met à jour un template existant.","parameters":[{"in":"path","name":"template_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"ffffffff-ffff-ffff-ffff-ffffffffffff"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-reporting-update"}],"tags":["reporting"],"x-marko-route-group":"write","x-marko-required-scope":"reporting:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"ffffffff-ffff-ffff-ffff-ffffffffffff","name":"Quarterly Pack v2"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"name":"Quarterly Pack v2"}}}}},"delete":{"operationId":"reporting_delete","summary":"Supprimer un template de reporting","description":"Supprime un template de reporting non système.","parameters":[{"in":"path","name":"template_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"ffffffff-ffff-ffff-ffff-ffffffffffff"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-reporting-delete"}],"tags":["reporting"],"x-marko-route-group":"write","x-marko-required-scope":"reporting:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"204":{"description":"Successful response"},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/reporting/templates/{template_id}/preview":{"get":{"operationId":"reporting_preview","summary":"Prévisualiser un template de reporting","description":"Retourne un aperçu tabulaire d'un template.","parameters":[{"in":"path","name":"template_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"ffffffff-ffff-ffff-ffff-ffffffffffff"},{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":10},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-reporting-preview"}],"tags":["reporting"],"x-marko-route-group":"read","x-marko-required-scope":"reporting:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"headers":["operation_name","status"],"rows":[{"operation_name":"Demo Deal","status":"instruction"}]}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/workflows/presets":{"get":{"operationId":"workflows_presets","summary":"Lister les presets de workflows","description":"Expose les presets d'automatisation supportés.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-workflows-presets"}],"tags":["workflows"],"x-marko-route-group":"read","x-marko-required-scope":"workflows:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":[{"key":"kpi-monthly-snapshot","label":"Snapshot KPI mensuel"}]}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/workflows":{"get":{"operationId":"workflows_list","summary":"Lister les workflows","description":"Expose les automatisations système et personnalisées de l'entité.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-workflows-list"}],"tags":["workflows"],"x-marko-route-group":"read","x-marko-required-scope":"workflows:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":[{"id":"kpi-monthly-snapshot","enabled":true}]}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/workflows/{workflow_id}/actions/toggle":{"post":{"operationId":"workflows_toggle","summary":"Activer ou désactiver un workflow","description":"Bascule l'état d'un workflow système ou personnalisé.","parameters":[{"in":"path","name":"workflow_id","required":true,"schema":{"type":"string"},"example":"kpi-monthly-snapshot"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-workflows-toggle"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["workflows"],"x-marko-route-group":"write","x-marko-required-scope":"workflows:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"kpi-monthly-snapshot","enabled":false}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/workflows/workflow-definitions":{"post":{"operationId":"workflows_create","summary":"Créer un workflow personnalisé","description":"Crée une définition de workflow personnalisée.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-workflows-create"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["workflows"],"x-marko-route-group":"write","x-marko-required-scope":"workflows:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"custom-workflow-1","custom":true}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"name":"Run closing kickoff tasks","preset_key":"closing_kickoff_tasks"}}}}}},"/workflows/workflow-definitions/{definition_id}":{"put":{"operationId":"workflows_update","summary":"Mettre à jour un workflow personnalisé","description":"Met à jour une définition de workflow personnalisée.","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"type":"string"},"example":"custom-workflow-1"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-workflows-update"}],"tags":["workflows"],"x-marko-route-group":"write","x-marko-required-scope":"workflows:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"custom-workflow-1","description":"Workflow updated by smoke runner"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"description":"Workflow updated by smoke runner"}}}}},"delete":{"operationId":"workflows_delete","summary":"Supprimer un workflow personnalisé","description":"Supprime une définition de workflow personnalisée.","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"type":"string"},"example":"custom-workflow-1"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-workflows-delete"}],"tags":["workflows"],"x-marko-route-group":"write","x-marko-required-scope":"workflows:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"204":{"description":"Successful response"},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/workflows/workflow-definitions/{definition_id}/run":{"post":{"operationId":"workflows_run","summary":"Lancer un workflow maintenant","description":"Déclenche une exécution manuelle d'un workflow personnalisé.","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"type":"string"},"example":"custom-workflow-1"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-workflows-run"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["workflows"],"x-marko-route-group":"write","x-marko-required-scope":"workflows:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"202":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"workflow":{"id":"custom-workflow-1"},"run":{"status":"queued"}}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/workflows/ai-extraction-jobs":{"post":{"operationId":"workflows_ai-extraction-jobs_create","summary":"Créer un job AI extraction","description":"Place un job d'extraction IA dans la file gouvernée pour un document.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-workflows-ai-extraction-jobs-create"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["workflows"],"x-marko-route-group":"write","x-marko-required-scope":"ai_extraction:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"202":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"job_001","status":"queued"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"document_id":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa","operation_id":null,"run_now":false}}}}},"get":{"operationId":"workflows_ai-extraction-jobs_list","summary":"Lister les jobs AI extraction","description":"Expose les jobs d'extraction IA de l'entité.","parameters":[{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":20},{"in":"query","name":"offset","required":false,"schema":{"type":"string"},"example":0},{"in":"query","name":"status","required":false,"schema":{"type":"string"},"example":"completed"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-workflows-ai-extraction-jobs-list"}],"tags":["workflows"],"x-marko-route-group":"read","x-marko-required-scope":"ai_extraction:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"items":[{"id":"job_001","status":"completed"}],"total":1}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/workflows/ai-extraction-jobs/{job_id}":{"get":{"operationId":"workflows_ai-extraction-jobs_get","summary":"Récupérer un job AI extraction","description":"Retourne le détail d'un job d'extraction IA.","parameters":[{"in":"path","name":"job_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-workflows-ai-extraction-jobs-get"}],"tags":["workflows"],"x-marko-route-group":"read","x-marko-required-scope":"ai_extraction:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa","status":"completed"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/workflows/history":{"get":{"operationId":"workflows_history","summary":"Lister l'historique workflows","description":"Expose l'historique d'exécution des jobs et workflows.","parameters":[{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":20},{"in":"query","name":"offset","required":false,"schema":{"type":"string"},"example":0},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-workflows-history"}],"tags":["workflows"],"x-marko-route-group":"read","x-marko-required-scope":"workflows:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"items":[{"run_id":"run_001","status":"completed"}],"total":1}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/workflows/stats":{"get":{"operationId":"workflows_stats","summary":"Statistiques workflows","description":"Expose un résumé des exécutions workflows.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-workflows-stats"}],"tags":["workflows"],"x-marko-route-group":"read","x-marko-required-scope":"workflows:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"system_total":12,"system_completed":10,"custom_total":2}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/workflows/recommendations":{"get":{"operationId":"workflows_recommendations","summary":"Lister les recommandations d'automatisation","description":"Expose les recommandations d'automatisation calculées pour l'entité.","parameters":[{"in":"query","name":"scope_type","required":false,"schema":{"type":"string"},"example":"entity"},{"in":"query","name":"only_high_priority","required":false,"schema":{"type":"string"},"example":false},{"in":"query","name":"include_dismissed","required":false,"schema":{"type":"string"},"example":false},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-workflows-recommendations"}],"tags":["workflows"],"x-marko-route-group":"read","x-marko-required-scope":"workflows:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"scope_type":"entity","scope_label":"Entity","items":[],"bundles":[],"kpis":{"recommendations_total":0}}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/workflows/recommendations/preview":{"post":{"operationId":"workflows_recommendations-preview","summary":"Prévisualiser les recommandations d'automatisation","description":"Calcule une vue de recommandations sans persister d'état serveur.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-workflows-recommendations-preview"}],"tags":["workflows"],"x-marko-route-group":"read","x-marko-required-scope":"workflows:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"scope_type":"entity","scope_label":"Entity","items":[],"bundles":[],"kpis":{"recommendations_total":0}}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"scope_type":"entity","scope_id":null,"only_high_priority":false,"include_dismissed":false}}}}}},"/workflows/recommendations/materialize":{"post":{"operationId":"workflows_recommendations_materialize","summary":"Préparer une recommandation pour décision","description":"Persiste une seule recommandation prévisualisée avant acceptation, report ou rejet.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-workflows-recommendations-materialize"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["workflows"],"x-marko-route-group":"write","x-marko-required-scope":"workflows:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee","status":"proposed"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"scope_type":"entity","scope_id":null,"bundle_key":"reporting","workflow_key":"reporting_sponsor_escalation"}}}}}},"/workflows/recommendations/{recommendation_id}/accept":{"post":{"operationId":"workflows_recommendations_accept","summary":"Accepter une recommandation","description":"Acquitte une recommandation d'automatisation côté entité.","parameters":[{"in":"path","name":"recommendation_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-workflows-recommendations-accept"}],"tags":["workflows"],"x-marko-route-group":"write","x-marko-required-scope":"workflows:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee","status":"accepted"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"note":"Automatisation validée"}}}}}},"/workflows/recommendations/{recommendation_id}/dismiss":{"post":{"operationId":"workflows_recommendations_dismiss","summary":"Rejeter une recommandation","description":"Classe une recommandation comme non pertinente.","parameters":[{"in":"path","name":"recommendation_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-workflows-recommendations-dismiss"}],"tags":["workflows"],"x-marko-route-group":"write","x-marko-required-scope":"workflows:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee","status":"dismissed"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"note":"Pas adapté","reason":"context_mismatch"}}}}}},"/workflows/recommendations/{recommendation_id}/snooze":{"post":{"operationId":"workflows_recommendations_snooze","summary":"Reporter une recommandation","description":"Snooze une recommandation pendant quelques jours ou jusqu'à une date donnée.","parameters":[{"in":"path","name":"recommendation_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-workflows-recommendations-snooze"}],"tags":["workflows"],"x-marko-route-group":"write","x-marko-required-scope":"workflows:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee","status":"snoozed"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"days":14}}}}}},"/workflows/recommendations/{recommendation_id}/create-workflow":{"post":{"operationId":"workflows_recommendations_create-workflow","summary":"Créer un workflow depuis une recommandation","description":"Instancie un workflow personnalisé prérempli à partir d'une recommandation validée.","parameters":[{"in":"path","name":"recommendation_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-workflows-recommendations-create-workflow"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["workflows"],"x-marko-route-group":"write","x-marko-required-scope":"workflows:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"custom-1234","custom":true,"enabled":true}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/tasks":{"get":{"operationId":"tasks_aggregate","summary":"Lister les tâches agrégées","description":"Expose les tâches Kanban agrégées de l'entité.","parameters":[{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"example":20},{"in":"query","name":"offset","required":false,"schema":{"type":"string"},"example":0},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-tasks-aggregate"}],"tags":["tasks"],"x-marko-route-group":"read","x-marko-required-scope":"tasks:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"items":[{"id":"task_001","label":"Relancer opérateur"}],"total":1}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/operations/{operation_id}/tasks":{"get":{"operationId":"tasks_list","summary":"Lister les tâches d'une opération","description":"Expose les tâches Kanban d'une opération donnée.","parameters":[{"in":"path","name":"operation_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"44444444-4444-4444-4444-444444444444"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-tasks-list"}],"tags":["tasks"],"x-marko-route-group":"read","x-marko-required-scope":"tasks:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":[{"id":"task_001","label":"Relancer opérateur"}]}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"post":{"operationId":"tasks_create","summary":"Créer une tâche","description":"Crée une tâche Kanban pour une opération.","parameters":[{"in":"path","name":"operation_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"44444444-4444-4444-4444-444444444444"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-tasks-create"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["tasks"],"x-marko-route-group":"write","x-marko-required-scope":"tasks:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"11111111-aaaa-bbbb-cccc-222222222223","titre":"Relancer opérateur"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"titre":"Relancer opérateur","statut":"todo"}}}}}},"/tasks/{task_id}":{"get":{"operationId":"tasks_get","summary":"Récupérer une tâche","description":"Retourne une tâche Kanban unitaire.","parameters":[{"in":"path","name":"task_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"11111111-aaaa-bbbb-cccc-222222222222"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-tasks-get"}],"tags":["tasks"],"x-marko-route-group":"read","x-marko-required-scope":"tasks:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"11111111-aaaa-bbbb-cccc-222222222222","label":"Relancer opérateur"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"put":{"operationId":"tasks_update","summary":"Mettre à jour une tâche","description":"Met à jour une tâche Kanban.","parameters":[{"in":"path","name":"task_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"11111111-aaaa-bbbb-cccc-222222222222"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-tasks-update"}],"tags":["tasks"],"x-marko-route-group":"write","x-marko-required-scope":"tasks:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"11111111-aaaa-bbbb-cccc-222222222222","statut":"prep"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"statut":"prep"}}}}},"delete":{"operationId":"tasks_delete","summary":"Archiver une tâche","description":"Archive une tâche Kanban.","parameters":[{"in":"path","name":"task_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"11111111-aaaa-bbbb-cccc-222222222222"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-tasks-delete"}],"tags":["tasks"],"x-marko-route-group":"write","x-marko-required-scope":"tasks:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"204":{"description":"Successful response"},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}},"/tasks/reorder":{"put":{"operationId":"tasks_reorder","summary":"Réordonner une tâche","description":"Déplace une tâche dans le board Kanban.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-tasks-reorder"}],"tags":["tasks"],"x-marko-route-group":"write","x-marko-required-scope":"tasks:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"11111111-aaaa-bbbb-cccc-222222222222","statut":"in_progress"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"task_id":"11111111-aaaa-bbbb-cccc-222222222222","new_status":"in_progress","new_sort_order":2}}}}}},"/tasks/labels":{"get":{"operationId":"tasks_labels","summary":"Lister les labels de tâches","description":"Expose les labels Kanban disponibles.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-tasks-labels"}],"tags":["tasks"],"x-marko-route-group":"read","x-marko-required-scope":"tasks:read","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{},"example":[{"id":"label_001","name":"Urgent"}]}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]},"post":{"operationId":"tasks_labels-create","summary":"Créer un label de tâche","description":"Crée un label Kanban.","parameters":[{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-tasks-labels-create"},{"in":"header","name":"Idempotency-Key","required":true,"description":"Required for every write, including environments where replay deduplication is disabled. Reuse the same value when retrying the same logical write and use a new value for a different write.","schema":{"type":"string","maxLength":255,"pattern":"^[!-~]+$"}}],"tags":["tasks"],"x-marko-route-group":"write","x-marko-required-scope":"tasks:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{},"example":{"id":"label_001","name":"Urgent"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}},"400":{"description":"Invalid Idempotency-Key header","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Bad Request","status":400,"detail":"Idempotency-Key must contain at most 255 visible ASCII characters without spaces.","request_id":"req_example_partner_call"}}}},"409":{"description":"Idempotency or write target conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Conflict","status":409,"detail":"The idempotency key payload, external reference, target, or source conflicts with an existing write.","request_id":"req_example_partner_call"}}}},"428":{"description":"Required Idempotency-Key header is missing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Precondition Required","status":428,"detail":"The Idempotency-Key header is required.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"name":"Urgent","color":"#ef4444"}}}}}},"/tasks/labels/{label_id}":{"delete":{"operationId":"tasks_labels-delete","summary":"Supprimer un label de tâche","description":"Supprime un label Kanban.","parameters":[{"in":"path","name":"label_id","required":true,"schema":{"type":"string","format":"uuid"},"example":"22222222-bbbb-cccc-dddd-333333333333"},{"in":"header","name":"X-Request-ID","required":false,"description":"Partner-generated correlation identifier echoed in logs and error payloads.","schema":{"type":"string"},"example":"marko-tasks-labels-delete"}],"tags":["tasks"],"x-marko-route-group":"write","x-marko-required-scope":"tasks:write","x-marko-stability":"ga","x-marko-audience":"partner","deprecated":false,"responses":{"204":{"description":"Successful response"},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unauthorized","status":401,"detail":"A valid bearer token is required.","request_id":"req_example_partner_call"}}}},"403":{"description":"Scope, route or IP restriction","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Forbidden","status":403,"detail":"The API key does not allow this operation.","request_id":"req_example_partner_call"}}}},"422":{"description":"Validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Unprocessable Content","status":422,"detail":"The request payload or parameters are invalid.","request_id":"req_example_partner_call"}}}},"429":{"description":"Rate limit or progressive ban","headers":{"Retry-After":{"description":"Cooldown in seconds before retrying the request.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Too Many Requests","status":429,"detail":"The request rate limit was exceeded.","request_id":"req_example_partner_call"}}}},"500":{"description":"Unexpected server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"},"example":{"type":"about:blank","title":"Internal Server Error","status":500,"detail":"An unexpected server error occurred.","request_id":"req_example_partner_call"}}}}},"security":[{"BearerAuth":[]}]}}}}