> ## 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.

# Add proposals to a draft capex plan from a spreadsheet, or correct the ones it has: a row giving the Proposal ID of a…

> Add proposals to a draft capex plan from a spreadsheet, or correct the ones it has: a row giving the Proposal ID of a proposal on this plan corrects it, and a row with none adds one, as does a row with an ID no proposal has where your organisation lets people type one. Needs finance.capex_scheme.create, as adding one proposal does, and finance.capex_scheme.edit as well for a file that names a proposal already on the plan. Proposals the file does not mention are left as they are. Every amount in the file can have at most ten digits before the decimal point and two after it, and a row with a wider one is a problem, except where it gives back unchanged the figure the proposal it corrects already holds. Writes everything or nothing, and only when p_dry_run is false. Where proposals are approved one at a time, a proposal that can no longer be changed — with its approvers, decided, or a draft whose planning window has closed — is skipped with a notice when its row says what it already holds, and refuses the file when the row would change it.



## OpenAPI

````yaml /api-reference/openapi.json post /rpc/import_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: 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_plan_lines:
    post:
      tags:
        - Capex plans
      summary: >-
        Add proposals to a draft capex plan from a spreadsheet, or correct the
        ones it has: a row giving the Proposal ID of a…
      description: >-
        Add proposals to a draft capex plan from a spreadsheet, or correct the
        ones it has: a row giving the Proposal ID of a proposal on this plan
        corrects it, and a row with none adds one, as does a row with an ID no
        proposal has where your organisation lets people type one. Needs
        finance.capex_scheme.create, as adding one proposal does, and
        finance.capex_scheme.edit as well for a file that names a proposal
        already on the plan. Proposals the file does not mention are left as
        they are. Every amount in the file can have at most ten digits before
        the decimal point and two after it, and a row with a wider one is a
        problem, except where it gives back unchanged the figure the proposal it
        corrects already holds. Writes everything or nothing, and only when
        p_dry_run is false. Where proposals are approved one at a time, a
        proposal that can no longer be changed — with its approvers, decided, or
        a draft whose planning window has closed — is skipped with a notice when
        its row says what it already holds, and refuses the file when the row
        would change it.
      parameters:
        - $ref: '#/components/parameters/preferParams'
      requestBody:
        content:
          application/json:
            schema:
              description: >-
                Add proposals to a draft capex plan from a spreadsheet, or
                correct the ones it has: a row giving the Proposal ID of a
                proposal on this plan corrects it, and a row with none adds one,
                as does a row with an ID no proposal has where your organisation
                lets people type one. Needs finance.capex_scheme.create, as
                adding one proposal does, and finance.capex_scheme.edit as well
                for a file that names a proposal already on the plan. Proposals
                the file does not mention are left as they are. Every amount in
                the file can have at most ten digits before the decimal point
                and two after it, and a row with a wider one is a problem,
                except where it gives back unchanged the figure the proposal it
                corrects already holds. Writes everything or nothing, and only
                when p_dry_run is false. Where proposals are approved one at a
                time, a proposal that can no longer be changed — with its
                approvers, decided, or a draft whose planning window has closed
                — is skipped with a notice when its row says what it already
                holds, and refuses the file when the row would change it.
              properties:
                p_dry_run:
                  format: boolean
                  type: boolean
                p_payload:
                  format: jsonb
                p_plan_id:
                  format: uuid
                  type: string
              required:
                - p_plan_id
                - p_payload
              type: object
          application/vnd.pgrst.object+json:
            schema:
              description: >-
                Add proposals to a draft capex plan from a spreadsheet, or
                correct the ones it has: a row giving the Proposal ID of a
                proposal on this plan corrects it, and a row with none adds one,
                as does a row with an ID no proposal has where your organisation
                lets people type one. Needs finance.capex_scheme.create, as
                adding one proposal does, and finance.capex_scheme.edit as well
                for a file that names a proposal already on the plan. Proposals
                the file does not mention are left as they are. Every amount in
                the file can have at most ten digits before the decimal point
                and two after it, and a row with a wider one is a problem,
                except where it gives back unchanged the figure the proposal it
                corrects already holds. Writes everything or nothing, and only
                when p_dry_run is false. Where proposals are approved one at a
                time, a proposal that can no longer be changed — with its
                approvers, decided, or a draft whose planning window has closed
                — is skipped with a notice when its row says what it already
                holds, and refuses the file when the row would change it.
              properties:
                p_dry_run:
                  format: boolean
                  type: boolean
                p_payload:
                  format: jsonb
                p_plan_id:
                  format: uuid
                  type: string
              required:
                - p_plan_id
                - p_payload
              type: object
          application/vnd.pgrst.object+json;nulls=stripped:
            schema:
              description: >-
                Add proposals to a draft capex plan from a spreadsheet, or
                correct the ones it has: a row giving the Proposal ID of a
                proposal on this plan corrects it, and a row with none adds one,
                as does a row with an ID no proposal has where your organisation
                lets people type one. Needs finance.capex_scheme.create, as
                adding one proposal does, and finance.capex_scheme.edit as well
                for a file that names a proposal already on the plan. Proposals
                the file does not mention are left as they are. Every amount in
                the file can have at most ten digits before the decimal point
                and two after it, and a row with a wider one is a problem,
                except where it gives back unchanged the figure the proposal it
                corrects already holds. Writes everything or nothing, and only
                when p_dry_run is false. Where proposals are approved one at a
                time, a proposal that can no longer be changed — with its
                approvers, decided, or a draft whose planning window has closed
                — is skipped with a notice when its row says what it already
                holds, and refuses the file when the row would change it.
              properties:
                p_dry_run:
                  format: boolean
                  type: boolean
                p_payload:
                  format: jsonb
                p_plan_id:
                  format: uuid
                  type: string
              required:
                - p_plan_id
                - p_payload
              type: object
          text/csv:
            schema:
              description: >-
                Add proposals to a draft capex plan from a spreadsheet, or
                correct the ones it has: a row giving the Proposal ID of a
                proposal on this plan corrects it, and a row with none adds one,
                as does a row with an ID no proposal has where your organisation
                lets people type one. Needs finance.capex_scheme.create, as
                adding one proposal does, and finance.capex_scheme.edit as well
                for a file that names a proposal already on the plan. Proposals
                the file does not mention are left as they are. Every amount in
                the file can have at most ten digits before the decimal point
                and two after it, and a row with a wider one is a problem,
                except where it gives back unchanged the figure the proposal it
                corrects already holds. Writes everything or nothing, and only
                when p_dry_run is false. Where proposals are approved one at a
                time, a proposal that can no longer be changed — with its
                approvers, decided, or a draft whose planning window has closed
                — is skipped with a notice when its row says what it already
                holds, and refuses the file when the row would change it.
              properties:
                p_dry_run:
                  format: boolean
                  type: boolean
                p_payload:
                  format: jsonb
                p_plan_id:
                  format: uuid
                  type: string
              required:
                - p_plan_id
                - 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.