> ## 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 proposals' rows on the consolidated capex plan from a spreadsheet, row by row, or say what stops each one.

> Change proposals' rows on the consolidated capex plan from a spreadsheet, row by row, or say what stops each one.

p_payload is {"lines": [...]}, a row of the file each, at most 2,000. Each names its row of the plan by scheme_code, the Request ID, among the rows you may see; it never adds a row, since a proposal comes onto the plan only when it is approved for the consolidation plan, and rows the file does not mention are left alone. A row may give item_description, justification and carryover_order_reference as words; quantity, fresh_sanction_amount, approved_carryover_amount, carryover_cashflow_cy, py1_carryover_outflow, py1_fresh_outflow, py2_outflow to py5_outflow and py1_month_01 to py1_month_12 as numbers; coordinator by email or name; nature by code or name; gst_rate by the code, name or percentage of a value of your organisation's GST Rate Master list; and asset_block by the code or name of a value of its Asset Block Master list. Nothing else is read. A key left out keeps what the row holds, and a key given empty clears it. A name the row already holds keeps the value it holds, even one no longer offered. A figure only the other investment type is asked is refused where it differs from what the row holds, and is otherwise ignored. An optional row key, the row's place in the file, is given back with its outcome.

Each row that would change something is saved exactly as save_capex_consolidated_line saves it, with every check, permission and Form Studio setting that applies there, and alone: a refused row is left as it was and the others are still saved. While a row is with its approvers only the approver it is waiting on may change it; otherwise it needs finance.capex_consolidation.edit. A row that would change nothing is counted in lines_unchanged and not saved, whoever may change it. Nothing is written unless p_dry_run is false; a dry run, the default, saves each row and takes it back, so its answer is the upload's.

Returns ok, dry_run, written (whether anything was), lines_updated, lines_unchanged, lines_refused and outcomes: for each row updated (or that would be, in a dry run) or refused, its row, scheme_code, outcome (UPDATED or REFUSED), the columns it changes, and for a refusal its error_code, message and hint.



## OpenAPI

````yaml /api-reference/openapi.json post /rpc/import_capex_consolidated_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: 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: 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/import_capex_consolidated_lines:
    post:
      tags:
        - Capex consolidation
      summary: >-
        Change proposals' rows on the consolidated capex plan from a
        spreadsheet, row by row, or say what stops each one.
      description: >-
        Change proposals' rows on the consolidated capex plan from a
        spreadsheet, row by row, or say what stops each one.


        p_payload is {"lines": [...]}, a row of the file each, at most 2,000.
        Each names its row of the plan by scheme_code, the Request ID, among the
        rows you may see; it never adds a row, since a proposal comes onto the
        plan only when it is approved for the consolidation plan, and rows the
        file does not mention are left alone. A row may give item_description,
        justification and carryover_order_reference as words; quantity,
        fresh_sanction_amount, approved_carryover_amount, carryover_cashflow_cy,
        py1_carryover_outflow, py1_fresh_outflow, py2_outflow to py5_outflow and
        py1_month_01 to py1_month_12 as numbers; coordinator by email or name;
        nature by code or name; gst_rate by the code, name or percentage of a
        value of your organisation's GST Rate Master list; and asset_block by
        the code or name of a value of its Asset Block Master list. Nothing else
        is read. A key left out keeps what the row holds, and a key given empty
        clears it. A name the row already holds keeps the value it holds, even
        one no longer offered. A figure only the other investment type is asked
        is refused where it differs from what the row holds, and is otherwise
        ignored. An optional row key, the row's place in the file, is given back
        with its outcome.


        Each row that would change something is saved exactly as
        save_capex_consolidated_line saves it, with every check, permission and
        Form Studio setting that applies there, and alone: a refused row is left
        as it was and the others are still saved. While a row is with its
        approvers only the approver it is waiting on may change it; otherwise it
        needs finance.capex_consolidation.edit. A row that would change nothing
        is counted in lines_unchanged and not saved, whoever may change it.
        Nothing is written unless p_dry_run is false; a dry run, the default,
        saves each row and takes it back, so its answer is the upload's.


        Returns ok, dry_run, written (whether anything was), lines_updated,
        lines_unchanged, lines_refused and outcomes: for each row updated (or
        that would be, in a dry run) or refused, its row, scheme_code, outcome
        (UPDATED or REFUSED), the columns it changes, and for a refusal its
        error_code, message and hint.
      parameters:
        - $ref: '#/components/parameters/preferParams'
      requestBody:
        content:
          application/json:
            schema:
              description: >-
                Change proposals' rows on the consolidated capex plan from a
                spreadsheet, row by row, or say what stops each one.


                p_payload is {"lines": [...]}, a row of the file each, at most
                2,000. Each names its row of the plan by scheme_code, the
                Request ID, among the rows you may see; it never adds a row,
                since a proposal comes onto the plan only when it is approved
                for the consolidation plan, and rows the file does not mention
                are left alone. A row may give item_description, justification
                and carryover_order_reference as words; quantity,
                fresh_sanction_amount, approved_carryover_amount,
                carryover_cashflow_cy, py1_carryover_outflow, py1_fresh_outflow,
                py2_outflow to py5_outflow and py1_month_01 to py1_month_12 as
                numbers; coordinator by email or name; nature by code or name;
                gst_rate by the code, name or percentage of a value of your
                organisation's GST Rate Master list; and asset_block by the code
                or name of a value of its Asset Block Master list. Nothing else
                is read. A key left out keeps what the row holds, and a key
                given empty clears it. A name the row already holds keeps the
                value it holds, even one no longer offered. A figure only the
                other investment type is asked is refused where it differs from
                what the row holds, and is otherwise ignored. An optional row
                key, the row's place in the file, is given back with its
                outcome.


                Each row that would change something is saved exactly as
                save_capex_consolidated_line saves it, with every check,
                permission and Form Studio setting that applies there, and
                alone: a refused row is left as it was and the others are still
                saved. While a row is with its approvers only the approver it is
                waiting on may change it; otherwise it needs
                finance.capex_consolidation.edit. A row that would change
                nothing is counted in lines_unchanged and not saved, whoever may
                change it. Nothing is written unless p_dry_run is false; a dry
                run, the default, saves each row and takes it back, so its
                answer is the upload's.


                Returns ok, dry_run, written (whether anything was),
                lines_updated, lines_unchanged, lines_refused and outcomes: for
                each row updated (or that would be, in a dry run) or refused,
                its row, scheme_code, outcome (UPDATED or REFUSED), the columns
                it changes, and for a refusal its error_code, message and hint.
              properties:
                p_dry_run:
                  format: boolean
                  type: boolean
                p_payload:
                  format: jsonb
              required:
                - p_payload
              type: object
          application/vnd.pgrst.object+json:
            schema:
              description: >-
                Change proposals' rows on the consolidated capex plan from a
                spreadsheet, row by row, or say what stops each one.


                p_payload is {"lines": [...]}, a row of the file each, at most
                2,000. Each names its row of the plan by scheme_code, the
                Request ID, among the rows you may see; it never adds a row,
                since a proposal comes onto the plan only when it is approved
                for the consolidation plan, and rows the file does not mention
                are left alone. A row may give item_description, justification
                and carryover_order_reference as words; quantity,
                fresh_sanction_amount, approved_carryover_amount,
                carryover_cashflow_cy, py1_carryover_outflow, py1_fresh_outflow,
                py2_outflow to py5_outflow and py1_month_01 to py1_month_12 as
                numbers; coordinator by email or name; nature by code or name;
                gst_rate by the code, name or percentage of a value of your
                organisation's GST Rate Master list; and asset_block by the code
                or name of a value of its Asset Block Master list. Nothing else
                is read. A key left out keeps what the row holds, and a key
                given empty clears it. A name the row already holds keeps the
                value it holds, even one no longer offered. A figure only the
                other investment type is asked is refused where it differs from
                what the row holds, and is otherwise ignored. An optional row
                key, the row's place in the file, is given back with its
                outcome.


                Each row that would change something is saved exactly as
                save_capex_consolidated_line saves it, with every check,
                permission and Form Studio setting that applies there, and
                alone: a refused row is left as it was and the others are still
                saved. While a row is with its approvers only the approver it is
                waiting on may change it; otherwise it needs
                finance.capex_consolidation.edit. A row that would change
                nothing is counted in lines_unchanged and not saved, whoever may
                change it. Nothing is written unless p_dry_run is false; a dry
                run, the default, saves each row and takes it back, so its
                answer is the upload's.


                Returns ok, dry_run, written (whether anything was),
                lines_updated, lines_unchanged, lines_refused and outcomes: for
                each row updated (or that would be, in a dry run) or refused,
                its row, scheme_code, outcome (UPDATED or REFUSED), the columns
                it changes, and for a refusal its error_code, message and hint.
              properties:
                p_dry_run:
                  format: boolean
                  type: boolean
                p_payload:
                  format: jsonb
              required:
                - p_payload
              type: object
          application/vnd.pgrst.object+json;nulls=stripped:
            schema:
              description: >-
                Change proposals' rows on the consolidated capex plan from a
                spreadsheet, row by row, or say what stops each one.


                p_payload is {"lines": [...]}, a row of the file each, at most
                2,000. Each names its row of the plan by scheme_code, the
                Request ID, among the rows you may see; it never adds a row,
                since a proposal comes onto the plan only when it is approved
                for the consolidation plan, and rows the file does not mention
                are left alone. A row may give item_description, justification
                and carryover_order_reference as words; quantity,
                fresh_sanction_amount, approved_carryover_amount,
                carryover_cashflow_cy, py1_carryover_outflow, py1_fresh_outflow,
                py2_outflow to py5_outflow and py1_month_01 to py1_month_12 as
                numbers; coordinator by email or name; nature by code or name;
                gst_rate by the code, name or percentage of a value of your
                organisation's GST Rate Master list; and asset_block by the code
                or name of a value of its Asset Block Master list. Nothing else
                is read. A key left out keeps what the row holds, and a key
                given empty clears it. A name the row already holds keeps the
                value it holds, even one no longer offered. A figure only the
                other investment type is asked is refused where it differs from
                what the row holds, and is otherwise ignored. An optional row
                key, the row's place in the file, is given back with its
                outcome.


                Each row that would change something is saved exactly as
                save_capex_consolidated_line saves it, with every check,
                permission and Form Studio setting that applies there, and
                alone: a refused row is left as it was and the others are still
                saved. While a row is with its approvers only the approver it is
                waiting on may change it; otherwise it needs
                finance.capex_consolidation.edit. A row that would change
                nothing is counted in lines_unchanged and not saved, whoever may
                change it. Nothing is written unless p_dry_run is false; a dry
                run, the default, saves each row and takes it back, so its
                answer is the upload's.


                Returns ok, dry_run, written (whether anything was),
                lines_updated, lines_unchanged, lines_refused and outcomes: for
                each row updated (or that would be, in a dry run) or refused,
                its row, scheme_code, outcome (UPDATED or REFUSED), the columns
                it changes, and for a refusal its error_code, message and hint.
              properties:
                p_dry_run:
                  format: boolean
                  type: boolean
                p_payload:
                  format: jsonb
              required:
                - p_payload
              type: object
          text/csv:
            schema:
              description: >-
                Change proposals' rows on the consolidated capex plan from a
                spreadsheet, row by row, or say what stops each one.


                p_payload is {"lines": [...]}, a row of the file each, at most
                2,000. Each names its row of the plan by scheme_code, the
                Request ID, among the rows you may see; it never adds a row,
                since a proposal comes onto the plan only when it is approved
                for the consolidation plan, and rows the file does not mention
                are left alone. A row may give item_description, justification
                and carryover_order_reference as words; quantity,
                fresh_sanction_amount, approved_carryover_amount,
                carryover_cashflow_cy, py1_carryover_outflow, py1_fresh_outflow,
                py2_outflow to py5_outflow and py1_month_01 to py1_month_12 as
                numbers; coordinator by email or name; nature by code or name;
                gst_rate by the code, name or percentage of a value of your
                organisation's GST Rate Master list; and asset_block by the code
                or name of a value of its Asset Block Master list. Nothing else
                is read. A key left out keeps what the row holds, and a key
                given empty clears it. A name the row already holds keeps the
                value it holds, even one no longer offered. A figure only the
                other investment type is asked is refused where it differs from
                what the row holds, and is otherwise ignored. An optional row
                key, the row's place in the file, is given back with its
                outcome.


                Each row that would change something is saved exactly as
                save_capex_consolidated_line saves it, with every check,
                permission and Form Studio setting that applies there, and
                alone: a refused row is left as it was and the others are still
                saved. While a row is with its approvers only the approver it is
                waiting on may change it; otherwise it needs
                finance.capex_consolidation.edit. A row that would change
                nothing is counted in lines_unchanged and not saved, whoever may
                change it. Nothing is written unless p_dry_run is false; a dry
                run, the default, saves each row and takes it back, so its
                answer is the upload's.


                Returns ok, dry_run, written (whether anything was),
                lines_updated, lines_unchanged, lines_refused and outcomes: for
                each row updated (or that would be, in a dry run) or refused,
                its row, scheme_code, outcome (UPDATED or REFUSED), the columns
                it changes, and for a refusal its error_code, message and hint.
              properties:
                p_dry_run:
                  format: boolean
                  type: boolean
                p_payload:
                  format: jsonb
              required:
                - p_payload
              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.