---
title: "Update an existing model point field."
method: PATCH
path: "/api/v1/ModelPointFields/{modelPointFieldId}"
tags: ["ModelPointFields"]
---

# Update an existing model point field.

`PATCH /api/v1/ModelPointFields/{modelPointFieldId}`

## Request

- Base URL: `https://api.slopesoftware.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.slopesoftware.com/api/v1/ModelPointFields/{modelPointFieldId}`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/slopesoftware/apis/akur8-life-api/docs/api/v1/ModelPointFields/:modelPointFieldId/patch.ts> (a function with typed inputs; its response is checked against the schema)

This endpoint will:
- Validate the user has permission to modify the model
- Ensure the model is not in production
- Support partial updates (only send fields to be updated)
- Validate field name and alias uniqueness
- Enforce system field restrictions (cannot update DataType, IsRequired, or IsScaledOnPurchaseOrSale for system fields)
- Validate data type rules (e.g., only Decimal fields can scale)
- Prevent changing DataType to non-Decimal when IsScaledOnPurchaseOrSale is true
- Trigger validation on model point files when critical properties change

For system model point fields, the Data Type, IsRequired flag, and Scales on Purchase or Sale flag cannot be updated.
Field names and aliases must remain unique within the product's model point file definition.

## Path parameters

- `modelPointFieldId` integer, required: The ID of the model point field to update

## Request body

- UpdateModelPointFieldRequestV1: Request model for updating an existing model point field. All fields are optional to support partial updates.
  - `name` string, nullable: The updated name of the model point field. Must be unique within the product.
  - `description` string, nullable: The updated description of the model point field. Omit to leave unchanged; set to an empty string to clear it.
  - `dataType` 'Integer' | 'Decimal' | 'String' | 'Date' | 'Invalid' | 'Boolean' | 'DataTable' | 'DecrementTable' | 'Dynamic' | 'ScenarioTable' | 'YieldCurve' | 'List'
  - `isRequired` boolean, nullable: Whether the field is required in model point files. Cannot be changed for system fields.
  - `isScaledOnPurchaseOrSale` boolean, nullable: Whether the field scales on purchase or sale. Only applicable to Decimal fields. Cannot be changed for system fields.
  - `defaultValueSource` 'None' | 'DefinedValue'
  - `defaultValue` string, nullable: The default value when DefaultMethodType is DefinedValue.
  - `aliases` string[], nullable: Alternative names for this field. Must be unique within the product.

## Response `200`

OK

- UpdateModelPointFieldResponseV1: Response model for model point field update.
  - `id` integer: The ID of the updated model point field.
  - `name` string, nullable: The name of the updated model point field.
  - `description` string, nullable: The description of the updated model point field.
  - `dataType` 'Integer' | 'Decimal' | 'String' | 'Date' | 'Invalid' | 'Boolean' | 'DataTable' | 'DecrementTable' | 'Dynamic' | 'ScenarioTable' | 'YieldCurve' | 'List'
  - `isRequired` boolean: Whether the field is required in model point files.
  - `isScaledOnPurchaseOrSale` boolean: Whether the field scales on purchase or sale.
  - `defaultValueSource` 'None' | 'DefinedValue'
  - `defaultValue` string, nullable: The default value if using defined value method.
  - `aliases` string[], nullable: Alternative names for this field.

## Other responses

- `201`: Created
- `400`: Bad Request
- `401`: Unauthorized
- `403`: Not Allowed To Access
- `404`: Not Found
- `429`: Too Many Requests

---

[API](https://skmtc.dev/slopesoftware/apis/akur8-life-api.md) - [All operations](https://skmtc.dev/slopesoftware/apis/akur8-life-api/llms.txt) - [OpenAPI document](https://skmtc.dev/slopesoftware/apis/akur8-life-api/revisions/9771b2c79880?raw)
