---
title: "Update projection properties."
method: PATCH
path: "/api/v1/Projections/{projectionId}"
tags: ["Projections"]
---

# Update projection properties.

`PATCH /api/v1/Projections/{projectionId}`

## 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/Projections/{projectionId}`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/slopesoftware/apis/akur8-life-api/docs/api/v1/Projections/:projectionId/patch.ts> (a function with typed inputs; its response is checked against the schema)

Validating model point files is limited to 100K rows with 20 columns.<br/><b>For larger model point files set ValidateModelPointFiles to false.</b>

## Path parameters

- `projectionId` integer, required: Projection ID

## Request body

- UpdateProjectionRequestV1
  - `name` string, nullable: Projection Name - Can be updated for projections in any status
  - `scenarioTableId` integer, nullable: Scenario Table ID
  - `scenarioSubset` string, nullable: Scenario Subset
  - `startDate` string, date-time, nullable: Start Date
  - `periodInMonths` integer, nullable: Period in Months
  - `outputAllResults` boolean, nullable: Output All Results
  - `disableModelPointOutput` boolean, nullable: Disable Model Point Output
  - `forceStaticProcessing` boolean, nullable: Force Static Processing
  - `numberOfCores` integer, nullable: Number of Cores
  - `validateModelPointFiles` boolean, nullable: Validate Model Point Files
  - `dataTables` UpdateProjectionDataTableDto[], nullable: Projection Data Tables
    - `tableStructureId` integer, nullable: Table Structure ID
    - `tableStructureName` string, nullable: Table Structure Name
    - `dataTableId` integer, nullable: Data Table ID
    - `dataTableName` string, nullable: Data Table Name
    - `dataTableVersion` integer, nullable: Data Table Version
  - `portfolios` UpdateProjectionPortfolioDto[], nullable: Projection Portfolios
    - `id` integer, nullable: Portfolio ID
    - `name` string, nullable: Portfolio Name
    - `products` UpdateProjectionProductDto[], nullable: Portfolio Products
      - `id` integer, nullable: Product ID
      - `name` string, nullable: Product Name
      - `modelPointFile` FileReferenceDto
        - `fileId` integer, nullable
        - `filePath` string, nullable
        - `fileVersion` integer, nullable
        - `delimiter` string, nullable
        - `excelSheetName` string, nullable
      - `modelPointFilters` object, nullable: Model Point Filters
  - `virtualFolders` string[], nullable: Virtual Folders - Array of folder paths. Projections can exist in multiple folders. If empty array is passed, all folders are cleared. If not passed, folders are not updated. Can be updated for projections in any status.
  - `tags` string[], nullable: Tags - Array of tag names. If empty array is passed, all tags are cleared. If not passed, tags are not updated. Can be updated for projections in any status.
  - `isLocked` boolean, nullable: Lock or unlock a projection. Locking requires LockProjections permission or a workspace token. Unlocking requires UnlockProjections permission or a workspace token. Only projections in a completed/failed status can be locked.

## Response `200`

OK

- GetProjectionResponseV1
  - `id` integer
  - `name` string, nullable
  - `status` 'NotStarted' | 'Running' | 'Completed' | 'Failed' | 'Queued' | 'Cancelled' | 'CompletedWithErrors' | 'ErrorLimitReached' | 'WaitingForInserts' | 'Queuing' | 'Deleting' | 'Preparing' | 'FailedToStart' | 'Validating' | 'ValidationFailed' | 'CompletedWithWarnings'
  - `isRunning` boolean
  - `startDate` string, date-time
  - `periodInMonths` integer
  - `runStartDateUtc` string, date-time, nullable
  - `runCompletedDateUtc` string, date-time, nullable
  - `outputAllResults` boolean
  - `disableModelPointOutput` boolean
  - `forceStaticProcessing` boolean
  - `isLocked` boolean
  - `archivalStatus` 'Unarchived' | 'Archived' | 'Unarchiving': A projection's archival status as the public API reports it.
  - `numberOfCores` integer
  - `scenarioTableId` integer, nullable
  - `model` GetProjectionModelV1
    - `id` integer
    - `name` string, nullable
  - `portfolios` GetProjectionPortfolioV1[], nullable
    - `id` integer
    - `name` string, nullable
    - `productOutputGroupings` integer[], nullable: The groupings selected on the portfolio itself. Products listed below carry their own effective set; products that only reach the portfolio through an investment strategy or a new business allocation are grouped by this selection alone.
    - `products` GetProjectionPortfolioProductV1[], nullable
      - `id` integer
      - `productId` integer, nullable
      - `name` string, nullable
      - `productType` 'Asset' | 'Liability'
      - `modelPointFile` FileReferenceDto
        - `fileId` integer, nullable
        - `filePath` string, nullable
        - `fileVersion` integer, nullable
        - `delimiter` string, nullable
        - `excelSheetName` string, nullable
      - `filters` GetProjectionProductModelPointFilterV1[], nullable
        - `field` string, nullable
        - `value` string, nullable
      - `productOutputGroupings` integer[], nullable
  - `virtualFolders` string[], nullable
  - `tags` string[], nullable
  - `dataTables` GetProjectionDataTableV1[], nullable
    - `tableStructureId` integer, nullable
    - `tableStructureName` string, nullable
    - `dataTableId` integer, nullable
    - `dataTableName` string, nullable
    - `dataTableVersionNumber` integer, nullable
    - `isRequired` boolean

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