# Update a deliverable

Applies partial updates to an existing deliverable using JSON-Patch
replace and remove operations, for example to assign a data source or
advance its approval status. The title, description, owner, contributors,
approvers, due date, status, comments, and data source fields can be
updated; the remove operation is only supported for the dataSource path.

Endpoint: PATCH /v1/deliverables/{deliverableId}
Version: 1.0.0
Security: bearer, appkey

## Security:

  - `bearer` (unknown)
    apiKey in header Authorization

  - `appkey` (unknown)
    apiKey in header appkey

## Path parameters:

  - `deliverableId` (string, required)
    The ID of the deliverable to update.

## Query parameters:

  - `studyId` (string, required)
    The study which the deliverable belong to.

## Header parameters:

  - `slb-partition-id` (string, required)
    Data partition id.

## Request body:

  - `application/json` (unknown)
    The patches to apply to the deliverable. Only "replace" and "remove" operations are supported. The "remove" operation is only supported for the "dataSource" path.

## Request fields (application/json):

  - `op` (string, required)
    The operation to be performed.
    Enum: "replace", "add", "remove"

  - `path` (string, required)
    A JSON-Pointer.
    Example: description

  - `value` (any)
    The value to be used within the operations.
    Example: New description

  - `from` (string)
    A string containing a JSON Pointer value.

## Response 200:

  - `200` (unknown)
    Deliverable updated successfully.

## Response 200 fields (application/json):

  - `id` (string, required)
    Deliverable's unique identifier.
    Example: 01CKXHZPAEERP06F3CNKBAPE0F

  - `title` (string, required)
    The title of the deliverable.
    Example: Decline Curves

  - `description` (string)
    The description of this deliverable.
    Example: Decline curves for Robin field.

  - `status` (string, required)
    The status of the deliverable.
    Enum: "New", "Requested", "In Progress", "Pending Approval", "Approved"

  - `attachmentType` (string, required)
    The FDPlan data-type ID for this deliverable's attachment.
    Example: decline-curves

  - `attachmentTypeVersion` (integer)
    The FDPlan data-type version for this deliverable's attachment.
    Example: 1

  - `attachmentSpecAddress` (object)
    An address used to describe the location of a Spec within a WorkflowSpec. Used to enrich the spec model with additional attributes such as specifying the location of a data container or providing annotations.

  - `attachmentSpecAddress.type` (string, required)
    Whether the address refers to a data-type input, a data-type output or computation-spec.
    Enum: "Invalid", "Computation", "DataTypeInput", "DataTypeOutput", "Workflow"

  - `attachmentSpecAddress.computationIndex` (integer, required)
    The zero based index of the Computation Spec.
    Example: 0

  - `attachmentSpecAddress.dataTypeIndex` (integer, required)
    The zero based index of a data-type with respect to a computation-spec. Inputs and outputs are treated as separate ordered lists.
    Example: 1

  - `attachment` (string)
    The relative URI to the deliverable's attachment. May be empty indicating that the deliverable has no attachment. NOTE: This field is deprecated in favour of dataSource.

  - `associatedScenarioId` (string)
    The ID of the scenario associated with this deliverable.
    Example: 01CKXHZPAEERP06F3CNKBAPE0F

  - `contributors` (array)
    A list of the IDs of users marked as contributing to this deliverable.
    Example: ["user1@slb.com","user2@slb.com"]

  - `dataSource` (object)
    A versioned resource identifier.
    Example: {"id":"01CP3E6EJJ25J29YHZ0K4RDZH8","version":1}

  - `dataSource.id` (string, required)
    The resource ID.
    Example: 01CP3E6EJJ25J29YHZ0K4RDZH8

  - `dataSource.version` (integer, required)
    The version of resource.
    Example: 1

## Response 400:

  - `400` (unknown)
    Bad request.

## Response 400 fields (application/json):

  - `data` (object, required)

  - `data.code` (integer, required)
    The HTTP status code.
    Example: 500

  - `data.message` (string)
    The error message.
    Example: internal server error

## Response 401:

  - `401` (unknown)
    Unauthorized.

## Response 401 fields (application/json):

  - `data` (object, required)

  - `data.code` (integer, required)
    The HTTP status code.
    Example: 500

  - `data.message` (string)
    The error message.
    Example: internal server error

## Response 404:

  - `404` (unknown)
    The deliverable was not found.

## Response 404 fields (application/json):

  - `data` (object, required)

  - `data.code` (integer, required)
    The HTTP status code.
    Example: 500

  - `data.message` (string)
    The error message.
    Example: internal server error

## Response 451:

  - `451` (unknown)
    Unavailable for legal reasons.

## Response 451 fields (application/json):

  - `data` (object, required)

  - `data.code` (integer, required)
    The HTTP status code.
    Example: 500

  - `data.message` (string)
    The error message.
    Example: internal server error

## Response 503:

  - `503` (unknown)
    Unavailable

## Response default:

  - `default` (unknown)
    Unexpected error.

## Response default fields (application/json):

  - `data` (object, required)

  - `data.code` (integer, required)
    The HTTP status code.
    Example: 500

  - `data.message` (string)
    The error message.
    Example: internal server error

