---
id: SVC-PFM-CSH-tenant-applications
title: Workspace Applications Read
product_area: platform
module: console-shell
repository: services-platform
source_module: >-
  modules/tenants (tenant-applications.routes.ts only; the computation is
  modules/licensing)
revision: 1
status: draft
design_intent: confirmed
origin: >-
  services-platform:docs/proposals/application-access-and-entitlements.md#7.2
  Tenant administrators: why an application is unavailable (built and accepted
  by Andrew 2026-10-15)
implementation_evidence: observed
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
owns: []
does_not_own:
  - >-
    Operations owns the application registry, licence windows, overrides and
    operational workspace application records.
  - Security and Workspace Lifecycle own the workspace and its other routes.
  - Operations owns staff licensing reads and changes.
inference: []
operations:
  - operation_id: listTenantApplicationsForTenant
    intent: >-
      Provide the administrator with workspace applications and readable
      availability reasons while omitting staff-only and commercial detail.
    access: console
    permission: platform.tenant-applications.read
    realises:
      - CAP-PFM-CSH-017
    published_to_submissions: 'not published: an administrative read with no business effect'
events: []
jobs: []
integrations: []
consistency:
  - rule: >-
      Availability and registry data are read afresh in parallel without a
      declared shared transaction or route cache.
    kind: eventual
    compensation: none
  - rule: >-
      Licensing edits affect a later administrative read, while the personal
      application snapshot can lag through authorizer caching unless flushed.
    kind: eventual
    compensation: none
  - rule: >-
      The route evaluates workspace reach itself and returns not found outside
      reach, without a path-workspace availability gate.
    kind: transactional
    compensation: none
evidence:
  - >-
    services-platform at ad3f6a6:
    modules/tenants/aws/api/tenant-applications.routes.ts;
    modules/licensing/aws/api/licensing-api-mapper.ts (toTenantApplications,
    tenantLicenceStateOf, tenantReasonOf);
    modules/licensing/services/persistence/{applications,tenant-applications}.ts;
    modules/licensing/tests/e2e/licensing.e2e.spec.js; docs/licensing.md;
    docs/proposals/application-access-and-entitlements.md §5.3, §7.2.
  - 'react-console at baf6dae: lib/applications/{api,types,availability}.ts.'
controls: [TC-AVL-001, TC-AVL-004, TC-AVL-005, TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-AZ-005, TC-AZ-006, TC-DAT-001, TC-DAT-003, TC-IAM-001, TC-IAM-002, TC-IAM-003, TC-IAM-004, TC-IAM-005, TC-IAM-006, TC-LOG-001, TC-LOG-004, TC-LOG-005, TC-MON-001, TC-PI-001, TC-PI-002, TC-PI-003, TC-PI-004, TC-PI-005, TC-PRV-001, TC-PRV-002, TC-TEN-001, TC-TEN-002, TC-TEN-003, TC-VEN-001, TC-VEN-002, TC-VEN-003]
---
# Workspace Applications Read

## What This Service Is For

This read supplies the administrator with the applications a workspace can use and a readable explanation when one is unavailable. Configuration presents the response without editing controls.

## Boundary

The route belongs to the workspace API, and licensing owns its computation and storage. It is specified here provisionally because this module carries the administrator-facing rules. The recorded ownership question recommends Operations as the eventual home.

## Operations in Words

The operation returns application keys and names, availability, licensing dates and operational state. Licensing is reduced to licensed or not licensed, and withholding is reported as not licensed. The caller needs the workspace-applications read permission and reach over the requested workspace. Out-of-reach workspaces return not found. The operation is excluded from configurable intake because it captures no business data.

## Events and Jobs

The route has no event, scheduled job or model invocation. Licensing synchronization and reconciliation belong to Operations.

## Consistency Guarantees

Every request reads licensing data without a route cache. Availability and registry reads run independently rather than in a declared common transaction. The route checks reach itself and does not apply the path-workspace availability gate. The menu uses a separate Security snapshot, so the two presentations can disagree during cache and refresh delays.
