diff --git a/src/lib/smartsheet.ts b/src/lib/smartsheet.ts index 9cacc05..f973095 100644 --- a/src/lib/smartsheet.ts +++ b/src/lib/smartsheet.ts @@ -279,12 +279,16 @@ export async function addRow( return v; }; - // NOTE: POST /2.0/sheets/{id}/rows wraps the created row(s) in - // `{ result: [{id, rowNumber}, ...] }` — different shape from the - // flat GET /2.0/sheets/{id} response. See - // https://smartsheet.redoc.ly/#operation/addRows + // NOTE: POST /2.0/sheets/{id}/rows response shape varies: + // - One row in request → result: { id, rowNumber, ... } (single object) + // - Multiple rows → result: [{ id, rowNumber, ... }, ...] (array) + // We always post exactly one row, but handle both defensively. Different + // from the flat GET /2.0/sheets/{id} response. + // See https://smartsheet.redoc.ly/#operation/addRows type ApiResponse = { - result: Array<{ id: number; rowNumber: number }>; + result: + | { id: number; rowNumber: number; [k: string]: unknown } + | Array<{ id: number; rowNumber: number; [k: string]: unknown }>; resultCode?: number; message?: string; }; @@ -305,7 +309,8 @@ export async function addRow( }, ); - const row = data?.result?.[0]; + const result = data?.result; + const row = Array.isArray(result) ? result[0] : result; if (!row || row.id == null) { throw new SmartsheetApiError( 502,