---
title: "Put a proposal on hold"
method: PUT
path: "/proposals/{proposalId}/onhold"
tags: ["Proposals"]
---

# Put a proposal on hold

`PUT /proposals/{proposalId}/onhold`

## Request

- Base URL: `https://sb2api.servicechannel.com/v3`
- URL: `https://sb2api.servicechannel.com/v3/proposals/{proposalId}/onhold`
- Auth: OAuth 2
  - Authorization code: `https://sb2login.servicechannel.com/oauth/authorize`
  - Token URL: `https://sb2login.servicechannel.com/oauth/token`
- TypeScript: <https://skmtc.dev/servicechannel/apis/servicechannel-api-v-3/docs/proposals/:proposalId/onhold/put.ts> (a function with typed inputs; its response is checked against the schema)

Updates the status of the specified proposal to *On Hold*.
            <br />***Note:*** This method is only available to subscriber users.
            <br />**Example Request**
            
                PUT /proposals/{proposalId}/onhold
                { 
                  "Comment": "Putting it on hold to analyze the materials costs",
                  "ProviderEmail": "ifixxservices@gmail.com",
                  "UserEmail": "cajunsoulrestaurant@gmail.com",
                  "Actor": "Peter Cale",
                  "PinNote": true
                 }

## Path parameters

- `proposalId` integer, required

## Request body

- ServiceChannelServicesMessagingProposalsUpdateProposalStatusRequest: The request object to update a proposal status.
  - `Comment` string: Comment on the proposal status update. The comment is added to the work order note.
  - `ProviderEmail` string: Provider’s email address to which a notification about the proposal status change is sent. The default is the email address of the provider the proposal is assigned to.
  - `UserEmail` string: User’s email address to which a notification about the proposal status change is sent. The default is the email address of the current user.
  - `RejectReasonCodeId` integer: Numeric identifier of the reason for rejecting the proposal. Pass value to this parameter when sending the *PUT /proposals/{proposalId}/reject* request. To retrieve a list of rejection reason codes and their descriptions, use the *GET /proposals/RejectionReasons* method.
  - `ActionSource` 'Standard' | 'DecisionEngine': Defines whether users take a standard action (approve or reject) or an action recommended by Decision Engine. Possible values: `Standard`, `DecisionEngine`.
  - `ReasonString` string: Reason for approving the proposal. Pass value to this parameter when sending the *PUT /proposals/{proposalId}/approve* request. The entered reason is added to the work order note.
  - `Actor` string: User who is taking action on the proposal.
  - `AttachmentstoWO` boolean: Moves attachments from an approved proposal to the associated work order. Only possible upon final approval.
  - `PinNote` boolean: When set to `true`, the system adds the proposal `Comment` as a **pinned note** on the associated work order. When set to `false`, the proposal `Comment` is added as an **ordinary note** on the associated work order. ***Note:*** To pin a proposal comment, there must be an associated work order.

## Response `204`

The proposal status is set to *On Hold*, users are notified based on the passed parameters, and the values of the specified parameters are updated.<br/>The response is intentionally blank.

## Other responses

- `400`: The request is not accepted due to bad syntax, missing parameters, insufficient data, etc. <br/>Error codes: 401 — Invalid subscriber id 502 — Proposal not found 503 — The proposal status is already On Hold 503 — The user is MLP user 503 — Request is empty or null
- `401`: The request is not authorized. <br>Error codes: 504 — API call rejected by security permissions

---

[API](https://skmtc.dev/servicechannel/apis/servicechannel-api-v-3.md) - [All operations](https://skmtc.dev/servicechannel/apis/servicechannel-api-v-3/llms.txt) - [OpenAPI document](https://skmtc.dev/servicechannel/apis/servicechannel-api-v-3/revisions/d490d6596809?raw)
