> ## 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 post /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:
    post:
      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:
        - $ref: '#/components/parameters/preferParams'
      requestBody:
        content:
          application/json:
            schema:
              description: >-
                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.
              properties:
                p_new_due_at:
                  format: timestamp with time zone
                  type: string
                p_reason:
                  format: text
                  type: string
                p_reason_id:
                  format: uuid
                  type: string
                p_work_order_id:
                  format: uuid
                  type: string
              required:
                - p_work_order_id
                - p_new_due_at
                - p_reason_id
              type: object
          application/vnd.pgrst.object+json:
            schema:
              description: >-
                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.
              properties:
                p_new_due_at:
                  format: timestamp with time zone
                  type: string
                p_reason:
                  format: text
                  type: string
                p_reason_id:
                  format: uuid
                  type: string
                p_work_order_id:
                  format: uuid
                  type: string
              required:
                - p_work_order_id
                - p_new_due_at
                - p_reason_id
              type: object
          application/vnd.pgrst.object+json;nulls=stripped:
            schema:
              description: >-
                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.
              properties:
                p_new_due_at:
                  format: timestamp with time zone
                  type: string
                p_reason:
                  format: text
                  type: string
                p_reason_id:
                  format: uuid
                  type: string
                p_work_order_id:
                  format: uuid
                  type: string
              required:
                - p_work_order_id
                - p_new_due_at
                - p_reason_id
              type: object
          text/csv:
            schema:
              description: >-
                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.
              properties:
                p_new_due_at:
                  format: timestamp with time zone
                  type: string
                p_reason:
                  format: text
                  type: string
                p_reason_id:
                  format: uuid
                  type: string
                p_work_order_id:
                  format: uuid
                  type: string
              required:
                - p_work_order_id
                - p_new_due_at
                - p_reason_id
              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

````