├── .github ├── header-checker-lint.yml └── workflows │ ├── ci.yaml │ └── terraform.yml ├── .gitignore ├── .gitmodules ├── .mvn └── wrapper │ ├── MavenWrapperDownloader.java │ └── maven-wrapper.properties ├── LICENSE ├── README.md ├── SECURITY.md ├── attestation └── pom.xml ├── ci ├── FirestoreTesting.Dockerfile ├── build.sh ├── common.sh ├── dependencies.sh ├── firebase.sh ├── generate-templates.sh └── integration.sh ├── cloudbuild.yaml ├── config └── firebase │ ├── README.md │ ├── firebase.json │ ├── firestore.rules │ ├── package.json │ └── rules.test.js ├── container-build.yaml ├── df-flex-template-base-image ├── Dockerfile └── java_template_launcher ├── docs ├── code-of-conduct.md └── contributing.md ├── logging.properties ├── model └── pom.xml ├── mvn-settings.xml ├── mvnw ├── mvnw.cmd ├── pipeline └── pom.xml ├── pom.xml ├── src ├── main │ └── java │ │ └── com │ │ └── google │ │ └── exposurenotification │ │ └── privateanalytics │ │ └── ingestion │ │ ├── attestation │ │ └── AbstractDeviceAttestation.java │ │ ├── model │ │ └── DataShare.java │ │ └── pipeline │ │ ├── AWSFederatedAuthHelper.java │ │ ├── BatchWriterFn.java │ │ ├── DataProcessorManifest.java │ │ ├── DateFilterFn.java │ │ ├── DeletionPipeline.java │ │ ├── FirestoreConnector.java │ │ ├── IngestionPipeline.java │ │ ├── IngestionPipelineOptions.java │ │ └── PrioSerializationHelper.java ├── proto │ └── analytics.proto └── test │ ├── java │ └── com │ │ └── google │ │ └── exposurenotification │ │ └── privateanalytics │ │ └── ingestion │ │ ├── model │ │ └── DataShareTest.java │ │ └── pipeline │ │ ├── DataProcessorManifestTest.java │ │ ├── DateFilterFnTest.java │ │ ├── DeletionPipelineIT.java │ │ ├── FirestoreClientTestUtils.java │ │ ├── IngestionPipelineIT.java │ │ ├── IngestionPipelineOptionsTest.java │ │ ├── IngestionPipelineTest.java │ │ ├── PrioSerializationHelperTest.java │ │ └── TestAttestation.java │ └── resources │ └── com │ └── google │ └── exposurenotification │ └── privateanalytics │ └── ingestion │ └── pipeline │ └── test-manifest.json ├── templates ├── dataflow-deletion-metadata-template.json ├── dataflow-flex-template.json ├── dataflow-ingestion-metadata-template.json ├── scheduler-deletion-template.tmpl └── scheduler-ingestion-template.tmpl └── terraform ├── README.md ├── dataflow.tf ├── firestore.tf ├── gcr.tf ├── iam.tf ├── main.tf ├── scheduler.tf └── variables.tf /.github/header-checker-lint.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/.github/header-checker-lint.yml -------------------------------------------------------------------------------- /.github/workflows/ci.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/.github/workflows/ci.yaml -------------------------------------------------------------------------------- /.github/workflows/terraform.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/.github/workflows/terraform.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/.gitignore -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/.gitmodules -------------------------------------------------------------------------------- /.mvn/wrapper/MavenWrapperDownloader.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/.mvn/wrapper/MavenWrapperDownloader.java -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/.mvn/wrapper/maven-wrapper.properties -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/README.md -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/SECURITY.md -------------------------------------------------------------------------------- /attestation/pom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/attestation/pom.xml -------------------------------------------------------------------------------- /ci/FirestoreTesting.Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/ci/FirestoreTesting.Dockerfile -------------------------------------------------------------------------------- /ci/build.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/ci/build.sh -------------------------------------------------------------------------------- /ci/common.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/ci/common.sh -------------------------------------------------------------------------------- /ci/dependencies.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/ci/dependencies.sh -------------------------------------------------------------------------------- /ci/firebase.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/ci/firebase.sh -------------------------------------------------------------------------------- /ci/generate-templates.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/ci/generate-templates.sh -------------------------------------------------------------------------------- /ci/integration.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/ci/integration.sh -------------------------------------------------------------------------------- /cloudbuild.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/cloudbuild.yaml -------------------------------------------------------------------------------- /config/firebase/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/config/firebase/README.md -------------------------------------------------------------------------------- /config/firebase/firebase.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/config/firebase/firebase.json -------------------------------------------------------------------------------- /config/firebase/firestore.rules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/config/firebase/firestore.rules -------------------------------------------------------------------------------- /config/firebase/package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/config/firebase/package.json -------------------------------------------------------------------------------- /config/firebase/rules.test.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/config/firebase/rules.test.js -------------------------------------------------------------------------------- /container-build.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/container-build.yaml -------------------------------------------------------------------------------- /df-flex-template-base-image/Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/df-flex-template-base-image/Dockerfile -------------------------------------------------------------------------------- /df-flex-template-base-image/java_template_launcher: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/df-flex-template-base-image/java_template_launcher -------------------------------------------------------------------------------- /docs/code-of-conduct.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/docs/code-of-conduct.md -------------------------------------------------------------------------------- /docs/contributing.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/docs/contributing.md -------------------------------------------------------------------------------- /logging.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/logging.properties -------------------------------------------------------------------------------- /model/pom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/model/pom.xml -------------------------------------------------------------------------------- /mvn-settings.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/mvn-settings.xml -------------------------------------------------------------------------------- /mvnw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/mvnw -------------------------------------------------------------------------------- /mvnw.cmd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/mvnw.cmd -------------------------------------------------------------------------------- /pipeline/pom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/pipeline/pom.xml -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/pom.xml -------------------------------------------------------------------------------- /src/main/java/com/google/exposurenotification/privateanalytics/ingestion/attestation/AbstractDeviceAttestation.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/src/main/java/com/google/exposurenotification/privateanalytics/ingestion/attestation/AbstractDeviceAttestation.java -------------------------------------------------------------------------------- /src/main/java/com/google/exposurenotification/privateanalytics/ingestion/model/DataShare.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/src/main/java/com/google/exposurenotification/privateanalytics/ingestion/model/DataShare.java -------------------------------------------------------------------------------- /src/main/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/AWSFederatedAuthHelper.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/src/main/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/AWSFederatedAuthHelper.java -------------------------------------------------------------------------------- /src/main/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/BatchWriterFn.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/src/main/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/BatchWriterFn.java -------------------------------------------------------------------------------- /src/main/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/DataProcessorManifest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/src/main/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/DataProcessorManifest.java -------------------------------------------------------------------------------- /src/main/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/DateFilterFn.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/src/main/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/DateFilterFn.java -------------------------------------------------------------------------------- /src/main/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/DeletionPipeline.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/src/main/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/DeletionPipeline.java -------------------------------------------------------------------------------- /src/main/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/FirestoreConnector.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/src/main/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/FirestoreConnector.java -------------------------------------------------------------------------------- /src/main/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/IngestionPipeline.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/src/main/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/IngestionPipeline.java -------------------------------------------------------------------------------- /src/main/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/IngestionPipelineOptions.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/src/main/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/IngestionPipelineOptions.java -------------------------------------------------------------------------------- /src/main/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/PrioSerializationHelper.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/src/main/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/PrioSerializationHelper.java -------------------------------------------------------------------------------- /src/proto/analytics.proto: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/src/proto/analytics.proto -------------------------------------------------------------------------------- /src/test/java/com/google/exposurenotification/privateanalytics/ingestion/model/DataShareTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/src/test/java/com/google/exposurenotification/privateanalytics/ingestion/model/DataShareTest.java -------------------------------------------------------------------------------- /src/test/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/DataProcessorManifestTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/src/test/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/DataProcessorManifestTest.java -------------------------------------------------------------------------------- /src/test/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/DateFilterFnTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/src/test/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/DateFilterFnTest.java -------------------------------------------------------------------------------- /src/test/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/DeletionPipelineIT.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/src/test/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/DeletionPipelineIT.java -------------------------------------------------------------------------------- /src/test/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/FirestoreClientTestUtils.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/src/test/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/FirestoreClientTestUtils.java -------------------------------------------------------------------------------- /src/test/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/IngestionPipelineIT.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/src/test/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/IngestionPipelineIT.java -------------------------------------------------------------------------------- /src/test/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/IngestionPipelineOptionsTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/src/test/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/IngestionPipelineOptionsTest.java -------------------------------------------------------------------------------- /src/test/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/IngestionPipelineTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/src/test/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/IngestionPipelineTest.java -------------------------------------------------------------------------------- /src/test/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/PrioSerializationHelperTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/src/test/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/PrioSerializationHelperTest.java -------------------------------------------------------------------------------- /src/test/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/TestAttestation.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/src/test/java/com/google/exposurenotification/privateanalytics/ingestion/pipeline/TestAttestation.java -------------------------------------------------------------------------------- /src/test/resources/com/google/exposurenotification/privateanalytics/ingestion/pipeline/test-manifest.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/src/test/resources/com/google/exposurenotification/privateanalytics/ingestion/pipeline/test-manifest.json -------------------------------------------------------------------------------- /templates/dataflow-deletion-metadata-template.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/templates/dataflow-deletion-metadata-template.json -------------------------------------------------------------------------------- /templates/dataflow-flex-template.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/templates/dataflow-flex-template.json -------------------------------------------------------------------------------- /templates/dataflow-ingestion-metadata-template.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/templates/dataflow-ingestion-metadata-template.json -------------------------------------------------------------------------------- /templates/scheduler-deletion-template.tmpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/templates/scheduler-deletion-template.tmpl -------------------------------------------------------------------------------- /templates/scheduler-ingestion-template.tmpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/templates/scheduler-ingestion-template.tmpl -------------------------------------------------------------------------------- /terraform/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/terraform/README.md -------------------------------------------------------------------------------- /terraform/dataflow.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/terraform/dataflow.tf -------------------------------------------------------------------------------- /terraform/firestore.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/terraform/firestore.tf -------------------------------------------------------------------------------- /terraform/gcr.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/terraform/gcr.tf -------------------------------------------------------------------------------- /terraform/iam.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/terraform/iam.tf -------------------------------------------------------------------------------- /terraform/main.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/terraform/main.tf -------------------------------------------------------------------------------- /terraform/scheduler.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/terraform/scheduler.tf -------------------------------------------------------------------------------- /terraform/variables.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/exposure-notifications-private-analytics-ingestion/HEAD/terraform/variables.tf --------------------------------------------------------------------------------