Content Filters
Create and manage content filtering rules for your proxy. Filters automatically moderate requests and responses flowing through Metriqual.
block action stops the request. Filters with a flag action log a warning but let the request through.List Filters
/v1/filtersList all content filters for the authenticated user (or organization).
curl https://api.metriqual.com/v1/filters \
-H "Authorization: Bearer YOUR_JWT"const filters = await mql.filters.list();
filters.forEach(f => console.log(f.name, f.type, f.is_active));filters = mql.filters.list()
for f in filters:
print(f["name"], f["type"], f["is_active"])mql filters list
mql filters ls --jsonCreate Filter
/v1/filtersBody Parameters
namestringrequiredFilter name
typestringrequiredFilter type
Options: keyword, regex, category
configobjectrequiredType-specific configuration (e.g. keywords list, regex pattern, or categories)
actionstringrequiredAction to take on match
Options: block, flag
is_activebooleanWhether filter is active
Default: true
curl -X POST https://api.metriqual.com/v1/filters \
-H "Authorization: Bearer YOUR_JWT" \
-H "Content-Type: application/json" \
-d '{
"name": "Block PII",
"type": "regex",
"config": { "pattern": "\\b\\d{3}-\\d{2}-\\d{4}\\b" },
"action": "block"
}'const filter = await mql.filters.create({
name: 'Block PII',
type: 'regex',
config: { pattern: '\\b\\d{3}-\\d{2}-\\d{4}\\b' },
action: 'block',
});
console.log(filter.id);filter = mql.filters.create(
name="Block PII",
filter_type="regex",
config={"pattern": r"\b\d{3}-\d{2}-\d{4}\b"},
action="block",
)
print(filter["id"])mql filters create -n "Block PII" -t regex \
--config '{"pattern": "\\b\\d{3}-\\d{2}-\\d{4}\\b"}' \
-a blockUpdate Filter
/v1/filters/:filter_idUpdate an existing filter's name, config, or action.
await mql.filters.update('filter_id', {
name: 'Block PII v2',
config: { pattern: '\\b\\d{3}-\\d{2}-\\d{4}\\b|\\b\\d{16}\\b' },
});mql.filters.update("filter_id",
name="Block PII v2",
config={"pattern": r"\b\d{3}-\d{2}-\d{4}\b|\b\d{16}\b"},
)mql filters update FILTER_ID -n "Block PII v2"Toggle Filter
/v1/filters/:filter_id/toggleEnable or disable a filter without deleting it.
await mql.filters.toggle('filter_id');mql.filters.toggle("filter_id")mql filters toggle FILTER_IDDelete Filter
/v1/filters/:filter_idPermanently delete a content filter.
await mql.filters.delete('filter_id');mql.filters.delete("filter_id")mql filters delete FILTER_IDFilter Templates
/v1/filters/templates/v1/filters/templates/:template_idList pre-built filter templates and create a filter from a template.
// List templates
const templates = await mql.filters.getTemplates();
templates.forEach(t => console.log(t.name, t.description));
// Create from template
const filter = await mql.filters.createFromTemplate('template_id');# List templates
templates = mql.filters.get_templates()
for t in templates:
print(t["name"], t["description"])
# Create from template
filter = mql.filters.create_from_template("template_id")Test Filter
/v1/filters/:filter_id/testTest a filter against sample content without sending a real request.
const result = await mql.filters.test('filter_id', {
content: 'My SSN is 123-45-6789'
});
console.log(result.matched, result.action); // true, 'block'result = mql.filters.test("filter_id", content="My SSN is 123-45-6789")
print(result["matched"], result["action"]) # True, 'block'Organization Filters
/v1/organizations/:org_id/filters/v1/organizations/:org_id/filtersList and create filters scoped to an organization. These apply to all members' traffic.
// List org filters
const orgFilters = await mql.filters.listForOrg('org_id');
// Create org filter
const filter = await mql.filters.createForOrg('org_id', {
name: 'Block profanity',
type: 'keyword',
config: { keywords: ['badword1', 'badword2'] },
action: 'block',
});# List org filters
org_filters = mql.filters.list_for_org("org_id")
# Create org filter
filter = mql.filters.create_for_org("org_id",
name="Block profanity",
filter_type="keyword",
config={"keywords": ["badword1", "badword2"]},
action="block",
)SDK & CLI Reference
| Operation | TypeScript | Python | CLI |
|---|---|---|---|
| List | mql.filters.list() | mql.filters.list() | mql filters list |
| Create | mql.filters.create(req) | mql.filters.create(...) | mql filters create |
| Update | mql.filters.update(id, req) | mql.filters.update(id, ...) | mql filters update |
| Toggle | mql.filters.toggle(id) | mql.filters.toggle(id) | mql filters toggle |
| Delete | mql.filters.delete(id) | mql.filters.delete(id) | mql filters delete |
| Templates | mql.filters.getTemplates() | mql.filters.get_templates() | — |
| From template | mql.filters.createFromTemplate(id) | mql.filters.create_from_template(id) | — |
| Test | mql.filters.test(id, req) | mql.filters.test(id, ...) | — |
| Org list | mql.filters.listForOrg(org) | mql.filters.list_for_org(org) | — |
| Org create | mql.filters.createForOrg(org, req) | mql.filters.create_for_org(org, ...) | — |