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

# Run a bulk action over every record a register's filter matches, in the background.

> `p_action` names what to do, and `p_arguments` what with:

- `assets.update` — `{"values": {...}}`, the fields to set on every asset;
- `work_orders.transition` — `{"to_status": "...", "reason": "..."}`;
- `work_orders.priority` — `{"priority_code": "...", "reason": "..."}`;
- `work_orders.reschedule` — `{"planned_start_at": "...", "due_at": "...", "reason": "..."}`;
- `work_orders.assign` — `{"worker_id"|"team_id"|"vendor_id": "...", "role": "...", "target": "..."}`;
- `work_requests.transition` — `{"to_status": "...", "reason": "..."}`;
- `maintenance_plans.activate` — `{}`, and `maintenance_plans.pause` — `{"reason": "..."}`;
- `occurrences.skip` — `{"reason": "..."}`, and `occurrences.defer` — `{"defer_to": "...", "reason": "..."}`.

Each is the bulk action of the same name run in chunks, with its arguments. `p_view` is the register the selection was made on and
`p_filter` its filter, in the same operators the register's own read uses; `p_excluded_ids` are
records unticked after selecting everything. The action's permission and arguments are checked
before the job is queued, and each record is checked again as itself when its turn comes. Returns
the job as `bulk_jobs` shows it.



## OpenAPI

````yaml /api-reference/openapi.json get /rpc/start_bulk_job
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: Assets
  - name: Asset lifecycle
  - name: Work lifecycle
  - name: Maintenance
  - name: Inventory
  - name: Inventory detail
  - name: Procurement
  - name: Contracts
  - name: Workforce
  - name: Capacity
  - name: Dispatch
  - name: Tools
  - name: Inspections
  - name: Verification
  - name: Reliability
  - name: Parts demand
  - name: Sensors and meters
  - name: Map
  - name: Floor plans
  - name: Labels
  - name: Lost and found
  - name: Root cause analysis
  - name: Reports
  - name: Audit center
  - name: Activity
  - name: Notifications
  - name: Channels
  - name: Search
  - name: Copilot
  - name: Import
  - name: Files
  - name: Sync
  - name: Support
  - name: Admin
  - name: Access
  - name: Lookups
  - name: Read models
  - name: Branding
  - name: Custom fields
  - name: Form studio
  - name: Workflows
  - name: Workflow studio
  - name: Rules
  - name: Statuses and transitions
  - name: Currencies and locales
  - 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: Platform
  - name: Amendments
  - name: Asset clone
  - name: Asset components
  - name: Asset register
  - name: Asset transfer
  - name: Audit feed
  - name: Billing
  - name: Bookings
  - name: Budgets
  - name: Bulk jobs
  - name: Calibration history
  - name: Capex plans
  - name: Conversations
  - name: Costing
  - name: Currency
  - name: Dashboards
  - name: Directory sync
  - name: Document control
  - name: Document folders
  - name: Document tree
  - name: Documents
  - name: Energy
  - name: Extracts
  - name: Features
  - name: Feeds
  - name: File exchange
  - name: Filing exceptions
  - name: Finance
  - name: Inbound mail
  - name: Keys
  - name: Knowledge
  - name: Licence
  - name: List views
  - name: Locations
  - name: Mapping
  - name: Mcp
  - name: Mcp oauth
  - name: Mfa
  - name: Numbering
  - name: Permits
  - name: Readers
  - name: Reference
  - name: Reference columns
  - name: Reference entry
  - name: Release
  - name: Scim
  - name: Security streams
  - name: Self verification
  - name: Setup
  - name: Shutdown
  - name: Sso
  - name: Telegram
  - name: Tenant switch
  - name: The caller's own work
  - name: The checklist library
  - name: Tools on a job, and who has them out
  - name: Tray
  - name: Vendor spend forecast
  - name: Vendors and contracts
  - name: Visitors
  - name: Work order execution
  - name: Work sequencing
  - name: Workforce detail
externalDocs:
  description: PostgREST Documentation
  url: https://postgrest.org/en/v12/references/api.html
paths:
  /rpc/start_bulk_job:
    get:
      tags:
        - Bulk jobs
      summary: >-
        Run a bulk action over every record a register's filter matches, in the
        background.
      description: >-
        `p_action` names what to do, and `p_arguments` what with:


        - `assets.update` — `{"values": {...}}`, the fields to set on every
        asset;

        - `work_orders.transition` — `{"to_status": "...", "reason": "..."}`;

        - `work_orders.priority` — `{"priority_code": "...", "reason": "..."}`;

        - `work_orders.reschedule` — `{"planned_start_at": "...", "due_at":
        "...", "reason": "..."}`;

        - `work_orders.assign` — `{"worker_id"|"team_id"|"vendor_id": "...",
        "role": "...", "target": "..."}`;

        - `work_requests.transition` — `{"to_status": "...", "reason": "..."}`;

        - `maintenance_plans.activate` — `{}`, and `maintenance_plans.pause` —
        `{"reason": "..."}`;

        - `occurrences.skip` — `{"reason": "..."}`, and `occurrences.defer` —
        `{"defer_to": "...", "reason": "..."}`.


        Each is the bulk action of the same name run in chunks, with its
        arguments. `p_view` is the register the selection was made on and

        `p_filter` its filter, in the same operators the register's own read
        uses; `p_excluded_ids` are

        records unticked after selecting everything. The action's permission and
        arguments are checked

        before the job is queued, and each record is checked again as itself
        when its turn comes. Returns

        the job as `bulk_jobs` shows it.
      parameters:
        - in: query
          name: p_action
          required: true
          schema:
            format: text
            type: string
        - in: query
          name: p_view
          required: true
          schema:
            format: text
            type: string
        - in: query
          name: p_filter
          required: true
          schema:
            format: jsonb
            type: string
        - in: query
          name: p_arguments
          required: false
          schema:
            format: jsonb
            type: string
        - in: query
          name: p_excluded_ids
          required: false
          schema:
            format: uuid[]
            type: string
        - in: query
          name: p_expected_count
          required: false
          schema:
            format: integer
            type: integer
      responses:
        '200':
          description: OK

````