:PROPERTIES: :ID: b1d8fa03-4bd6-4bae-a642-23ae77769c41 :END: #+title: 2022-04-12 * Normalizing tags in rule sets References for applying [[id:d06d3ab4-c2d0-47c3-aae1-4395567fc3d2][Tag Normalization]] to campaign rule sets. Campaign proxy iterates through this data, could be useful as an example. ** References for navigating rule set data structures - Ruleset structure :: https://confluence.aweber.io/display/AR/Ruleset+v2+Structure#Rulesetv2Structure-event - Ruleset json schemas :: https://gitlab.aweber.io/CC/Libraries/ruleset-json-schema/-/tree/master - Campaigns iterating through events :: https://gitlab.aweber.io/CC/Applications/campaign-proxy/-/blob/4eafb44c557aff34a0c9b519ff99d6c81eb9b0d8/campaignproxy/ruleset_validation_handlers.py#L442-447 - Campaigns iterating through actions :: https://gitlab.aweber.io/CC/Applications/campaign-proxy/-/blob/4eafb44c557aff34a0c9b519ff99d6c81eb9b0d8/campaignproxy/ruleset_validation_handlers.py#L402-403 #+begin_notes The rule service also stores data for searches in redis, be sure to alter the data before any storage occurs. #+end_notes ** Looking up a campaign's ruleset Fetch the campaign record using the UUID in the control0-panel campaign URL. #+begin_src http :pretty :cache yes :exports both GET http://campaign.service.staging.consul/210b4a4f-ee07-4f1e-98c8-d16541f6e686 #+end_src #+RESULTS[c237f01dc854e750aa1c8f568dbd54f77ab6f56c]: #+begin_example { "id": "210b4a4f-ee07-4f1e-98c8-d16541f6e686", "name": "Normal Scott", "owner": "26b49bc2-207e-4a33-b267-5b9e64f2702e", "parent": "9f1db623-fbc3-4112-a2f3-ab563e37e131", "rule_set": "01955ad5-cbca-455c-934f-d69a71a5578f", "created_at": "2022-03-21T20:17:39.795431+00:00", "modified_at": "2022-03-24T18:34:37.909620+00:00", "state_changed_at": "2022-03-22T15:24:45.727430+00:00", "url": "http://campaign.service.staging.consul/210b4a4f-ee07-4f1e-98c8-d16541f6e686?owner=26b49bc2-207e-4a33-b267-5b9e64f2702e&parent=9f1db623-fbc3-4112-a2f3-ab563e37e131", "state": "active", "state_serial": 3, "is_valid": true, "is_legacy_followup": false, "sharing_enabled": false, "auto_extend_enabled": true, "extend_needed": false, "extended_at": null, "custom_fields": [], "global_fields": [], "campaign_type": "autoresponder", "properties": null } #+end_example Fetch the rule set using the =rule_set= id returned with the campaign. #+begin_src http :pretty :cache yes :exports both GET https://rule.aweberstage.com/01955ad5-cbca-455c-934f-d69a71a5578f #+end_src #+RESULTS[685774a46bbaf38b945afcc0952a390d1bc53ed3]: #+begin_example { "id": "01955ad5-cbca-455c-934f-d69a71a5578f", "version": 2, "owner": "26b49bc2-207e-4a33-b267-5b9e64f2702e", "parent": "9f1db623-fbc3-4112-a2f3-ab563e37e131", "state": "active", "system": false, "iterator": null, "events": [ { "id": "b3b69bd4-0c7b-4253-ab65-e6fcbb726f07", "type": "tag.v1", "title": null, "filter": { "type": "all", "criteria": [ { "expect": true, "kwargs": { "key": "label", "values": [ "normalize test", "foo" ] }, "function": "rulesengine.filter.event_value_in", "operator": "==" }, { "expect": true, "kwargs": { "list": "", "labels": [ "normalize test", "foo" ], "account": "", "recipient": "" }, "function": "ruleset.tag.filter.any_tags_v1", "operator": "==" }, { "expect": false, "kwargs": { "list": "", "labels": [ "normalized tag" ], "account": "", "recipient": "" }, "function": "ruleset.tag.filter.any_tags_v1", "operator": "==" } ] }, "parents": [], "metadata": "tag.v1", "recurring": false } ], "actions": [ { "id": "396cd5d3-d410-4ae2-a991-b93a0b816600", "title": null, "parents": [ "b3b69bd4-0c7b-4253-ab65-e6fcbb726f07" ], "metadata": "send-message", "recurring": false, "definition": { "kwargs": { "list": "", "account": "", "message": "394c27bf-5853-4b45-9ff1-a0637848f4b6", "meapi_id": "6238dd85f227ef3f2d5ec3a5", "recipient": "" }, "function": "ruleset.email.action.compose_v1" } } ] } #+end_example