leaving/patch-email.sh

27 lines
941 B
Bash

#!/bin/bash
# usage: bash patch-email.sh old@example.org new@example.org
source credentials.sh
user="bij1:${MAILCHIMP_API_KEY}"
dc='us16'
base="https://${dc}.api.mailchimp.com/3.0/"
old="$1"
new="$2"
# get lists
curl -X GET "${base}lists?fields=lists.id,lists.name" --user $user | jq -r '.lists[]'
# patch email $old to $new in all lists
ids=$(curl -X GET "${base}lists?fields=lists.id" --user $user | jq -r '.lists[].id')
while IFS= read -r list_id; do
echo "list: $list_id"
subscriber_url=$(curl -X GET "${base}search-members?list_id=${list_id}&query=${old}&fields=exact_matches.members._links.href" --user $user | jq -r '.exact_matches.members[0]._links[0].href')
if [ $subscriber_url != 'null' ]; then
echo "✅ found, updating email to $new"
curl -X PATCH "$subscriber_url?skip_merge_validation=true" --user $user -d "{\"email_address\":\"$new\"}"
else
echo "no match"
fi
done <<< "$ids"