Skip to content

Input CSV

The input CSV is the list of items a remediation targets, and is typically built from the Service IDs recorded when the account was acquired or reviewed.

You can pass the input CSV to the start command with the --input (or -i) switch.

  • A header row is required. Columns are found by their header, so their order does not matter.
  • Headers are matched in a case insensitive manner, and several spellings are accepted for most columns (see Columns).
  • Only the columns you need have to be present. A column that a provider does not use can be left out. Columns Obliterator does not recognize are ignored. So, an export from another tool such as FEC can often be used as is, without worrying about removing the unnecessary columns.
  • UTF-8 encoded, with or without a byte order mark. A value containing a comma or a double quote has to be enclosed in double quotes, as many tools do when handling CSVs.
ColumnAccepted headersContents
ServiceIdServiceId, Service IDThe provider’s identifier for the item. See Service IDs.
TargetEmailTargetEmail, Target Email, TargetAccountThe account the item belongs to. See Target Accounts.
FolderFolder(IMAP only) The mailbox folder holding the message, e.g., INBOX or Archive/2023.
Mime HashMime Hash [SHA256], Mime Hash [SHA1], Mime Hash [MD5], Mime Hash [SHA512], Mime Hash, MimeHash, Hash(IMAP only) The hash of the raw MIME message, used with --verify-hashes.
DriveIdDriveId, Drive ID(OneDrive and SharePoint only) The Drive where the item is located.
SiteSite(SharePoint only) The site URL, for items without a DriveId.
UsernameUsername, Account Username(Basic authentication only) The account’s username.
PasswordPassword, Account Password, App Password, AppPassword(Basic authentication only) The account’s password or App Password.
ProviderServiceIdTargetEmailFolderMime HashDriveIdSiteUsername, Password
GmailRequiredRequired
GoogleDriveRequiredRequired
GraphMailRequiredRequired
OneDriveRequiredRequiredOptional
SharePointRequiredRequiredEither DriveId or SiteEither DriveId or Site
EwsRequiredRequiredOptional with Basic
ImapRequiredRequiredRequiredRequired with --verify-hashesOptional with Basic

A blank cell in the table means the provider does not use that column. A DriveId value for a provider other than OneDrive or SharePoint is refused, and Username and Password values are ignored with a warning outside of basic authentication.

ServiceId is the identifier the provider uses to address each item.

ProviderWhat Service ID ContainsExample
GmailThe Gmail API message ID278dcb960d99b98c
GoogleDriveThe Google Drive file ID1MnpbPsGs2c84oMXCsI1T-lSNjDQlKQYj
GraphMailThe Microsoft Graph message IDAAMkAKzh0NpQ-sVOTLxT...
EwsThe EWS item IDAAMkAHawKzwPTuMOAPwB...
OneDrive, SharePointThe Microsoft Graph Drive item ID016ZGWK5ATH6TMNW7JAQT4KHWQFFAMRBH3
ImapThe composite unique ID, which combines the message’s UID with its folder’s UIDVALIDITYCRDYQIAAE9h

TargetEmail indicates the account to which each item belongs, and it is always required.

Which address of an M365 account the provider accepts depends on how you authenticate:

RemediationTargetEmail must be
Any interactive Microsoft sign-inThe account’s sign-in address (its UPN), which can differ from its email address
GraphMail, App-only AuthenticationAny email address of the mailbox
Ews, App-only AuthenticationThe mailbox’s primary email address
OneDrive, App-only AuthenticationThe sign-in address (UPN), for an item without a DriveId

For OneDrive and SharePoint, TargetEmail is the email address of a custodian whose credentials can access the target item.

  • Folder is used exactly as given. It is not normalized, so Inbox and INBOX are different folders to Obliterator.
  • Gmail over IMAP requires every copy of an item to be listed. Every Gmail message is visible in [Gmail]/All Mail as well as in INBOX and each of its labels’ folders, and it is only deleted once it is expunged from all of them. List the Folder and ServiceId of every copy, as a full Gmail IMAP acquisition (e.g., FEC acquisition) records them. TIP We generally recommend Gmail API over IMAP for Gmail remediation.

With --verify-hashes, each message is downloaded and compared with the hash in the CSV before it is deleted.

  • Every row must have a hash. A CSV with a blank hash is refused.
  • The hash algorithm is chosen by --verification-hash-type, not by the header. The bracketed header is only a label.
  • DriveId addresses an item exactly. An item ID is unique only within its Drive, so a DriveId is the most precise way to identify a file. It can name any Drive the credential can access, e.g., another user’s OneDrive shared with the custodian, or a SharePoint document library.
  • Without a DriveId, OneDrive uses the custodian’s own OneDrive, and SharePoint searches the document libraries of the row’s Site.
  • Prefer DriveId for SharePoint. Searching a site’s libraries is computationally expensive. Where a row has both, the DriveId is used.
  • Rows with and without a DriveId can be mixed in one CSV.

For basic authentication (IMAP, and on-premises EWS without --use-impersonation), each account can carry its own login in the Username and Password columns.

  • Username is optional. It defaults to the TargetEmail. Supply it only when the username differs, e.g., EXAMPLE\jdoe, or jdoe for a server that requires the local part alone.
  • Password is optional. An account with no password in the CSV uses --password, and an account with neither is prompted for by name before anything is deleted.
  • To replace a password that has changed, supply the new value in the Password column and run again. A value in the CSV overwrites the one the project holds.
  • Importing a CSV again does not reset completed work. An item is identified by its ServiceId, TargetEmail, Folder and DriveId together, so a row already in the project is recognized and only new rows are added.
  • The same item listed twice is imported only once.
  • The Remaining Items Log is a valid input CSV. Every item a remediation could not confirm as deleted is written to it with the same columns, so it can be used as the input of a new project.

You can find several example input CSVs on the Examples page.