---
title: "Update Vendor Service"
method: PUT
path: "/vendor-services/{service_id}"
tags: ["vendor_services"]
---

# Update Vendor Service

`PUT /vendor-services/{service_id}`

## Path parameters

- `service_id` string, uuid, required

## Request body

- VendorServiceUpdateRequest
  - `name` string, nullable
  - `description` string, nullable
  - `internal_poc` string, uuid, nullable
  - `start_date` string, date, nullable
  - `renewal_date` string, date, nullable
  - `review_date` string, date, nullable
  - `termination_date` string, date, nullable
  - `custom_field_values` union[], nullable
    - 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

## Response `200`

Successful Response

- VendorServiceResponse
  - `service_id` string, uuid, required
  - `company_id` string, uuid, required
  - `vendor_company_id` string, uuid, required
  - `name` string, required
  - `description` string, nullable
  - `internal_poc` string, uuid, nullable
  - `internal_poc_name` string, nullable
  - `start_date` string, date, nullable
  - `renewal_date` string, date, nullable
  - `review_date` string, date, nullable
  - `review_key_date_id` string, uuid, nullable
  - `termination_date` string, date, nullable
  - `termination_key_date_id` string, uuid, nullable
  - `status` 'active' | 'archived'
  - `created` string, date-time, nullable
  - `modified` string, date-time, nullable
  - `runs` object[]
  - `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
  - `linked_contract` LinkedContractSummary
    - `contract_id` string, uuid, required
    - `title` string, required
    - `status` 'draft' | 'active' | 'expired' | 'terminated', required — ``DRAFT`` and ``TERMINATED`` are human judgments; the derivation in ``recompute_contract_status`` overwrites neither.

## 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/3ff4c0bd276b/schema)
