Summary

Published a new Documentation guide that explains regional API hostnames, which products are supported on each regional edge (and which combinations are not), example requests, and compliance-oriented guidance for choosing the correct region. No API endpoints, schemas, or runtime behaviour have changed.


Changes

Documentation

  • Regional endpoints and compliance (new guide)
    • N/A → Published under Documentation
    • Type: addition
    • Notes: See the guide for hostnames per region, product availability by region, and operational compliance context. Helps integrators avoid calling the wrong edge for a tenant’s provisioned region.

Dates

  • Effective: 2026-05-15

Summary

Adds a new Frameworks objective surface area in ControlMap, including partner-level and client-level objective summaries, objective search, and objective detail retrieval.


Changes

ControlMap

  • Endpoint: GET /controlmap/v1/clients/frameworks/objectives/summary

    • Type: addition
    • Notes: Adds a partner-level objective overview endpoint that returns paginated objective summaries across clients.
  • Endpoint: GET /controlmap/v1/clients/{client_id}/frameworks/objectives/summary

    • Type: addition
    • Notes: Adds a client-level objective summary endpoint for returning framework stats and objective summary counts for a single client.
  • Endpoint: POST /controlmap/v1/clients/{client_id}/frameworks/{framework_id}/objectives/search

    • Type: addition
    • Notes: Adds an objective search endpoint scoped to a specific client and framework, with filtering, sorting, and cursor-based pagination.
  • Endpoint: GET /controlmap/v1/clients/{client_id}/frameworks/{framework_id}/objectives/{objective_id}

    • Type: addition
    • Notes: Adds an objective detail endpoint for retrieving a single objective within a client/framework context.

Dates

  • Effective: [2026-04-23]

Summary

Adds new client group, goal template, initiative template, asset lookup, and assessment question comment endpoints across Lifecycle Manager. This release also updates initiative endpoints to support rich-text executive summaries, changes meeting attendee endpoints to use wrapped request bodies and 201 Created on add operations, and extends deliverable endpoints with support for a new Custom component type plus optional section naming where applicable.


Changes

Lifecycle Manager

  • Endpoint: PUT /lifecycle-manager/v1/assessments/{assessment_id}/questions/{question_id}/comment/public

    • Type: addition
    • Notes: Adds a public assessment-question comment upsert endpoint.
  • Endpoint: PUT /lifecycle-manager/v1/assessments/{assessment_id}/questions/{question_id}/comment/internal

    • Type: addition
    • Notes: Adds an internal assessment-question comment upsert endpoint.
  • Endpoint: GET /lifecycle-manager/v1/assessments

    • Type: change
    • Notes: Assessment list responses now include record_created_at on assessment items.
  • Endpoint: GET /lifecycle-manager/v1/assessments/{id}

    • Type: change
    • Notes: Assessment detail responses now include record_created_at on the assessment and comment_json plus record_created_at on assessment question comments.
  • Endpoint: POST /lifecycle-manager/v1/assets/hardware/attached-initiatives/lookup

    • Type: addition
    • Notes: Adds a hardware-to-initiative lookup endpoint for retrieving initiatives attached to a hardware asset.
  • Endpoint: GET /lifecycle-manager/v1/client-groups

    • Type: addition
    • Notes: Adds a client group list endpoint.
  • Endpoint: GET /lifecycle-manager/v1/client-groups/{client_group_id}

    • Type: addition
    • Notes: Adds a client group detail endpoint.
  • Endpoint: POST /lifecycle-manager/v1/client-groups/{client_group_id}/assignments

    • Type: addition
    • Notes: Adds an assignment endpoint for attaching clients and users to a client group.
  • Endpoint: DELETE /lifecycle-manager/v1/client-groups/{client_group_id}/assignments

    • Type: addition
    • Notes: Adds an unassignment endpoint for removing clients and users from a client group.
  • Endpoint: POST /lifecycle-manager/v1/clients/client-groups/lookup

    • Type: addition
    • Notes: Adds a client-to-client-group lookup endpoint.
  • Endpoint: GET /lifecycle-manager/v1/goal-templates

    • Type: addition
    • Notes: Adds a goal template list endpoint.
  • Endpoint: POST /lifecycle-manager/v1/goal-templates

    • Type: addition
    • Notes: Adds a goal template create endpoint.
  • Endpoint: GET /lifecycle-manager/v1/goal-templates/{goal_template_id}

    • Type: addition
    • Notes: Adds a goal template detail endpoint.
  • Endpoint: PUT /lifecycle-manager/v1/goal-templates/{goal_template_id}

    • Type: addition
    • Notes: Adds a goal template update endpoint.
  • Endpoint: DELETE /lifecycle-manager/v1/goal-templates/{goal_template_id}

    • Type: addition
    • Notes: Adds a goal template delete endpoint.
  • Endpoint: POST /lifecycle-manager/v1/goals/create-from/template/{goal_template_id}

    • Type: addition
    • Notes: Adds a goal creation endpoint that instantiates a goal from a saved template.
  • Endpoint: GET /lifecycle-manager/v1/initiative-templates

    • Type: addition
    • Notes: Adds an initiative template list endpoint.
  • Endpoint: POST /lifecycle-manager/v1/initiative-templates

    • Type: addition
    • Notes: Adds an initiative template create endpoint.
  • Endpoint: GET /lifecycle-manager/v1/initiative-templates/{initiative_template_id}

    • Type: addition
    • Notes: Adds an initiative template detail endpoint.
  • Endpoint: PUT /lifecycle-manager/v1/initiative-templates/{initiative_template_id}

    • Type: addition
    • Notes: Adds an initiative template update endpoint.
  • Endpoint: DELETE /lifecycle-manager/v1/initiative-templates/{initiative_template_id}

    • Type: addition
    • Notes: Adds an initiative template delete endpoint.
  • Endpoint: PUT /lifecycle-manager/v1/initiatives/{initiative_id}/assets

    • Type: addition
    • Notes: Adds an endpoint for attaching hardware assets to an initiative.
  • Endpoint: DELETE /lifecycle-manager/v1/initiatives/{initiative_id}/assets

    • Type: addition
    • Notes: Adds an endpoint for detaching hardware assets from an initiative.
  • Endpoint: PUT /lifecycle-manager/v1/initiatives/{initiative_id}/template/{initiative_template_id}/apply

    • Type: addition
    • Notes: Adds an endpoint for applying an initiative template to an existing initiative.
  • Endpoint: POST /lifecycle-manager/v1/initiatives

    • Type: addition
    • Notes: Initiative create requests now support executive_summary_json. The legacy executive_summary field remains available but is deprecated.
  • Endpoint: PUT /lifecycle-manager/v1/initiatives/{id}

    • Type: addition
    • Notes: Initiative update requests now support executive_summary_json. The legacy executive_summary field remains available but is deprecated.
  • Endpoint: GET /lifecycle-manager/v1/initiatives

    • Type: change
    • Notes: Initiative list responses now include executive_summary_json.
  • Endpoint: GET /lifecycle-manager/v1/initiatives/{id}

    • Type: change
    • Notes: Initiative detail responses now include executive_summary_json.
  • Endpoint: POST /lifecycle-manager/v1/meetings/{id}/attendees/contacts

    • Type: change
    • Notes: The request body now uses an object wrapper with contact_keys instead of a raw array, and the success response changed from 200 OK to 201 Created.
  • Endpoint: DELETE /lifecycle-manager/v1/meetings/{id}/attendees/contacts

    • Type: change
    • Notes: The request body now uses an object wrapper with contact_keys instead of a raw array.
  • Endpoint: POST /lifecycle-manager/v1/meetings/{id}/attendees/users

    • Type: change
    • Notes: The request body now uses an object wrapper with user_keys instead of a raw array, and the success response changed from 200 OK to 201 Created.
  • Endpoint: DELETE /lifecycle-manager/v1/meetings/{id}/attendees/users

    • Type: change
    • Notes: The request body now uses an object wrapper with user_keys instead of a raw array.
  • Endpoint: GET /lifecycle-manager/v1/clients/{client-id}/deliverables/catalog/components

    • Type: addition
    • Notes: Deliverable catalog responses now support the Custom component type.
  • Endpoint: GET /lifecycle-manager/v1/deliverables/templates/catalog/components

    • Type: addition
    • Notes: Deliverable template catalog responses now support the Custom component type.
  • Endpoint: POST /lifecycle-manager/v1/clients/{client-id}/deliverables

    • Type: addition
    • Notes: Deliverable create requests now support the Custom component type in section components and optional section name values.
  • Endpoint: GET /lifecycle-manager/v1/deliverables/{deliverable-id}

    • Type: change
    • Notes: Deliverable detail responses now support the Custom component type in section components.
  • Endpoint: PATCH /lifecycle-manager/v1/deliverables/{deliverable-id}

    • Type: change
    • Notes: Deliverable patch requests now support the Custom component type in section components and optional section name values.
  • Endpoint: POST /lifecycle-manager/v1/clients/{client-id}/deliverables/create-from/template/{template-id}

    • Type: change
    • Notes: Deliverables created from templates now support the Custom component type in returned section components.
  • Endpoint: POST /lifecycle-manager/v1/deliverables/templates

    • Type: addition
    • Notes: Deliverable template create requests now support the Custom component type in section components and optional section name values.
  • Endpoint: GET /lifecycle-manager/v1/deliverables/templates/{template-id}

    • Type: change
    • Notes: Deliverable template detail responses now support the Custom component type in section components.
  • Endpoint: PATCH /lifecycle-manager/v1/deliverables/templates/{template-id}

    • Type: change
    • Notes: Deliverable template patch requests now support the Custom component type in section components and optional section name values.
  • Endpoint: POST /lifecycle-manager/v1/deliverables/templates/create-from/template/{template-id}

    • Type: change
    • Notes: Templates created from templates now support the Custom component type in returned section components.
  • Endpoint: POST /lifecycle-manager/v1/deliverables/templates/create-from/deliverable/{deliverable-id}

    • Type: change
    • Notes: Templates created from deliverables now support the Custom component type in returned section components.

Dates

  • Effective: [2026-04-17]

Summary

Introduces new assessment-related endpoints across ControlMap, including client and partner assessment summaries, assessment question retrieval and search, answer management, mapping operations, and assessment responses. This release also deprecates several legacy GET list endpoints in favor of POST-based querying patterns and adds a new refresh_status field to evidence responses.


Changes

ControlMap

  • Assessment controller

    • Partner assessment summary endpoint added
    • Type: addition
    • Notes: Adds GET /controlmap/v1/clients/assessments/common/summary for partner-level assessment overview across clients.
  • Assessment controller

    • Client assessment summary endpoint added
    • Type: addition
    • Notes: Adds GET /controlmap/v1/clients/{client_id}/assessments/common/summary for client-specific assessment summary retrieval.
  • Assessment controller

    • Assessment question search endpoint added
    • Type: addition
    • Notes: Adds POST /controlmap/v1/clients/{client_id}/assessments/common/questions/search for filtered and paginated assessment question queries.
  • Assessment controller

    • Assessment question detail endpoint added
    • Type: addition
    • Notes: Adds GET /controlmap/v1/clients/{client_id}/assessments/common/questions/{question_code} for retrieving a single assessment question by code.
  • Assessment controller

    • Assessment answer management endpoints added
    • Type: addition
    • Notes: Adds PUT and DELETE /controlmap/v1/clients/{client_id}/assessments/common/questions/{question_code}/answer to save and clear answers for an assessment question.
  • Assessment controller

    • Assessment mapping endpoints added
    • Type: addition
    • Notes: Adds POST and DELETE /controlmap/v1/clients/{client_id}/assessments/common/questions/{question_code}/mappings to map and unmap assessment questions to evidences, action items, policies, and procedures.
  • Assessment controller

    • Assessment response endpoints added
    • Type: addition
    • Notes: Adds POST and PATCH /controlmap/v1/clients/{client_id}/assessments/common/questions/{question_code}/responses, plus DELETE /controlmap/v1/clients/{client_id}/assessments/common/questions/{question_code}/responses/{response_id}, for creating, updating, and deleting assessment question responses.
  • Evidence controller

    • refresh_status added to evidence response
    • Type: addition
    • Notes: EvidenceResponse now includes refresh_status, allowing clients to surface evidence freshness state.
  • Evidence controller

    • Legacy GET list endpoint deprecated
    • Type: deprecation
    • Notes: GET /controlmap/v1/clients/{client_id}/evidences is now deprecated. Consumers should move toward the POST search/query pattern where applicable.
  • Risk controller

    • Legacy GET list endpoint deprecated
    • Type: deprecation
    • Notes: GET /controlmap/v1/clients/{client_id}/risks is now deprecated in favor of the existing POST-based query pattern.
  • Action Item controller

    • Legacy GET list endpoint deprecated
    • Type: deprecation
    • Notes: GET /controlmap/v1/clients/{client_id}/action-items is now deprecated in favor of the existing POST-based query pattern.

Dates

  • Effective: [2026-04-06]

Core API – Query & Schema Contract Changes


Summary

Introduces several contract changes across Core controllers, including new POST-based query patterns, field removals from related objects, and nullability updates. Some of these changes are backwards incompatible and may require client updates.


Changes

Core

  • Client controller

    • typelifecycle
    • Type: breaking
    • Notes: The type field has been renamed to lifecycle. Clients referencing type must update to the new field name.
  • Client controller

    • longitude, latitude non-nullable → nullable
    • Type: behavior-change
    • Notes: Location fields may now be omitted or returned as null.
  • Contact controller

    • GET query → POST-based querying
    • Type: breaking
    • Notes: Querying by email, phone, and name fields (first, middle, last, full) must now be provided in the POST request body.
  • Contract controller

    • Contact fields removed
    • Type: breaking
    • Notes: name and email have been removed from the embedded contact object.
  • Hardware Asset controller

    • Contact fields removed
    • Type: breaking
    • Notes: name and email have been removed from the embedded contact object.
  • Member controller

    • GET query → POST-based querying
    • Type: breaking
    • Notes: Querying by email, phone, and name fields (first, middle, last, full) must now be provided in the POST request body.
  • Member controller

    • reports_to_member fields removed
    • Type: breaking
    • Notes: name and email have been removed from reports_to_member.
  • Opportunity controller

    • Contact fields removed
    • Type: breaking
    • Notes: name and email have been removed from the embedded contact object.
  • Opportunity controller

    • responsible_member.name removed
    • Type: breaking
    • Notes: Consumers must rely on IDs or related lookups for responsible member details.
  • SaaS User controller

    • Contact fields removed
    • Type: breaking
    • Notes: name and email have been removed from the embedded contact object.
  • Ticket controller

    • owner_member.name removed
    • Type: breaking
  • Ticket controller

    • responsible_member.name removed
    • Type: breaking
  • Ticket controller

    • Contact fields removed
    • Type: breaking
    • Notes: name and email have been removed from the embedded contact object.
  • Ticket controller

    • status removed from contract
    • Type: breaking
    • Notes: status has been removed from the embedded contract object.
  • Ticket controller

    • board.id non-nullable → nullable
    • Type: behavior-change
  • Ticket controller

    • Timeline fields non-nullable → nullable
    • Type: behavior-change
    • Notes: timeline.created_at and timeline.updated_at may now be returned as null.

Dates

  • Effective: [2026-01-28]

Summary

The Core API documentation now explicitly lists supported enum values across multiple endpoints and resources. This improves discoverability, reduces guesswork, and helps API consumers validate inputs and handle responses correctly.


Changes

Core

  • GET /core/v1/integrations/vendors

    • Strings → Explicit enums
    • Type: fix
    • Notes: The following fields now list supported values in the schema:
      • category:
        • PSA
        • RMM
        • SaaS
        • Network
        • Documentation
        • Backup
        • Customer Satisfaction
        • Cybersecurity
        • PSA & RMM
      • data_types_supported[]:
        • CLIENT
        • CONTRACT
        • CONTACT
        • HARDWARE_ASSET
        • MEMBER
        • OPPORTUNITY
        • SAAS_ASSET
        • SAAS_USER
        • TICKET
  • GET /core/v1/integrations/configurations

    • Array of strings → Enum values
    • Type: fix
    • Notes: The following field now lists supported values:
      • primary[]:
        • CLIENT
        • CONTRACT
        • CONTACT
        • HARDWARE_ASSET
        • MEMBER
        • OPPORTUNITY
        • SAAS_ASSET
        • SAAS_USER
        • TICKET
  • GET /core/v1/service/contracts

    • Strings → Explicit enums
    • Type: fix
    • Notes: Contract models now expose supported values for:
      • status:
        • SUSPENDED
        • EXPIRED
        • ACTIVE
        • DRAFT
        • SENT
        • SIGNED
        • NOT_EXECUTED
        • CANCELLED
      • type:
        • MANAGED_SERVICES
        • BLOCK
        • 3RD_PARTY
        • UNASSIGNED
      • contract_pricings[].status:
        • ACTIVE
        • INACTIVE
        • CANCELLED
        • EXPIRED
      • contract_pricings[].pricing_type:
        • UNKNOWN
        • UNIT
        • ALLOCATION
      • contract_pricings[].unit_type:
        • TICKET
        • HOURS
        • PRODUCT
        • RECURRING
      • contract_pricings[].recurrent_charge_frequency:
        • NOT_CHARGED
        • ONE_TIME
        • ANNUAL
        • SEMI_ANNUAL
        • QUARTERLY
        • BI_MONTHLY
        • MONTHLY
        • BI_WEEKLY
      • contract_term.billing_period:
        • NOT_BILLED
        • ONE_TIME
        • ANNUAL
        • SEMI_ANNUAL
        • QUARTERLY
        • BI_MONTHLY
        • MONTHLY
        • BI_WEEKLY
        • WEEKLY
  • GET /core/v1/service/tickets

    • Strings → Explicit enums
    • Type: fix
    • Notes: Ticket models now expose supported values for:
      • category:
        • INCIDENT
        • NETWORK_INCIDENT
        • FIREWALL_INCIDENT
        • ROUTER_INCIDENT
        • WIFI_INCIDENT
        • CONNECTIVITY_INCIDENT
        • SERVER_INCIDENT
        • HARDWARE_INCIDENT
        • WORKSTATION_INCIDENT
        • SHARED_PERIPHERAL_INCIDENT
        • MOBILE_DEVICE_INCIDENT
        • STORAGE_INCIDENT
        • SOFTWARE_INCIDENT
        • CLIENT_SOFTWARE_INCIDENT
        • SERVER_SOFTWARE_INCIDENT
        • COMMUNICATION_SYSTEM_INCIDENT
        • PHONE_SYSTEM_INCIDENT
        • MESSAGING_SYSTEM_INCIDENT
        • VIDEO_CONFERENCING_INCIDENT
        • SERVICE_REQUEST
        • NETWORK_SERVICE_REQUEST
        • FIREWALL_SERVICE_REQUEST
        • ROUTER_SERVICE_REQUEST
        • WIFI_SERVICE_REQUEST
        • CONNECTIVITY_SERVICE_REQUEST
        • SERVER_SERVICE_REQUEST
        • HARDWARE_SERVICE_REQUEST
        • WORKSTATION_SERVICE_REQUEST
        • SHARED_PERIPHERAL_SERVICE_REQUEST
        • MOBILE_DEVICE_SERVICE_REQUEST
        • STORAGE_SERVICE_REQUEST
        • SOFTWARE_SERVICE_REQUEST
        • CLIENT_SOFTWARE_SERVICE_REQUEST
        • SERVER_SOFTWARE_SERVICE_REQUEST
        • COMMUNICATION_SYSTEM_SERVICE_REQUEST
        • PHONE_SYSTEM_SERVICE_REQUEST
        • MESSAGING_SYSTEM_SERVICE_REQUEST
        • VIDEO_CONFERENCING_SERVICE_REQUEST
        • SECURITY
        • SECURITY_AUDIT
        • SECURITY_INCIDENT
        • SECURITY_SERVICE_REQUEST
        • SECURITY_TRAINING
        • OTHER
        • TRAINING
        • MEETING
        • CONSULTING
        • PROJECT
        • MAINTENANCE
        • DOCUMENTATION
        • OTHER_SERVICE_REQUEST
        • MANAGEMENT
        • ALERT
        • SERVICE
        • BILLING
        • ACCOUNT
        • CHANGE
        • OTHER_INCIDENT
        • DEVICE
        • VENDOR
      • status.current and status history:
        • NEW
        • ASSIGNED
        • SCHEDULED
        • TRIAGE
        • IN_PROGRESS
        • WAITING_CLIENT
        • WAITING_VENDOR
        • CANCELLED
        • COMPLETED
        • CLOSED
        • REOPENED
        • ESCALATED
        • CLIENT_RESPONDED
        • UNASSIGNED
      • priority.current and priority history:
        • 1
        • 2
        • 3
        • 4
        • 5
        • UNASSIGNED
  • GET /core/v1/assets/hardware

    • Strings → Explicit enums
    • Type: fix
    • Notes: Hardware Asset models now expose supported values for:
      • type:
        • WORKSTATION
        • IMAGING
        • SERVER
        • NETWORK
        • MOBILE
        • VIRTUAL
      • software.antivirus.status:
        • UNKNOWN
        • DISABLED
        • RUNNING
      • software.antivirus.definition_status:
        • OUTOFDATE
        • UNKNOWN
        • UPTODATE
  • GET /core/v1/assets/saas

    • Strings → Explicit enums
    • Type: fix
    • Notes: SaaS Asset models now expose supported values for:
      • pool.type:
        • SEAT

Dates

  • Effective: 2026-01-14

Core API - Integration Metadata & Record Lineage


Summary

Adds new integration metadata endpoints, introduces record_lineage on key Core resources, and expands filtering support with the cont operator.


Changes

Core

  • GET /core/v1/integrations/configurations

    • N/A → Available
    • Type: addition
    • Notes: Lists integration configurations associated with the MSP.
  • GET /core/v1/integrations/vendors

    • N/A → Available
    • Type: addition
    • Notes: Lists supported integration vendors.
  • record_lineage (clients, contacts, members, contracts, opportunities)

    • Not returned → Returned
    • Type: addition
    • Notes: Optional field providing source record and integration metadata.
  • Filtering operator cont

    • Not supported → Supported
    • Type: behavior-change
    • Notes: Enables partial string matching on supported filterable fields. At least three characters required.

Dates

  • Effective: 2025-12-16