[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"doc-\u002Fen\u002Fdocs\u002Fsecurite\u002Faudit-rgpd":3,"docs-nav-en":399},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"body":10,"_type":393,"_id":394,"_source":395,"_file":396,"_stem":397,"_extension":398},"\u002Fen\u002Fdocs\u002Fsecurite\u002Faudit-rgpd","securite",false,"","GDPR audit & access log","How betool traces cross-tenant access to user content and supports the right of access (Article 15) and the right to erasure (Article 17).",{"type":11,"children":12,"toc":383},"root",[13,21,28,33,110,129,135,154,163,168,173,179,192,205,211,233,256,266,272,284,290,302,307,313,332,378],{"type":14,"tag":15,"props":16,"children":17},"element","p",{},[18],{"type":19,"value":20},"text","betool is built to meet GDPR requirements without bolted-on compliance: every access to user content by an agent belonging to another organisation is logged, and every organisation can consult its own log.",{"type":14,"tag":22,"props":23,"children":25},"h2",{"id":24},"the-access-log",[26],{"type":19,"value":27},"The access log",{"type":14,"tag":15,"props":29,"children":30},{},[31],{"type":19,"value":32},"A dedicated table records, for each cross-tenant access:",{"type":14,"tag":34,"props":35,"children":36},"ul",{},[37,43,56,67,72,83,105],{"type":14,"tag":38,"props":39,"children":40},"li",{},[41],{"type":19,"value":42},"The timestamp",{"type":14,"tag":38,"props":44,"children":45},{},[46,48,54],{"type":19,"value":47},"The ",{"type":14,"tag":49,"props":50,"children":51},"strong",{},[52],{"type":19,"value":53},"target",{"type":19,"value":55}," org (whose content was read)",{"type":14,"tag":38,"props":57,"children":58},{},[59,60,65],{"type":19,"value":47},{"type":14,"tag":49,"props":61,"children":62},{},[63],{"type":19,"value":64},"reading",{"type":19,"value":66}," org (typically the vendor)",{"type":14,"tag":38,"props":68,"children":69},{},[70],{"type":19,"value":71},"The user who triggered the read",{"type":14,"tag":38,"props":73,"children":74},{},[75,76,81],{"type":19,"value":47},{"type":14,"tag":49,"props":77,"children":78},{},[79],{"type":19,"value":80},"tool",{"type":19,"value":82}," the read went through",{"type":14,"tag":38,"props":84,"children":85},{},[86,88,95,97,103],{"type":19,"value":87},"The entity type (closed vocabulary: ",{"type":14,"tag":89,"props":90,"children":92},"code",{"className":91},[],[93],{"type":19,"value":94},"context",{"type":19,"value":96}," for a conversation, ",{"type":14,"tag":89,"props":98,"children":100},{"className":99},[],[101],{"type":19,"value":102},"scenario",{"type":19,"value":104}," for a benchmark)",{"type":14,"tag":38,"props":106,"children":107},{},[108],{"type":19,"value":109},"The ID of the entity read (and the precise exchange when the read targets a single turn)",{"type":14,"tag":15,"props":111,"children":112},{},[113,115,120,122,127],{"type":19,"value":114},"The entity vocabulary is ",{"type":14,"tag":49,"props":116,"children":117},{},[118],{"type":19,"value":119},"closed at the database level",{"type":19,"value":121}," (CHECK constraint) and ",{"type":14,"tag":49,"props":123,"children":124},{},[125],{"type":19,"value":126},"closed at the code level",{"type":19,"value":128}," (application whitelist). Adding a type requires a new migration plus whitelist update. No surprise entries.",{"type":14,"tag":22,"props":130,"children":132},{"id":131},"right-of-access-article-15",[133],{"type":19,"value":134},"Right of access (Article 15)",{"type":14,"tag":15,"props":136,"children":137},{},[138,140,145,147,152],{"type":19,"value":139},"Each organisation can consult ITS OWN access logs, under ",{"type":14,"tag":49,"props":141,"children":142},{},[143],{"type":19,"value":144},"Organisation settings → Privacy",{"type":19,"value":146}," (",{"type":14,"tag":49,"props":148,"children":149},{},[150],{"type":19,"value":151},"Access log",{"type":19,"value":153}," section) or via:",{"type":14,"tag":155,"props":156,"children":158},"pre",{"code":157},"GET \u002Fapi\u002Fadmin\u002Fme\u002Fsupervisor-reads\n",[159],{"type":14,"tag":89,"props":160,"children":161},{"__ignoreMap":7},[162],{"type":19,"value":157},{"type":14,"tag":15,"props":164,"children":165},{},[166],{"type":19,"value":167},"The route returns the reads in descending chronological order (up to 1,000 entries per call).",{"type":14,"tag":15,"props":169,"children":170},{},[171],{"type":19,"value":172},"No cross-org access on the audit log: the vendor never sees a customer's audit logs.",{"type":14,"tag":22,"props":174,"children":176},{"id":175},"right-to-erasure-article-17",[177],{"type":19,"value":178},"Right to erasure (Article 17)",{"type":14,"tag":15,"props":180,"children":181},{},[182,184,190],{"type":19,"value":183},"The architecture makes erasure cleanly executable: all of an organisation's data is attached to its ",{"type":14,"tag":89,"props":185,"children":187},{"className":186},[],[188],{"type":19,"value":189},"org_id",{"type":19,"value":191}," (business tables, file directories, secrets), which allows targeted erasure — a specific user, a specific conversation, or the entire organisation — without touching anything else.",{"type":14,"tag":15,"props":193,"children":194},{},[195,197,203],{"type":19,"value":196},"Erasure requests (Article 17) are handled with our support: write to ",{"type":14,"tag":89,"props":198,"children":200},{"className":199},[],[201],{"type":19,"value":202},"contact@betool.fr",{"type":19,"value":204}," from an administrator account of the organisation concerned.",{"type":14,"tag":22,"props":206,"children":208},{"id":207},"cross-tenant-read-opt-in-opt-out",[209],{"type":19,"value":210},"Cross-tenant read opt-in & opt-out",{"type":14,"tag":15,"props":212,"children":213},{},[214,216,225,227,231],{"type":19,"value":215},"By default, the cross-tenant read opt-in is set to ",{"type":14,"tag":49,"props":217,"children":218},{},[219],{"type":14,"tag":89,"props":220,"children":222},{"className":221},[],[223],{"type":19,"value":224},"FALSE",{"type":19,"value":226},". An organisation administrator can enable it — and revoke it at any time — under ",{"type":14,"tag":49,"props":228,"children":229},{},[230],{"type":19,"value":144},{"type":19,"value":232},".",{"type":14,"tag":34,"props":234,"children":235},{},[236,246],{"type":14,"tag":38,"props":237,"children":238},{},[239,244],{"type":14,"tag":49,"props":240,"children":241},{},[242],{"type":19,"value":243},"Disabled",{"type":19,"value":245}," — default. The vendor cannot access any content from this org. Consequence: no cross-org content-level support is possible (structural support remains available).",{"type":14,"tag":38,"props":247,"children":248},{},[249,254],{"type":14,"tag":49,"props":250,"children":251},{},[252],{"type":19,"value":253},"Enabled",{"type":19,"value":255}," — the supervisor can read the org's conversations for diagnosis, with every access audited and visible to the org.",{"type":14,"tag":15,"props":257,"children":258},{},[259,264],{"type":14,"tag":49,"props":260,"children":261},{},[262],{"type":19,"value":263},"The vendor CANNOT activate this opt-in on behalf of the customer.",{"type":19,"value":265}," This is a fundamental test: if the vendor can toggle without a customer action, the architecture is broken.",{"type":14,"tag":22,"props":267,"children":269},{"id":268},"destructive-ops-guardrail",[270],{"type":19,"value":271},"Destructive-ops guardrail",{"type":14,"tag":15,"props":273,"children":274},{},[275,277,282],{"type":19,"value":276},"Any operation that destroys or replaces content (DELETE, REPLACE-IN-PLACE) is ",{"type":14,"tag":49,"props":278,"children":279},{},[280],{"type":19,"value":281},"refused at the validator",{"type":19,"value":283}," if the target org has not activated the read opt-in. Rationale: without visibility, the operator would be proposing a payload that could blindly overwrite existing content.",{"type":14,"tag":22,"props":285,"children":287},{"id":286},"cascading-denial-if-audit-is-unavailable",[288],{"type":19,"value":289},"Cascading denial if audit is unavailable",{"type":14,"tag":15,"props":291,"children":292},{},[293,295,300],{"type":19,"value":294},"If the audit database is unavailable (infrastructure incident), all cross-tenant reads are ",{"type":14,"tag":49,"props":296,"children":297},{},[298],{"type":19,"value":299},"refused",{"type":19,"value":301},". Strict policy: no read without a trace.",{"type":14,"tag":15,"props":303,"children":304},{},[305],{"type":19,"value":306},"Code-side consequence: a caller that catches an exception must re-raise the audit error before any business processing. This is an invariant verified by the security benchmark.",{"type":14,"tag":22,"props":308,"children":310},{"id":309},"consent-cookies",[311],{"type":19,"value":312},"Consent cookies",{"type":14,"tag":15,"props":314,"children":315},{},[316,318,323,325,330],{"type":19,"value":317},"The marketing site (betool.ai) measures its audience with ",{"type":14,"tag":49,"props":319,"children":320},{},[321],{"type":19,"value":322},"Google Analytics 4",{"type":19,"value":324},", in ",{"type":14,"tag":49,"props":326,"children":327},{},[328],{"type":19,"value":329},"Consent Mode v2",{"type":19,"value":331},":",{"type":14,"tag":34,"props":333,"children":334},{},[335,354,366],{"type":14,"tag":38,"props":336,"children":337},{},[338,340,345,347,352],{"type":19,"value":339},"By default, all Google consents (analytics, advertising) are set to ",{"type":14,"tag":49,"props":341,"children":342},{},[343],{"type":19,"value":344},"denied",{"type":19,"value":346},": the Google Analytics script is ",{"type":14,"tag":49,"props":348,"children":349},{},[350],{"type":19,"value":351},"not loaded",{"type":19,"value":353}," and no analytics cookie is set.",{"type":14,"tag":38,"props":355,"children":356},{},[357,359,364],{"type":19,"value":358},"The script is loaded, and measurement enabled, ",{"type":14,"tag":49,"props":360,"children":361},{},[362],{"type":19,"value":363},"only after your explicit acceptance",{"type":19,"value":365}," of audience measurement in the banner.",{"type":14,"tag":38,"props":367,"children":368},{},[369,371,376],{"type":19,"value":370},"You can withdraw this consent at any time (",{"type":14,"tag":49,"props":372,"children":373},{},[374],{"type":19,"value":375},"Manage cookies",{"type":19,"value":377},", in the footer): measurement then reverts to denied.",{"type":14,"tag":15,"props":379,"children":380},{},[381],{"type":19,"value":382},"Advertising consents remain denied: the site does no ad targeting.",{"title":7,"searchDepth":384,"depth":384,"links":385},2,[386,387,388,389,390,391,392],{"id":24,"depth":384,"text":27},{"id":131,"depth":384,"text":134},{"id":175,"depth":384,"text":178},{"id":207,"depth":384,"text":210},{"id":268,"depth":384,"text":271},{"id":286,"depth":384,"text":289},{"id":309,"depth":384,"text":312},"markdown","content:en:docs:5.securite:3.audit-rgpd.md","content","en\u002Fdocs\u002F5.securite\u002F3.audit-rgpd.md","en\u002Fdocs\u002F5.securite\u002F3.audit-rgpd","md",[400],{"title":401,"_path":402,"children":403},"En","\u002Fen",[404],{"title":405,"_path":406,"children":407},"Docs","\u002Fen\u002Fdocs",[408,421,449,477,490,504,517,578],{"title":409,"_path":410,"children":411},"Getting started","\u002Fen\u002Fdocs\u002Fdemarrer",[412,415,418],{"title":413,"_path":414},"Welcome","\u002Fen\u002Fdocs\u002Fdemarrer\u002Fbienvenue",{"title":416,"_path":417},"Create an account","\u002Fen\u002Fdocs\u002Fdemarrer\u002Fcreer-un-compte",{"title":419,"_path":420},"Connect an LLM key","\u002Fen\u002Fdocs\u002Fdemarrer\u002Fbrancher-llm",{"title":422,"_path":423,"children":424},"Channels","\u002Fen\u002Fdocs\u002Fcanaux",[425,428,431,434,437,440,443,446],{"title":426,"_path":427},"Channels overview","\u002Fen\u002Fdocs\u002Fcanaux\u002Fvue-densemble",{"title":429,"_path":430},"Real-time telephony","\u002Fen\u002Fdocs\u002Fcanaux\u002Ftelephone",{"title":432,"_path":433},"Email","\u002Fen\u002Fdocs\u002Fcanaux\u002Femail",{"title":435,"_path":436},"Web chat widget","\u002Fen\u002Fdocs\u002Fcanaux\u002Fchat-widget",{"title":438,"_path":439},"HTTP Webhook","\u002Fen\u002Fdocs\u002Fcanaux\u002Fwebhook",{"title":441,"_path":442},"Messaging (WhatsApp, Messenger, Telegram, Mattermost)","\u002Fen\u002Fdocs\u002Fcanaux\u002Fmessageries",{"title":444,"_path":445},"Meta Lead Ads","\u002Fen\u002Fdocs\u002Fcanaux\u002Ffacebook-leads",{"title":447,"_path":448},"Schedule (cron)","\u002Fen\u002Fdocs\u002Fcanaux\u002Fschedule",{"title":450,"_path":451,"children":452},"Pipelines","\u002Fen\u002Fdocs\u002Fpipelines",[453,456,459,462,465,468,471,474],{"title":454,"_path":455},"The Visual Editor","\u002Fen\u002Fdocs\u002Fpipelines\u002Fediteur-visuel",{"title":457,"_path":458},"AI Agents","\u002Fen\u002Fdocs\u002Fpipelines\u002Fagents",{"title":460,"_path":461},"Deterministic Operators","\u002Fen\u002Fdocs\u002Fpipelines\u002Foperateurs",{"title":463,"_path":464},"Flow Control","\u002Fen\u002Fdocs\u002Fpipelines\u002Fcontrole-flux",{"title":466,"_path":467},"Code Steps","\u002Fen\u002Fdocs\u002Fpipelines\u002Fcode-step",{"title":469,"_path":470},"Sub-pipelines","\u002Fen\u002Fdocs\u002Fpipelines\u002Fsous-pipelines",{"title":472,"_path":473},"No-code actions","\u002Fen\u002Fdocs\u002Fpipelines\u002Factions-no-code",{"title":475,"_path":476},"Knowledge base","\u002Fen\u002Fdocs\u002Fpipelines\u002Fbase-de-connaissances",{"title":478,"_path":479,"children":480},"Supervision","\u002Fen\u002Fdocs\u002Fsupervision",[481,484,487],{"title":482,"_path":483},"Execution History","\u002Fen\u002Fdocs\u002Fsupervision\u002Fexecutions",{"title":485,"_path":486},"Credits & Metering","\u002Fen\u002Fdocs\u002Fsupervision\u002Fcredits-metering",{"title":488,"_path":489},"Benchmarks","\u002Fen\u002Fdocs\u002Fsupervision\u002Fbenchmarks",{"title":491,"_path":492,"children":493},"Security","\u002Fen\u002Fdocs\u002Fsecurite",[494,497,500,501],{"title":495,"_path":496},"Security principles","\u002Fen\u002Fdocs\u002Fsecurite\u002Fprincipes",{"title":498,"_path":499},"Strict multi-tenancy","\u002Fen\u002Fdocs\u002Fsecurite\u002Fmulti-tenant",{"title":8,"_path":4},{"title":502,"_path":503},"Sovereign deployment","\u002Fen\u002Fdocs\u002Fsecurite\u002Fdeploiement-souverain",{"title":505,"_path":506,"children":507},"Developers","\u002Fen\u002Fdocs\u002Fdeveloppeurs",[508,511,514],{"title":509,"_path":510},"Admin API","\u002Fen\u002Fdocs\u002Fdeveloppeurs\u002Fapi-admin",{"title":512,"_path":513},"Outbound webhooks","\u002Fen\u002Fdocs\u002Fdeveloppeurs\u002Fwebhooks-sortants",{"title":515,"_path":516},"Drive betool from Claude (MCP)","\u002Fen\u002Fdocs\u002Fdeveloppeurs\u002Fmcp",{"title":518,"_path":519,"children":520},"Integrations","\u002Fen\u002Fdocs\u002Fintegrations",[521,524,527,530,533,536,539,542,545,548,551,554,557,560,563,566,569,572,575],{"title":522,"_path":523},"Integrations overview","\u002Fen\u002Fdocs\u002Fintegrations\u002Fvue-densemble",{"title":525,"_path":526},"Stripe","\u002Fen\u002Fdocs\u002Fintegrations\u002Fstripe",{"title":528,"_path":529},"GitHub","\u002Fen\u002Fdocs\u002Fintegrations\u002Fgithub",{"title":531,"_path":532},"Google","\u002Fen\u002Fdocs\u002Fintegrations\u002Fgoogle",{"title":534,"_path":535},"LinkedIn Ads","\u002Fen\u002Fdocs\u002Fintegrations\u002Flinkedin-ads",{"title":537,"_path":538},"Kavkom","\u002Fen\u002Fdocs\u002Fintegrations\u002Fkavkom",{"title":540,"_path":541},"Jira","\u002Fen\u002Fdocs\u002Fintegrations\u002Fjira",{"title":543,"_path":544},"Slack","\u002Fen\u002Fdocs\u002Fintegrations\u002Fslack",{"title":546,"_path":547},"SMS","\u002Fen\u002Fdocs\u002Fintegrations\u002Fsms",{"title":549,"_path":550},"Enable Banking (open banking)","\u002Fen\u002Fdocs\u002Fintegrations\u002Fenable-banking",{"title":552,"_path":553},"CRM, marketing & productivity","\u002Fen\u002Fdocs\u002Fintegrations\u002Fcrm-marketing",{"title":555,"_path":556},"HeyGen (video)","\u002Fen\u002Fdocs\u002Fintegrations\u002Fheygen",{"title":558,"_path":559},"La Poste","\u002Fen\u002Fdocs\u002Fintegrations\u002Fla-poste",{"title":561,"_path":562},"Industry CRM (beTool Application, Qhare)","\u002Fen\u002Fdocs\u002Fintegrations\u002Fcrm-metier",{"title":564,"_path":565},"Mitti (field inspections)","\u002Fen\u002Fdocs\u002Fintegrations\u002Fmitti",{"title":567,"_path":568},"Meta (Messenger, Pages, Meta Ads)","\u002Fen\u002Fdocs\u002Fintegrations\u002Fmeta",{"title":570,"_path":571},"Onoff Business (Beta)","\u002Fen\u002Fdocs\u002Fintegrations\u002Fonoff",{"title":573,"_path":574},"Smart Life \u002F Tuya (connected devices)","\u002Fen\u002Fdocs\u002Fintegrations\u002Fsmart-life",{"title":576,"_path":577},"beTool products (Desktop, Kiosk, Terminal)","\u002Fen\u002Fdocs\u002Fintegrations\u002Fproduits-betool",{"title":579,"_path":580,"children":581},"Use cases","\u002Fen\u002Fdocs\u002Fcas-usage",[582,585,588,591,594,597],{"title":583,"_path":584},"Typical business agents","\u002Fen\u002Fdocs\u002Fcas-usage\u002Fvue-densemble",{"title":586,"_path":587},"CFO IA","\u002Fen\u002Fdocs\u002Fcas-usage\u002Fcfo-ia",{"title":589,"_path":590},"COO IA","\u002Fen\u002Fdocs\u002Fcas-usage\u002Fcoo-ia",{"title":592,"_path":593},"CTO IA","\u002Fen\u002Fdocs\u002Fcas-usage\u002Fcto-ia",{"title":595,"_path":596},"Product Manager IA","\u002Fen\u002Fdocs\u002Fcas-usage\u002Fproduct-manager-ia",{"title":598,"_path":599},"Personal assistant","\u002Fen\u002Fdocs\u002Fcas-usage\u002Fassistant-personnel"]