Liongard Environment Management
Overview
Environments in Liongard represent customer organizations or sites being monitored. Each environment is the top-level container for all inspection activity, discovered systems, detections, and metrics associated with a particular client, so nearly every other Liongard query is scoped by EnvironmentID.
Anti-triggers
- A dev, staging, or production environment — a Liongard environment
is a customer organization. It has nothing to do with deployment
tiers.
- The client's commercial record — creating an environment does not
onboard a client; use
connectwise-psa-companies, autotask-crm, or
superops-clients.
- A Microsoft 365 tenant — an environment can hold an M365
inspection but is not a tenant; use
cipp-tenants.
- What was discovered inside an environment —
liongard-systems for
the assets, liongard-detections for the changes.
Key Concepts
Environments
Name is the only required field on create and must be unique across the instance. Status is Active or Inactive; Visible controls UI visibility; Tier is a free-form service-tier classification MSPs use for SLA and reporting segmentation. The counts (AgentCount, LaunchpointCount, SystemCount, DetectionCount) are returned only on the single-environment GET, not in list responses.
See references/fields.md for the complete field reference and the entity relationship map.
Environment Groups
Environment Groups (v2) are a logical grouping layer over environments — by category, region, or service level — that helps MSPs manage large client counts. Group membership is independent of the environment record itself: deleting a group ungroups its environments rather than deleting them.
Integration Mappings
An environment can be mapped to external systems (PSA tools, RMM platforms) so Liongard data correlates with tickets and devices elsewhere. Mappings are read via a sub-resource on the environment.
API Patterns
The full endpoint catalog with request/response bodies lives in references/api.md. The non-obvious parts:
- v1 list is GET with query params; v2 list is POST with a filter body.
POST /api/v2/environments takes conditions: [{path, op, value}], an optional fields array for field selection, and orderBy: [{path, direction}]. Use v2 when you need server-side filtering or narrower payloads.
Pagination is PascalCase and nested in v2 bodies — {"Pagination": {"Page": 1, "PageSize": 100}}. Response envelopes are PascalCase everywhere (Data, TotalRows, HasMoreRows, CurrentPage, TotalPages, PageSize); page until HasMoreRows is false.
GET /api/v1/environments/count returns just {"Count": N} — use it for health checks and dashboard summaries instead of paging a full list.
- Environment groups are v2-only at
/api/v2/environment-groups, while environment CRUD is v1 at /api/v1/environments.
- Related entities are fetched from their own endpoints filtered by
environmentId (camelCase query param) — /api/v1/launchpoints, /api/v1/systems, /api/v1/agents — except detections, which require POST /api/v1/detections with an EnvironmentID condition.
Common Workflows
New Client Onboarding
- Create environment - Add the new customer organization
- Assign to group - Place in appropriate environment group
- Set tier - Configure service tier for SLA tracking
- Deploy agent - Install agent on client infrastructure
- Configure launchpoints - Set up inspectors for relevant platforms
- Run initial inspections - Trigger immediate runs to capture baseline
- Verify discovery - Confirm systems are being discovered correctly
Client Decommissioning
- Review active inspections - Document current state
- Disable launchpoints - Stop scheduled inspections
- Export data - Archive historical inspection data if needed
- Set status to Inactive - Mark environment as inactive
- Remove from groups - Clean up group memberships
- Delete environment - Remove when retention period expires
Organizing by Tier
- Create tier groups - e.g., Premium, Standard, Basic
- Assign environments - Move each client to their tier group
- Configure metrics - Set tier-appropriate compliance metrics
- Set up detections - Enable tier-appropriate change monitoring
- Review regularly - Audit tier assignments quarterly
See references/examples.md for worked bulk-update and full-export implementations.
Gotchas
- Deleting an environment cascades and cannot be undone. It removes all associated launchpoints, systems, detections, and historical inspection data. Set
Status to Inactive instead when you only need to stop service but retain history.
- Duplicate names return 409, not a validation body. Environment names must be unique instance-wide, so a collision surfaces as a conflict on create.
- Deleting an environment group does not delete its environments — they are simply ungrouped. This is the opposite of the environment delete behavior above.
- Rate limit is 300 requests/minute. Bulk updates must be paced (roughly a 200 ms delay per request) since there is no batch endpoint for environment writes.
See references/errors.md for the complete API and validation error tables.
Best Practices
- Use consistent naming - Follow a standard naming convention (e.g., "CompanyName - SiteName")
- Complete all fields - Add descriptions and tiers for better reporting
- Organize with groups - Use environment groups for logical categorization
- Set appropriate tiers - Match tier to service agreement level
- Review regularly - Audit environments quarterly for accuracy
- Map integrations - Link to PSA/RMM for cross-platform correlation
Related Skills
1---2name: liongard-environments3description: Liongard environments — the per-customer containers that own all agents, launchpoints, systems, detections, and metrics. Covers environment CRUD, the lightweight count endpoint, v2 environment groups, tiering, related-entity lookups, and integration mappings to PSA/RMM platforms.4---56# Liongard Environment Management78## Overview910Environments in Liongard represent customer organizations or sites being monitored. Each environment is the top-level container for all inspection activity, discovered systems, detections, and metrics associated with a particular client, so nearly every other Liongard query is scoped by `EnvironmentID`.1112## Anti-triggers1314- **A dev, staging, or production environment** — a Liongard environment15 is a customer organization. It has nothing to do with deployment16 tiers.17- **The client's commercial record** — creating an environment does not18 onboard a client; use `connectwise-psa-companies`, `autotask-crm`, or19 `superops-clients`.20- **A Microsoft 365 tenant** — an environment can hold an M36521 inspection but is not a tenant; use `cipp-tenants`.22- **What was discovered inside an environment** — `liongard-systems` for23 the assets, `liongard-detections` for the changes.2425## Key Concepts2627### Environments2829`Name` is the only required field on create and must be unique across the instance. `Status` is `Active` or `Inactive`; `Visible` controls UI visibility; `Tier` is a free-form service-tier classification MSPs use for SLA and reporting segmentation. The counts (`AgentCount`, `LaunchpointCount`, `SystemCount`, `DetectionCount`) are returned only on the single-environment GET, not in list responses.3031See [references/fields.md](references/fields.md) for the complete field reference and the entity relationship map.3233### Environment Groups3435Environment Groups (v2) are a logical grouping layer over environments — by category, region, or service level — that helps MSPs manage large client counts. Group membership is independent of the environment record itself: deleting a group ungroups its environments rather than deleting them.3637### Integration Mappings3839An environment can be mapped to external systems (PSA tools, RMM platforms) so Liongard data correlates with tickets and devices elsewhere. Mappings are read via a sub-resource on the environment.4041## API Patterns4243The full endpoint catalog with request/response bodies lives in [references/api.md](references/api.md). The non-obvious parts:4445- **v1 list is GET with query params; v2 list is POST with a filter body.** `POST /api/v2/environments` takes `conditions: [{path, op, value}]`, an optional `fields` array for field selection, and `orderBy: [{path, direction}]`. Use v2 when you need server-side filtering or narrower payloads.46- **`Pagination` is PascalCase and nested** in v2 bodies — `{"Pagination": {"Page": 1, "PageSize": 100}}`. Response envelopes are PascalCase everywhere (`Data`, `TotalRows`, `HasMoreRows`, `CurrentPage`, `TotalPages`, `PageSize`); page until `HasMoreRows` is false.47- **`GET /api/v1/environments/count`** returns just `{"Count": N}` — use it for health checks and dashboard summaries instead of paging a full list.48- **Environment groups are v2-only** at `/api/v2/environment-groups`, while environment CRUD is v1 at `/api/v1/environments`.49- **Related entities are fetched from their own endpoints filtered by `environmentId`** (camelCase query param) — `/api/v1/launchpoints`, `/api/v1/systems`, `/api/v1/agents` — except detections, which require `POST /api/v1/detections` with an `EnvironmentID` condition.5051## Common Workflows5253### New Client Onboarding54551. **Create environment** - Add the new customer organization562. **Assign to group** - Place in appropriate environment group573. **Set tier** - Configure service tier for SLA tracking584. **Deploy agent** - Install agent on client infrastructure595. **Configure launchpoints** - Set up inspectors for relevant platforms606. **Run initial inspections** - Trigger immediate runs to capture baseline617. **Verify discovery** - Confirm systems are being discovered correctly6263### Client Decommissioning64651. **Review active inspections** - Document current state662. **Disable launchpoints** - Stop scheduled inspections673. **Export data** - Archive historical inspection data if needed684. **Set status to Inactive** - Mark environment as inactive695. **Remove from groups** - Clean up group memberships706. **Delete environment** - Remove when retention period expires7172### Organizing by Tier73741. **Create tier groups** - e.g., Premium, Standard, Basic752. **Assign environments** - Move each client to their tier group763. **Configure metrics** - Set tier-appropriate compliance metrics774. **Set up detections** - Enable tier-appropriate change monitoring785. **Review regularly** - Audit tier assignments quarterly7980See [references/examples.md](references/examples.md) for worked bulk-update and full-export implementations.8182## Gotchas8384- **Deleting an environment cascades and cannot be undone.** It removes all associated launchpoints, systems, detections, and historical inspection data. Set `Status` to `Inactive` instead when you only need to stop service but retain history.85- **Duplicate names return 409, not a validation body.** Environment names must be unique instance-wide, so a collision surfaces as a conflict on create.86- **Deleting an environment group does not delete its environments** — they are simply ungrouped. This is the opposite of the environment delete behavior above.87- **Rate limit is 300 requests/minute.** Bulk updates must be paced (roughly a 200 ms delay per request) since there is no batch endpoint for environment writes.8889See [references/errors.md](references/errors.md) for the complete API and validation error tables.9091## Best Practices92931. **Use consistent naming** - Follow a standard naming convention (e.g., "CompanyName - SiteName")942. **Complete all fields** - Add descriptions and tiers for better reporting953. **Organize with groups** - Use environment groups for logical categorization964. **Set appropriate tiers** - Match tier to service agreement level975. **Review regularly** - Audit environments quarterly for accuracy986. **Map integrations** - Link to PSA/RMM for cross-platform correlation99100## Related Skills101102- [Liongard Overview](../overview/SKILL.md) - Platform overview and terminology103- [Liongard Inspections](../inspections/SKILL.md) - Inspectors and launchpoints104- [Liongard Systems](../systems/SKILL.md) - Systems and dataprints105- [Liongard Detections](../detections/SKILL.md) - Change detection and alerts