> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mangrovesystems.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update a feedstock

> Updates a feedstock within a project. `PUT` behaves the same. Feedstock tracking is enabled per account. These endpoints work either way, but the app filters events and batches by feedstock only on accounts that have it. Requires the `read:project` and `write:feedstock` token scopes.



## OpenAPI

````yaml PATCH /projects/{project_id}/feedstocks/{feedstock_id}
openapi: 3.1.0
info:
  title: Mangrove - API
  version: 1.1.0
  description: >
    ## Filtering and sorting


    List endpoints that accept `filter` take one query parameter per condition,
    written `filter[field][comparator]=value`, for example
    `filter[name][contains]=North`. The comparators are `eq`, `neq`, `gt`,
    `geq`, `lt`, `leq` and `contains`, and `filter[field]=value` is short for
    `eq`. Conditions combine with AND. `contains` matches part of the value, is
    case-sensitive, and applies only to text fields. An unknown field or
    comparator, a value that doesn't fit the field's type, or a list or object
    as the value returns 400 with a message naming the problem. Each list
    operation names its filterable fields; some take only `eq`, and say so.


    `sort` takes a comma-separated list of fields, for example
    `sort=-created_at,name`. Each field sorts ascending, or descending with a
    `-` prefix. Unknown sort fields are ignored. Sorting by `id` orders by the
    record's internal ID, not its friendly ID. Each list operation names its
    sortable fields.
servers:
  - url: https://app.gomangrove.com/api/v1
security:
  - sec0: []
paths:
  /projects/{project_id}/feedstocks/{feedstock_id}:
    patch:
      summary: Update a feedstock
      description: >-
        Updates a feedstock within a project. `PUT` behaves the same. Feedstock
        tracking is enabled per account. These endpoints work either way, but
        the app filters events and batches by feedstock only on accounts that
        have it. Requires the `read:project` and `write:feedstock` token scopes.
      operationId: update-feedstock
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/FeedstockId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - feedstock
              properties:
                feedstock:
                  type: object
                  properties:
                    name:
                      type: string
                      description: >-
                        Name of the feedstock (must be unique within the
                        project)
                    feedstock_type_id:
                      type:
                        - string
                        - 'null'
                      description: >-
                        The feedstock type's friendly ID (e.g.
                        `fdt_aBcD1234eFgH5678`). An unknown ID returns 404; null
                        or an empty string clears the type.
            examples:
              Request Example:
                value:
                  feedstock:
                    name: Sawdust
      responses:
        '200':
          description: The updated feedstock.
          content:
            application/json:
              example:
                id: fds_aBcD1234eFgH5678
                name: Sawdust
                feedstock_type_id: fdt_aBcD1234eFgH5678
                project_id: prj_aBcD1234eFgH5678
                created_at: '2025-01-15T10:00:00.000Z'
                updated_at: '2025-01-15T12:00:00.000Z'
              schema:
                $ref: '#/components/schemas/Feedstock'
        '400':
          $ref: '#/components/responses/MissingParameter'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationFailed'
components:
  parameters:
    ProjectId:
      name: project_id
      in: path
      required: true
      description: The project's friendly ID (e.g. `prj_aBcD1234eFgH5678`).
      schema:
        type: string
    FeedstockId:
      name: feedstock_id
      in: path
      required: true
      description: The feedstock's friendly ID (e.g. `fds_aBcD1234eFgH5678`).
      schema:
        type: string
  schemas:
    Feedstock:
      type: object
      properties:
        id:
          type: string
          description: The feedstock's friendly ID (e.g. `fds_aBcD1234eFgH5678`).
          example: fds_aBcD1234eFgH5678
        name:
          type: string
        feedstock_type_id:
          type:
            - string
            - 'null'
          description: The feedstock type's friendly ID (e.g. `fdt_aBcD1234eFgH5678`).
          example: fdt_aBcD1234eFgH5678
        project_id:
          type: string
          description: The project's friendly ID (e.g. `prj_aBcD1234eFgH5678`).
          example: prj_aBcD1234eFgH5678
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    ErrorResponse:
      type: object
      required:
        - errors
      properties:
        errors:
          type: array
          items:
            type: object
            required:
              - message
            properties:
              message:
                type: string
                description: Human-readable error message
              field:
                type: string
                description: Attribute the error applies to (validation errors only)
              code:
                type: string
                description: Machine-readable error code (validation errors only)
              blocking:
                type: array
                description: >-
                  Bounded preview of the records blocking a destroy
                  (blocked-destroy errors only)
                items:
                  $ref: '#/components/schemas/DeletionBlockingRecord'
              blocking_count:
                type: integer
                description: >-
                  Total count of records blocking a destroy (blocked-destroy
                  errors only)
              config_key:
                type: string
                description: >-
                  The data feed source config setting to fix, when the error is
                  on `config` (data feed source validation errors only)
              count:
                type: number
                description: >-
                  The limit or comparison value the failed validation checked
                  against, e.g. a maximum length or a numeric bound (validation
                  errors only, when the validation has one)
              value:
                description: >-
                  The rejected value, e.g. on an inclusion or uniqueness failure
                  (validation errors only, when the validation reports one)
    DeletionBlockingRecord:
      type: object
      required:
        - type
      properties:
        type:
          type: string
        friendly_id:
          type: string
        name:
          type:
            - string
            - 'null'
          description: >-
            Display label, and the only identifier for records that have no
            friendly_id
  responses:
    MissingParameter:
      description: >-
        A required parameter or body object is missing or empty. The message
        names it.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            errors:
              - message: 'param is missing or the value is empty or invalid: project'
    Unauthorized:
      description: >-
        The API token is missing, invalid or expired. The body is empty, except
        for an expired token, which returns the error below.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            errors:
              - message: API token has expired
    Forbidden:
      description: >-
        The token lacks the scope the operation's description names, or a
        condition the description states applies, such as a feature that isn't
        enabled for your account.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            errors:
              - message: You are not authorized to perform this action
    NotFound:
      description: >-
        A resource named in the path doesn't exist in your account, or the token
        can't see it.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            errors:
              - message: Record not found
    ValidationFailed:
      description: >-
        The record failed validation. Each error carries a message, and the
        `field` and machine-readable `code` it applies to.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            errors:
              - message: Name can't be blank
                field: name
                code: blank
  securitySchemes:
    sec0:
      type: apiKey
      in: header
      name: Authorization
      x-bearer-format: ''

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.