list_project_entries
What it answers
List stored Projects grid rows in the grid's own column names, with a row id and version per row and a gridVersion for the whole listing. Includes Included=false rows. Requires the current connection owner to have at least view access to the Projects grid on this account. Choose projectGridId when multiple grids are listed in PROJECT_GRID_REQUIRED. Pages default to 100 rows (maximum limit 200); follow pagination.nextOffset as offset with the same grid and limit, and restart at offset 0 when gridVersion changes. cells are keyed by the grid's column headers; plannedHours is keyed by task category. Blank cells are null. Stored freshness does not prove the live Sheet is unchanged. No compensation is returned. Read parakeeto://methodology for shared response conventions and INVALID_ARGUMENT guidance.
Read-only.
Arguments
| Argument | Type | Required | Default | Allowed values |
|---|---|---|---|---|
account |
string (uuid) | no | — | — |
projectGridId |
string (uuid) | no | — | — |
limit |
integer | no | 100 |
minimum: 1; maximum: 200 |
offset |
integer | no | 0 |
minimum: 0; maximum: 9007199254740991 |
includeDefinitions |
boolean | no | true |
— |
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: objectdata.account: string (uuid)data.gridVersion: string (pattern^[a-f0-9]{64}$)data.pagination: objectdata.pagination.limit: integer (minimum: 1;maximum: 200)data.pagination.offset: integer (minimum: 0)data.pagination.totalRows: integer (minimum: 0)data.pagination.returnedRows: integer (minimum: 0)data.pagination.omittedRows: integer (minimum: 0)data.pagination.nextOffset: integer or null (minimum: 0)data.pagination.truncated: booleandata.pagination.message: string
data.gridFreshness: array of objectdata.gridFreshness[].kind: string ("payroll","expense","project")data.gridFreshness[].gridId: string (uuid)data.gridFreshness[].name: stringdata.gridFreshness[].storage: string ("sheet","database")data.gridFreshness[].sheetRefreshedAt: string (date-time) or null
data.definitions: map of string to string, optionaldata.definitions.*: string
data.caveats: array of objectdata.caveats[].code: stringdata.caveats[].message: string
data.projectGrid: objectdata.projectGrid.id: string (uuid)data.projectGrid.name: string
data.entries: array of objectdata.entries[].rowId: stringdata.entries[].version: string (pattern^[a-f0-9]{64}$)data.entries[].cells: objectdata.entries[].cells.Included: booleandata.entries[].cells.Service-Line: string or nulldata.entries[].cells.Client: string or nulldata.entries[].cells.Product: string or nulldata.entries[].cells.Project: string or nulldata.entries[].cells.Status: string or nulldata.entries[].cells.Start Date: string or null (pattern^\d{4}-\d{2}-\d{2}$)data.entries[].cells.End Date: string or null (pattern^\d{4}-\d{2}-\d{2}$)data.entries[].cells.Revenue: string or null (pattern^-?\d+(?:\.\d+)?$)data.entries[].cells.Pass-through Expenses: string or null (pattern^-?\d+(?:\.\d+)?$)
data.entries[].type: string ("Recurring","Non-recurring")data.entries[].plannedHours: map of string to string or nulldata.entries[].plannedHours.*: string or null (pattern^-?\d+(?:\.\d+)?$)
On failure:
error: objecterror.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: stringerror.accounts: array of object, optionalerror.accounts[].id: string (uuid)error.accounts[].name: string
error.payrollGrids: array of object, optionalerror.payrollGrids[]: same shape aserror.accounts[]
error.projectGrids: array of object, optionalerror.projectGrids[]: same shape aserror.accounts[]
error.expenseGrids: array of object, optionalerror.expenseGrids[]: same shape aserror.accounts[]
error.context: object, optionalerror.context.account: object- Further fields: see the response.
error.context.imports: array of object- Further fields: see the response.
error.context.hasTimeEntries: booleanerror.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
Codes are not enumerated in the schema; read each code and message.
Read every caveat before interpreting a figure. See methodology on how to communicate caveats and data-quality conditions.
Example call
{
"name": "list_project_entries",
"arguments": {}
}
Add account with an identifier from list_accounts; omit it only when the connection reaches exactly one account.
Questions and answers
What does list_project_entries answer?
List stored Projects grid rows in the grid's own column names, with a row id and version per row and a gridVersion for the whole listing. Includes Included=false rows. Requires the current connection owner to have at least view access to the Projects grid on this account. Choose projectGridId when multiple grids are listed in PROJECT_GRID_REQUIRED. Pages default to 100 rows (maximum limit 200); follow pagination.nextOffset as offset with the same grid and limit, and restart at offset 0 when gridVersion changes. cells are keyed by the grid's column headers; plannedHours is keyed by task category. Blank cells are null. Stored freshness does not prove the live Sheet is unchanged. No compensation is returned. Read parakeeto://methodology for shared response conventions and INVALID_ARGUMENT guidance.
Which arguments does list_project_entries accept?
Argument Type Required Default Allowed values account string (uuid) no — — projectGridId string (uuid) no — — limit integer no 100 minimum: 1; maximum: 200 offset integer no 0 minimum: 0; maximum: 9007199254740991 includeDefinitions boolean no true —
What does list_project_entries return?
The result is an envelope: ok: true with data, or ok: false with error.