# This file lists processing purposes and the personal data gathered by
# Castopod.
# It is intended for hosting providers who want to provide a service
# based on Castopod, helping them to comply with GDPR requirements. Note
# that the services powered by Castopod may collect more data, HTTP logs
# in particular. As a hosting provider, you must inform your users of their
# rights and how their data are used and protected.

purposes:
  - description: |
      Deduplicate number of audio file downloads made by the same listener for
      analytics purposes
    lawfulness: legitimate interest
    data:
      - field: (User IP address + Browser User Agent)
        required: yes
        visibility: none
        description: |
          In order to produce analytics data comparable to the podcasting
          ecosystem standards, the User IP address (REMOTE_ADDR) with the
          browser User Agent (HTTP_USER_AGENT) are stored when an audio file
          is downloaded.
        mitigation: |
          The data (User IP address + Browser User Agent) is never stored in
          plain format.
          The data is concatenated with a cryptographic salt, the current date,
          and the podcast or episode IDs.
          The data is hashed (using sha1) after being concatenated and before
          being stored.
          The data is stored in a cache database (eg. Redis).
          The data expires every day at midnight (server time).
        retention: 24 hours maximum

  - description: Connect users to their accounts
    lawfulness: legitimate interest
    data:
      - field: username
        required: yes
        visibility: authenticated users
        description: |
          The username is used to identify users during the login process.
          The username is only required for users accessing the admin area.
        mitigation: The username does not have to be a real or known identity.
        retention: forever

      - field: user e-mail address
        required: yes
        visibility: administrators
        description: |
          The e-mail address is used for administrative purposes, to identify users
          during the login process and in case of forgotten password.
        retention: forever

      - field: password
        required: yes
        visibility: private
        description: |
          The password is used to check the identity of users during the login
          process.
        mitigation: |
          Only hashes (using the Argon2 key derivation function) of the passwords
          are stored in the database (but they transit over the network).
        retention: forever

  - description: Claim ownership of a podcast
    lawfulness: legitimate interest
    data:
      - field: Podcast e-mail address
        required: yes
        visibility: public
        description: |
          The podcast e-mail address is used to claim podcast ownership on other
          platforms (such as Apple Podcasts).
        mitigation: The e-mail can be generic.
        retention: forever
  - description: Grant access to premium content
    lawfulness: legitimate interest
    data:
      - field: Subscriber's email address
        required: yes
        visibility: administrators
        description: |
          The subscriber's e-mail address is used to provide credentials for
          listening to premium content.
        mitigation: The e-mail can be generic.
        retention: until the subscription ends
