Skip to main content

Sync Filters Configuration Guide

Learn how to configure sync filters to control which data gets synchronized from your source systems into your Onna collections.


Overview​

Sync Filters are the mechanism used to control which data gets synchronized from your source systems into your Onna collections. They allow you to specify exactly what content to include or exclude during the collection process, enabling you to:

  • Select specific users, folders, channels, or other entities
  • Exclude unwanted content from synchronization
  • Configure automatic inclusion of future content
  • Fine-tune data collection based on your organization's needs

Common Sync Filter Fields​

Most sync filters use these common fields:

Core Fields​

FieldTypeDescription
all_selectedBooleanIf true, includes all available items. When false, uses selected/excluded arrays
selectedArrayList of specific items to include (when all_selected is false)
excludedArrayList of specific items to exclude (when all_selected is true)

Optional Fields​

FieldTypeDescription
sync_futureBooleanWhether to automatically include future items
filter_typeStringCategorizes the type of filter (for example, "user_folders")
filter_nameStringHuman-readable name for the filter

Box Enterprise​

Box Enterprise sync filters control which folders and files are synchronized for each user account.

Configuration Structure​

{
"user_id": {
"all_selected": boolean,
"selected": [{"id": "folder_id", "recursive": boolean}],
"excluded": [{"id": "folder_id"}],
"filter_type": "user_folders",
"filter_name": "User folders",
"include_trash": boolean
}
}

Field Details​

FieldTypeRequiredDescription
all_selectedBooleanYesIf true, syncs all folders for the user
selectedArrayConditionalSpecific folders to sync (required when all_selected is false)
excludedArrayNoFolders to exclude from sync
filter_typeStringYesMust be "user_folders"
filter_nameStringYesMust be "User folders"
include_trashBooleanNoWhether to include deleted files in sync

Folder Object Structure​

For both selected and excluded arrays:

{
"id": "folder_id",
"recursive": true
}
FieldDescription
idBox folder ID or "0" for root folder
recursiveWhether to include sub-folders

Box Enterprise Examples​

Sync All Folders for a User​

{
"sync_filters": {
"12345": {
"all_selected": true,
"selected": [],
"excluded": [],
"filter_type": "user_folders",
"filter_name": "User folders",
"include_trash": false
}
}
}

Sync Specific Folders Only​

{
"sync_filters": {
"12345": {
"all_selected": false,
"selected": [
{"id": "67890", "recursive": true},
{"id": "11111", "recursive": false}
],
"excluded": [],
"filter_type": "user_folders",
"filter_name": "User folders",
"include_trash": true
}
}
}

Sync All Except Specific Folders​

{
"sync_filters": {
"12345": {
"all_selected": true,
"selected": [],
"excluded": [
{"id": "99999"},
{"id": "88888"}
],
"filter_type": "user_folders",
"filter_name": "User folders"
}
}
}

Slack Enterprise​

Slack Enterprise sync filters control which teams, channels, users (custodians), and conversation types are synchronized.

Configuration Structure​

Slack filters use a multi-level structure with different configuration blocks:

{
"types": {
"selected": [{"id": "public"}, {"id": "private"}, {"id": "mpim"}, {"id":"im"}]
},
"teams": {
"all_selected": boolean,
"sync_future": boolean,
"selected": [{"id": "team_id"}],
"excluded": [{"id": "team_id"}]
},
"custodians": {
"all_selected": boolean,
"sync_future": boolean,
"selected": [
{
"id": "user_id",
"conversations": {
"all_selected": boolean,
"sync_future": boolean,
"selected": [{"id": "channel_id", "team_id": "team_id"}],
"excluded": [{"id": "channel_id", "team_id": "team_id"}]
}
}
]
}
}

Field Details​

Types Configuration​

FieldTypeRequiredDescription
selectedArrayYesContent types to sync: "public", "private", "mpim", "im"

Teams Configuration​

FieldTypeRequiredDescription
all_selectedBooleanYesIf true, syncs all teams
sync_futureBooleanNoWhether to include future teams
selectedArrayConditionalSpecific teams to sync (when all_selected is false)
excludedArrayNoTeams to exclude from sync

Custodians (Users) Configuration​

FieldTypeRequiredDescription
all_selectedBooleanYesIf true, syncs all users
sync_futureBooleanNoWhether to include future users
selectedArrayConditionalSpecific users to sync with their conversation settings

Additional Configuration Options​

FieldTypeRequiredDescription
collect_root_filesObjectNoConfiguration for List and Canvas content collection
collect_root_files.all_selectedBooleanNoWhether to collect all root file types
collect_root_files.selectedArrayNoSpecific file types to collect ("list", "canvas")
collect_linksObjectNoConfiguration for modern attachment collection
collect_links.all_selectedBooleanNoWhether to collect all link types
collect_links.selectedArrayNoSpecific link types to collect ("gdrive")
attached_wallet_entries_uuidsArrayNoUUIDs of wallet entries for external service authentication

List and Canvas Integration: Enables collection of Slack Lists and Canvas content alongside traditional conversations.

Modern Attachments: Collect attachments from shared documents when available, including Google Drive files and other external attachments linked in Slack conversations.

Slack Enterprise Examples​

Sync All Content with List/Canvas and Modern Attachments​

{
"sync_filters": {
"types": {
"selected": [{"id": "public"}, {"id": "private"}, {"id": "mpim"}, {"id": "im"}]
},
"teams": {
"all_selected": true,
"sync_future": true,
"selected": [],
"excluded": []
},
"custodians": {
"all_selected": true,
"sync_future": true,
"selected": []
},
"collect_root_files": {
"all_selected": false,
"selected": [
{
"id": "list",
"all_selected": true
},
{
"id": "canvas",
"all_selected": true
}
]
},
"collect_links": {
"all_selected": false,
"selected": [
{
"id": "gdrive"
}
]
},
"attached_wallet_entries_uuids": [
"297cbac055ee4ad7b6d0b518315a1016"
]
}
}

Sync Specific Teams and Users​

{
"sync_filters": {
"types": {
"selected": [{"id": "public"}, {"id": "private"}, {"id": "mpim"}, {"id": "im"}]
},
"teams": {
"all_selected": false,
"sync_future": false,
"selected": [{"id": "T1234567890"}, {"id": "T0987654321"}],
"excluded": []
},
"custodians": {
"all_selected": false,
"sync_future": false,
"selected": [
{
"id": "U1234567890",
"conversations": {
"all_selected": true,
"sync_future": false,
"selected": [],
"excluded": []
}
}
]
}
}
}

Exclude Specific Channels for a User​

{
"sync_filters": {
"types": {
"selected": [{"id": "public"}]
},
"custodians": {
"all_selected": false,
"selected": [
{
"id": "U1234567890",
"conversations": {
"all_selected": true,
"excluded": [
{"id": "C9876543210", "team_id": "T1234567890"},
{"id": "C1111111111", "team_id": "T1234567890"}
]
}
}
]
}
}
}

Google Workspace​

Google Workspace sync filters control which users, team drives, and content types are synchronized from Google services including Gmail and Google Drive.

Configuration Structure​

{
"users": {
"filter_type": "users",
"all_selected": boolean,
"selected": [{"id": "user_email"}],
"excluded": [{"id": "user_email"}]
},
"team_drives": {
"filter_type": "team_drives",
"all_selected": boolean,
"selected": [{"id": "drive_id", "recursive": boolean}],
"excluded": [{"id": "drive_id"}]
},
"vault": {
"include_deleted_content": boolean,
"products": ["GMailDatasource", "GDriveEDatasource"]
},
"user_email": {
"folders": {
"filter_type": "folders",
"all_selected": boolean,
"selected": [{"id": "folder_id", "recursive": boolean}],
"excluded": [{"id": "folder_id"}]
},
"shared_folders": {
"filter_type": "shared_folders",
"all_selected": boolean,
"selected": [{"id": "folder_id", "recursive": boolean}],
"excluded": [{"id": "folder_id"}]
}
}
}

Field Details​

Users Configuration​

FieldTypeRequiredDescription
filter_typeStringYesMust be "users"
all_selectedBooleanYesIf true, syncs all users
selectedArrayConditionalSpecific users to sync (when all_selected is false)
excludedArrayNoUsers to exclude from sync

Team Drives Configuration​

FieldTypeRequiredDescription
filter_typeStringYesMust be "team_drives"
all_selectedBooleanYesIf true, syncs all team drives
selectedArrayConditionalSpecific drives to sync with recursion setting
excludedArrayNoDrives to exclude from sync
recursiveBooleanNoWhether to include sub-folders

Vault Configuration​

FieldTypeRequiredDescription
include_deleted_contentBooleanNoWhether to include deleted items
productsArrayNoGoogle services to sync ("GMailDatasource", "GDriveEDatasource")

Per-User Folder Configuration​

FieldTypeRequiredDescription
foldersObjectNoUser's personal folder configuration
shared_foldersObjectNoShared folder configuration for user
filter_typeStringYes"folders" or "shared_folders"
recursiveBooleanNoWhether to include sub-folders

Google Workspace Examples​

Sync Specific User with Team Drives and Folders​

{
"sync_filters": {
"users": {
"filter_type": "users",
"selected": [
{
"id": "antonio@onnatesting.com"
}
],
"excluded": [],
"all_selected": false
},
"team_drives": {
"filter_type": "team_drives",
"selected": [
{
"id": "0AA-9gXVunuWNUk9PVA",
"recursive": true
}
],
"excluded": [],
"all_selected": false
},
"vault": {
"include_deleted_content": true,
"products": [
"GMailDatasource",
"GDriveEDatasource"
]
},
"antonio@onnatesting.com": {
"folders": {
"filter_type": "folders",
"selected": [
{
"id": "1kRDAY4_3bKl0tQvKFIBakLhol2Rhqc1k",
"recursive": true
},
{
"id": "root",
"recursive": false
}
],
"excluded": [],
"all_selected": true
},
"shared_folders": {
"filter_type": "shared_folders",
"selected": [
{
"id": "1RJAid6ORlQGPEYUiVYhboXdcoTjAhZ9h",
"recursive": true
}
],
"excluded": [],
"all_selected": true
}
}
}
}

Sync All Users with Specific Team Drives​

{
"sync_filters": {
"users": {
"filter_type": "users",
"all_selected": true,
"selected": [],
"excluded": []
},
"team_drives": {
"filter_type": "team_drives",
"selected": [
{
"id": "drive_123",
"recursive": true
}
],
"excluded": [],
"all_selected": false
},
"vault": {
"include_deleted_content": false,
"products": [
"GDriveEDatasource"
]
}
}
}

Key Points:

  • User keys are email addresses
  • Each user can have separate folder and shared folder configurations
  • Team drives support recursive folder inclusion
  • Vault configuration controls deleted content and service types
  • Use "root" as folder ID for user's root Google Drive folder
  • Folder IDs are Google Drive folder identifiers

Reference: Google Workspace Integration Guide


Office 365 (Outlook Enterprise)​

Office 365 sync filters control which users' email data is synchronized and can include specific folder or marker configurations.

Each user reference (user_id) must be the user's Microsoft directory object ID (a GUID), not their email address. Use the id returned by the collection's /users endpoint, both inside users.selected/users.excluded and as the per-user marker key. Email-format values are silently skipped and result in an empty collection.

Configuration Structure​

{
"users": {
"all_selected": boolean,
"selected": [{"id": "user_id"}],
"excluded": [{"id": "user_id"}]
},
"user_id": {
"markers": {
"all_selected": boolean,
"excluded": [{"id": "folder_name"}]
}
}
}

Field Details​

FieldTypeRequiredDescription
usersObjectYesUser selection configuration
markersObjectNoEmail folder/marker filtering (per user)
collect_linksObjectNoConfiguration for modern attachment collection
collect_links.all_selectedBooleanNoWhether to collect all link types
collect_links.selectedArrayNoSpecific link types to collect ("onedrive")

Marker Filtering: Use markers to exclude unwanted folders such as "JunkEmail" (spam) and "DeletedItems" (trash) from synchronization.

Modern Attachments: Collect attachments from linked OneDrive documents when available in email conversations.

Office 365 Examples​

Sync All Users​

{
"sync_filters": {
"users": {
"all_selected": true,
"selected": [],
"excluded": []
}
}
}

Sync Specific Users, Exclude Spam/Trash​

{
"sync_filters": {
"users": {
"all_selected": false,
"selected": [{"id": "f8a9c3b1-1234-4abc-9def-0987654321ab"}, {"id": "d4c7b8e2-5678-4fff-aaaa-1122334455cc"}],
"excluded": []
},
"f8a9c3b1-1234-4abc-9def-0987654321ab": {
"markers": {
"all_selected": true,
"excluded": [
{"id": "JunkEmail"},
{"id": "DeletedItems"}
]
},
"collect_links": {
"all_selected": false,
"selected": [
{"id": "onedrive"}
]
}
},
"d4c7b8e2-5678-4fff-aaaa-1122334455cc": {
"markers": {
"all_selected": true,
"excluded": [
{"id": "JunkEmail"},
{"id": "DeletedItems"}
]
},
"collect_links": {
"all_selected": false,
"selected": [
{"id": "onedrive"}
]
}
}
}
}

Sync All Users with Modern Attachments Only​

{
"sync_filters": {
"users": {
"all_selected": true,
"selected": [],
"excluded": []
},
"collect_links": {
"all_selected": false,
"selected": [
{"id": "onedrive"}
]
}
}
}

OneDrive Enterprise​

OneDrive Enterprise sync filters control which folders are synchronized for each user. Each top-level key in the sync_filters object is a user's id (from the /users endpoint), and its value configures which folders to sync for that user.

Configuration Structure​

{
"user_id": {
"all_selected": boolean,
"selected": [{"id": "folder_id"}],
"excluded": [{"id": "folder_id"}],
"filter_type": "user_folders",
"filter_name": "User onedrive"
}
}

Field Details​

Per-user key (keyed by user id from the /users endpoint):

FieldTypeRequiredDescription
all_selectedBooleanYesIf true, syncs all folders for the user
selectedArrayConditionalSpecific folders to sync (required when all_selected is false)
excludedArrayNoFolders to exclude from sync
filter_typeStringYesMust be "user_folders"
filter_nameStringYesDisplay name for the filter (for example, "User onedrive")

OneDrive Enterprise Examples​

Sync All Folders for a User​

{
"sync_filters": {
"f8a9c3b1-1234-4abc-9def-0987654321ab": {
"all_selected": true,
"selected": [],
"excluded": [],
"filter_type": "user_folders",
"filter_name": "User onedrive"
}
}
}

Sync Specific Folders for a User​

{
"sync_filters": {
"f8a9c3b1-1234-4abc-9def-0987654321ab": {
"all_selected": false,
"selected": [
{"id": "01BYE5RZ5NQXWVBK2MXNBJIQN4FKDRFH55"},
{"id": "01BYE5RZ6PLYPWCL3MXEABK2M3FGSJ2U56"}
],
"excluded": [],
"filter_type": "user_folders",
"filter_name": "User onedrive"
}
}
}

MS Teams Enterprise​

MS Teams Enterprise sync filters control which types of content, users, teams, and channels are synchronized.

Configuration Structure​

{
"types": {
"selected": [{"id": "channels"}, {"id": "chats"}]
},
"users": {
"all_selected": boolean,
"selected": [{"id": "user_id"}],
"excluded": [{"id": "user_id"}]
},
"user_id": {
"all_selected": boolean,
"selected": [{"id": "team_id"}],
"excluded": [{"id": "team_id"}]
},
"team_id": {
"all_selected": boolean,
"selected": [{"id": "channel_id"}],
"excluded": [{"id": "channel_id"}]
}
}

Field Details​

FieldTypeRequiredDescription
typesObjectYesContent types to sync (channels, chats)
usersObjectYesUser selection configuration
Per-user configObjectNoTeam selection for each user
Per-team configObjectNoChannel selection for each team

MS Teams Enterprise Examples​

Sync All Teams Content​

{
"sync_filters": {
"types": {
"selected": [{"id": "channels"}, {"id": "chats"}]
},
"users": {
"all_selected": true,
"selected": [],
"excluded": []
}
}
}

Sync Specific Users and Channels​

{
"sync_filters": {
"types": {
"selected": [{"id": "channels"}]
},
"users": {
"all_selected": false,
"selected": [{"id": "user1@company.com"}],
"excluded": []
},
"user1@company.com": {
"all_selected": false,
"selected": [{"id": "team-123"}],
"excluded": []
},
"team-123": {
"all_selected": false,
"selected": [{"id": "channel-456"}, {"id": "channel-789"}],
"excluded": []
}
}
}
{
"sync_filters": {
"spaces": {
"all_selected": false,
"selected": [
{"id": "SPACE123", "name": "Engineering Space"},
{"id": "SPACE456", "name": "Marketing Space"}
],
"excluded": [],
"filter_type": "spaces",
"filter_name": "Confluence Spaces"
}
}
}

Pattern 3: Sync Everything Except Specific Items​

Use this pattern when you want to synchronize most content but exclude specific items.

{
"sync_filters": {
"channels": {
"all_selected": true,
"selected": [],
"excluded": [
{"id": "C123456789", "name": "private-channel"},
{"id": "C987654321", "name": "archived-channel"}
],
"filter_type": "channels",
"filter_name": "Slack Channels"
}
}
}

Pattern 4: Mixed Configuration (Multiple Filter Types)​

Many connectors support multiple filter types that can be configured independently.

{
"sync_filters": {
"users": {
"all_selected": false,
"selected": [
{"id": "user123@company.com"},
{"id": "user456@company.com"}
],
"excluded": [],
"filter_type": "users",
"filter_name": "Users"
},
"folders": {
"all_selected": true,
"selected": [],
"excluded": [
{"id": "/archived", "name": "Archived Folder"}
],
"filter_type": "folders",
"filter_name": "Folders"
}
}
}

Connector-Specific Examples​

The following sections provide detailed examples for each supported connector type.

Box Enterprise​

Box collections support user-based folder filtering. Each user can have their own folder selection configuration.

{
"sync_filters": {
"2262844940": {
"all_selected": false,
"selected": [
{"id": "0", "name": "Root Folder"},
{"id": "35567496586", "name": "Shared Documents"}
],
"excluded": [],
"filter_type": "user_folders",
"filter_name": "User folders"
},
"8877441122": {
"all_selected": true,
"selected": [],
"excluded": [
{"id": "12345678", "name": "Personal Files"}
],
"filter_type": "user_folders",
"filter_name": "User folders"
}
}
}

Key Points:

  • Filter keys are Box user IDs
  • Each user can have different folder selections
  • Use filter_type: "user_folders" for all Box user filters
  • ID "0" represents the root folder

Dropbox Enterprise​

Dropbox supports both individual user accounts and team folder configurations.

{
"sync_filters": {
"dbid:user123": {
"all_selected": false,
"selected": [
{"id": "/Marketing", "name": "Marketing"},
{"id": "/Projects/Active", "name": "Active Projects"}
],
"excluded": [],
"filter_type": "user_folders",
"filter_name": "User folders"
},
"team_folders": {
"all_selected": true,
"selected": [],
"excluded": [
{"id": "/Archived", "name": "Archived Team Folder"}
],
"filter_type": "team_folders",
"filter_name": "Team folders"
}
}
}

Key Points:

  • User accounts use dropbox database IDs (dbid:...)
  • Team folders have a special "team_folders" key
  • Paths should include leading slash
  • Supports both Paper documents and file folders

Slack Enterprise​

Slack has a complex filter structure supporting multiple entity types and sharing controls.

Enterprise Grid Slack Example​

{
"sync_filters": {
"types": {
"selected": [
{"id": "public"},
{"id": "private"},
{"id": "mpim"},
{"id": "im"}
]
},
"teams": {
"all_selected": false,
"sync_future": false,
"selected": [
{"id": "T123ABCDEF"}
]
},
"conversations": {
"all_selected": false,
"sync_future": true,
"check_sharing": true,
"selected": [
{"id": "C1234567890", "team_id": "T123ABCDEF"},
{"id": "C0987654321", "team_id": "T123ABCDEF"}
],
"excluded": [
{"id": "C5555555555", "team_id": "T123ABCDEF"}
]
}
}
}

Regular Slack with User Email Domain Filter​

{
"sync_filters": {
"types": {
"selected": [
{"id": "public"},
{"id": "private"}
]
},
"teams": {
"all_selected": true,
"sync_future": true
},
"user-email-domain": {
"all_selected": false,
"selected": [
{"id": "company.com"},
{"id": "subsidiary.com"}
]
}
}
}

Key Points:

  • types: Controls which conversation types to sync (public, private, mpim, im)
  • teams: Controls which Slack teams to include
  • conversations: Fine-grained conversation selection
  • check_sharing: Validates sharing permissions
  • user-email-domain: Filter users by email domain
  • sync_future: Whether to include future items when not syncing all
  • collect_root_files: Enables List and Canvas content collection
  • collect_links: Enables modern attachment collection from external services
  • attached_wallet_entries_uuids: Links to wallet entries for external service authentication

Reference: Slack Enterprise Integration Guide

Gmail​

Gmail supports filtering by folders, categories, and message markers.

{
"sync_filters": {
"mail_folders": {
"all_selected": false,
"selected": [
{"id": "INBOX"},
{"id": "SENT"},
{"id": "Important"}
],
"excluded": [
{"id": "SPAM"},
{"id": "TRASH"}
],
"filter_type": "mail_folders",
"filter_name": "Mail Folders"
},
"custom_folders": {
"all_selected": true,
"selected": [],
"excluded": [],
"filter_type": "custom_folders",
"filter_name": "Custom Folders"
},
"categories": {
"all_selected": false,
"selected": [
{"id": "CATEGORY_PERSONAL"},
{"id": "CATEGORY_SOCIAL"}
],
"excluded": [],
"filter_type": "categories",
"filter_name": "Categories"
},
"markers": {
"all_selected": false,
"selected": [
{"id": "starred"},
{"id": "important"}
],
"excluded": [
{"id": "no_markers"}
],
"filter_type": "markers",
"filter_name": "Markers"
}
}
}

Key Points:

  • mail_folders: Standard Gmail labels/folders
  • custom_folders: User-created labels
  • categories: Gmail's automatic categorization
  • markers: Star, importance, and other markers
  • Use Gmail's standard label names (INBOX, SENT, etc.)

Confluence​

Confluence primarily filters by spaces and pages within those spaces.

{
"sync_filters": {
"spaces": {
"all_selected": false,
"selected": [
{"id": "ENG", "name": "Engineering Space", "key": "ENG"},
{"id": "MARKETING", "name": "Marketing Space", "key": "MARKETING"}
],
"excluded": [],
"filter_type": "spaces",
"filter_name": "Confluence spaces"
}
}
}

Key Points:

  • Primary filter type is "spaces"
  • Space objects include both ID and key
  • Page-level filtering happens within space selection
  • Space keys are usually uppercase abbreviations

Jira​

Jira filters by projects and optionally by issue types within projects.

{
"sync_filters": {
"projects": {
"all_selected": false,
"selected": [
{"id": "10001", "name": "Software Development", "key": "SD"},
{"id": "10002", "name": "Marketing Campaign", "key": "MC"}
],
"excluded": [],
"filter_type": "projects",
"filter_name": "Projects"
}
}
}

Key Points:

  • Primary filter type is "projects"
  • Project objects include ID, name, and key
  • Issue type filtering is typically handled within project scope
  • Project keys are unique identifiers (for example, "PROJ", "TEAM")

Zendesk​

Zendesk collections always collect the tenant's existing tickets within the collection's date range.

Sync filters control two extra things: whether suspended and deleted tickets are collected too, and optionally a fixed list of ticket IDs.

There is no organization, user, or group selection for existing tickets, and the collection filter endpoints (/users, /teams, /channels) return 412 for Zendesk.

The Zendesk subdomain is set with domain on POST /collections (required), the <subdomain> part of <subdomain>.zendesk.com. For example, "acme" for acme.zendesk.com.

Filter keys​

KeyPurposeItem IDs
statusExtra ticket states to collect"suspended", "deleted"
organizations, users, groupsNarrow suspended and deleted tickets onlyOrganization, user, or group IDs
ticketsCollect specific tickets instead of the date rangeTicket IDs in selected
  • status: Existing tickets are always collected. This key controls suspended and deleted tickets. Requires an admin-role Zendesk token; non-admin tokens collect existing tickets only.
  • organizations, users, groups: These keys do not narrow existing tickets.
  • A suspended or deleted ticket is kept when the ticket owner's organization is selected and either the owner is selected in users or one of the owner's groups is selected in groups.
  • Keys left out count as all selected. To narrow by user you must also restrict groups (for example {"all_selected": false, "selected": []}), and vice versa.
  • tickets: Use {"selected": [{"tickets": ["<ticket_id>", ...]}]} to collect only specific tickets.

Absent keys behave as all_selected: true.

If sync_filters has no status key, the connector falls back to the collection's suspended_tickets and deleted_tickets options, which default to false and are not yet settable through the API.

Setting status is therefore the way to control these through the API.

Zendesk Examples​

Existing tickets only, the platform default:

{
"sync_status": "pending",
"sync_filters": {
"status": {"all_selected": false, "selected": []}
}
}

Existing tickets plus suspended and deleted tickets:

{
"sync_status": "pending",
"sync_filters": {
"status": {"all_selected": false, "selected": [{"id": "suspended"}, {"id": "deleted"}]}
}
}

Suspended and deleted tickets limited to two organizations:

{
"sync_status": "pending",
"sync_filters": {
"status": {"all_selected": false, "selected": [{"id": "suspended"}, {"id": "deleted"}]},
"organizations": {"all_selected": false, "selected": [{"id": "123456789"}, {"id": "987654321"}]}
}
}

Suspended and deleted tickets limited to one user (note groups must be restricted too, or every group matches):

{
"sync_status": "pending",
"sync_filters": {
"status": {"all_selected": false, "selected": [{"id": "suspended"}, {"id": "deleted"}]},
"users": {"all_selected": false, "selected": [{"id": "5551234"}]},
"groups": {"all_selected": false, "selected": []}
}
}

Only specific tickets:

{
"sync_status": "pending",
"sync_filters": {
"tickets": {"selected": [{"tickets": ["11", "12", "13"]}]}
}
}

The minimal flow is:

  1. Create the collection with type: "zendesk" and the domain.
  2. Get the authorization URL from GET /collections/authorization_url/zendesk?redirect_to=<callback>&domain=<subdomain>. The domain must match the collection's.
  3. Pair the returned authorization code.
  4. PATCH /collections/{onna_id} with sync_status: "pending" and the sync_filters you want.
  5. Start the sync.

Microsoft Teams​

Teams supports filtering by teams, channels, and users with temporal controls.

{
"sync_filters": {
"teams": {
"all_selected": false,
"sync_future": true,
"selected": [
{"id": "team123", "name": "Engineering Team"}
],
"excluded": []
},
"users": {
"all_selected": true,
"selected": [],
"excluded": [
{"id": "external_user@partner.com"}
]
}
}
}

OneDrive​

OneDrive supports user-based folder filtering. Each top-level key in sync_filters is a user's id (from the /users endpoint), and its value configures which folders to sync for that user.

{
"sync_filters": {
"f8a9c3b1-1234-4abc-9def-0987654321ab": {
"all_selected": false,
"selected": [
{"id": "01BYE5RZ5NQXWVBK2MXNBJIQN4FKDRFH55"},
{"id": "01BYE5RZ6PLYPWCL3MXEABK2M3FGSJ2U56"}
],
"excluded": [],
"filter_type": "user_folders",
"filter_name": "User onedrive"
}
}
}

Key Points:

  • Each top-level key in sync_filters is a user id from the /users endpoint
  • Folder IDs in selected and excluded come from the /folders endpoint
  • Use filter_type: "user_folders" for all per-user folder filters
  • To sync multiple users, add multiple user ID keys to sync_filters

Common Patterns by Use Case​

{
"sync_filters": {
"users": {
"all_selected": false,
"selected": [
{"id": "custodian1@company.com"},
{"id": "custodian2@company.com"}
],
"excluded": [],
"filter_type": "users",
"filter_name": "Custodians"
},
"date_range": {
"start": "2023-01-01",
"end": "2023-12-31"
}
}
}

API Integration​

Basic API Usage​

Use the PATCH /collections/{onna_id} endpoint to configure sync filters:

curl --request PATCH 'https://api.onna.com/v1/collections/{onna_id}' \
--header 'Authorization: Bearer <ACCESS_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{
"sync_status": "pending",
"sync_filters": {
"user_id": {
"all_selected": false,
"selected": [{"id": "folder_id"}],
"excluded": [],
"filter_type": "user_folders",
"filter_name": "User folders"
}
}
}'

Python Example​

import requests

# Configuration
base_url = "https://api.onna.com/v1"
access_token = "your_access_token"
collection_id = "your_collection_id"

headers = {
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json"
}

# Box sync filters configuration
sync_filters_config = {
"sync_status": "pending",
"sync_filters": {
"2262844940": { # Box user ID
"all_selected": False,
"selected": [
{"id": "0"}, # Root folder
{"id": "35567496586"} # Specific folder
],
"excluded": [],
"filter_type": "user_folders",
"filter_name": "User folders"
}
}
}

response = requests.patch(
f"{base_url}/collections/{collection_id}",
headers=headers,
json=sync_filters_config
)

if response.status_code == 200:
print("Sync filters configured successfully")
else:
print(f"Error: {response.status_code} - {response.text}")

Quick Reference​

Common Patterns​

Patternall_selectedselectedexcludedUse Case
Sync Alltrue[][]Full sync including future content
Specific Itemsfalse[items][]Only selected items
All Excepttrue[][items]Everything except excluded

Connector Summary​

ConnectorFilter KeyFilter TypeItem ID Format
Box EnterpriseBox user ID"user_folders"Folder ID ("0" = root)
Slack Enterprise"types", "teams", "custodians"VariousChannel/team/user IDs
Office 365"users", user emailVariousUser email addresses
OneDrive EnterpriseUser ID"user_folders"User ID, folder ID
MS Teams Enterprise"types", "users", user/team IDsVariousUser/team/channel IDs
Zendesk"status", "organizations", "users", "groups", "tickets"Various"suspended"/"deleted", Zendesk org/user/group IDs, ticket IDs