{"_id":"@capacitor/health-fitness","_rev":"8-cdf568fab922fe79ea8c9bb8404ce3a1","name":"@capacitor/health-fitness","dist-tags":{"dev":"0.0.1-dev-20260817.0","latest":"1.0.1"},"versions":{"0.0.1-dev-20260807.0":{"name":"@capacitor/health-fitness","version":"0.0.1-dev-20260807.0","keywords":["capacitor","plugin","native"],"author":{"name":"Ionic Team","email":"hi@ionic.io"},"license":"MIT","_id":"@capacitor/health-fitness@0.0.1-dev-20260807.0","maintainers":[{"name":"itschaced","email":"chace.daniels@outsystems.com"},{"name":"ionicjs","email":"hi@ionic.io"},{"name":"jcesarmobile","email":"jcesarmobile@gmail.com"},{"name":"vmfo","email":"vitor.oliveira@outsystems.com"},{"name":"jpender","email":"joey@ionic.io"},{"name":"mark-ionic","email":"mark@ionic.io"},{"name":"chuckytuh","email":"chuckynes@gmail.com"},{"name":"alexgerardojacinto","email":"agerardojacinto@gmail.com"},{"name":"os-pedrobilro","email":"pedro.gustavo.bilro@outsystems.com"},{"name":"harvdoggy","email":"eric.harvey@outsystems.com"},{"name":"jpender-os","email":"joey.pender@outsystems.com"},{"name":"ndr","email":"andre.destro@outsystems.com"},{"name":"kepatoto","email":"kepa.baum.totorica@outsystems.com"},{"name":"rui.mendes","email":"rui.moreira.mendes@outsystems.com"},{"name":"markemer","email":"emer@emer.net"},{"name":"capacitor-plugin-bot","email":"ossplugins@outsystems.com"},{"name":"eric-ionic","email":"horodyski@ionic.io"},{"name":"os-ruialves","email":"rui.alves@outsystems.com"}],"homepage":"https://github.com/ionic-team/capacitor-health-fitness#readme","bugs":{"url":"https://github.com/ionic-team/capacitor-health-fitness/issues"},"dist":{"shasum":"23ff0fa8dd9d1c384a15cbda3af7307bca866ffd","tarball":"https://registry.npmjs.org/@capacitor/health-fitness/-/health-fitness-0.0.1-dev-20260807.0.tgz","fileCount":32,"integrity":"sha512-5cSoCFuNP6MeK7pq37aHX0vwc+hRBI2MSZBKFOU4o/j7TwI9xggZUeYaGBmYByHwW6aQ4WQDwhS1n39vjptP/w==","signatures":[{"sig":"MEQCIFvhS7ejN4GVzLiuBxQMXF4jEjyvXA+5yWfnqSJSYz1fAiBpzyarhkcb0M05WHJvTqbfzb+pkFyhlgn9VEuKNR9SVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141834},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","gitHead":"0787b4a92ff9fe03f840229c3c066dfc20f920b8","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api HealthFitnessPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prepare":"npm run build","prettier":"prettier \"**/*.{css,html,ts,js,java}\" --plugin=prettier-plugin-java","swiftlint":"node-swiftlint","verify:ios":"xcodebuild -scheme CapacitorHealthFitness -destination generic/platform=iOS","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","capacitor:sync:after":"node hooks/capacitorCopyHealthFitnessConfigs.js"},"_npmUser":{"name":"alexgerardojacinto","email":"agerardojacinto@gmail.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+https://github.com/ionic-team/capacitor-health-fitness.git","type":"git"},"_npmVersion":"10.9.2","description":"Access Android Health Connect and Apple HealthKit data for health and fitness apps.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@babel/core":"^7.27.0","@xmldom/xmldom":"^0.9.0","@babel/preset-env":"^7.27.0","@babel/preset-typescript":"^7.27.0"},"eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.1","rimraf":"^6.1.0","rollup":"^4.53.2","prettier":"^3.6.2","swiftlint":"^2.0.0","typescript":"^5.9.3","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","@capacitor/docgen":"^0.3.1","@capacitor/android":"^8.0.0","@ionic/eslint-config":"^0.4.0","prettier-plugin-java":"^2.7.7","@ionic/prettier-config":"^4.0.0","@ionic/swiftlint-config":"^2.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/health-fitness_0.0.1-dev-20260807.0_1786109951931_0.5708558964523964","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-dev-20260807.1":{"name":"@capacitor/health-fitness","version":"0.0.1-dev-20260807.1","keywords":["capacitor","plugin","native"],"author":{"name":"Ionic Team","email":"hi@ionic.io"},"license":"MIT","_id":"@capacitor/health-fitness@0.0.1-dev-20260807.1","maintainers":[{"name":"itschaced","email":"chace.daniels@outsystems.com"},{"name":"ionicjs","email":"hi@ionic.io"},{"name":"jcesarmobile","email":"jcesarmobile@gmail.com"},{"name":"vmfo","email":"vitor.oliveira@outsystems.com"},{"name":"jpender","email":"joey@ionic.io"},{"name":"mark-ionic","email":"mark@ionic.io"},{"name":"chuckytuh","email":"chuckynes@gmail.com"},{"name":"alexgerardojacinto","email":"agerardojacinto@gmail.com"},{"name":"os-pedrobilro","email":"pedro.gustavo.bilro@outsystems.com"},{"name":"harvdoggy","email":"eric.harvey@outsystems.com"},{"name":"jpender-os","email":"joey.pender@outsystems.com"},{"name":"ndr","email":"andre.destro@outsystems.com"},{"name":"kepatoto","email":"kepa.baum.totorica@outsystems.com"},{"name":"rui.mendes","email":"rui.moreira.mendes@outsystems.com"},{"name":"markemer","email":"emer@emer.net"},{"name":"capacitor-plugin-bot","email":"ossplugins@outsystems.com"},{"name":"eric-ionic","email":"horodyski@ionic.io"},{"name":"os-ruialves","email":"rui.alves@outsystems.com"}],"homepage":"https://github.com/ionic-team/capacitor-health-fitness#readme","bugs":{"url":"https://github.com/ionic-team/capacitor-health-fitness/issues"},"dist":{"shasum":"b976d747372615688ebd74a7d0c4cf9cc5068c49","tarball":"https://registry.npmjs.org/@capacitor/health-fitness/-/health-fitness-0.0.1-dev-20260807.1.tgz","fileCount":32,"integrity":"sha512-Z7+oFyjQQz/Q8tdEWG+MPcseKlcFF22rv7gTDS+z5kj08zDEHXaJIOD+aNTfP/E5InnAIV/a7wKJVS5bcipB6A==","signatures":[{"sig":"MEQCIFFd/02BF5d2xR2INKH5t7b7vzQRh/jBZTjw7kcMJdh+AiA1kuGQVxuCgLQ5ZC2LMOxu2OoQQOGmrqCOYNeChvZh3w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143087},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","gitHead":"2749e33409d6b6dd7f0c521aa16bcbefcb5921e7","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api HealthFitnessPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prepare":"npm run build","prettier":"prettier \"**/*.{css,html,ts,js,java}\" --plugin=prettier-plugin-java","swiftlint":"node-swiftlint","verify:ios":"xcodebuild -scheme CapacitorHealthFitness -destination generic/platform=iOS","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","capacitor:sync:after":"node hooks/capacitorCopyHealthFitnessConfigs.js"},"_npmUser":{"name":"alexgerardojacinto","email":"agerardojacinto@gmail.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+https://github.com/ionic-team/capacitor-health-fitness.git","type":"git"},"_npmVersion":"10.9.2","description":"Access Android Health Connect and Apple HealthKit data for health and fitness apps.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@babel/core":"^7.27.0","@xmldom/xmldom":"^0.9.0","@babel/preset-env":"^7.27.0","@babel/preset-typescript":"^7.27.0"},"eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.57.1","rimraf":"^6.1.0","rollup":"^4.53.2","prettier":"^3.6.2","swiftlint":"^2.0.0","typescript":"^5.9.3","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","@capacitor/docgen":"^0.3.1","@capacitor/android":"^8.0.0","@ionic/eslint-config":"^0.4.0","prettier-plugin-java":"^2.7.7","@ionic/prettier-config":"^4.0.0","@ionic/swiftlint-config":"^2.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/health-fitness_0.0.1-dev-20260807.1_1786127989937_0.13497999774421476","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-dev-20260811.0":{"name":"@capacitor/health-fitness","version":"0.0.1-dev-20260811.0","keywords":["capacitor","plugin","native"],"author":{"name":"Ionic Team","email":"hi@ionic.io"},"license":"MIT","_id":"@capacitor/health-fitness@0.0.1-dev-20260811.0","maintainers":[{"name":"itschaced","email":"chace.daniels@outsystems.com"},{"name":"ionicjs","email":"hi@ionic.io"},{"name":"jcesarmobile","email":"jcesarmobile@gmail.com"},{"name":"vmfo","email":"vitor.oliveira@outsystems.com"},{"name":"jpender","email":"joey@ionic.io"},{"name":"mark-ionic","email":"mark@ionic.io"},{"name":"chuckytuh","email":"chuckynes@gmail.com"},{"name":"alexgerardojacinto","email":"agerardojacinto@gmail.com"},{"name":"os-pedrobilro","email":"pedro.gustavo.bilro@outsystems.com"},{"name":"harvdoggy","email":"eric.harvey@outsystems.com"},{"name":"jpender-os","email":"joey.pender@outsystems.com"},{"name":"ndr","email":"andre.destro@outsystems.com"},{"name":"kepatoto","email":"kepa.baum.totorica@outsystems.com"},{"name":"rui.mendes","email":"rui.moreira.mendes@outsystems.com"},{"name":"markemer","email":"emer@emer.net"},{"name":"capacitor-plugin-bot","email":"ossplugins@outsystems.com"},{"name":"eric-ionic","email":"horodyski@ionic.io"},{"name":"os-ruialves","email":"rui.alves@outsystems.com"}],"homepage":"https://github.com/ionic-team/capacitor-health-fitness#readme","bugs":{"url":"https://github.com/ionic-team/capacitor-health-fitness/issues"},"dist":{"shasum":"3c38cd20975c4c34c07c9c7fa92847e4778425b5","tarball":"https://registry.npmjs.org/@capacitor/health-fitness/-/health-fitness-0.0.1-dev-20260811.0.tgz","fileCount":32,"integrity":"sha512-nKLjIgecOOZHjV8KW08yrvKD7ncaFJrtTLxyctiSXOALl3l7U2Q1MHgyHHfc0djrbJELSTyF7ZYIkTcPA3lEWQ==","signatures":[{"sig":"MEUCIA9cKroKHABf9mMO8Swvwc0vqlXsXizeQAVhL7Hbo3Q3AiEArAf7Lgwy9WNnx1+dJCIdSr49cmCdQrrxsP71kfYV+Os=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144567},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","gitHead":"c55c20597983af23dee0aaa26f71f826dc0247dd","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api HealthFitnessPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prepare":"npm run build","prettier":"prettier \"**/*.{css,html,ts,js,java}\" --plugin=prettier-plugin-java","swiftlint":"node-swiftlint","verify:ios":"xcodebuild -scheme CapacitorHealthFitness -destination generic/platform=iOS","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","capacitor:sync:after":"node hooks/capacitorCopyHealthFitnessConfigs.js"},"_npmUser":{"name":"alexgerardojacinto","email":"agerardojacinto@gmail.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+https://github.com/ionic-team/capacitor-health-fitness.git","type":"git"},"_npmVersion":"10.9.2","description":"Access Android Health Connect and Apple HealthKit data for health and fitness apps.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@babel/core":"^7.27.0","@xmldom/xmldom":"^0.9.0","@babel/preset-env":"^7.27.0","@babel/preset-typescript":"^7.27.0"},"eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.57.1","rimraf":"^6.1.0","rollup":"^4.53.2","prettier":"^3.6.2","swiftlint":"^2.0.0","typescript":"^5.9.3","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","semantic-release":"^25.0.2","@capacitor/docgen":"^0.3.1","@capacitor/android":"^8.0.0","@ionic/eslint-config":"^0.4.0","prettier-plugin-java":"^2.7.7","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.2","@ionic/prettier-config":"^4.0.0","@ionic/swiftlint-config":"^2.0.0","@semantic-release/github":"^12.0.2","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/health-fitness_0.0.1-dev-20260811.0_1786452530698_0.3083802418684969","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-dev-20260817.0":{"name":"@capacitor/health-fitness","version":"0.0.1-dev-20260817.0","keywords":["capacitor","plugin","native"],"author":{"name":"Ionic Team","email":"hi@ionic.io"},"license":"MIT","_id":"@capacitor/health-fitness@0.0.1-dev-20260817.0","maintainers":[{"name":"itschaced","email":"chace.daniels@outsystems.com"},{"name":"ionicjs","email":"hi@ionic.io"},{"name":"jcesarmobile","email":"jcesarmobile@gmail.com"},{"name":"vmfo","email":"vitor.oliveira@outsystems.com"},{"name":"jpender","email":"joey@ionic.io"},{"name":"mark-ionic","email":"mark@ionic.io"},{"name":"chuckytuh","email":"chuckynes@gmail.com"},{"name":"alexgerardojacinto","email":"agerardojacinto@gmail.com"},{"name":"os-pedrobilro","email":"pedro.gustavo.bilro@outsystems.com"},{"name":"harvdoggy","email":"eric.harvey@outsystems.com"},{"name":"jpender-os","email":"joey.pender@outsystems.com"},{"name":"ndr","email":"andre.destro@outsystems.com"},{"name":"kepatoto","email":"kepa.baum.totorica@outsystems.com"},{"name":"rui.mendes","email":"rui.moreira.mendes@outsystems.com"},{"name":"markemer","email":"emer@emer.net"},{"name":"capacitor-plugin-bot","email":"ossplugins@outsystems.com"},{"name":"eric-ionic","email":"horodyski@ionic.io"},{"name":"os-ruialves","email":"rui.alves@outsystems.com"}],"homepage":"https://github.com/ionic-team/capacitor-health-fitness#readme","bugs":{"url":"https://github.com/ionic-team/capacitor-health-fitness/issues"},"dist":{"shasum":"7ddb59bd6f14a8049ef4d790eb057746c8cba934","tarball":"https://registry.npmjs.org/@capacitor/health-fitness/-/health-fitness-0.0.1-dev-20260817.0.tgz","fileCount":32,"integrity":"sha512-e1yrSOijXrCOOWHaV8szkNg8oewUcGoT2XlUJX/kEsG3hmqOKOVxmxAaIQ1ys/WJpwtjGn33Dn8SHkj76FojFg==","signatures":[{"sig":"MEUCIESthfw3Qp8tvvd2A0FqTEWvpAhDsGLRL3Ehg+kXgoHMAiEAwtUXpxp/WPF721waF0W+9gcYByzMsbzykpALDOPAb7E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143897},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","gitHead":"3d22a2f549b033735626e5c3d9efd7a147033a06","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api HealthFitnessPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prepare":"npm run build","prettier":"prettier \"**/*.{css,html,ts,js,java}\" --plugin=prettier-plugin-java","swiftlint":"node-swiftlint","verify:ios":"xcodebuild -scheme CapacitorHealthFitness -destination generic/platform=iOS","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","capacitor:sync:after":"node hooks/capacitorCopyHealthFitnessConfigs.js"},"_npmUser":{"name":"alexgerardojacinto","email":"agerardojacinto@gmail.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+https://github.com/ionic-team/capacitor-health-fitness.git","type":"git"},"_npmVersion":"10.9.2","description":"Access Android Health Connect and Apple HealthKit data for health and fitness apps.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@babel/core":"^7.27.0","@xmldom/xmldom":"^0.9.0","@babel/preset-env":"^7.27.0","@babel/preset-typescript":"^7.27.0"},"eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.57.1","rimraf":"^6.1.0","rollup":"^4.53.2","prettier":"^3.6.2","swiftlint":"^2.0.0","typescript":"^5.9.3","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","semantic-release":"^25.0.2","@capacitor/docgen":"^0.3.1","@capacitor/android":"^8.0.0","@ionic/eslint-config":"^0.4.0","prettier-plugin-java":"^2.7.7","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.2","@ionic/prettier-config":"^4.0.0","@ionic/swiftlint-config":"^2.0.0","@semantic-release/github":"^12.0.2","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/health-fitness_0.0.1-dev-20260817.0_1786980114696_0.8280433825743052","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@capacitor/health-fitness","version":"1.0.0","keywords":["capacitor","plugin","native"],"author":{"name":"Ionic Team","email":"hi@ionic.io"},"license":"MIT","_id":"@capacitor/health-fitness@1.0.0","maintainers":[{"name":"itschaced","email":"chace.daniels@outsystems.com"},{"name":"ionicjs","email":"hi@ionic.io"},{"name":"jcesarmobile","email":"jcesarmobile@gmail.com"},{"name":"vmfo","email":"vitor.oliveira@outsystems.com"},{"name":"jpender","email":"joey@ionic.io"},{"name":"mark-ionic","email":"mark@ionic.io"},{"name":"chuckytuh","email":"chuckynes@gmail.com"},{"name":"alexgerardojacinto","email":"agerardojacinto@gmail.com"},{"name":"os-pedrobilro","email":"pedro.gustavo.bilro@outsystems.com"},{"name":"harvdoggy","email":"eric.harvey@outsystems.com"},{"name":"jpender-os","email":"joey.pender@outsystems.com"},{"name":"ndr","email":"andre.destro@outsystems.com"},{"name":"kepatoto","email":"kepa.baum.totorica@outsystems.com"},{"name":"rui.mendes","email":"rui.moreira.mendes@outsystems.com"},{"name":"markemer","email":"emer@emer.net"},{"name":"capacitor-plugin-bot","email":"ossplugins@outsystems.com"},{"name":"eric-ionic","email":"horodyski@ionic.io"},{"name":"os-ruialves","email":"rui.alves@outsystems.com"}],"homepage":"https://github.com/ionic-team/capacitor-health-fitness#readme","bugs":{"url":"https://github.com/ionic-team/capacitor-health-fitness/issues"},"dist":{"shasum":"c8ebff600291a541020867b343ba44f176aaa664","tarball":"https://registry.npmjs.org/@capacitor/health-fitness/-/health-fitness-1.0.0.tgz","fileCount":32,"integrity":"sha512-m6aO5GUcw/30ded4kV5/6LSl2dU+19NQY4fIOfnKsfOoRaE/wXpRD72tVY6clf3EnQSrCNA5fv77+J0599JC/w==","signatures":[{"sig":"MEUCIGjoyllBkMPX2xO0wjeVjjpk9zaWgkFXRkBGiV5elYD4AiEA6MRYna02qKQN5kYsMTEPAHskKlsILDMRTL6jlasaslA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capacitor%2fhealth-fitness@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":143914},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","gitHead":"0a5e20b09c1a32abe2dee4c92082673728129ba0","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api HealthFitnessPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prepare":"npm run build","prettier":"prettier \"**/*.{css,html,ts,js,java}\" --plugin=prettier-plugin-java","swiftlint":"node-swiftlint","verify:ios":"xcodebuild -scheme CapacitorHealthFitness -destination generic/platform=iOS","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","capacitor:sync:after":"node hooks/capacitorCopyHealthFitnessConfigs.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0f3204da-de3e-4bfa-bc96-14be2b80099a"}},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+https://github.com/ionic-team/capacitor-health-fitness.git","type":"git"},"_npmVersion":"11.19.0","description":"Access Android Health Connect and Apple HealthKit data for health and fitness apps.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@babel/core":"^7.27.0","@xmldom/xmldom":"^0.9.0","@babel/preset-env":"^7.27.0","@babel/preset-typescript":"^7.27.0"},"eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.1","rimraf":"^6.1.0","rollup":"^4.53.2","prettier":"^3.6.2","swiftlint":"^2.0.0","typescript":"^5.9.3","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","semantic-release":"^25.0.2","@capacitor/docgen":"^0.3.1","@capacitor/android":"^8.0.0","@ionic/eslint-config":"^0.4.0","prettier-plugin-java":"^2.7.7","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.2","@ionic/prettier-config":"^4.0.0","@ionic/swiftlint-config":"^2.0.0","@semantic-release/github":"^12.0.2","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/health-fitness_1.0.0_1786997981735_0.23553701567424223","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@capacitor/health-fitness","version":"1.0.1","keywords":["capacitor","plugin","native"],"author":{"name":"Ionic Team","email":"hi@ionic.io"},"license":"MIT","_id":"@capacitor/health-fitness@1.0.1","maintainers":[{"name":"itschaced","email":"chace.daniels@outsystems.com"},{"name":"ionicjs","email":"hi@ionic.io"},{"name":"jcesarmobile","email":"jcesarmobile@gmail.com"},{"name":"vmfo","email":"vitor.oliveira@outsystems.com"},{"name":"jpender","email":"joey@ionic.io"},{"name":"mark-ionic","email":"mark@ionic.io"},{"name":"chuckytuh","email":"chuckynes@gmail.com"},{"name":"alexgerardojacinto","email":"agerardojacinto@gmail.com"},{"name":"os-pedrobilro","email":"pedro.gustavo.bilro@outsystems.com"},{"name":"harvdoggy","email":"eric.harvey@outsystems.com"},{"name":"jpender-os","email":"joey.pender@outsystems.com"},{"name":"ndr","email":"andre.destro@outsystems.com"},{"name":"kepatoto","email":"kepa.baum.totorica@outsystems.com"},{"name":"rui.mendes","email":"rui.moreira.mendes@outsystems.com"},{"name":"markemer","email":"emer@emer.net"},{"name":"capacitor-plugin-bot","email":"ossplugins@outsystems.com"},{"name":"eric-ionic","email":"horodyski@ionic.io"},{"name":"os-ruialves","email":"rui.alves@outsystems.com"}],"homepage":"https://github.com/ionic-team/capacitor-health-fitness#readme","bugs":{"url":"https://github.com/ionic-team/capacitor-health-fitness/issues"},"dist":{"shasum":"c7595b20b2988c000c8ee45d4aa79b6547709538","tarball":"https://registry.npmjs.org/@capacitor/health-fitness/-/health-fitness-1.0.1.tgz","fileCount":30,"integrity":"sha512-9P5XknfJEThr+FVcAj4D30hUqce8exoIrOmt9mc9FB2MK+QAmkN/kZvPop28TnbZ4u1cBEViGGb/7CAhGGTx4A==","signatures":[{"sig":"MEUCIQDqV4Z90QChT6XKC4rPOj6SkxScFdl/xX1GPWjPw/NtRAIgRe/EzdQPo+NxHm/ZuedJeqF62ZIItadDzAUU6mQkVy0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capacitor%2fhealth-fitness@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":157262},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","gitHead":"9fde7f1afa3745e36b1702d8e9ac5c2ce2fea384","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api HealthFitnessPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prepare":"npm run build","prettier":"prettier \"**/*.{css,html,ts,js,java}\" --plugin=prettier-plugin-java","swiftlint":"node-swiftlint","verify:ios":"xcodebuild -scheme CapacitorHealthFitness -destination generic/platform=iOS","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","capacitor:sync:after":"node hooks/capacitorCopyHealthFitnessConfigs.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0f3204da-de3e-4bfa-bc96-14be2b80099a"}},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+https://github.com/ionic-team/capacitor-health-fitness.git","type":"git"},"_npmVersion":"11.19.0","description":"Access Android Health Connect and Apple HealthKit data for health and fitness apps.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@babel/core":"^7.27.0","@xmldom/xmldom":"^0.9.0","@babel/preset-env":"^7.27.0","@babel/preset-typescript":"^7.27.0"},"eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.1","rimraf":"^6.1.0","rollup":"^4.53.2","prettier":"^3.6.2","swiftlint":"^2.0.0","typescript":"^5.9.3","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","semantic-release":"^25.0.2","@capacitor/docgen":"^0.3.1","@capacitor/android":"^8.0.0","@ionic/eslint-config":"^0.4.0","prettier-plugin-java":"^2.7.7","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.2","@ionic/prettier-config":"^4.0.0","@ionic/swiftlint-config":"^2.0.0","@semantic-release/github":"^12.0.2","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/health-fitness_1.0.1_1787145592332_0.27560227503179235","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-08-07T13:39:11.806Z","modified":"2026-09-28T18:17:29.949Z","0.0.1-dev-20260807.0":"2026-08-07T13:39:12.098Z","0.0.1-dev-20260807.1":"2026-08-07T18:39:50.118Z","0.0.1-dev-20260811.0":"2026-08-11T12:48:50.858Z","0.0.1-dev-20260817.0":"2026-08-17T15:21:54.851Z","1.0.0":"2026-08-17T20:19:41.867Z","1.0.1":"2026-08-19T13:19:52.473Z"},"bugs":{"url":"https://github.com/ionic-team/capacitor-health-fitness/issues"},"author":{"name":"Ionic Team","email":"hi@ionic.io"},"license":"MIT","homepage":"https://github.com/ionic-team/capacitor-health-fitness#readme","keywords":["capacitor","plugin","native"],"repository":{"url":"git+https://github.com/ionic-team/capacitor-health-fitness.git","type":"git"},"description":"Access Android Health Connect and Apple HealthKit data for health and fitness apps.","maintainers":[{"email":"chace.daniels@outsystems.com","name":"itschaced"},{"email":"hi@ionic.io","name":"ionicjs"},{"email":"jcesarmobile@gmail.com","name":"jcesarmobile"},{"email":"vitor.oliveira@outsystems.com","name":"vmfo"},{"email":"joey@ionic.io","name":"jpender"},{"email":"mark@ionic.io","name":"mark-ionic"},{"email":"chuckynes@gmail.com","name":"chuckytuh"},{"email":"nuno.azevedo@outsystems.com","name":"nuno.azevedo-outsystems"},{"email":"trevorlambert11@gmail.com","name":"trevorlambert"},{"email":"agerardojacinto@gmail.com","name":"alexgerardojacinto"},{"email":"pedro.gustavo.bilro@outsystems.com","name":"os-pedrobilro"},{"email":"eric.harvey@outsystems.com","name":"harvdoggy"},{"email":"joey.pender@outsystems.com","name":"jpender-os"},{"email":"andre.destro@outsystems.com","name":"ndr"},{"email":"kepa.baum.totorica@outsystems.com","name":"kepatoto"},{"email":"rui.moreira.mendes@outsystems.com","name":"rui.mendes"},{"email":"emer@emer.net","name":"markemer"},{"email":"ossplugins@outsystems.com","name":"capacitor-plugin-bot"},{"email":"horodyski@ionic.io","name":"eric-ionic"},{"email":"rui.alves@outsystems.com","name":"os-ruialves"}],"readme":"# @capacitor/health-fitness\n\nAccess Android Health Connect and Apple HealthKit data for health and fitness apps. Not available on web.\n\n## Install\n\nTo use npm\n\n```bash\nnpm install @capacitor/health-fitness\n```\n\nTo use yarn\n\n```bash\nyarn add @capacitor/health-fitness\n```\n\nSync native files\n\n```bash\nnpx cap sync\n```\n\n## iOS\n\nYour app's `Info.plist` must declare the following (the plugin cannot set\nthese on the host app itself):\n\n```xml\n<key>NSHealthShareUsageDescription</key>\n<string>App needs to share health data</string>\n<key>NSHealthUpdateUsageDescription</key>\n<string>App needs to use health data</string>\n<key>UIBackgroundModes</key>\n<array>\n  <string>fetch</string>\n  <string>processing</string>\n</array>\n<key>BGTaskSchedulerPermittedIdentifiers</key>\n<array>\n  <string>com.outsystems.health.default</string>\n</array>\n```\n\n- `NSHealthShareUsageDescription` / `NSHealthUpdateUsageDescription`: the\n  messages HealthKit shows the user when requesting read / write access.\n- `UIBackgroundModes` (`fetch`, `processing`) and\n  `BGTaskSchedulerPermittedIdentifiers`: needed for `setBackgroundJob`'s\n  background job feature.\n\nThe app target also needs the **HealthKit** capability enabled, with the\nfollowing entitlements set to `true` (both Debug and Release):\n\n- `com.apple.developer.healthkit`: the base entitlement required for any\n  HealthKit access at all.\n- `com.apple.developer.healthkit.background-delivery`: needed for\n  `setBackgroundJob`'s background job feature.\n- `com.apple.developer.healthkit.recalibrate-estimates`: needed to read/write\n  HealthKit's on-device \"estimate\" variables, e.g. `WALKING_SPEED` and VO2 max.\n\n`com.apple.developer.healthkit.access` should be set to an empty array - it\nlists any additional restricted HealthKit types beyond the default set, and\nthis plugin doesn't use any.\n\nRead about [Configuring `Info.plist`](https://capacitorjs.com/docs/ios/configuration#configuring-infoplist) in the [iOS Guide](https://capacitorjs.com/docs/ios) for more information on setting iOS permissions in Xcode\n\n## Android\n\nThis plugin ships a `capacitor:sync:after` hook\n(`hooks/capacitorCopyHealthFitnessConfigs.js`) that runs on every\n`npx cap sync` and edits your app's generated\n`android/app/src/main/AndroidManifest.xml` to declare the\nHealth Connect permissions your app actually needs. Health Connect permissions\ncannot be requested at runtime the way Capacitor's `plugins.<Name>` config\nvalues are read - they must exist in the manifest at build time - hence the\nsync-time hook instead of `getConfig()`.\n\n### Declaring permissions\n\nIn your app, create an `android/healthfitness.config.json` file (next to `android/app/`):\n\n```json\n{\n  \"permissions\": {\n    \"HEART_RATE\": \"Read\",\n    \"STEPS\": \"ReadWrite\",\n    \"WEIGHT\": \"Write\",\n    \"HEIGHT\": \"Read\",\n    \"CALORIES_BURNED\": \"Read\",\n    \"SLEEP\": \"Read\",\n    \"BLOOD_PRESSURE\": \"Read\",\n    \"BLOOD_GLUCOSE\": \"Read\",\n    \"BODY_FAT_PERCENTAGE\": \"Read\",\n    \"BASAL_METABOLIC_RATE\": \"Read\",\n    \"WALKING_SPEED\": \"Read\",\n    \"DISTANCE\": \"Read\",\n    \"OXYGEN_SATURATION\": \"Read\",\n    \"BODY_TEMPERATURE\": \"Read\"\n  },\n  \"groupPermissions\": {\n    \"ALL_VARIABLES\": \"ReadWrite\",\n    \"FITNESS_VARIABLES\": \"Read\",\n    \"HEALTH_VARIABLES\": \"Read\",\n    \"PROFILE_VARIABLES\": \"Read\"\n  }\n}\n```\n\nEach value is one of `Read`, `Write`, or `ReadWrite` - this casing is\nintentional and distinct from `requestHealthPermissions`'s `AccessType`\n(`READ`/`WRITE`/`READWRITE`), since this file is parsed by the sync-time hook\nabove, not read by the native plugin at runtime. Both files are optional\nper key - only declare what the app actually uses. If neither\n`healthfitness.config.json` nor any key in it is present, the hook falls back\nto declaring **every** Health Connect permission (matching the plugin's\nprevious, non-configurable behavior) so your app still works even if you\nskip configuration, at the cost of declaring more permissions than it needs.\n\n### Background jobs and read-history permissions\n\nTwo more permission groups are on by default and can be opted out of via\ntop-level flags in `android/healthfitness.config.json`:\n\n```json\n{\n  \"disableBackgroundJobs\": false,\n  \"disableReadHealthDataHistory\": false\n}\n```\n\n- `disableBackgroundJobs: true` skips `READ_HEALTH_DATA_IN_BACKGROUND`,\n  `POST_NOTIFICATIONS`, `ACTIVITY_RECOGNITION` (both the platform and Google\n  Play Services variants), `FOREGROUND_SERVICE`,\n  `FOREGROUND_SERVICE_HEALTH`, `HIGH_SAMPLING_RATE_SENSORS`, and\n  `SCHEDULE_EXACT_ALARM` - i.e. everything `setBackgroundJob` needs.\n- `disableReadHealthDataHistory: true` skips `READ_HEALTH_DATA_HISTORY` (lets\n  the app read data older than 30 days before the first Health Connect grant).\n\n### Background notification content\n\n`setBackgroundJob`'s foreground notification title/description are read from\nyour app's `res/values/strings.xml` (`background_notification_title`\n/ `background_notification_description`) - and read unconditionally at plugin\nload time (app startup), not just when a background job is actually set, so\na missing value crashes the app immediately rather than only when the feature\nis used. The hook creates both with sensible defaults if missing, overridable\nvia `android/healthfitness.config.json`:\n\n```json\n{\n  \"backgroundNotificationTitle\": \"Health & Fitness\",\n  \"backgroundNotificationDescription\": \"Monitoring your health and fitness data in the background.\"\n}\n```\n\n### Privacy policy URL\n\nHealth Connect requires a privacy policy URL for apps requesting these\npermissions - `requestHealthPermissions()` rejects without one, and Health\nConnect opens the URL directly in a browser from its own permissions screen,\nso it must be a real, publicly-reachable `https://` link, not a bundled local\nfile. The simplest way to set it is directly in\n`android/healthfitness.config.json`:\n\n```json\n{\n  \"privacyPolicyUrl\": \"https://example.com/privacy-policy\"\n}\n```\n\nIf `privacyPolicyUrl` isn't set, the hook falls back to deriving one from\n`capacitor.config.json`'s `server.url` + a fixed `HealthConnect_PrivacyPolicy.txt`\nfilename - only useful for apps that already serve their web content from a\nremote server and host that file there (`HealthConnect_PrivacyPolicy.txt` in\nyour app's `webDir`, copied to `android/app/src/main/assets/public/` by\n`cap sync`). Most Capacitor\napps bundle their web assets locally and have no `server.url`, so this\nfallback will never resolve for them - use `privacyPolicyUrl` directly\ninstead.\n\nEither way, if `strings.xml` already has a non-empty `privacy_policy_url`\n(e.g. set by a separate build step), the hook leaves it untouched.\n\n## Examples\n\nEvery method below is exercised by the plugin's own\n[`example-app`](https://github.com/ionic-team/capacitor-health-fitness/tree/main/example-app) -\nthe snippets here are taken directly from it. Note that every options object\nis a plain object whose values are themselves JSON-encoded strings, not typed\nfields.\n\n### Requesting permissions\n\nCall this before any other method. `allVariables`/`fitnessVariables`/\n`healthVariables`/`profileVariables`/`workoutVariables` each take a\nJSON-encoded `{ IsActive, AccessType }` descriptor (`AccessType` is `READ`,\n`WRITE`, or `READWRITE`) targeting a themed subset of variables:\n\n- **Fitness:** `STEPS`, `CALORIES_BURNED`, `DISTANCE`, `WALKING_SPEED`\n- **Health:** `HEART_RATE`, `SLEEP`, `BLOOD_PRESSURE`, `BLOOD_GLUCOSE`,\n  `OXYGEN_SATURATION`, `BODY_TEMPERATURE`\n- **Profile:** `WEIGHT`, `HEIGHT`, `BODY_FAT_PERCENTAGE`,\n  `BASAL_METABOLIC_RATE`\n- **Workout** (iOS only): HealthKit's workout type, needed for `getWorkoutData()`\n\nSetting `allVariables`'s `IsActive` to `true` requests every variable at\nonce (this already includes workout on iOS). Use `workoutVariables` on its\nown to request just workout access without everything else, or\n`customPermissions` to request individual variables directly, e.g.\n`[{\"Variable\":\"STEPS\",\"AccessType\":\"READ\"}]`.\n\n```typescript\nimport { HealthFitness } from '@capacitor/health-fitness';\n\nawait HealthFitness.requestHealthPermissions({\n  customPermissions: '[]',\n  allVariables: JSON.stringify({ IsActive: true, AccessType: 'READWRITE' }),\n  fitnessVariables: JSON.stringify({ IsActive: false, AccessType: 'READWRITE' }),\n  healthVariables: JSON.stringify({ IsActive: false, AccessType: 'READWRITE' }),\n  profileVariables: JSON.stringify({ IsActive: false, AccessType: 'READWRITE' }),\n  workoutVariables: JSON.stringify({ IsActive: false, AccessType: 'READWRITE' }), // allVariables already covers this\n});\n```\n\n### Querying data\n\n`getData()` runs an \"advanced query\": it reads one variable (e.g. `STEPS`)\nover a date range, bucketed into a time unit (e.g. one bucket per day), and\naggregated within each bucket by an operation (e.g. `SUM`). This example\nreads the last 7 days of daily step totals:\n\n```typescript\nimport { HealthFitness } from '@capacitor/health-fitness';\n\n// No milliseconds in the date strings - the native date parser only accepts\n// \"yyyy-MM-dd'T'HH:mm:ssZ\", so toISOString()'s fractional-seconds suffix\n// must be trimmed off.\nconst isoDate = (d: Date) => d.toISOString().split('.')[0] + 'Z';\nconst sevenDaysAgo = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000);\nconst tomorrow = new Date(Date.now() + 24 * 60 * 60 * 1000);\n\nconst { results } = await HealthFitness.getData({\n  parameters: JSON.stringify({\n    Variable: 'STEPS',\n    StartDate: isoDate(sevenDaysAgo),\n    EndDate: isoDate(tomorrow),\n    TimeUnit: 'DAY',\n    OperationType: 'SUM',\n    TimeUnitLength: 1,\n    AdvancedQueryReturnType: 'ALL_DATA',\n    AdvancedQueryResultType: 'RAW_DATA',\n  }),\n});\n\n// results is itself a JSON-encoded string\nconsole.log(JSON.parse(results ?? '[]'));\n```\n\n### Writing data\n\nAndroid only accepts \"profile\" variables here (`WEIGHT`, `HEIGHT`,\n`BODY_FAT_PERCENTAGE`, `BASAL_METABOLIC_RATE`); iOS accepts most variables\nexcept category-based ones like `SLEEP`.\n\n```typescript\nimport { HealthFitness } from '@capacitor/health-fitness';\n\nawait HealthFitness.writeData({ variable: 'WEIGHT', value: 75 });\n```\n\n### Getting the last recorded value\n\n```typescript\nimport { HealthFitness } from '@capacitor/health-fitness';\n\nconst { results } = await HealthFitness.getLastRecord({ variable: 'STEPS' });\n```\n\n### Querying workout data (iOS only)\n\n```typescript\nimport { HealthFitness } from '@capacitor/health-fitness';\n\nconst isoDate = (d: Date) => d.toISOString().split('.')[0] + 'Z';\n\nconst { results } = await HealthFitness.getWorkoutData({\n  parameters: JSON.stringify({\n    WorkoutTypeVariables: [],\n    StartDate: isoDate(new Date(Date.now() - 7 * 24 * 60 * 60 * 1000)),\n    EndDate: isoDate(new Date(Date.now() + 24 * 60 * 60 * 1000)),\n  }),\n});\n```\n\n### Background jobs\n\nA background job watches a single variable and fires a local notification\nwhen a condition is met - for example, notify the user once their daily\nstep count goes above 100. `JobFrequency`/`TimeUnit` control how often the\ncondition is checked; `NotificationFrequency` controls how often the\nnotification itself is allowed to re-fire once the condition is met.\n\n```typescript\nimport { HealthFitness } from '@capacitor/health-fitness';\n\nawait HealthFitness.setBackgroundJob({\n  parameters: JSON.stringify({\n    Variable: 'STEPS',\n    TimeUnit: 'DAY',\n    TimeUnitGrouping: 1,\n    NotificationFrequency: 'DAY',\n    NotificationFrequencyGrouping: 1,\n    JobFrequency: 'DAY',\n    Condition: 'HIGHER',\n    Value: 100,\n    NotificationHeader: 'Goal reached!',\n    NotificationBody: \"You've taken over 100 steps today.\",\n  }),\n});\n```\n\nList all existing background jobs:\n\n```typescript\nconst { jobs } = await HealthFitness.listBackgroundJobs();\nconst parsedJobs = JSON.parse(jobs);\nconsole.log(parsedJobs);\n```\n\nUpdate or delete a job using its `id`:\n\n```typescript\nconst jobId = parsedJobs[0].id;\n\nawait HealthFitness.updateBackgroundJob({\n  parameters: JSON.stringify({\n    Id: jobId,\n    NotificationFrequency: 'DAY',\n    NotificationFrequencyGrouping: 1,\n    Condition: 'HIGHER',\n    Value: 100,\n    NotificationHeader: 'Goal reached!',\n    NotificationBody: \"You've taken over 100 steps today.\",\n    IsActive: 'true',\n  }),\n});\n\nawait HealthFitness.deleteBackgroundJob({ id: jobId });\n```\n\n### Disconnecting / opening Health Connect (Android only)\n\n```typescript\nimport { HealthFitness } from '@capacitor/health-fitness';\n\nawait HealthFitness.disconnectFromHealthConnect();\nawait HealthFitness.openHealthConnect();\n```\n\n## API\n\n<docgen-index>\n\n* [`requestHealthPermissions(...)`](#requesthealthpermissions)\n* [`getData(...)`](#getdata)\n* [`getWorkoutData(...)`](#getworkoutdata)\n* [`writeData(...)`](#writedata)\n* [`getLastRecord(...)`](#getlastrecord)\n* [`setBackgroundJob(...)`](#setbackgroundjob)\n* [`deleteBackgroundJob(...)`](#deletebackgroundjob)\n* [`listBackgroundJobs()`](#listbackgroundjobs)\n* [`updateBackgroundJob(...)`](#updatebackgroundjob)\n* [`disconnectFromHealthConnect()`](#disconnectfromhealthconnect)\n* [`openHealthConnect()`](#openhealthconnect)\n* [Interfaces](#interfaces)\n\n</docgen-index>\n\n<docgen-api>\n<!--Update the source file JSDoc comments and rerun docgen to update the docs below-->\n\n### requestHealthPermissions(...)\n\n```typescript\nrequestHealthPermissions(options: RequestHealthPermissionsOptions) => Promise<void>\n```\n\nRequests the given HealthKit / Health Connect permissions.\n\n| Param         | Type                                                                                        |\n| ------------- | ------------------------------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#requesthealthpermissionsoptions\">RequestHealthPermissionsOptions</a></code> |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### getData(...)\n\n```typescript\ngetData(options: AdvancedQueryOptions) => Promise<AdvancedQueryResult>\n```\n\nPerforms an advanced query for a health/fitness variable over a date range.\n\n| Param         | Type                                                                  |\n| ------------- | --------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#advancedqueryoptions\">AdvancedQueryOptions</a></code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#advancedqueryresult\">AdvancedQueryResult</a>&gt;</code>\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### getWorkoutData(...)\n\n```typescript\ngetWorkoutData(options: WorkoutAdvancedQueryOptions) => Promise<WorkoutAdvancedQueryResult>\n```\n\nPerforms an advanced query for workout data over a date range.\n\niOS only - the underlying native Android library has no workout-specific\nquery. Not implemented on Android, so calling it there rejects with\nCapacitor's standard `UNIMPLEMENTED` error.\n\n| Param         | Type                                                                                |\n| ------------- | ----------------------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#workoutadvancedqueryoptions\">WorkoutAdvancedQueryOptions</a></code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#workoutadvancedqueryresult\">WorkoutAdvancedQueryResult</a>&gt;</code>\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### writeData(...)\n\n```typescript\nwriteData(options: WriteDataOptions) => Promise<void>\n```\n\nWrites a value to a health/fitness variable.\n\n| Param         | Type                                                          |\n| ------------- | ------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#writedataoptions\">WriteDataOptions</a></code> |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### getLastRecord(...)\n\n```typescript\ngetLastRecord(options: GetLastRecordOptions) => Promise<AdvancedQueryResult>\n```\n\nRetrieves the last recorded value for a variable.\n\n| Param         | Type                                                                  |\n| ------------- | --------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#getlastrecordoptions\">GetLastRecordOptions</a></code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#advancedqueryresult\">AdvancedQueryResult</a>&gt;</code>\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### setBackgroundJob(...)\n\n```typescript\nsetBackgroundJob(options: SetBackgroundJobOptions) => Promise<void>\n```\n\nCreates a background job that monitors a variable and notifies on a condition.\n\n| Param         | Type                                                                        |\n| ------------- | --------------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#setbackgroundjoboptions\">SetBackgroundJobOptions</a></code> |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### deleteBackgroundJob(...)\n\n```typescript\ndeleteBackgroundJob(options: DeleteBackgroundJobOptions) => Promise<void>\n```\n\nDeletes a background job by id.\n\n| Param         | Type                                                                              |\n| ------------- | --------------------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#deletebackgroundjoboptions\">DeleteBackgroundJobOptions</a></code> |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### listBackgroundJobs()\n\n```typescript\nlistBackgroundJobs() => Promise<ListBackgroundJobsResult>\n```\n\nLists all existing background jobs.\n\n**Returns:** <code>Promise&lt;<a href=\"#listbackgroundjobsresult\">ListBackgroundJobsResult</a>&gt;</code>\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### updateBackgroundJob(...)\n\n```typescript\nupdateBackgroundJob(options: UpdateBackgroundJobOptions) => Promise<void>\n```\n\nUpdates an existing background job's parameters.\n\n| Param         | Type                                                                              |\n| ------------- | --------------------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#updatebackgroundjoboptions\">UpdateBackgroundJobOptions</a></code> |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### disconnectFromHealthConnect()\n\n```typescript\ndisconnectFromHealthConnect() => Promise<void>\n```\n\nRevokes all Health Connect permissions previously granted to the app.\n\nAndroid only - HealthKit has no equivalent API for an app to revoke its own access.\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### openHealthConnect()\n\n```typescript\nopenHealthConnect() => Promise<void>\n```\n\nOpens the Health Connect app. Rejects if Health Connect is not installed.\n\nAndroid only - HealthKit has no equivalent standalone app to open.\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### Interfaces\n\n\n#### RequestHealthPermissionsOptions\n\n| Prop                    | Type                | Description                                                                                                                                                                                                                                                                                                                          |\n| ----------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| **`customPermissions`** | <code>string</code> | JSON-encoded string: an array of individual variable permission descriptors, e.g. `[{\"Variable\":\"STEPS\",\"AccessType\":\"READ\"}]`. Use this to request permission for specific variables not covered by (or instead of) the broader groups below. `AccessType` is `READ`, `WRITE`, or `READWRITE`.                                      |\n| **`allVariables`**      | <code>string</code> | JSON-encoded string: `{\"IsActive\": boolean, \"AccessType\": \"READ\" \\| \"WRITE\" \\| \"READWRITE\"}`. When `IsActive` is `true`, requests the given access to every health/fitness variable the plugin supports.                                                                                                                             |\n| **`fitnessVariables`**  | <code>string</code> | JSON-encoded string: `{\"IsActive\": boolean, \"AccessType\": \"READ\" \\| \"WRITE\" \\| \"READWRITE\"}`. Covers the \"fitness\" variable group: `STEPS`, `CALORIES_BURNED`, `DISTANCE`, `WALKING_SPEED`.                                                                                                                                          |\n| **`healthVariables`**   | <code>string</code> | JSON-encoded string: `{\"IsActive\": boolean, \"AccessType\": \"READ\" \\| \"WRITE\" \\| \"READWRITE\"}`. Covers the \"health\" variable group: `HEART_RATE`, `SLEEP`, `BLOOD_PRESSURE`, `BLOOD_GLUCOSE`, `OXYGEN_SATURATION`, `BODY_TEMPERATURE` (iOS also includes dietary water and dietary energy consumed, which have no Android equivalent). |\n| **`profileVariables`**  | <code>string</code> | JSON-encoded string: `{\"IsActive\": boolean, \"AccessType\": \"READ\" \\| \"WRITE\" \\| \"READWRITE\"}`. Covers the \"profile\" variable group: `WEIGHT`, `HEIGHT`, `BODY_FAT_PERCENTAGE`, `BASAL_METABOLIC_RATE`.                                                                                                                                |\n| **`workoutVariables`**  | <code>string</code> | JSON-encoded string: `{\"IsActive\": boolean, \"AccessType\": \"READ\" \\| \"WRITE\" \\| \"READWRITE\"}`. Requests permission for HealthKit's workout type, needed for `getWorkoutData()`. iOS only - not supported on Android (`getWorkoutData()` is iOS only; this field is never read there).                                                 |\n\n\n#### AdvancedQueryResult\n\n| Prop                   | Type                                            | Description                                                                                                                                                                                                                                    |\n| ---------------------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`results`**          | <code>string</code>                             | JSON-encoded string containing the raw result blocks.                                                                                                                                                                                          |\n| **`resultDataPoints`** | <code>string</code>                             | JSON-encoded string containing chart-ready accelerator data points.                                                                                                                                                                            |\n| **`warning`**          | <code>{ code: string; message: string; }</code> | Present only on Android, and only when `getData()`'s `TimeUnit` parameter is `MILLISECONDS` or `SECONDS` - both are deprecated on Health Connect, so the query silently runs with `TimeUnit: 'MINUTE'` instead. `code` is `OS-PLUG-HLFT-0405`. |\n\n\n#### AdvancedQueryOptions\n\n| Prop             | Type                | Description                                                                                                                                                                                                                                  |\n| ---------------- | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`parameters`** | <code>string</code> | JSON-encoded string containing the full query parameters object (variable, startDate, endDate, timeUnit, operationType, timeUnitLength, advancedQueryReturnType, advancedQueryResultType) - a single serialized blob, not individual fields. |\n\n\n#### WorkoutAdvancedQueryResult\n\n| Prop          | Type                | Description                                           |\n| ------------- | ------------------- | ----------------------------------------------------- |\n| **`results`** | <code>string</code> | JSON-encoded string containing the raw result blocks. |\n\n\n#### WorkoutAdvancedQueryOptions\n\n| Prop             | Type                | Description                                                                                                                                    |\n| ---------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`parameters`** | <code>string</code> | JSON-encoded string containing the full workout query parameters object (workoutTypeVariables, startDate, endDate) - a single serialized blob. |\n\n\n#### WriteDataOptions\n\n| Prop           | Type                | Description                                                                                                                                                                                                                                                                                                                                                                                                      |\n| -------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`variable`** | <code>string</code> | The health/fitness variable to write to. Android only accepts \"profile\" variables - `WEIGHT`, `HEIGHT`, `BODY_FAT_PERCENTAGE`, `BASAL_METABOLIC_RATE` - any other variable rejects with a \"not a profile variable\" error. iOS accepts most variables (anything HealthKit represents as a quantity, which includes the profile variables plus most fitness/health ones), except category-based ones like `SLEEP`. |\n| **`value`**    | <code>number</code> | The value to write, in the variable's native unit (e.g. kg for `WEIGHT`).                                                                                                                                                                                                                                                                                                                                        |\n\n\n#### GetLastRecordOptions\n\n| Prop           | Type                | Description                                        |\n| -------------- | ------------------- | -------------------------------------------------- |\n| **`variable`** | <code>string</code> | The health/fitness variable to read, e.g. `STEPS`. |\n\n\n#### SetBackgroundJobOptions\n\n| Prop             | Type                | Description                                                                                                                                                                                                                                                             |\n| ---------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`parameters`** | <code>string</code> | JSON-encoded string containing the full background job parameters object (variable, timeUnit, timeUnitGrouping, notificationFrequency, notificationFrequencyGrouping, jobFrequency, condition, value, notificationHeader, notificationBody) - a single serialized blob. |\n\n\n#### DeleteBackgroundJobOptions\n\n| Prop     | Type                | Description                                           |\n| -------- | ------------------- | ----------------------------------------------------- |\n| **`id`** | <code>string</code> | The background job's id, from `listBackgroundJobs()`. |\n\n\n#### ListBackgroundJobsResult\n\n| Prop       | Type                | Description                                                 |\n| ---------- | ------------------- | ----------------------------------------------------------- |\n| **`jobs`** | <code>string</code> | JSON-encoded string containing the list of background jobs. |\n\n\n#### UpdateBackgroundJobOptions\n\n| Prop             | Type                | Description                                                                                                                                                                                                               |\n| ---------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`parameters`** | <code>string</code> | JSON-encoded string containing the full update parameters object (id, notificationFrequency, notificationFrequencyGrouping, condition, value, notificationHeader, notificationBody, isActive) - a single serialized blob. |\n\n</docgen-api>\n","readmeFilename":"README.md"}