
Get All Treatments
This document provides a guide and overview for the GetAllTreatments RPC, which allows you to get all treatments for a project directly via API.
API Definition
POST https://apis.auxia.io/v1/GetAllTreatments
Entities
TreatmentFilter
message TreatmentFilter {
string treatment_type_name = 1;
}
TreatmentVersionFilter
message TreatmentVersionFilter {
SurfaceFilter surface = 1;
TagFilter tag = 2;
message SurfaceFilter {
repeated string surface_names = 1;
}
message TagFilter {
repeated string tags = 1;
}
}
TreatmentPb
message TreatmentPb {
string project_id = 1;
string treatment_id = 2;
TreatmentTypePb treatment_type = 3;
string name = 4;
string description = 5;
repeated TreatmentVersionPb treatment_versions = 6;
Status status = 7;
string last_modified_by = 8;
google.protobuf.Timestamp last_modified_timestamp = 9;
ModificationSource modification_source = 10;
string external_treatment_id = 11;
optional MutualExclusionGroupPb mutual_exclusion_group = 12;
enum Status {
STATUS_UNSPECIFIED = 0;
LIVE = 1;
DRAFT = 2;
SCHEDULED = 3;
ARCHIVED = 4;
PAUSED = 5;
}
enum ModificationSource {
MODIFICATION_SOURCE_UNSPECIFIED = 0;
AUXIA_CONSOLE = 1;
API = 2;
}
}
TreatmentVersionPb
message TreatmentVersionPb {
Status status = 1;
repeated TagPb tags = 2;
google.protobuf.Timestamp start_timestamp = 3;
google.protobuf.Timestamp end_timestamp = 4;
ContentPb content = 5;
EligibilityRulesListPb eligibility_rules = 6;
RemovedSurfacesListPb removed_surfaces = 7;
TargetActionPb target_action = 8;
enum Status {
STATUS_UNSPECIFIED = 0;
LIVE = 1;
DRAFT = 2;
SCHEDULED = 3;
ARCHIVED = 4;
}
}
TreatmentTypePb
message TreatmentTypePb {
string project_id = 1;
string name = 2;
DeliveryType delivery_type = 3;
repeated TreatmentContentFieldTypePb language_specific_content_field_types = 4;
repeated TreatmentContentFieldTypePb language_agnostic_content_field_types = 5;
repeated SurfacePb surfaces = 6;
enum DeliveryType {
DELIVERY_TYPE_UNSPECIFIED = 0;
EMAIL = 1;
IN_APP = 2;
NOTIFICATION = 3;
}
}
TreatmentContentFieldTypePb
message TreatmentContentFieldTypePb {
string field_name = 1;
int32 value_length_limit = 2;
ContentFieldDataType data_type = 3;
enum ContentFieldDataType {
CONTENT_FIELD_DATA_TYPE_UNSPECIFIED = 0;
STRING = 1;
}
}
SurfacePb
message SurfacePb {
string name = 1;
}
TagPb
message TagPb {
string name = 1;
}
ContentPb
message ContentPb {
repeated ContentByLanguagePb content_by_language = 1;
repeated TreatmentContentFieldPb language_agnostic_content_fields = 2;
message ContentByLanguagePb {
LanguageCodePb language_code = 1;
repeated TreatmentContentFieldPb content_fields = 2;
}
message TreatmentContentFieldPb {
string field_name = 1;
oneof field_value {
string string_value = 2;
}
}
message LanguageCodePb {
string language_code = 1;
}
}
EligibilityRulesListPb
message EligibilityRulesListPb {
repeated EligibilityRulePb rules = 1;
}
EligibilityRulePb
message EligibilityRulePb {
int64 data_field_id = 1;
Condition condition = 2;
string rhs_value = 3;
enum Condition {
UNSPECIFIED_CONDITION = 0;
LESS_THAN = 1;
LESS_THAN_OR_EQUALS = 2;
GREATER_THAN = 3;
GREATER_THAN_OR_EQUALS = 4;
EQUALS = 5;
NOT_EQUALS = 6;
IS_AFTER_CURRENT_TIMESTAMP_MINUS = 7;
IS_BEFORE_CURRENT_TIMESTAMP_MINUS = 8;
CONTAINS = 9;
ANY_OF = 10;
DOES_NOT_CONTAIN = 11;
NOT_ANY_OF = 12;
CONTAINS_ANY_OF = 13;
DOES_NOT_CONTAIN_ANY_OF = 14;
}
}
RemovedSurfacesListPb
message RemovedSurfacesListPb {
repeated SurfacePb surfaces = 1;
}
TargetActionPb
message TargetActionPb {
optional int64 event_id = 1;
}
MutualExclusionGroupPb
message MutualExclusionGroupPb {
int64 project_id = 1;
int64 mutual_exclusion_group_id = 2;
string name = 3;
}
GetAllTreatments
API to get all treatments
message GetAllTreatmentsRequest {
// Required
string project_id = 1;
// Optional
// Filter treatments by treatment type name
TreatmentFilter treatment_filter = 2;
// Optional
// Filter treatment versions by surface and/or tags
// Multiple values within each filter use OR logic:
// - If multiple surface_names provided: returns versions matching ANY of those surfaces
// - If multiple tags provided: returns versions matching ANY of those tags
// - If both surface and tag filters provided: versions must match BOTH conditions
TreatmentVersionFilter treatment_version_filter = 3;
// Optional
// Controls how many non-live versions to include per treatment:
// - null or not set: Returns ALL versions (both live and non-live)
// - 0: Returns only live versions
// - 1: Returns live version + up to 1 most recent non-live version per treatment
// - N: Returns live version + up to N most recent non-live versions per treatment
// Note: Non-live versions are sorted by modification time (most recent first)
optional int32 max_non_live_versions = 4;
}
message GetAllTreatmentsResponse {
repeated TreatmentPb treatments = 1;
}
Sample cURL Request
curl --location --request POST 'https://apis.auxia.io/v1/GetAllTreatments' \
--header 'Content-Type: application/json' \
--header 'x-api-key: API_KEY' \
--data-raw '{
"project_id": "PROJECT_ID",
"treatment_filter": {
"treatment_type_name": "TREATMENT_TYPE"
},
"treatment_version_filter": {
"surface": {
"surface_names": ["SURFACE"]
},
"tag": {
"tags": ["TAG_1"]
}
},
"max_non_live_versions": 0
}'
Sample Response
treatments {
project_id: "PROJECT_ID"
treatment_id: "TREATMENT_ID"
treatment_type {
project_id: "PROJECT_ID"
name: "TREATMENT_TYPE"
delivery_type: EMAIL
language_specific_content_field_types {
field_name: "title"
value_length_limit: 300
data_type: STRING
}
language_specific_content_field_types {
field_name: "body"
value_length_limit: 800
data_type: STRING
}
language_specific_content_field_types {
field_name: "cta_url"
value_length_limit: 32000
}
surfaces {
name: "SURFACE"
}
}
name: "NAME"
description: "DESCRIPTION"
versions {
status: LIVE
tags {
name: "TAG_1"
}
start_timestamp {
seconds: 1717200000
}
end_timestamp {
seconds: 1735689599
}
content {
content_by_language {
language_code {
language_code: "en"
}
content_fields {
field_name: "title"
string_value: "TITLE"
}
content_fields {
field_name: "body"
string_value: "BODY"
}
content_fields {
field_name: "cta_url"
string_value: "CTA_URL"
}
}
}
eligibility_rules {
rules {
data_field_id: DATA_FIELD_ID_1
condition: IS_BEFORE_CURRENT_TIMESTAMP_MINUS
rhs_value: "7200"
}
rules {
data_field_id: DATA_FIELD_ID_2
condition: IS_BEFORE_CURRENT_TIMESTAMP_MINUS
rhs_value: "3600"
}
}
removed_surfaces {
name: "REMOVED_SURFACE"
}
target_action {
event_id: EVENT_ID
}
}
status: LIVE
last_modified_by: "user@example.com"
last_modified_timestamp {
seconds: 1717200000
}
modification_source: API
mutual_exclusion_group {
project_id: PROJECT_ID
mutual_exclusion_group_id: MEG_ID
name: "MUTUAL_EXCLUSION_GROUP"
}
}