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

# Ask for a job's deadline to be moved later, and move it if that is granted.

> Unlike rescheduling, this moves the promise: the due date and the promised resolution time both
shift by the interval between the date asked for and the one the job already had, so a job with
two different deadlines keeps the distance between them and neither can be shortened by an
extension. The promised response time is left alone — by the time more time is needed it has
already been met or missed — and a breach that has already been recorded stays recorded.

Why the job needs longer is picked from your own list rather than typed: p_reason_id names a row of
api.work_order_sla_extension_reasons, which is what makes "what keeps making us late" a question a
report can answer. p_reason is the sentence beside it, and is required on any reason whose
requires_notes is set — a delay waiting on a contractor is worth naming the contractor in, and your
list is where that is decided.

Where an approval chain is published for extensions the job does not move until the chain settles,
and the answer says the request is pending rather than that the dates changed. Where none is
published the permission is the whole gate and the extension takes effect at once.

Whether more time may be asked for at all depends on where the job currently stands: a status is
marked as one this is offered in, and no status is marked that way until somebody says so. A job
sitting anywhere else is refused.

Refuses a date that is not later than the deadline the job already has, a job that is finished, a
job that has no deadline at all, a reason that is not yours or no longer offered, and a reason that
asks for a sentence given without one.



## OpenAPI

````yaml /api-reference/openapi.json get /rpc/request_sla_extension
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/request_sla_extension:
    get:
      tags:
        - Work lifecycle
      summary: >-
        Ask for a job's deadline to be moved later, and move it if that is
        granted.
      description: >-
        Unlike rescheduling, this moves the promise: the due date and the
        promised resolution time both

        shift by the interval between the date asked for and the one the job
        already had, so a job with

        two different deadlines keeps the distance between them and neither can
        be shortened by an

        extension. The promised response time is left alone — by the time more
        time is needed it has

        already been met or missed — and a breach that has already been recorded
        stays recorded.


        Why the job needs longer is picked from your own list rather than typed:
        p_reason_id names a row of

        api.work_order_sla_extension_reasons, which is what makes "what keeps
        making us late" a question a

        report can answer. p_reason is the sentence beside it, and is required
        on any reason whose

        requires_notes is set — a delay waiting on a contractor is worth naming
        the contractor in, and your

        list is where that is decided.


        Where an approval chain is published for extensions the job does not
        move until the chain settles,

        and the answer says the request is pending rather than that the dates
        changed. Where none is

        published the permission is the whole gate and the extension takes
        effect at once.


        Whether more time may be asked for at all depends on where the job
        currently stands: a status is

        marked as one this is offered in, and no status is marked that way until
        somebody says so. A job

        sitting anywhere else is refused.


        Refuses a date that is not later than the deadline the job already has,
        a job that is finished, a

        job that has no deadline at all, a reason that is not yours or no longer
        offered, and a reason that

        asks for a sentence given without one.
      parameters:
        - in: query
          name: p_work_order_id
          required: true
          schema:
            format: uuid
            type: string
        - in: query
          name: p_new_due_at
          required: true
          schema:
            format: timestamp with time zone
            type: string
        - in: query
          name: p_reason_id
          required: true
          schema:
            format: uuid
            type: string
        - in: query
          name: p_reason
          required: false
          schema:
            format: text
            type: string
      responses:
        '200':
          description: OK

````