ParakeetoDocumentation
On this page

get_saved_estimate

What it answers

Read one saved Scope Predictor estimate by estimateId from list_saved_estimates: its saved inputs (project names, target AGI and ABR, price, pass-throughs, overrides, planned hours and brief) exactly as stored; no result is calculated. Cost per delivery hour (acphOverrides, costBasis) is derived from compensation and is returned only when the current connection owner has People (payroll) grid view on this account; otherwise it is omitted and a compensation-withheld caveat is returned. An unknown or foreign estimateId is reported as not found or inaccessible. Read only. Read parakeeto://methodology for shared response conventions and INVALID_ARGUMENT guidance.

Read-only.

Arguments

Argument Type Required Default Allowed values
account string (uuid) no — —
includeDefinitions boolean no true —
estimateId string (uuid) yes — —

Returned fields

The result is an envelope: ok: true with data, or ok: false with error. Error codes: MODEL_CALCULATOR_ACCESS_REQUIRED, PAYROLL_GRID_MISSING, PAYROLL_GRID_REQUIRED, PROJECT_GRID_REQUIRED, EXPENSE_GRID_REQUIRED, PAYROLL_ENTRY_REFERENCE_STALE, ACCOUNT_NOT_FOUND, ACCOUNT_CONFIGURATION_MISSING, NO_IMPORTED_TIME, NOTHING_IMPORTED, ACCOUNT_REQUIRED, NO_REACHABLE_ACCOUNTS, FEATURE_NOT_ENTITLED, PERMISSION_DENIED, CALCULATION_FAILED, INTERNAL_ERROR, INVALID_ARGUMENT.

  • data: object
    • data.account: string (uuid)
    • data.estimate: object
      • data.estimate.id: string (uuid)
      • data.estimate.name: string
      • data.estimate.revision: string (pattern ^[1-9]\d*$)
      • data.estimate.updatedAt: string (date-time)
      • data.estimate.updatedByName: string
      • data.estimate.locked: boolean
      • data.estimate.lockedByName: string or null
      • data.estimate.inputs: object
        • data.estimate.inputs.projectNames: array of string
        • data.estimate.inputs.targetAgi: string (pattern ^-?\d+(?:\.\d+)?$)
        • data.estimate.inputs.targetAbr: string or null (pattern ^-?\d+(?:\.\d+)?$)
        • data.estimate.inputs.price: string or null (pattern ^-?\d+(?:\.\d+)?$)
        • data.estimate.inputs.passThroughs: array of object
          • data.estimate.inputs.passThroughs[].name: string
          • data.estimate.inputs.passThroughs[].amount: string (pattern ^-?\d+(?:\.\d+)?$)
          • data.estimate.inputs.passThroughs[].markupPct: string or null (pattern ^-?\d+(?:\.\d+)?$)
        • data.estimate.inputs.adjustForOverrun: boolean
        • data.estimate.inputs.plannedHours: string or null (pattern ^-?\d+(?:\.\d+)?$)
        • data.estimate.inputs.overrides: map of string to string
          • data.estimate.inputs.overrides.*: string (pattern ^-?\d+(?:\.\d+)?$)
        • data.estimate.inputs.brief: object
          • data.estimate.inputs.brief.serviceLine: string or null
          • data.estimate.inputs.brief.product: string or null
          • data.estimate.inputs.brief.client: string or null
          • data.estimate.inputs.brief.durationDays: string or null (pattern ^-?\d+(?:\.\d+)?$)
        • data.estimate.inputs.acphOverrides: same shape as data.estimate.inputs.overrides, optional
        • data.estimate.inputs.costBasis: object or null, optional
          • data.estimate.inputs.costBasis.startDate: string (pattern ^\d{4}-\d{2}-\d{2}$)
          • data.estimate.inputs.costBasis.endDate: string (pattern ^\d{4}-\d{2}-\d{2}$)
          • data.estimate.inputs.costBasis.acph: same shape as data.estimate.inputs.overrides
    • data.definitions: map of string to string, optional
      • data.definitions.*: string
    • data.caveats: array of object
      • data.caveats[].code: string ("compensation-withheld")
      • data.caveats[].message: string

On failure:

  • error: object
    • error.code: string ("MODEL_CALCULATOR_ACCESS_REQUIRED", "PAYROLL_GRID_MISSING", "PAYROLL_GRID_REQUIRED", "PROJECT_GRID_REQUIRED", "EXPENSE_GRID_REQUIRED", "PAYROLL_ENTRY_REFERENCE_STALE", "ACCOUNT_NOT_FOUND", "ACCOUNT_CONFIGURATION_MISSING", "NO_IMPORTED_TIME", "NOTHING_IMPORTED", "ACCOUNT_REQUIRED", "NO_REACHABLE_ACCOUNTS", "FEATURE_NOT_ENTITLED", "PERMISSION_DENIED", "CALCULATION_FAILED", "INTERNAL_ERROR", "INVALID_ARGUMENT")
    • error.argument: string, optional (minLength: 1)
    • error.message: string
    • error.accounts: array of object, optional
      • error.accounts[].id: string (uuid)
      • error.accounts[].name: string
    • error.payrollGrids: array of object, optional
      • error.payrollGrids[]: same shape as error.accounts[]
    • error.projectGrids: array of object, optional
      • error.projectGrids[]: same shape as error.accounts[]
    • error.expenseGrids: array of object, optional
      • error.expenseGrids[]: same shape as error.accounts[]
    • error.context: object, optional
      • error.context.account: object
        • Further fields: see the response.
      • error.context.imports: array of object
        • Further fields: see the response.
      • error.context.hasTimeEntries: boolean
      • error.context.reports: array of object
        • Further fields: see the response.

Definitions

Returned in definitions when includeDefinitions is true (the default). It is a map of string to string: each key names a field and each value is its definition text.

Caveats

  • compensation-withheld.

Read every caveat before interpreting a figure. See methodology on how to communicate caveats and data-quality conditions.

Example call

{
  "name": "get_saved_estimate",
  "arguments": {
    "estimateId": "00000000-0000-4000-8000-000000000099"
  }
}

Add account with an identifier from list_accounts; omit it only when the connection reaches exactly one account.

Questions and answers

What does get_saved_estimate answer?

Read one saved Scope Predictor estimate by estimateId from list_saved_estimates: its saved inputs (project names, target AGI and ABR, price, pass-throughs, overrides, planned hours and brief) exactly as stored; no result is calculated. Cost per delivery hour (acphOverrides, costBasis) is derived from compensation and is returned only when the current connection owner has People (payroll) grid view on this account; otherwise it is omitted and a compensation-withheld caveat is returned. An unknown or foreign estimateId is reported as not found or inaccessible. Read only. Read parakeeto://methodology for shared response conventions and INVALID_ARGUMENT guidance.

Which arguments does get_saved_estimate accept?

Argument Type Required Default Allowed values account string (uuid) no — — includeDefinitions boolean no true — estimateId string (uuid) yes — —

What does get_saved_estimate return?

The result is an envelope: ok: true with data, or ok: false with error.

Read as Markdown