> ## 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 post /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:
    post:
      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:
        - $ref: '#/components/parameters/preferParams'
      requestBody:
        content:
          application/json:
            schema:
              description: >-
                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.
              properties:
                p_action:
                  format: text
                  type: string
                p_arguments:
                  format: jsonb
                p_excluded_ids:
                  format: uuid[]
                  items:
                    type: string
                  type: array
                p_expected_count:
                  format: integer
                  type: integer
                p_filter:
                  format: jsonb
                p_view:
                  format: text
                  type: string
              required:
                - p_action
                - p_view
                - p_filter
              type: object
          application/vnd.pgrst.object+json:
            schema:
              description: >-
                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.
              properties:
                p_action:
                  format: text
                  type: string
                p_arguments:
                  format: jsonb
                p_excluded_ids:
                  format: uuid[]
                  items:
                    type: string
                  type: array
                p_expected_count:
                  format: integer
                  type: integer
                p_filter:
                  format: jsonb
                p_view:
                  format: text
                  type: string
              required:
                - p_action
                - p_view
                - p_filter
              type: object
          application/vnd.pgrst.object+json;nulls=stripped:
            schema:
              description: >-
                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.
              properties:
                p_action:
                  format: text
                  type: string
                p_arguments:
                  format: jsonb
                p_excluded_ids:
                  format: uuid[]
                  items:
                    type: string
                  type: array
                p_expected_count:
                  format: integer
                  type: integer
                p_filter:
                  format: jsonb
                p_view:
                  format: text
                  type: string
              required:
                - p_action
                - p_view
                - p_filter
              type: object
          text/csv:
            schema:
              description: >-
                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.
              properties:
                p_action:
                  format: text
                  type: string
                p_arguments:
                  format: jsonb
                p_excluded_ids:
                  format: uuid[]
                  items:
                    type: string
                  type: array
                p_expected_count:
                  format: integer
                  type: integer
                p_filter:
                  format: jsonb
                p_view:
                  format: text
                  type: string
              required:
                - p_action
                - p_view
                - p_filter
              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

````