AI Defense Policy GraphQL API types¶
Every named type reachable from a query or mutation in this schema, grouped by kind.
Jump to: Objects · Enums · Input objects · Scalars
Objects¶
AppControlApplicationImpact¶
A catalog-owned AppControl identity shown in policy previews.
Fields¶
| Field | Type | Description |
|---|---|---|
applicationId | String! | Stable ID used in policy targets and verdict lookups. |
applicationName | String! | User-facing catalog display name. |
AppEnforcementTarget¶
Sanctioning status for one concrete enforcement identity.
Fields¶
| Field | Type | Description |
|---|---|---|
mechanism | EnforcementMechanism! | Mechanism responsible for enforcing this target. |
applicationId | String! | Canonical catalog/policy identity. AppControl IDs are lowercase slugs. |
applicationName | String! | Catalog display name. The sensor-specific Endpoint name may differ. |
status | AppSanctioningStatus! | Effective sanctioning status for this target. |
matchedPolicy | Policy | Policy whose verdict row supplied this target's effective status. Null when not covered or when the policy was removed after verdict computation. |
matchedRulePosition | Int64 | 0-based position of the matching rule in matchedPolicy. Null when not covered. |
computedAt | Time | When this target's effective verdict row was computed. Null when not covered. |
AppSanctioningEntry¶
Sanctioning status for a single AI application.
Fields¶
| Field | Type | Description |
|---|---|---|
appId | String! | The catalog application ID. |
status | AppSanctioningStatus! | Scope-agnostic sanctioning status derived from the tenant's policies. |
enforcementTargets | [AppEnforcementTarget!]! | Concrete WebControl parent and AppControl child statuses for this request. |
AppSanctioningResult¶
Result of a batch sanctioning status lookup.
Fields¶
| Field | Type | Description |
|---|---|---|
entries | [AppSanctioningEntry!]! | Sanctioning status per requested app ID. |
BrowserDataControls¶
Per-operation actions for the Sophos Endpoint browser extension's clipboard/upload/download enforcement. Mirrors Endpoint's ai_browserExtension.dataControls contract — each operation is independently allow/block/warn, attached to the same rule (and therefore the same resolved site list) as ResolvedRule.domains, not a separate list.
Fields¶
| Field | Type | Description |
|---|---|---|
clipboardCopy | ResolvedAction! | Action for copying content out of the site's clipboard context. |
clipboardPaste | ResolvedAction! | Action for pasting content into the site's clipboard context. |
upload | ResolvedAction! | Action for uploading files to the site. |
download | ResolvedAction! | Action for downloading files from the site. |
EnforcementImpact¶
Concrete WebControl and AppControl impact of target conditions.
Fields¶
| Field | Type | Description |
|---|---|---|
webControlDomains | [String!]! | Domains whose enforcement is delivered through web control. |
appControlApplications | [AppControlApplicationImpact!]! | AppControl identities affected by this target. IDs come directly from the catalog registry. |
PageInfo F¶
Cursor-based pagination metadata. Currently only forward pagination (first/after) is supported.
Fields¶
| Field | Type | Description |
|---|---|---|
hasNextPage | Boolean! | Whether another page exists after this page. |
hasPreviousPage | Boolean! | Whether another page exists before this page. |
startCursor | String | Cursor of the first item in this page. |
endCursor | String | Cursor of the last item in this page. |
Policy¶
A Secure AI policy that governs access to AI services. Policies are evaluated in priority order (lower number = higher priority). Each policy contains an ordered list of rules — each rule targets a set of AI services and applies an action. Rules are evaluated top-to-bottom within a policy (first match wins).
Fields¶
| Field | Type | Description |
|---|---|---|
id | ID! | Stable policy identifier. |
tenantId | String! | Tenant that owns the policy. |
name | String! | Admin-visible policy name. |
description | String | Optional admin-visible policy description. |
priority | Float! | Sort order. Lower value = higher priority. Fractional values are valid (e.g., 1.5 between 1.0 and 2.0). |
rank | Int64! | 1-based rank within the tenant's policies, ordered by priority ASC (lowest priority float = rank 1). Computed on read, never stored. Read-only. Absolute within the tenant — a filtered or paginated policies query may return non-contiguous ranks. Int64 per the federated supergraph convention; expected range is 0 < rank ≤ tenant policy count. |
state | PolicyState! | Admin intent — ENABLED or DISABLED. Extensible to DRAFT, PENDING_APPROVAL, etc. |
enforcementStatus | EnforcementStatus! | Computed from state + distribution records. Never stored directly. |
origin | PolicyOrigin! | Source that created and controls the policy lifecycle. |
kind | PolicyKind! | Lifecycle class. TENANT_BASE is the reserved per-tenant base policy — see PolicyKind. |
partnerPolicyId | ID | Set when origin=PARTNER. The partner's own ID for this policy. |
builtInKey | String | Set when origin=BUILT_IN. Identifies which template this was stamped from. |
builtInVersion | Int64 | Set when origin=BUILT_IN. Template version at stamp time — used for update-available detection. |
rules | [PolicyRule!]! | Ordered rules evaluated top-to-bottom. First matching rule's action is applied. |
baseRule | PolicyBaseRule! | Policy-wide settings that apply independently of the ordered rule list. Always present — defaults are used when the admin has not set anything. |
sensors | SensorConfigMap! | Per-sensor enablement and scope configuration. |
tags | JSON! | Key/value labels for filtering and grouping policies. |
createdAt | Time! | Time the policy was created. |
updatedAt | Time! | Time the policy was last updated. |
createdBy | String! | Subject ID that created the policy. |
updatedBy | String | Subject ID that last updated the policy, when available. |
createdBySubject | Subject | Federated subject reference for the policy creator. The gateway resolves name (email), displayName, and identity from the platform subjects service. Null when the subject lookup fails. |
updatedBySubject | Subject | Federated subject reference for the last policy editor. Null when the policy has never been updated, or when the subject lookup fails. |
version | Int64! | Optimistic concurrency token. Must be passed on updates to detect conflicts. |
PolicyBaseRule¶
Policy-wide settings applied independently of the ordered rule list. It is not a rule: it has no target and takes no part in first-match-wins evaluation. A container rather than a bare field so future policy-wide settings are purely additive.
Fields¶
| Field | Type | Description |
|---|---|---|
generativeAiCategoryAction | PolicyAction! | Action applied to the endpoint's own Generative AI web category — a different population from the AI app catalog that rules target. This is a fallback, not an override of rules: the endpoint evaluates the per-URL/per-app web control rules compiled from rules in a short-circuiting prioritized tier ahead of the category action, so any Generative AI traffic matched there wins. The category action decides only the Generative AI traffic no rule above it matched. It does override the tenant's own Web Control setting for that category. Defaults to ALLOW. |
appControlCategoryAction | PolicyAction | Explicit AppControl category action. Null inherits generativeAiCategoryAction, with WARN mapped to ALLOW. |
PolicyConnection¶
Paginated list of policies with cursor-based navigation.
Fields¶
| Field | Type | Description |
|---|---|---|
policies | [Policy!]! | Policies in the current page. |
pageInfo | PageInfo! | Cursor metadata for navigating policy pages. |
totalCount | Int64! | Total policies matching the filter (across all pages). |
enabledCount | Int64! | Count of ENABLED policies within the same filtered result set, across all pages. |
failedCount | Int64! | Count of policies whose computed enforcement status is FAILED within the same filtered set (at least one enabled sensor's last push failed). Counted across all pages, not only the current page. |
PolicyImpactResult¶
Result of evaluating an ordered ruleset against the catalog. Rules are walked top-to-bottom; the first matching rule wins per app. Counts sum to totalApps (allowed = totalApps - blocked - warned). Use it to check the rules of a starter template, a new policy, or a changed policy before you save them.
Fields¶
| Field | Type | Description |
|---|---|---|
totalApps | Int64! | Total applications evaluated. V1: catalog size. |
blocked | Int64! | Apps a BLOCK rule would catch — first matching rule wins per app. |
warned | Int64! | Apps a WARN rule would catch — first match after BLOCKs. |
allowed | Int64! | Apps falling through to ALLOW catch-all or no matching rule. |
PolicyRule¶
A single rule within a policy. Pairs a target (which AI services to match) with an action (what to do when matched). Position is 0-based — assigned server-side from the array order.
Fields¶
| Field | Type | Description |
|---|---|---|
position | Int64! | 0-based position within the policy's rule list. |
target | PolicyTarget! | Which AI services this rule matches. Conditions are ANDed. |
action | PolicyAction! | What happens when this rule matches. |
enforcementMechanismOverride | [EnforcementMechanism!] | Optional explicit mechanisms. Null inherits the action capability defaults; an explicit list preserves caller intent. |
note | String | Optional admin note describing the intent or context of this rule. |
targetPreview | RuleTargetPreview! | Legacy preview of matched applications, resolved from this rule's target conditions in isolation. Advisories are not narrowed for rules above it and effectiveCount is null. Use targetPreviewV2 for sequence-aware results. |
targetPreviewV2 | RuleTargetPreviewV2! | Sequence-aware preview of matched applications. When read under Policy.rules, advisories are narrowed to what this rule will actually act on given the rules above it. The effectiveReachStatus distinguishes a determined effectiveCount from the exceptional cases where no count can be published. This additive V2 field allows clients to migrate independently while targetPreview retains its legacy behavior. |
dataControls | BrowserDataControls | Per-operation actions for the Sophos Endpoint browser extension's clipboard/upload/download enforcement on this rule's matched sites. Null when not configured. Independent of action — a rule can carry data controls regardless of its block/warn/allow verdict. |
PolicyTarget¶
Set of conditions that determine which AI services a policy applies to. All conditions must match (AND logic).
Fields¶
| Field | Type | Description |
|---|---|---|
conditions | [TargetCondition!]! | Conditions that must all match for this target to select an application. |
PreviewApp¶
A matched application in the target preview.
Fields¶
| Field | Type | Description |
|---|---|---|
id | String! | Catalog identifier of the matched application. |
name | String! | Display name of the matched application. |
riskLevel | String! | Catalog risk level of the matched application. |
RiskCount¶
Count of applications at a specific risk level.
Fields¶
| Field | Type | Description |
|---|---|---|
level | String! | Catalog risk level represented by this bucket. |
count | Int64! | Number of matched applications in this risk bucket. |
RuleTargetPreview¶
Preview of which catalog applications match a rule's target conditions.
Fields¶
| Field | Type | Description |
|---|---|---|
matchedCount | Int64! | Total count of applications matching all conditions. |
effectiveCount | Int64 | How many of the matched applications this rule will actually act on, given the rules above it in the same policy (first-match-wins). Always <= matchedCount. Null means "not determined", which is NOT the same as "equal to matchedCount": - Query.previewRuleTarget always returns null — one rule, no sequence. - PolicyRule.targetPreview always returns null to preserve its legacy contract. - Query.previewRuleTargets returns null when a rule higher in the sequence could not be resolved against the catalog, since the claim set is incomplete. Clients must show only the matched figure when this is null, and may show a second figure only when it is present and differs from matchedCount. |
topApps | [PreviewApp!]! | Matched applications, sorted by name. Drawn from the matched set, not the effective set, so the names stay consistent with matchedCount. Returned set depends on the source: - PolicyRule.targetPreview: capped at 5. - Query.previewRuleTarget: capped at 500. - Query.previewRuleTargets: capped at 5 per rule. |
riskCounts | [RiskCount!]! | Risk level distribution of matched applications. |
warnings | [String!]! | Risk-aware warnings for admin review. Derived from the effective set when effectiveCount is non-null, so a warning never names an application the rule cannot act on; derived from the matched set when effectiveCount is null. |
enforcementImpact | EnforcementImpact! | Concrete enforcement targets resolved independently of parent-oriented counts. |
RuleTargetPreviewV2¶
Sequence-aware preview returned only by PolicyRule.targetPreviewV2.
Fields¶
| Field | Type | Description |
|---|---|---|
matchedCount | Int64! | Total count of applications matching all conditions. |
effectiveCount | Int64 | How many matched applications this rule will actually act on after preceding rules are applied. Populated if and only if effectiveReachStatus is DETERMINED. |
effectiveReachStatus | EffectiveReachStatus! | Whether effectiveCount was determined. A non-DETERMINED value explains why effectiveCount is null. |
topApps | [PreviewApp!]! | Matched applications, sorted by name and capped at 5. |
riskCounts | [RiskCount!]! | Risk level distribution of all matched applications. |
warnings | [String!]! | Risk-aware warnings for admin review. Derived from the effective set when effectiveReachStatus is DETERMINED, otherwise from the full matched set. |
enforcementImpact | EnforcementImpact! | Concrete enforcement targets resolved independently of parent-oriented counts. |
SecureAIMostBlockedPolicy¶
The policy that blocked the most activities in a time window.
Fields¶
| Field | Type | Description |
|---|---|---|
policyId | ID! | Policy ID. |
blockedCount | Int64! | Number of activities this policy blocked in the window. |
SecureAIPolicyActivityMetrics¶
Activity of the tenant's enabled policies over a time window.
Fields¶
| Field | Type | Description |
|---|---|---|
policiesWithActivityCount | Int64! | Number of enabled policies that matched at least one activity in the window. |
policiesWithoutActivityCount | Int64! | Number of enabled policies with no activity in the window. |
policiesWithoutActivityIds | [ID!]! | IDs of enabled policies with no activity in the window, sorted. |
windowStart | Time! | Window start. |
windowEnd | Time! | Window end. |
mostBlockedPolicy | SecureAIMostBlockedPolicy | Policy with the most blocked activities in the window. Null when no in-use policy blocked anything. |
SensorConfig¶
Configuration for a single sensor on a policy. Each sensor type has its own scope schema (e.g., Endpoint uses user/device groups, Firewall uses CM groups). Endpoint scope JSON accepts two on-disk shapes per dimension; the deserializer unions them so producers may write either form: { "users": [{"id": "uuid", "name": "DOMAIN\\user", "exchange_login": "user@corp.com"}, ...], "group_ids": ["uuid", ...] (or "groups": [{"id": "uuid"}, ...]) "device_ids": ["uuid", ...] (or "devices": [{"id": "uuid"}, ...]) "device_group_ids": ["uuid", ...] (or "device_groups": [{"id": "uuid"}, ...]) } The legacy form "user_ids": ["uuid", ...] is also accepted and merges with the rich users array. For the user dimension only, name is matched against the activity's user-name before falling back to id. This lets user-scope policies match Windows endpoint events, where the user ID is a SID. exchange_login is accepted but not used for matching. Firewall scope JSON shape: {"groups": [{"group_id": "uuid", "web_policy_ids": ["uuid", ...]}]}
Fields¶
| Field | Type | Description |
|---|---|---|
enabled | Boolean! | Whether this sensor should enforce the policy. |
scope | JSON! | Sensor-specific scope as JSON. BASE requires Endpoint {"type":"EVERYONE"}; an enabled BASE Firewall uses the same scope. |
SensorConfigMap¶
Per-sensor enablement and scope. Null means the sensor is not configured for this policy.
Fields¶
| Field | Type | Description |
|---|---|---|
endpoint | SensorConfig | Endpoint sensor configuration, or null when Endpoint is not configured. |
firewall | SensorConfig | Firewall sensor configuration, or null when Firewall is not configured. |
dns | SensorConfig | DNS sensor configuration, or null when DNS Protection is not configured. |
browser | SensorConfig | Protected Browser configuration, or null when Browser is not configured. |
StarterTemplate¶
A Sophos-shipped persona-based policy template. Supplies industry-tuned rules for a new policy. Stamping happens via the normal createPolicy mutation with builtInKey + builtInVersion set — there is no separate stamp endpoint. Templates are global, not tenant-specific.
Fields¶
| Field | Type | Description |
|---|---|---|
key | String! | Immutable identifier. Policies created from the template store it in Policy.builtInKey. |
name | String! | Display name. Use it as the first name of a policy created from the template. |
description | String! | One-line summary of the template. |
recommended | Boolean! | Marks the persona highlighted as the default until tenant industry signal is available from onboarding. Exactly one template in the registry carries recommended=true. |
version | Int64! | Template version. Captured on Policy.builtInVersion at stamp time. |
rules | [PolicyRule!]! | Ordered rules. The final rule is always the catch-all (empty conditions on PolicyTarget). Each rule's note field explains why the rule is there. |
defaultSensors | SensorConfigMap! | Default sensors for a policy created from the template. Change them before you save. |
baseRule | PolicyBaseRule! | Pre-filled policy-wide base rule. Never null: the API default applies when the template sets nothing, matching Policy.baseRule. |
impact | PolicyImpactResult! | Impact preview against the current catalog. Lazy field — computed only when requested, so listing templates without impact is cheap. |
Subject F¶
Federated reference to a platform subject (user, client, service principal). This service emits {id} references only — the federated gateway resolves the full Subject data from the platform subjects service, which owns the entity. Use to join policy createdBy/updatedBy IDs against user metadata (email, displayName).
Fields¶
| Field | Type | Description |
|---|---|---|
id | ID! | Underlying subject ID. Matches the value stored in Policy.createdBy / Policy.updatedBy. |
TargetCondition¶
A single filter condition within a policy target. Example: { dimension: "risk_level", operator: IN, values: ["high", "critical"] }
Fields¶
| Field | Type | Description |
|---|---|---|
dimension | String! | The AI service attribute to filter on (e.g., app, category, risk_level, compliance). |
operator | FilterOperator! | Operator used to compare the dimension with the supplied values. |
values | [String!]! | Values to match against. ORed within the condition. |
Enums¶
AppSanctioningStatus¶
Classifies an AI application based on the tenant's policy rules. Scope-agnostic: the first matching rule wins across all policies by priority, and sensor scope is ignored.
Values¶
| Value | Description |
|---|---|
APPROVED | Admin explicitly approved this app. |
BLOCKED | Admin blocked this app. |
WARNED | Admin configured a warning for this app. |
NOT_COVERED | No sanctioning policy applies to this app. |
EffectiveReachStatus¶
Whether a V2 effective-reach figure was computed, and why not when absent.
Values¶
| Value | Description |
|---|---|
DETERMINED | The ordered sequence was resolved and effectiveCount is populated. |
NO_SEQUENCE_CONTEXT | The rule was resolved without the Policy.rules sequence walk. |
INCOMPLETE_SEQUENCE | At least one rule needed for the sequence calculation could not be resolved. |
EnforcementMechanism¶
Sensor mechanism used to enforce an application policy decision.
Values¶
| Value | Description |
|---|---|
WEB_CONTROL | Web Browser Enforcement |
APP_CONTROL | Application Enforcement |
EnforcementStatus¶
Computed enforcement state derived from the policy's enabled flag and its distribution records. Never stored — eliminates concurrent write races between admin edits and policy distribution.
Values¶
| Value | Description |
|---|---|
INACTIVE | Policy is disabled, has no enabled sensors, or has no distribution records yet. |
PENDING | At least one enabled sensor's distribution is queued, or records exist for some enabled sensors but not all (mid-distribution). PENDING shadows FAILED — a queued retry means the policy is in flight. |
ENFORCED | Every enabled sensor has a synced distribution record. |
FAILED | At least one enabled sensor's last push failed. Requires admin attention (manual retry or investigation). |
FilterOperator¶
How a target condition's values are matched against an AI service's attributes. Conditions are ANDed across dimensions, ORed within a condition's values.
Values¶
| Value | Description |
|---|---|
IN | Service attribute must be one of the listed values. Used for app, category, risk_level, etc. |
MISSING_ANY | Service is missing at least one of the listed certifications/attributes. Used for compliance dimension. |
PolicyAction¶
Action applied when a rule matches AI traffic. Each rule within a policy has its own action. The service merges per-rule actions into sensor configs.
Values¶
| Value | Description |
|---|---|
BLOCK | Deny access to matched AI services. Traffic is dropped/rejected at the sensor level. |
WARN | Allow access but show an interstitial warning. Not supported by DNS, which cannot show a warning. |
ALLOW | Explicitly permit access. Used to create exceptions — e.g., allow Copilot for Engineering overrides a broader block. |
PolicyKind¶
Lifecycle class of a policy. Orthogonal to origin, which records authorship — a TENANT_BASE policy is system-provisioned but the tenant owns its rules.
Values¶
| Value | Description |
|---|---|
TENANT | An ordinary tenant policy, whatever its origin. Requires an explicit scope. |
TENANT_BASE | Reserved per-tenant catch-all. Created ENABLED with Endpoint scope {"type":"EVERYONE"}. Firewall is optional and, when enabled, must also use {"type":"EVERYONE"}. Generative AI category action defaults to ALLOW; an action and app rules may be supplied during creation. Its priority is below tenant and partner policies. Admins may edit its name, description, tags, rules, Generative AI category action, and supported sensor configuration; they cannot disable, delete, clone, or reposition it. |
PolicyOrigin¶
Who created a policy. Determines editability and lifecycle behavior.
Values¶
| Value | Description |
|---|---|
CUSTOM | Created by a tenant admin. Fully editable. |
BUILT_IN | Stamped from a Sophos-shipped template. Fully editable after stamping; builtInKey/builtInVersion track provenance. |
PARTNER | Pushed from a partner hub to the tenant. Fully read-only for tenant admins — the partner controls the entire lifecycle. |
PolicyState¶
Admin intent for a policy. More states, such as DRAFT or PENDING_APPROVAL, may be added later.
Values¶
| Value | Description |
|---|---|
ENABLED | The policy should be enforced. The service distributes it to all configured sensors. |
DISABLED | The policy is inactive. The service removes any existing distribution. |
ReportRelativeTimeFramePeriodV2¶
Reuses the platform-wide ReportRelativeTimeFramePeriodV2 enum defined by report-service / reporting-api so that Apollo Federation merges cleanly.
Values¶
| Value | Description |
|---|---|
SINCE_BEGINNING_OF_DAY | Midnight UTC of the current day to now. |
SINCE_BEGINNING_OF_WEEK_SUNDAY | Most recent Sunday 00:00 UTC to now. |
SINCE_BEGINNING_OF_WEEK_MONDAY | Most recent Monday 00:00 UTC to now. |
SINCE_BEGINNING_OF_MONTH | First day of the current month 00:00 UTC to now. |
SINCE_BEGINNING_OF_QUARTER | First day of the current quarter 00:00 UTC to now. |
SINCE_BEGINNING_OF_YEAR | First day of the current year 00:00 UTC to now. |
LAST_MONTH | Entirety of the previous calendar month. |
LAST_QUARTER | Entirety of the previous calendar quarter. |
LAST_YEAR | Entirety of the previous calendar year. |
ResolvedAction¶
Enforcement action for a resolved web control rule.
Values¶
| Value | Description |
|---|---|
allow | |
block | |
warn |
Input objects¶
BrowserDataControlsInput¶
Write-side counterpart of BrowserDataControls, attached to a rule via PolicyRuleInput.dataControls.
Fields¶
| Field | Type | Description |
|---|---|---|
clipboardCopy | ResolvedAction! | Action for copying content out of the site's clipboard context. |
clipboardPaste | ResolvedAction! | Action for pasting content into the site's clipboard context. |
upload | ResolvedAction! | Action for uploading files to the site. |
download | ResolvedAction! | Action for downloading files from the site. |
PolicyBaseRuleInput¶
Policy-wide settings. Every field is optional: omitted fields keep their current value on update, and take their default on create.
Fields¶
| Field | Type | Description |
|---|---|---|
generativeAiCategoryAction | PolicyAction | Action for the entire Generative AI web category. Defaults to ALLOW. |
appControlCategoryAction | PolicyAction | AppControl category override: ALLOW or BLOCK. Omit on update to keep it; null clears it and resumes inheritance. |
PolicyCreateInput¶
Creates an ordinary policy DISABLED by default so the admin can review and position it before enforcement. Pass state: ENABLED to create-and-enable. TENANT_BASE requires state: ENABLED and is pinned below other policies.
Fields¶
| Field | Type | Description |
|---|---|---|
kind | PolicyKind | Lifecycle class. Omit for an ordinary TENANT policy. TENANT_BASE creation returns the existing singleton on retry without resetting edits. Default: TENANT. |
name | String! | |
description | String | |
rules | [PolicyRuleInput!]! | Ordered rules. Position assigned from array index. May be empty — the policy-wide baseRule always applies, so a policy with no per-app rules is still a complete policy. |
baseRule | PolicyBaseRuleInput | Policy-wide settings. Omit to take the defaults. |
sensors | SensorConfigMapInput! | |
tags | JSON | Key/value labels. Example: |
state | PolicyState | Defaults to DISABLED for ordinary policies. Pass ENABLED to create-and-enable in one operation. TENANT_BASE must be created ENABLED with Endpoint EVERYONE scope; Firewall EVERYONE scope, app rules, and a Generative AI category action may be supplied. Default: DISABLED. |
builtInKey | String | When set, marks the new policy as stamped from a Sophos starter template. Stored on Policy.builtInKey. Pairs with builtInVersion. Setting this also sets Policy.origin to BUILT_IN. It is not validated against the current templates, because templates can be renamed or removed while policies created from them keep working. |
builtInVersion | Int64 | Template version captured at stamp time. Required when builtInKey is set. |
PolicyFilterInput¶
Filters for the policies list query. All fields are optional and ANDed.
Fields¶
| Field | Type | Description |
|---|---|---|
state | PolicyState | |
origin | PolicyOrigin | |
kind | PolicyKind | Filter by lifecycle class. Use TENANT to fetch the tenant-owned reorderable list — partner-origin and TENANT_BASE policies are excluded from reorderPolicies. |
search | String | Free-text search across policy name and description. |
nameSearch | String | Free-text search across policy name only. Prefer this over search when matching against description would be noisy. |
PolicyRuleInput¶
A single rule input. Position is NOT provided — it is assigned server-side from the array index (0-based). Send rules in desired evaluation order.
Fields¶
| Field | Type | Description |
|---|---|---|
target | PolicyTargetInput! | |
action | PolicyAction! | |
enforcementMechanismOverride | [EnforcementMechanism!] | optionally override to target a specific set of enforcement mechanisms. If null all supported mechanisms will apply |
note | String | Optional admin note describing the intent or context of this rule. |
dataControls | BrowserDataControlsInput | Per-operation actions for the Sophos Endpoint browser extension's clipboard/upload/download enforcement on this rule's matched sites. Omit or pass null to leave data controls unconfigured. |
PolicyTargetInput¶
Conditions defining which applications a policy rule targets.
Fields¶
| Field | Type | Description |
|---|---|---|
conditions | [TargetConditionInput!]! |
PolicyUpdateInput¶
Partial update — only provided fields are changed. Version is required for optimistic concurrency. Rules use full replacement: if provided, the entire rules list is replaced. Omit rules to leave them unchanged.
Fields¶
| Field | Type | Description |
|---|---|---|
name | String | |
description | String | |
rules | [PolicyRuleInput!] | Full replacement — provide the complete ordered rules list. Omit to leave unchanged. Pass an empty list to remove every rule; the policy-wide baseRule continues to apply. |
baseRule | PolicyBaseRuleInput | Partial update of the policy-wide settings. Omit to leave unchanged. |
sensors | SensorConfigMapInput | |
tags | JSON | Key/value labels. Example: |
version | Int64! | Must match the current version. Returns a conflict error if stale. |
RuleTargetInput¶
A single rule in an ordered sequence submitted for preview. Rules are walked top-to-bottom under first-match-wins, so an application claimed by an earlier in-effect rule — whatever that rule's action — is excluded from every later rule's effective reach and from its risk advisories.
Fields¶
| Field | Type | Description |
|---|---|---|
conditions | [TargetConditionInput!]! | |
action | PolicyAction! | |
inEffect | Boolean! | Whether this rule participates in preemption. When false, the rule still gets its own preview but claims no applications from the rules below it. Pass false for a rule that is not finished being authored, such as one with a condition that has no values selected yet. Empty conditions are a valid deliberate catch-all that claims every application, so an unfinished rule cannot be recognised from its conditions alone — only the client knows. Defaults to true. Default: true. |
SecureAITimeRange¶
Time range filter for activities. When omitted, the API defaults to SINCE_BEGINNING_OF_WEEK_SUNDAY. Provide either absolute times (startTime/endTime) or a relative preset — not both. Using both returns a validation error.
Fields¶
| Field | Type | Description |
|---|---|---|
startTime | Time | Absolute start time. Cannot be combined with relative. |
endTime | Time | Absolute end time. Cannot be combined with relative. |
relative | ReportRelativeTimeFramePeriodV2 | Relative preset (e.g. SINCE_BEGINNING_OF_DAY). Cannot be combined with startTime/endTime. |
SensorConfigInput¶
Enablement and sensor-specific scope supplied for one sensor.
Fields¶
| Field | Type | Description |
|---|---|---|
enabled | Boolean! | |
scope | JSON |
SensorConfigMapInput¶
Per-sensor configuration supplied when creating or updating a policy.
Fields¶
| Field | Type | Description |
|---|---|---|
endpoint | SensorConfigInput | |
firewall | SensorConfigInput | |
dns | SensorConfigInput | |
browser | SensorConfigInput |
TargetConditionInput¶
A dimension, operator, and values used to select matching applications.
Fields¶
| Field | Type | Description |
|---|---|---|
dimension | String! | |
operator | FilterOperator! | |
values | [String!]! |
Scalars¶
Int64¶
Signed 64-bit integer serialized according to the federated graph contract.
JSON¶
Arbitrary JSON value.
Time¶
RFC 3339 timestamp serialized as a string.
Federated types and introspection. Types marked with F are federated across one or more APIs in the graph. Other subgraphs may provide more fields than those strictly defined here.
Where introspection is available, query the federated endpoint to inspect its composed API schema and available fields. Learn how GraphQL introspection works.