You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
House cleaning to not end up in an unmaintainable state with left overs all over the place:
Add a new /contactfilter resource
Add the new contactfilter to a /campaigndraft resource
Delete the contact filter
(Maybe:) Remove it from the campaigndraft first?
(Note: This is a follow up during the work on #15 while testing setups).
Steps to reproduce
1. Create the filter
(optional) Install jq or json_pp (prefer the further) for human readable JSON output in the shell
Create a file named mjkey (w/o extension) and store nothing than the $APIKEY:$SECRET, that you can find in the MailJet Webapp: https://app.mailjet.com/account/api_keys
Create a second file, named filters-create.sh and store the following contents:
#!/usr/bin/env bash
# @example sh filter-create.sh $(cat mjkey) ${FILTER_NAME}.json
# @example sh filter-create.sh $(cat mjkey) expr_puchase_avg.json | jq # or: json_pp for pretty/ human-readable JSON format
curl -sX POST https://api.mailjet.com/v3/REST/contactfilter \
--user "${1}" \
--header 'Content-Type: application/json' \
-d @${2}
Create a contact meta data entry named purchase in the MailJet Webapp: https://app.mailjet.com/contacts/lists/properties
Create a file named filter.json with the following contents:
{
"Description": "Contactfilter to test deletion of itself.",
"Name": "DeleteMe"
"Expression": "max(1,purchase) > 50"
"": ""
}
Call the file in your CLI/ terminal/ shell like in the following example. Pipe the output to jq:
$ sh filter-create.sh $(cat mjkey) filter.json |jq
Write down the Segmentation ID from the response (or query it via the API GET–request at https://api.mailjet.com/v3/REST/contactfilter later on).
2. Attach the filter to a /campaigndraft resource
– Create a file named campaign-create.sh with the following contents:
#!/usr/bin/env bash
# @example sh campaign-create.sh $(cat mjkey) campaign.json
# @example sh campaign-create.sh $(cat mjkey) campaign.json | jq # or: json_pp for pretty/ human-readable JSON format
curl -sX POST https://api.mailjet.com/v3/REST/campaigndraft \
--user "${1}" \
-H "Content-Type: application/json" \
-d @${2}
– Create a file named campaign.json with the following contents and substitute ContactsListID with the ID of an existing contacts list and segmentation ID :
{
"Locale" : "en_US",
"Sender" : "API Testuser",
"SenderEmail" : "[email protected]",
"Subject" : "Hello, nothing to see here",
"Title" : "Draft to serve as testcase for an attached segmentation.",
"ContactsListID" : 20070,
"SegmentationID" : 365
}
3. Attempt to delete the filter again
List all filters. Create a file named filters-list.sh:
#!/usr/bin/env bash
# @example sh filters-list.sh $(cat mjkey)
# @example sh filters-list.sh $(cat mjkey) | jq # or: json_pp for pretty/ human-readable JSON format
curl -sX GET https://api.mailjet.com/v3/REST/contactfilter \
--user "${1}" \
--header 'Content-Type: application/json'
Execute the file in your CLI
$ sh filters-list.sh $(cat mjkey) |jq
Response:
{
"Count": 1,
"Data": [
{
"Description": "Contactfilter to test deletion of itself.",
"Expression": "max(1,purchase) > 50",
"ID": 365,
"Name": "DeleteMe",
"Status": "used"
}
],
"Total": 1
}
Delete the filter again: Create a file named filter-del.sh and add the following contents:
#!/usr/bin/env bash
# @example sh filter-del.sh $(cat mjkey) 123
# @example sh filter-del.sh $(cat mjkey) "Users above 50"
# @example sh filter-del.sh $(cat mjkey) 123 | jq # or: json_pp for pretty/ human-readable JSON format
curl -sX DELETE "https://api.mailjet.com/v3/REST/contactfilter/${2}" \
--user "${1}" \
--header 'Content-Type: application/json'
Call the file in your CLI
$ sh filter-del.sh $(cat mjkey) 365 |jq
Response:
{
"ErrorInfo": "",
"ErrorMessage": "Method not allowed: Filter is used",
"StatusCode": 405
}
Other attempts
I tried to remove the segmentation from existing /campaigndraft resources by updating the resource:
{
"ErrorInfo": "",
"ErrorMessage": "Cannot change status from used to unused",
"StatusCode": 400
}
Expected Outcome / Behavior
I expected to be able to do one of the following:
remove the /contactsfilter resource via the API and the connections/ dependencies/ links update themselves.
(at least be able to) search up the linked resources where the contactsfilter is used and remove the /contactsfilter by ID and then be able to delete it.
Questions:
How can I delete an existing contacts filter resource and all its references?
The text was updated successfully, but these errors were encountered:
At the moment it's not possible to delete or modify a segment that was used in a sent campaign - a used contactfilter object is basically locked. The main reason behind this is to have consistent information for sent campaigns.
However, we're working on optimizing the segmentation feature as we speak. One of the new functionalities we're working on is a soft-delete of a used contactfilter, which will basically mark it as archived and it won't appear in the list of available segments. I can't give you an exact timeframe, but development on this project has already started.
Hi @franz-josef-kaiser , sorry, there wasn't much development on this project - it was delayed to free up bandwidth for other projects. As soon as there's additional info, I'll post it here.
Task
House cleaning to not end up in an unmaintainable state with left overs all over the place:
/contactfilter
resource/campaigndraft
resource(Note: This is a follow up during the work on #15 while testing setups).
Steps to reproduce
1. Create the filter
(optional) Install
jq
orjson_pp
(prefer the further) for human readable JSON output in the shellCreate a file named
mjkey
(w/o extension) and store nothing than the$APIKEY:$SECRET
, that you can find in the MailJet Webapp:https://app.mailjet.com/account/api_keys
Create a second file, named
filters-create.sh
and store the following contents:Create a contact meta data entry named
purchase
in the MailJet Webapp:https://app.mailjet.com/contacts/lists/properties
Create a file named
filter.json
with the following contents:Call the file in your CLI/ terminal/ shell like in the following example. Pipe the output to
jq
:Write down the Segmentation ID from the response (or query it via the API
GET
–request athttps://api.mailjet.com/v3/REST/contactfilter
later on).2. Attach the filter to a
/campaigndraft
resource– Create a file named
campaign-create.sh
with the following contents:– Create a file named
campaign.json
with the following contents and substituteContactsListID
with the ID of an existing contacts list and segmentation ID :3. Attempt to delete the filter again
List all filters. Create a file named
filters-list.sh
:Execute the file in your CLI
Response:
Delete the filter again: Create a file named
filter-del.sh
and add the following contents:Call the file in your CLI
Response:
Other attempts
I tried to remove the segmentation from existing
/campaigndraft
resources by updating the resource:The response was the following:
I then updated the
AXTesting
value as well:The response was the following:
Finally I tried to update the
/contactsfilter
valueStatus
tounused
:The response was the following:
Expected Outcome / Behavior
I expected to be able to do one of the following:
/contactsfilter
resource via the API and the connections/ dependencies/ links update themselves./contactsfilter
by ID and then be able to delete it.Questions:
The text was updated successfully, but these errors were encountered: