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

# Change several capex proposals at once, each exactly as save_capex_plan_line changes one.

> Change several capex proposals at once, each exactly as save_capex_plan_line changes one.

p_lines is a list of proposals, each an object holding the proposal's id and any of these fields, named as its columns are: name, coordinator_user_id, quantity, priority, capex_nature_id, category_master_id (the Category), budget_category_id (the Sub-Category), fresh_sanction_amount and approved_carryover_amount. A field left out keeps what the proposal holds, and every other field of the proposal — its justification, item detail, unit, location, cost centre and Proposal ID among them — is kept as it is. Any other field is refused with INVALID_LINE. A fresh-money proposal is asked the fresh sanction amount and a carry forward the approved carryover, and the other one is refused; the proposal's value is then the amount its type asks. At most 1,000 proposals.

Each proposal is saved or refused on its own, with every check and permission save_capex_plan_line applies: changing one needs finance.capex_scheme.edit, or finance.capex_scheme.create for a proposal sent back to you for revision, and the proposal must still be open to change. What your organisation sets on the proposal form in the Form Studio applies too: a field it insists on is refused emptied with REQUIRED_FIELD_CLEARED, and a field whose writing it keeps to some roles is refused with FIELD_NOT_PERMITTED to anybody without one of them who changes it. A refused proposal is left as it was and the others are still saved.

Returns one row per proposal sent, in the order sent: line_id, scheme_code (its Proposal ID), ok, changed (the columns saving it changed, empty where it already held what was sent), and for a refused proposal the refusal's error_code, message, hint and detail. A proposal that cannot be found, or is on a plan you cannot reach, is refused with NO_SUCH_LINE, and one sent twice is saved once, the second refused with DUPLICATE_LINE.



## OpenAPI

````yaml /api-reference/openapi.json post /rpc/bulk_save_capex_plan_lines
openapi: 3.0.0
info:
  description: ''
  title: >-
    The only schema PostgREST exposes. Reads are security_invoker views; writes
    are SECURITY DEFINER functions. Rebuilt wholesale on every deploy — it holds
    no data.
  version: 12.2.3
servers:
  - url: https://app.assetinfinity.ai/api
security: []
tags:
  - name: Signing in
  - name: Profile
  - name: My work
  - name: Sites and locations
  - name: Assets
  - name: Asset lifecycle
  - name: Asset components
  - name: Kits
  - name: Work lifecycle
  - name: Work order execution
  - name: Work sequencing
  - name: Maintenance
  - name: Inspections
  - name: Checklists
  - name: Verification
  - name: Self verification
  - name: Inventory
  - name: Inventory detail
  - name: Parts demand
  - name: Procurement
  - name: Catalogue
  - name: Vendors and contracts
  - name: Contracts
  - name: Amendments
  - name: Vendor spend forecast
  - name: Workforce
  - name: Workforce detail
  - name: Capacity
  - name: Dispatch
  - name: Shutdown
  - name: Permits
  - name: Tools
  - name: Tools on jobs
  - name: Bookings
  - name: Booking hand over
  - name: Booking bills
  - name: Calibration history
  - name: Reliability
  - name: Sensors and meters
  - name: Readers
  - name: Trackers
  - name: Real-time location
  - name: Feeds
  - name: Energy
  - name: IT assets
  - name: IT asset software
  - name: IT asset topology
  - name: Warranty lookups
  - name: Map
  - name: Floor plans
  - name: Labels
  - name: Lost and found
  - name: Visitors
  - name: Root cause analysis
  - name: Costing
  - name: Finance
  - name: E-way bills
  - name: E-way bill filing
  - name: Budgets
  - name: Capex plans
  - name: Capex consolidation
  - name: Capex capitalization
  - name: Capex approval notes
  - name: Capex change logs
  - name: FF&E plans
  - name: Documents
  - name: Document control
  - name: Document folders
  - name: Document tree
  - name: Knowledge
  - name: Reports
  - name: Dashboards
  - name: Extracts
  - name: Data exports
  - name: Audit center
  - name: Audit feed
  - name: User activity
  - name: Activity
  - name: Conversations
  - name: Notifications
  - name: Date reminders
  - name: Channels
  - name: Search
  - name: Copilot
  - name: Import
  - name: Bulk jobs
  - name: File exchange
  - name: Filing exceptions
  - name: Files
  - name: Sync
  - name: Support
  - name: API keys
  - name: Webhooks
  - name: MCP connections
  - name: MCP sign-in
  - name: SCIM provisioning
  - name: Directory sync
  - name: Security streams
  - name: Clarity
  - name: Single sign-on
  - name: Two-factor sign-in
  - name: Admin
  - name: Access
  - name: Lookups
  - name: Read models
  - name: Reference
  - name: Reference columns
  - name: Reference entry
  - name: List views
  - name: Mapping
  - name: Numbering
  - name: Branding
  - name: Custom fields
  - name: Form studio
  - name: Workflows
  - name: Workflow studio
  - name: Rules
  - name: Statuses and transitions
  - name: Currencies and locales
  - name: Today
  - name: Work configuration
  - name: Asset configuration
  - name: Inventory configuration
  - name: Tool configuration
  - name: Workforce configuration
  - name: Vendor and contract configuration
  - name: Document configuration
  - name: Inspection configuration
  - name: Sites, locations and the organisation
  - name: Setup
  - name: Features
  - name: Billing
  - name: Licence
  - name: Welcome
  - name: Tray
  - name: Tenant switch
  - name: Release
  - name: Upgrade
  - name: Telegram
  - name: Whatsapp
  - name: Inbound mail
  - name: Platform
externalDocs:
  description: PostgREST Documentation
  url: https://postgrest.org/en/v12/references/api.html
paths:
  /rpc/bulk_save_capex_plan_lines:
    post:
      tags:
        - Capex plans
      summary: >-
        Change several capex proposals at once, each exactly as
        save_capex_plan_line changes one.
      description: >-
        Change several capex proposals at once, each exactly as
        save_capex_plan_line changes one.


        p_lines is a list of proposals, each an object holding the proposal's id
        and any of these fields, named as its columns are: name,
        coordinator_user_id, quantity, priority, capex_nature_id,
        category_master_id (the Category), budget_category_id (the
        Sub-Category), fresh_sanction_amount and approved_carryover_amount. A
        field left out keeps what the proposal holds, and every other field of
        the proposal — its justification, item detail, unit, location, cost
        centre and Proposal ID among them — is kept as it is. Any other field is
        refused with INVALID_LINE. A fresh-money proposal is asked the fresh
        sanction amount and a carry forward the approved carryover, and the
        other one is refused; the proposal's value is then the amount its type
        asks. At most 1,000 proposals.


        Each proposal is saved or refused on its own, with every check and
        permission save_capex_plan_line applies: changing one needs
        finance.capex_scheme.edit, or finance.capex_scheme.create for a proposal
        sent back to you for revision, and the proposal must still be open to
        change. What your organisation sets on the proposal form in the Form
        Studio applies too: a field it insists on is refused emptied with
        REQUIRED_FIELD_CLEARED, and a field whose writing it keeps to some roles
        is refused with FIELD_NOT_PERMITTED to anybody without one of them who
        changes it. A refused proposal is left as it was and the others are
        still saved.


        Returns one row per proposal sent, in the order sent: line_id,
        scheme_code (its Proposal ID), ok, changed (the columns saving it
        changed, empty where it already held what was sent), and for a refused
        proposal the refusal's error_code, message, hint and detail. A proposal
        that cannot be found, or is on a plan you cannot reach, is refused with
        NO_SUCH_LINE, and one sent twice is saved once, the second refused with
        DUPLICATE_LINE.
      parameters:
        - $ref: '#/components/parameters/preferParams'
      requestBody:
        content:
          application/json:
            schema:
              description: >-
                Change several capex proposals at once, each exactly as
                save_capex_plan_line changes one.


                p_lines is a list of proposals, each an object holding the
                proposal's id and any of these fields, named as its columns are:
                name, coordinator_user_id, quantity, priority, capex_nature_id,
                category_master_id (the Category), budget_category_id (the
                Sub-Category), fresh_sanction_amount and
                approved_carryover_amount. A field left out keeps what the
                proposal holds, and every other field of the proposal — its
                justification, item detail, unit, location, cost centre and
                Proposal ID among them — is kept as it is. Any other field is
                refused with INVALID_LINE. A fresh-money proposal is asked the
                fresh sanction amount and a carry forward the approved
                carryover, and the other one is refused; the proposal's value is
                then the amount its type asks. At most 1,000 proposals.


                Each proposal is saved or refused on its own, with every check
                and permission save_capex_plan_line applies: changing one needs
                finance.capex_scheme.edit, or finance.capex_scheme.create for a
                proposal sent back to you for revision, and the proposal must
                still be open to change. What your organisation sets on the
                proposal form in the Form Studio applies too: a field it insists
                on is refused emptied with REQUIRED_FIELD_CLEARED, and a field
                whose writing it keeps to some roles is refused with
                FIELD_NOT_PERMITTED to anybody without one of them who changes
                it. A refused proposal is left as it was and the others are
                still saved.


                Returns one row per proposal sent, in the order sent: line_id,
                scheme_code (its Proposal ID), ok, changed (the columns saving
                it changed, empty where it already held what was sent), and for
                a refused proposal the refusal's error_code, message, hint and
                detail. A proposal that cannot be found, or is on a plan you
                cannot reach, is refused with NO_SUCH_LINE, and one sent twice
                is saved once, the second refused with DUPLICATE_LINE.
              properties:
                p_lines:
                  format: jsonb
              required:
                - p_lines
              type: object
          application/vnd.pgrst.object+json:
            schema:
              description: >-
                Change several capex proposals at once, each exactly as
                save_capex_plan_line changes one.


                p_lines is a list of proposals, each an object holding the
                proposal's id and any of these fields, named as its columns are:
                name, coordinator_user_id, quantity, priority, capex_nature_id,
                category_master_id (the Category), budget_category_id (the
                Sub-Category), fresh_sanction_amount and
                approved_carryover_amount. A field left out keeps what the
                proposal holds, and every other field of the proposal — its
                justification, item detail, unit, location, cost centre and
                Proposal ID among them — is kept as it is. Any other field is
                refused with INVALID_LINE. A fresh-money proposal is asked the
                fresh sanction amount and a carry forward the approved
                carryover, and the other one is refused; the proposal's value is
                then the amount its type asks. At most 1,000 proposals.


                Each proposal is saved or refused on its own, with every check
                and permission save_capex_plan_line applies: changing one needs
                finance.capex_scheme.edit, or finance.capex_scheme.create for a
                proposal sent back to you for revision, and the proposal must
                still be open to change. What your organisation sets on the
                proposal form in the Form Studio applies too: a field it insists
                on is refused emptied with REQUIRED_FIELD_CLEARED, and a field
                whose writing it keeps to some roles is refused with
                FIELD_NOT_PERMITTED to anybody without one of them who changes
                it. A refused proposal is left as it was and the others are
                still saved.


                Returns one row per proposal sent, in the order sent: line_id,
                scheme_code (its Proposal ID), ok, changed (the columns saving
                it changed, empty where it already held what was sent), and for
                a refused proposal the refusal's error_code, message, hint and
                detail. A proposal that cannot be found, or is on a plan you
                cannot reach, is refused with NO_SUCH_LINE, and one sent twice
                is saved once, the second refused with DUPLICATE_LINE.
              properties:
                p_lines:
                  format: jsonb
              required:
                - p_lines
              type: object
          application/vnd.pgrst.object+json;nulls=stripped:
            schema:
              description: >-
                Change several capex proposals at once, each exactly as
                save_capex_plan_line changes one.


                p_lines is a list of proposals, each an object holding the
                proposal's id and any of these fields, named as its columns are:
                name, coordinator_user_id, quantity, priority, capex_nature_id,
                category_master_id (the Category), budget_category_id (the
                Sub-Category), fresh_sanction_amount and
                approved_carryover_amount. A field left out keeps what the
                proposal holds, and every other field of the proposal — its
                justification, item detail, unit, location, cost centre and
                Proposal ID among them — is kept as it is. Any other field is
                refused with INVALID_LINE. A fresh-money proposal is asked the
                fresh sanction amount and a carry forward the approved
                carryover, and the other one is refused; the proposal's value is
                then the amount its type asks. At most 1,000 proposals.


                Each proposal is saved or refused on its own, with every check
                and permission save_capex_plan_line applies: changing one needs
                finance.capex_scheme.edit, or finance.capex_scheme.create for a
                proposal sent back to you for revision, and the proposal must
                still be open to change. What your organisation sets on the
                proposal form in the Form Studio applies too: a field it insists
                on is refused emptied with REQUIRED_FIELD_CLEARED, and a field
                whose writing it keeps to some roles is refused with
                FIELD_NOT_PERMITTED to anybody without one of them who changes
                it. A refused proposal is left as it was and the others are
                still saved.


                Returns one row per proposal sent, in the order sent: line_id,
                scheme_code (its Proposal ID), ok, changed (the columns saving
                it changed, empty where it already held what was sent), and for
                a refused proposal the refusal's error_code, message, hint and
                detail. A proposal that cannot be found, or is on a plan you
                cannot reach, is refused with NO_SUCH_LINE, and one sent twice
                is saved once, the second refused with DUPLICATE_LINE.
              properties:
                p_lines:
                  format: jsonb
              required:
                - p_lines
              type: object
          text/csv:
            schema:
              description: >-
                Change several capex proposals at once, each exactly as
                save_capex_plan_line changes one.


                p_lines is a list of proposals, each an object holding the
                proposal's id and any of these fields, named as its columns are:
                name, coordinator_user_id, quantity, priority, capex_nature_id,
                category_master_id (the Category), budget_category_id (the
                Sub-Category), fresh_sanction_amount and
                approved_carryover_amount. A field left out keeps what the
                proposal holds, and every other field of the proposal — its
                justification, item detail, unit, location, cost centre and
                Proposal ID among them — is kept as it is. Any other field is
                refused with INVALID_LINE. A fresh-money proposal is asked the
                fresh sanction amount and a carry forward the approved
                carryover, and the other one is refused; the proposal's value is
                then the amount its type asks. At most 1,000 proposals.


                Each proposal is saved or refused on its own, with every check
                and permission save_capex_plan_line applies: changing one needs
                finance.capex_scheme.edit, or finance.capex_scheme.create for a
                proposal sent back to you for revision, and the proposal must
                still be open to change. What your organisation sets on the
                proposal form in the Form Studio applies too: a field it insists
                on is refused emptied with REQUIRED_FIELD_CLEARED, and a field
                whose writing it keeps to some roles is refused with
                FIELD_NOT_PERMITTED to anybody without one of them who changes
                it. A refused proposal is left as it was and the others are
                still saved.


                Returns one row per proposal sent, in the order sent: line_id,
                scheme_code (its Proposal ID), ok, changed (the columns saving
                it changed, empty where it already held what was sent), and for
                a refused proposal the refusal's error_code, message, hint and
                detail. A proposal that cannot be found, or is on a plan you
                cannot reach, is refused with NO_SUCH_LINE, and one sent twice
                is saved once, the second refused with DUPLICATE_LINE.
              properties:
                p_lines:
                  format: jsonb
              required:
                - p_lines
              type: object
        required: true
      responses:
        '200':
          description: OK
components:
  parameters:
    preferParams:
      description: Preference
      in: header
      name: Prefer
      required: false
      schema:
        enum:
          - params=single-object
        type: string

````

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