[{"data":1,"prerenderedAt":807},["ShallowReactive",2],{"content:page:/pages/legal/privacy":3,"markdown-page-nav:none":806},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"cta":6,"body":10,"_type":800,"_id":801,"_source":802,"_file":803,"_stem":804,"_extension":805},"/pages/legal/privacy","legal",false,"","Privacy Policy","How Chocolate Cloud ApS handles personal data for the IronShard service: what is collected, legal bases, sub-processors, retention, your rights, and cookies.",{"type":11,"children":12,"toc":785},"root",[13,21,56,63,68,87,93,98,103,109,114,119,124,130,236,242,354,360,379,389,556,561,571,581,587,698,704,709,720,725,731,736,742,755,761,766,772],{"type":14,"tag":15,"props":16,"children":18},"element","h1",{"id":17},"privacy-policy",[19],{"type":20,"value":8},"text",{"type":14,"tag":22,"props":23,"children":24},"p",{},[25,31,33,37,42,44,51,54],{"type":14,"tag":26,"props":27,"children":28},"strong",{},[29],{"type":20,"value":30},"Controller:",{"type":20,"value":32}," Chocolate Cloud ApS, CVR 35865756, Klostergade 56, 8000 Aarhus C, Denmark",{"type":14,"tag":34,"props":35,"children":36},"br",{},[],{"type":14,"tag":26,"props":38,"children":39},{},[40],{"type":20,"value":41},"Contact:",{"type":20,"value":43}," ",{"type":14,"tag":45,"props":46,"children":48},"a",{"href":47},"mailto:contact@ironshard.ai",[49],{"type":20,"value":50},"contact@ironshard.ai",{"type":14,"tag":34,"props":52,"children":53},{},[],{"type":20,"value":55},"\nLast updated: 8 October 2026",{"type":14,"tag":57,"props":58,"children":60},"h2",{"id":59},"_1-scope",[61],{"type":20,"value":62},"1. Scope",{"type":14,"tag":22,"props":64,"children":65},{},[66],{"type":20,"value":67},"This policy explains how we handle personal data in connection with the IronShard object storage service.",{"type":14,"tag":22,"props":69,"children":70},{},[71,73,78,80,85],{"type":20,"value":72},"It covers two situations. ",{"type":14,"tag":26,"props":74,"children":75},{},[76],{"type":20,"value":77},"Data we handle as controller",{"type":20,"value":79}," is information about your use of the Service: network identifiers, credential identifiers, request logs and account records. ",{"type":14,"tag":26,"props":81,"children":82},{},[83],{"type":20,"value":84},"Data you store as content",{"type":20,"value":86}," is data you place in your buckets — where that includes personal data, you are the controller and we act as processor on your behalf.",{"type":14,"tag":57,"props":88,"children":90},{"id":89},"_2-anonymous-use",[91],{"type":20,"value":92},"2. Anonymous use",{"type":14,"tag":22,"props":94,"children":95},{},[96],{"type":20,"value":97},"Much of the Service can be used without providing identifying information. Where you use the Service anonymously, we are generally unable to identify you.",{"type":14,"tag":22,"props":99,"children":100},{},[101],{"type":20,"value":102},"Under Article 11 GDPR, where we cannot identify a data subject we are not required to obtain or retain additional information solely to enable identification. In relation to anonymous use, the rights described in section 8 may not apply unless you provide information enabling us to identify the data concerned.",{"type":14,"tag":57,"props":104,"children":106},{"id":105},"_3-how-your-content-is-stored",[107],{"type":20,"value":108},"3. How your content is stored",{"type":14,"tag":22,"props":110,"children":111},{},[112],{"type":20,"value":113},"Content you upload is received by our gateways, encrypted using AES-256, divided into fragments, and encoded using erasure coding. The resulting coded fragments are distributed across multiple independent storage providers.",{"type":14,"tag":22,"props":115,"children":116},{},[117],{"type":20,"value":118},"The Service is designed so that no single storage provider holds enough fragments to reconstruct your content. Reconstruction requires a sufficient number of fragments held by different providers.",{"type":14,"tag":22,"props":120,"children":121},{},[122],{"type":20,"value":123},"It is our assessment, supported by external legal advice, that coded fragments held by an individual storage provider do not constitute personal data, because identification of data subjects from those fragments is practically impossible for that provider. On this basis we do not treat storage providers as sub-processors. See section 6.",{"type":14,"tag":57,"props":125,"children":127},{"id":126},"_4-what-we-collect",[128],{"type":20,"value":129},"4. What we collect",{"type":14,"tag":131,"props":132,"children":133},"table",{},[134,153],{"type":14,"tag":135,"props":136,"children":137},"thead",{},[138],{"type":14,"tag":139,"props":140,"children":141},"tr",{},[142,148],{"type":14,"tag":143,"props":144,"children":145},"th",{},[146],{"type":20,"value":147},"Category",{"type":14,"tag":143,"props":149,"children":150},{},[151],{"type":20,"value":152},"Examples",{"type":14,"tag":154,"props":155,"children":156},"tbody",{},[157,171,184,197,210,223],{"type":14,"tag":139,"props":158,"children":159},{},[160,166],{"type":14,"tag":161,"props":162,"children":163},"td",{},[164],{"type":20,"value":165},"Network data",{"type":14,"tag":161,"props":167,"children":168},{},[169],{"type":20,"value":170},"IP address, ASN, request headers",{"type":14,"tag":139,"props":172,"children":173},{},[174,179],{"type":14,"tag":161,"props":175,"children":176},{},[177],{"type":20,"value":178},"Credential data",{"type":14,"tag":161,"props":180,"children":181},{},[182],{"type":20,"value":183},"Credential identifier, creation time, scope",{"type":14,"tag":139,"props":185,"children":186},{},[187,192],{"type":14,"tag":161,"props":188,"children":189},{},[190],{"type":20,"value":191},"Usage data",{"type":14,"tag":161,"props":193,"children":194},{},[195],{"type":20,"value":196},"API requests, timestamps, object counts, bytes stored and transferred, bucket identifiers",{"type":14,"tag":139,"props":198,"children":199},{},[200,205],{"type":14,"tag":161,"props":201,"children":202},{},[203],{"type":20,"value":204},"Account data",{"type":14,"tag":161,"props":206,"children":207},{},[208],{"type":20,"value":209},"Contact details, where provided",{"type":14,"tag":139,"props":211,"children":212},{},[213,218],{"type":14,"tag":161,"props":214,"children":215},{},[216],{"type":20,"value":217},"Error and interaction data",{"type":14,"tag":161,"props":219,"children":220},{},[221],{"type":20,"value":222},"Error reports from our gateways and web applications, including IP address; in our web applications, recordings of on-screen interaction (session replay)",{"type":14,"tag":139,"props":224,"children":225},{},[226,231],{"type":14,"tag":161,"props":227,"children":228},{},[229],{"type":20,"value":230},"Content",{"type":14,"tag":161,"props":232,"children":233},{},[234],{"type":20,"value":235},"Objects you upload — see section 3",{"type":14,"tag":57,"props":237,"children":239},{"id":238},"_5-why-and-on-what-legal-basis",[240],{"type":20,"value":241},"5. Why, and on what legal basis",{"type":14,"tag":131,"props":243,"children":244},{},[245,261],{"type":14,"tag":135,"props":246,"children":247},{},[248],{"type":14,"tag":139,"props":249,"children":250},{},[251,256],{"type":14,"tag":143,"props":252,"children":253},{},[254],{"type":20,"value":255},"Purpose",{"type":14,"tag":143,"props":257,"children":258},{},[259],{"type":20,"value":260},"Legal basis",{"type":14,"tag":154,"props":262,"children":263},{},[264,277,290,303,316,329,341],{"type":14,"tag":139,"props":265,"children":266},{},[267,272],{"type":14,"tag":161,"props":268,"children":269},{},[270],{"type":20,"value":271},"Providing the Service",{"type":14,"tag":161,"props":273,"children":274},{},[275],{"type":20,"value":276},"Article 6(1)(b) — performance of a contract",{"type":14,"tag":139,"props":278,"children":279},{},[280,285],{"type":14,"tag":161,"props":281,"children":282},{},[283],{"type":20,"value":284},"Enforcing limits, preventing abuse, securing the Service",{"type":14,"tag":161,"props":286,"children":287},{},[288],{"type":20,"value":289},"Article 6(1)(f) — our legitimate interest in operating a secure service",{"type":14,"tag":139,"props":291,"children":292},{},[293,298],{"type":14,"tag":161,"props":294,"children":295},{},[296],{"type":20,"value":297},"Diagnosing errors and improving the Service",{"type":14,"tag":161,"props":299,"children":300},{},[301],{"type":20,"value":302},"Article 6(1)(f) — our legitimate interest in a reliable service",{"type":14,"tag":139,"props":304,"children":305},{},[306,311],{"type":14,"tag":161,"props":307,"children":308},{},[309],{"type":20,"value":310},"Responding to reports of illegal content",{"type":14,"tag":161,"props":312,"children":313},{},[314],{"type":20,"value":315},"Article 6(1)(c) and Article 6(1)(f)",{"type":14,"tag":139,"props":317,"children":318},{},[319,324],{"type":14,"tag":161,"props":320,"children":321},{},[322],{"type":20,"value":323},"Reporting illegal material to authorities",{"type":14,"tag":161,"props":325,"children":326},{},[327],{"type":20,"value":328},"Article 6(1)(c) — legal obligation",{"type":14,"tag":139,"props":330,"children":331},{},[332,337],{"type":14,"tag":161,"props":333,"children":334},{},[335],{"type":20,"value":336},"Responding to law enforcement requests",{"type":14,"tag":161,"props":338,"children":339},{},[340],{"type":20,"value":328},{"type":14,"tag":139,"props":342,"children":343},{},[344,349],{"type":14,"tag":161,"props":345,"children":346},{},[347],{"type":20,"value":348},"Service communications",{"type":14,"tag":161,"props":350,"children":351},{},[352],{"type":20,"value":353},"Article 6(1)(b)",{"type":14,"tag":57,"props":355,"children":357},{"id":356},"_6-who-we-share-data-with",[358],{"type":20,"value":359},"6. Who we share data with",{"type":14,"tag":22,"props":361,"children":362},{},[363,368,370,377],{"type":14,"tag":26,"props":364,"children":365},{},[366],{"type":20,"value":367},"Storage providers.",{"type":20,"value":369}," Coded fragments are distributed across multiple independent storage providers. For the reasons in section 3, we do not consider fragments held by an individual provider to constitute personal data, and we do not treat those providers as sub-processors. The provider groups we use are described at ",{"type":14,"tag":45,"props":371,"children":375},{"href":372,"rel":373},"https://ironshard.ai/legal/sub-processors",[374],"nofollow",[376],{"type":20,"value":372},{"type":20,"value":378},", and a named list is available on request.",{"type":14,"tag":22,"props":380,"children":381},{},[382,387],{"type":14,"tag":26,"props":383,"children":384},{},[385],{"type":20,"value":386},"Sub-processors.",{"type":20,"value":388}," The following process personal data on our behalf:",{"type":14,"tag":131,"props":390,"children":391},{},[392,417],{"type":14,"tag":135,"props":393,"children":394},{},[395],{"type":14,"tag":139,"props":396,"children":397},{},[398,403,407,412],{"type":14,"tag":143,"props":399,"children":400},{},[401],{"type":20,"value":402},"Sub-processor",{"type":14,"tag":143,"props":404,"children":405},{},[406],{"type":20,"value":255},{"type":14,"tag":143,"props":408,"children":409},{},[410],{"type":20,"value":411},"Data processed",{"type":14,"tag":143,"props":413,"children":414},{},[415],{"type":20,"value":416},"Location",{"type":14,"tag":154,"props":418,"children":419},{},[420,443,466,489,512,534],{"type":14,"tag":139,"props":421,"children":422},{},[423,428,433,438],{"type":14,"tag":161,"props":424,"children":425},{},[426],{"type":20,"value":427},"Fly.io",{"type":14,"tag":161,"props":429,"children":430},{},[431],{"type":20,"value":432},"Gateway — receives Content, performs encryption and encoding, handles requests",{"type":14,"tag":161,"props":434,"children":435},{},[436],{"type":20,"value":437},"Content in unencrypted form; network data",{"type":14,"tag":161,"props":439,"children":440},{},[441],{"type":20,"value":442},"Amsterdam (Netherlands), Frankfurt (Germany), Stockholm (Sweden), London (United Kingdom), Toronto (Canada), Ashburn, Chicago and Los Angeles (United States)",{"type":14,"tag":139,"props":444,"children":445},{},[446,451,456,461],{"type":14,"tag":161,"props":447,"children":448},{},[449],{"type":20,"value":450},"Google Cloud Platform",{"type":14,"tag":161,"props":452,"children":453},{},[454],{"type":20,"value":455},"Control plane, encryption key storage, logging and monitoring",{"type":14,"tag":161,"props":457,"children":458},{},[459],{"type":20,"value":460},"Encryption keys, bucket and object identifiers, access logs, network data",{"type":14,"tag":161,"props":462,"children":463},{},[464],{"type":20,"value":465},"Frankfurt, Germany",{"type":14,"tag":139,"props":467,"children":468},{},[469,474,479,484],{"type":14,"tag":161,"props":470,"children":471},{},[472],{"type":20,"value":473},"Cloudflare",{"type":14,"tag":161,"props":475,"children":476},{},[477],{"type":20,"value":478},"Website hosting and DNS",{"type":14,"tag":161,"props":480,"children":481},{},[482],{"type":20,"value":483},"Network data of visitors and users (IP address, request headers). Cloudflare does not receive Content in unencrypted form.",{"type":14,"tag":161,"props":485,"children":486},{},[487],{"type":20,"value":488},"Global network; requests are processed in the data centre nearest the visitor",{"type":14,"tag":139,"props":490,"children":491},{},[492,497,502,507],{"type":14,"tag":161,"props":493,"children":494},{},[495],{"type":20,"value":496},"Sentry",{"type":14,"tag":161,"props":498,"children":499},{},[500],{"type":20,"value":501},"Error monitoring for our gateways and web applications; session replay in web applications",{"type":14,"tag":161,"props":503,"children":504},{},[505],{"type":20,"value":506},"Error data, IP addresses, recordings of on-screen interaction in the web application",{"type":14,"tag":161,"props":508,"children":509},{},[510],{"type":20,"value":511},"Frankfurt, Germany (Sentry's EU data region). Sentry is a US company, so its staff may access the data from the United States.",{"type":14,"tag":139,"props":513,"children":514},{},[515,520,524,529],{"type":14,"tag":161,"props":516,"children":517},{},[518],{"type":20,"value":519},"Mailgun",{"type":14,"tag":161,"props":521,"children":522},{},[523],{"type":20,"value":348},{"type":14,"tag":161,"props":525,"children":526},{},[527],{"type":20,"value":528},"Contact data",{"type":14,"tag":161,"props":530,"children":531},{},[532],{"type":20,"value":533},"EU region",{"type":14,"tag":139,"props":535,"children":536},{},[537,542,547,552],{"type":14,"tag":161,"props":538,"children":539},{},[540],{"type":20,"value":541},"InfluxData",{"type":14,"tag":161,"props":543,"children":544},{},[545],{"type":20,"value":546},"Operational metrics for storage operations",{"type":14,"tag":161,"props":548,"children":549},{},[550],{"type":20,"value":551},"Fragment upload and download metrics; no IP addresses or account details",{"type":14,"tag":161,"props":553,"children":554},{},[555],{"type":20,"value":465},{"type":14,"tag":22,"props":557,"children":558},{},[559],{"type":20,"value":560},"Google Cloud Platform and Cloudflare also act as storage providers, as described above.",{"type":14,"tag":22,"props":562,"children":563},{},[564,569],{"type":14,"tag":26,"props":565,"children":566},{},[567],{"type":20,"value":568},"Authorities.",{"type":20,"value":570}," Where required by law, including the reporting of illegal material.",{"type":14,"tag":22,"props":572,"children":573},{},[574,579],{"type":14,"tag":26,"props":575,"children":576},{},[577],{"type":20,"value":578},"Transfers outside the EEA.",{"type":20,"value":580}," Where we transfer personal data outside the EEA in our own capacity, or a sub-processor does so, we rely on the EU–US Data Privacy Framework where the recipient is certified under it, and otherwise on the Standard Contractual Clauses (Commission Decision 2021/914) together with a transfer impact assessment. Details are available on request.",{"type":14,"tag":57,"props":582,"children":584},{"id":583},"_7-retention",[585],{"type":20,"value":586},"7. Retention",{"type":14,"tag":131,"props":588,"children":589},{},[590,606],{"type":14,"tag":135,"props":591,"children":592},{},[593],{"type":14,"tag":139,"props":594,"children":595},{},[596,601],{"type":14,"tag":143,"props":597,"children":598},{},[599],{"type":20,"value":600},"Data",{"type":14,"tag":143,"props":602,"children":603},{},[604],{"type":20,"value":605},"Retention",{"type":14,"tag":154,"props":607,"children":608},{},[609,621,634,647,660,672,685],{"type":14,"tag":139,"props":610,"children":611},{},[612,616],{"type":14,"tag":161,"props":613,"children":614},{},[615],{"type":20,"value":230},{"type":14,"tag":161,"props":617,"children":618},{},[619],{"type":20,"value":620},"Until you delete it, or per the dormancy policy in the Terms",{"type":14,"tag":139,"props":622,"children":623},{},[624,629],{"type":14,"tag":161,"props":625,"children":626},{},[627],{"type":20,"value":628},"Platform logs",{"type":14,"tag":161,"props":630,"children":631},{},[632],{"type":20,"value":633},"90 days",{"type":14,"tag":139,"props":635,"children":636},{},[637,642],{"type":14,"tag":161,"props":638,"children":639},{},[640],{"type":20,"value":641},"Event logs",{"type":14,"tag":161,"props":643,"children":644},{},[645],{"type":20,"value":646},"12 months",{"type":14,"tag":139,"props":648,"children":649},{},[650,655],{"type":14,"tag":161,"props":651,"children":652},{},[653],{"type":20,"value":654},"Credential records",{"type":14,"tag":161,"props":656,"children":657},{},[658],{"type":20,"value":659},"12 months after revocation",{"type":14,"tag":139,"props":661,"children":662},{},[663,667],{"type":14,"tag":161,"props":664,"children":665},{},[666],{"type":20,"value":528},{"type":14,"tag":161,"props":668,"children":669},{},[670],{"type":20,"value":671},"12 months after account closure",{"type":14,"tag":139,"props":673,"children":674},{},[675,680],{"type":14,"tag":161,"props":676,"children":677},{},[678],{"type":20,"value":679},"Error reports and session replays",{"type":14,"tag":161,"props":681,"children":682},{},[683],{"type":20,"value":684},"Up to 90 days",{"type":14,"tag":139,"props":686,"children":687},{},[688,693],{"type":14,"tag":161,"props":689,"children":690},{},[691],{"type":20,"value":692},"Email delivery logs",{"type":14,"tag":161,"props":694,"children":695},{},[696],{"type":20,"value":697},"Up to 30 days",{"type":14,"tag":57,"props":699,"children":701},{"id":700},"_8-your-rights",[702],{"type":20,"value":703},"8. Your rights",{"type":14,"tag":22,"props":705,"children":706},{},[707],{"type":20,"value":708},"Subject to section 2, you have the right to access, rectify, erase, restrict and object to processing of your personal data, and to data portability.",{"type":14,"tag":22,"props":710,"children":711},{},[712,714,718],{"type":20,"value":713},"To exercise these rights, contact ",{"type":14,"tag":45,"props":715,"children":716},{"href":47},[717],{"type":20,"value":50},{"type":20,"value":719},". Where we cannot identify you, we may ask for information enabling us to locate the relevant data, and may be unable to act if it is not provided.",{"type":14,"tag":22,"props":721,"children":722},{},[723],{"type":20,"value":724},"You may complain to the Danish Data Protection Agency (Datatilsynet, datatilsynet.dk).",{"type":14,"tag":57,"props":726,"children":728},{"id":727},"_9-security",[729],{"type":20,"value":730},"9. Security",{"type":14,"tag":22,"props":732,"children":733},{},[734],{"type":20,"value":735},"Content is encrypted using AES-256 and distributed as coded fragments across multiple independent storage providers, such that no single provider can reconstruct it. Encryption keys are held separately in Frankfurt, Germany. We apply access controls and log internal access to systems holding personal data.",{"type":14,"tag":57,"props":737,"children":739},{"id":738},"_10-automated-decisions",[740],{"type":20,"value":741},"10. Automated decisions",{"type":14,"tag":22,"props":743,"children":744},{},[745,747,753],{"type":20,"value":746},"We use automated systems to apply rate limits, detect abuse and enforce the Fair Use Policy. These systems may restrict or suspend access to a bucket or credential without prior human review. Where we restrict content or access, we provide a statement of reasons, and you may contest the decision by writing to ",{"type":14,"tag":45,"props":748,"children":750},{"href":749},"mailto:abuse-report@ironshard.ai",[751],{"type":20,"value":752},"abuse-report@ironshard.ai",{"type":20,"value":754},", where a person will review it. We do not otherwise take decisions based solely on automated processing that have legal or similarly significant effects on you.",{"type":14,"tag":57,"props":756,"children":758},{"id":757},"_11-cookies",[759],{"type":20,"value":760},"11. Cookies",{"type":14,"tag":22,"props":762,"children":763},{},[764],{"type":20,"value":765},"We do not use cookies on our website, web console or API, and we do not use advertising or tracking technologies. Our web applications use session replay (see section 4), which may keep a session identifier in your browser's session storage while the tab is open. We use it only to diagnose errors.",{"type":14,"tag":57,"props":767,"children":769},{"id":768},"_12-changes",[770],{"type":20,"value":771},"12. Changes",{"type":14,"tag":22,"props":773,"children":774},{},[775,777,783],{"type":20,"value":776},"We may update this policy. Changes are published at ",{"type":14,"tag":45,"props":778,"children":781},{"href":779,"rel":780},"https://ironshard.ai/legal/privacy",[374],[782],{"type":20,"value":779},{"type":20,"value":784}," with the effective date.",{"title":7,"searchDepth":786,"depth":786,"links":787},2,[788,789,790,791,792,793,794,795,796,797,798,799],{"id":59,"depth":786,"text":62},{"id":89,"depth":786,"text":92},{"id":105,"depth":786,"text":108},{"id":126,"depth":786,"text":129},{"id":238,"depth":786,"text":241},{"id":356,"depth":786,"text":359},{"id":583,"depth":786,"text":586},{"id":700,"depth":786,"text":703},{"id":727,"depth":786,"text":730},{"id":738,"depth":786,"text":741},{"id":757,"depth":786,"text":760},{"id":768,"depth":786,"text":771},"markdown","content:pages:legal:privacy.md","content","pages/legal/privacy.md","pages/legal/privacy","md",[],1791653899278]