---
title: "Get My Services"
method: GET
path: "/vrm/my-services"
tags: ["vrm"]
---

# Get My Services

`GET /vrm/my-services`

Service-centric VRM landing for the current user.

Services are the primary entity: each service the user is the internal POC
for, plus every service on a vendor they are assigned to, is joined to its
latest review. Anything needing the user's action is flagged so the client
can pin it to the top "need your attention" band.

## Response `200`

Successful Response

- MyServicesResponse
  - `rows` MyServiceRow[], required
    - `service_id` string, uuid, required
    - `service_name` string, required
    - `vendor_id` string, uuid, required
    - `vendor_name` string, nullable
    - `vendor_website` string, nullable
    - `vendor_status_label` string, nullable
    - `vendor_status_color` string, nullable
    - `review_id` string, uuid, nullable
    - `status` 'active' | 'completed' | 'cancelled'
    - `stage` 'inherent_risk_assessment' | 'form_distribution' | 'requirements_gathering' | 'evidence_collection' | 'review' | 'review_reporting' | 'completed' | 'document_sourcing' | 'document_review'
    - `next_actor` union, required
      - TprmTeamActor — The ball is with the internal TPRM team; nothing is pending on the user.
        - `kind` 'tprm_team'
      - YouCompleteIraActor — The IRA form is assigned to the current user — they can open and complete it.
        - `kind` 'you_complete_ira'
        - `form_url` string, required
        - `outstanding_since` string, date-time, required
        - `due_date` string, date-time, nullable
        - `overdue` boolean, required
      - IraAssigneeActor — The IRA form is assigned to someone else, who we're still waiting on.
        - `kind` 'ira_assignee'
        - `name` string, nullable
        - `email` string, required
        - `outstanding_since` string, date-time, required
        - `due_date` string, date-time, nullable
        - `overdue` boolean, required
      - VendorContactActor — A diligence request is out to the vendor's contacts; overdue past the threshold.
        - `kind` 'vendor_contact'
        - `recipients` PacketRecipient[], required
          - `name` string, nullable
          - `email` string, required
        - `sent_at` string, date-time, required
        - `due_date` string, date-time, required
        - `overdue` boolean, required
    - `requested_date` string, date-time, nullable
    - `needs_attention` boolean, 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
  - `attention_count` integer, required

---

[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)
