---
title: "Get Service Detail"
method: GET
path: "/vrm/services/{service_id}"
tags: ["vrm"]
---

# Get Service Detail

`GET /vrm/services/{service_id}`

Detail for one service the current user can access, for the My Services slide-over.

Authorized exactly like the landing list (the user must be the service's
internal POC or assigned to its vendor, on an active vendor). Surfaces the
vendor's active key dates, contacts, and adverse-media summary, plus the
service's own criticality/inherent-risk custom-field values (mirroring the
landing list's badges) — while never leaking the internal-only bits
(PCI/SOC flags, raw overview sections, vendor approval status).

## Path parameters

- `service_id` string, uuid, required

## Response `200`

Successful Response

- ServiceDetailResponse — Everything the My Services detail slide-over shows for one service. Assembled (and sanitized) server-side from a new VRM-scoped endpoint, since a low-access VRM user can't reach the TPRM service/vendor/file endpoints.
  - `service_id` string, uuid, required
  - `service_name` string, required
  - `description` string, nullable
  - `vendor_id` string, uuid, required
  - `vendor_name` string, nullable
  - `vendor_website` string, nullable
  - `key_dates` VrmKeyDate[]
    - `key_date_id` string, uuid, required
    - `key_date_type` 'termination_notice' | 'renewal' | 'review' | 'other', required
    - `label` string, required
    - `next_occurrence_date` string, date, nullable
    - `contract` VrmKeyDateContract — The contract a key date is linked to, for display only.
      - `contract_id` string, uuid, required
      - `title` string, required
  - `vendor_profile` VendorProfile, required — Public, requester-friendly vendor facts. Per a deliberate product decision, this now surfaces the same adverse-media summary the TPRM overview shows. It still excludes the internal-only bits: compliance flags (PCI/SOC), vendor approval status, and the raw generated-overview sections (negative-news detail, compliance considerations) never reach a VRM user. Criticality/inherent-risk are the service's own custom fields, not part of this vendor profile — see ``ServiceDetailResponse.custom_field_values``.
    - `overview` string, nullable
    - `website` string, nullable
    - `founded_year` integer, nullable
    - `business_activity` string, nullable
    - `adverse_media` AdverseMediaSummary — Accumulated adverse-media findings for a vendor, merged across monitor runs.
      - `hit_count` integer, required
      - `latest_hits` AdverseMediaHeadline[]
        - `title` string, required
        - `summary` string, required
        - `when` string, nullable
        - `source_url` string, nullable
      - `last_checked_at` string, date-time, nullable
  - `contacts` ServiceContact[], required
    - `user_id` string, uuid, required
    - `first_name` string, nullable
    - `last_name` string, nullable
    - `email` string, required
  - `custom_field_values` union[]
    - union
      - CustomFieldDropdownValue
        - `custom_field_id` string, uuid, nullable
        - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
        - `name` string, nullable
        - `type` 'DROPDOWN'
        - `option_id` string, uuid, nullable
        - `label` string, nullable
        - `hex_color` string, nullable
        - `order_index` integer, nullable
      - CustomFieldFreeTextValue
        - `custom_field_id` string, uuid, nullable
        - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
        - `name` string, nullable
        - `type` 'FREE_TEXT'
        - `text_value` string, nullable
      - CustomFieldNumberValue
        - `custom_field_id` string, uuid, nullable
        - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
        - `name` string, nullable
        - `type` 'NUMBER'
        - `number_value` integer, nullable
      - CustomFieldDateValue
        - `custom_field_id` string, uuid, nullable
        - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
        - `name` string, nullable
        - `type` 'DATE'
        - `date_value` string, date, nullable
      - CustomFieldBooleanValue
        - `custom_field_id` string, uuid, nullable
        - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
        - `name` string, nullable
        - `type` 'BOOLEAN'
        - `boolean_value` boolean, nullable
      - CustomFieldMultiselectValue
        - `custom_field_id` string, uuid, nullable
        - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
        - `name` string, nullable
        - `type` 'MULTISELECT'
        - `selected_options` CustomFieldMultiselectOptionValue[]
          - `option_id` string, uuid, nullable
          - `label` string, nullable
          - `hex_color` string, nullable
          - `order_index` integer, nullable
      - CustomFieldUserValue
        - `custom_field_id` string, uuid, nullable
        - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
        - `name` string, nullable
        - `type` 'USER'
        - `user_id` string, uuid, nullable
        - `user_first_name` string, nullable
        - `user_last_name` string, nullable
        - `email_address` string, nullable
      - CustomFieldMultiUserValue
        - `custom_field_id` string, uuid, nullable
        - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
        - `name` string, nullable
        - `type` 'MULTI_USER'
        - `selected_users` CustomFieldUserRef[]
          - `user_id` string, uuid, nullable
          - `user_first_name` string, nullable
          - `user_last_name` string, nullable
          - `email_address` string, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/kobaltlabs/apis/fastapi.md) · [All operations](https://skmtc.dev/kobaltlabs/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/kobaltlabs/fastapi/revisions/425d5b8a3c17/schema)
