{"openapi":"3.0.0","info":{"title":"Stackby API - Complete Documentation","description":"Complete API documentation for Stackby workspace and data management platform.\nThis includes all 291+ endpoints across v0, betav1, v1, and v2 versions.\n\n## Authentication Types:\n- **api**: Bearer JWT token for authenticated users\n- **devapi**: API Key for developer/external access\n- **googleOAuth**: Google OAuth integration\n- **ssoLogin**: Single Sign-On integration\n\n## API Versions:\n- **v0**: Legacy developer endpoints\n- **betav1**: Beta version 1 endpoints\n- **v1**: Main API version (most comprehensive)\n- **v2**: Streamlined API version\n","version":"2.0.0","contact":{"name":"Stackby API Support","url":"https://stackby.com","email":"support@stackby.com"},"license":{"name":"Proprietary","url":"https://stackby.com/terms"}},"servers":[{"url":"https://stackby.com","description":"Production server"},{"url":"https://staging.stackby.com","description":"Staging server"},{"url":"http://localhost:3000","description":"Development server"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token for authenticated API access"},"apiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API key for developer access"},"googleOAuth":{"type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://accounts.google.com/o/oauth2/auth","tokenUrl":"https://oauth2.googleapis.com/token","scopes":{"profile":"Access user profile","email":"Access user email"}}}}},"parameters":{"stackId":{"name":"stackId","in":"path","required":true,"description":"Stack identifier","schema":{"type":"string"}},"tableId":{"name":"tableId","in":"path","required":true,"description":"Table identifier","schema":{"type":"string"}},"workspaceId":{"name":"workspaceId","in":"path","required":true,"description":"Workspace identifier","schema":{"type":"integer"}},"userId":{"name":"userId","in":"path","required":true,"description":"User identifier","schema":{"type":"integer"}},"action":{"name":"action","in":"path","required":true,"description":"Action to perform","schema":{"type":"string"}},"page":{"name":"page","in":"path","required":true,"description":"Page number for pagination","schema":{"type":"integer","minimum":1}}},"schemas":{"User":{"type":"object","properties":{"id":{"type":"integer"},"email":{"type":"string","format":"email"},"firstName":{"type":"string","minLength":3,"maxLength":15},"lastName":{"type":"string"},"name":{"type":"string","minLength":3,"maxLength":40},"companyName":{"type":"string","maxLength":100},"timezone":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"LoginRequest":{"type":"object","required":["email","password"],"properties":{"email":{"type":"string","format":"email","minLength":3,"maxLength":100},"password":{"type":"string","minLength":8,"maxLength":48}}},"RegisterRequest":{"type":"object","required":["email","firstName","password"],"properties":{"email":{"type":"string","format":"email","minLength":3,"maxLength":100},"firstName":{"type":"string","minLength":3,"maxLength":15},"lastName":{"type":"string"},"name":{"type":"string","minLength":3,"maxLength":40},"password":{"type":"string","minLength":8,"maxLength":48},"confirmPassword":{"type":"string"},"companyName":{"type":"string","maxLength":100},"companyfunction":{"type":"string","maxLength":100},"companyUseCases":{"type":"string"},"timezone":{"type":"string"},"phone":{"type":"string"},"totalEmployees":{"type":"string"}}},"Workspace":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"},"createdBy":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"Stack":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"},"workspaceId":{"type":"integer"},"createdBy":{"type":"integer"},"shareId":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"Table":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"stackId":{"type":"integer"},"columns":{"type":"array","items":{"$ref":"#/components/schemas/Column"}},"createdAt":{"type":"string","format":"date-time"}}},"Column":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"type":{"type":"string","enum":["text","number","date","select","multiselect","checkbox","attachment","link","formula"]},"tableId":{"type":"integer"},"metadata":{"type":"object"}}},"Row":{"type":"object","properties":{"id":{"type":"integer"},"tableId":{"type":"integer"},"data":{"type":"object","additionalProperties":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"Dashboard":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"stackId":{"type":"integer"},"blocks":{"type":"array","items":{"$ref":"#/components/schemas/Block"}}}},"Block":{"type":"object","properties":{"id":{"type":"integer"},"type":{"type":"string","enum":["table","chart","kanban","calendar","form"]},"dashboardId":{"type":"integer"},"config":{"type":"object"}}},"Notification":{"type":"object","properties":{"id":{"type":"integer"},"message":{"type":"string"},"type":{"type":"string"},"read":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"}}},"Plan":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"price":{"type":"number"},"features":{"type":"array","items":{"type":"string"}},"limits":{"type":"object"}}},"Automation":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"trigger":{"type":"object"},"actions":{"type":"array","items":{"type":"object"}},"enabled":{"type":"boolean"}}},"Activity":{"type":"object","properties":{"id":{"type":"string"},"stackId":{"type":"string"},"workspaceId":{"type":"integer"},"tableId":{"type":"string"},"rowId":{"type":"string"},"userId":{"type":"integer"},"name":{"type":"string"},"icon":{"type":"string"},"color":{"type":"string"},"text":{"type":"string"},"attachment":{"type":"array","items":{"type":"string"}},"dateDuration":{"type":"string"},"isPin":{"type":"boolean"},"isRemainder":{"type":"boolean"},"reminderDate":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"ApiResponse":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object"},"timestamp":{"type":"string","format":"date-time"}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"},"code":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}}}},"paths":{"/api/v1/login":{"post":{"tags":["Authentication"],"summary":"User login","description":"Authenticate user with email and password","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}}},"responses":{"200":{"description":"Login successful","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"type":"object","properties":{"token":{"type":"string"},"user":{"$ref":"#/components/schemas/User"}}}}}]}}}},"401":{"description":"Authentication failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/register":{"post":{"tags":["Authentication"],"summary":"User registration","description":"Register a new user account","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}}},"responses":{"201":{"description":"Registration successful","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/User"}}}]}}}}}}},"/api/v1/logout":{"post":{"tags":["Authentication"],"summary":"User logout","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Logout successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/forgot":{"post":{"tags":["Authentication"],"summary":"Forgot password","description":"Send password reset email","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"}}}}}},"responses":{"200":{"description":"Reset email sent","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/resetpassword/{token}":{"post":{"tags":["Authentication"],"summary":"Reset password","description":"Reset password using token from email","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","minLength":8}}}}}},"responses":{"200":{"description":"Password reset successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/confirm/{token}":{"post":{"tags":["Authentication"],"summary":"Confirm email","description":"Confirm user email with token","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Email confirmed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/resetconfirm":{"post":{"tags":["Authentication"],"summary":"Reset confirmation","description":"Reset email confirmation","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"}}}}}},"responses":{"200":{"description":"Reset confirmation sent","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/resetpasswordcheck/{token}":{"get":{"tags":["Authentication"],"summary":"Check reset password token","description":"Validate reset password token","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Token is valid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/email":{"get":{"tags":["Authentication"],"summary":"Check email action","description":"Check email validation status","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Email status retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/createPassword":{"post":{"tags":["Authentication"],"summary":"Create new password","description":"Create password for OAuth users","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","minLength":8},"confirmPassword":{"type":"string"}}}}}},"responses":{"200":{"description":"Password created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/googlelogin":{"get":{"tags":["OAuth"],"summary":"Google login initiation","description":"Initiate Google OAuth login flow","responses":{"302":{"description":"Redirect to Google OAuth"}}}},"/api/v1/desktop/googleLogin":{"get":{"tags":["OAuth"],"summary":"Desktop Google login","description":"Google login for desktop application","responses":{"302":{"description":"Redirect to Google OAuth"}}}},"/api/v1/googlelogin/callback":{"get":{"tags":["OAuth"],"summary":"Google login callback","description":"Handle Google OAuth callback","parameters":[{"name":"code","in":"query","schema":{"type":"string"}},{"name":"state","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Google login successful","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"type":"object","properties":{"token":{"type":"string"},"user":{"$ref":"#/components/schemas/User"}}}}}]}}}}}}},"/api/v1/gauth":{"get":{"tags":["OAuth"],"summary":"Google authentication","description":"Google authentication endpoint","responses":{"200":{"description":"Google auth status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/check2fa":{"get":{"tags":["OAuth"],"summary":"Check 2FA for Google login","description":"Check if 2FA is required for Google login","parameters":[{"name":"email","in":"query","schema":{"type":"string","format":"email"}}],"responses":{"200":{"description":"2FA status retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/appleauth":{"post":{"tags":["OAuth"],"summary":"Apple authentication","description":"Apple OAuth authentication","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"identityToken":{"type":"string"},"authorizationCode":{"type":"string"},"user":{"type":"object"}}}}}},"responses":{"200":{"description":"Apple authentication successful","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"type":"object","properties":{"token":{"type":"string"},"user":{"$ref":"#/components/schemas/User"}}}}}]}}}}}}},"/api/v1/applelogin":{"post":{"tags":["OAuth"],"summary":"Apple login","description":"Apple login endpoint","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"identityToken":{"type":"string"},"authorizationCode":{"type":"string"}}}}}},"responses":{"200":{"description":"Apple login successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/sso/check":{"get":{"tags":["SSO"],"summary":"Check SSO enable status","description":"Check if SSO is enabled for domain","parameters":[{"name":"domain","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"SSO status retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean"},"ssoUrl":{"type":"string"}}}}}]}}}}}}},"/api/v1/authcallback/sso":{"post":{"tags":["SSO"],"summary":"SSO callback","description":"Handle SSO authentication callback","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"SAMLResponse":{"type":"string"},"RelayState":{"type":"string"}}}}}},"responses":{"200":{"description":"SSO authentication successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/sso/config":{"get":{"tags":["SSO"],"summary":"SSO configuration","description":"Get SSO configuration details","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"SSO configuration retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/ssologin":{"get":{"tags":["SSO"],"summary":"SSO login","description":"Initiate SSO login","parameters":[{"name":"domain","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"302":{"description":"Redirect to SSO provider"}}}},"/api/v1/currentuser":{"get":{"tags":["User Management"],"summary":"Get current user","description":"Retrieve current authenticated user details","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"User details retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/User"}}}]}}}}}}},"/api/v1/updateprofile":{"put":{"tags":["User Management"],"summary":"Update user profile","security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"companyName":{"type":"string"},"timezone":{"type":"string"}}}}}},"responses":{"200":{"description":"Profile updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/updatePassword":{"post":{"tags":["User Management"],"summary":"Update password","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"currentPassword":{"type":"string"},"newPassword":{"type":"string","minLength":8}}}}}},"responses":{"200":{"description":"Password updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/mfasetup":{"post":{"tags":["MFA"],"summary":"Setup MFA","description":"Setup multi-factor authentication","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"MFA setup successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/mfaconfirm":{"post":{"tags":["MFA"],"summary":"Confirm MFA","description":"Confirm MFA setup with verification code","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"}}}}}},"responses":{"200":{"description":"MFA confirmed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/userworkspace":{"get":{"tags":["Workspace"],"summary":"Get user workspaces","description":"Retrieve all workspaces accessible to the user","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Workspaces retrieved successfully","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Workspace"}}}}]}}}}}}},"/api/v1/workspaceaction/{id}/{action}":{"post":{"tags":["Workspace"],"summary":"Perform workspace action","description":"Execute various actions on workspace","security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/workspaceId"},{"$ref":"#/components/parameters/action"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Action performed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/workspacelist":{"get":{"tags":["Workspace"],"summary":"List workspaces","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Workspace list retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Workspace"}}}}]}}}}}}},"/api/v1/workspace/create":{"post":{"tags":["Workspace"],"summary":"Create workspace (Developer API)","security":[{"apiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"}}}}}},"responses":{"201":{"description":"Workspace created successfully","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Workspace"}}}]}}}}}}},"/api/v1/stacklist/{id}":{"get":{"tags":["Stack"],"summary":"Get stacks in workspace","description":"Retrieve all stacks in a specific workspace","security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/workspaceId"}],"responses":{"200":{"description":"Stacks retrieved successfully","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Stack"}}}}]}}}}}}},"/api/v1/stackaction/{id}/{action}":{"post":{"tags":["Stack"],"summary":"Perform stack action","description":"Execute various actions on stack","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/action"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Action performed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/stack/create":{"post":{"tags":["Stack"],"summary":"Create stack (Developer API)","security":[{"apiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"workspaceId":{"type":"integer"},"description":{"type":"string"}}}}}},"responses":{"201":{"description":"Stack created successfully","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Stack"}}}]}}}}}}},"/api/v1/gettable/{stackId}":{"get":{"tags":["Table"],"summary":"Get tables in stack","description":"Retrieve all tables in a specific stack","security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/stackId"}],"responses":{"200":{"description":"Tables retrieved successfully","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Table"}}}}]}}}}}}},"/api/v1/tableaction/{id}/{action}":{"post":{"tags":["Table"],"summary":"Perform table action","description":"Execute various actions on table","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/action"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Action performed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/table/create":{"post":{"tags":["Table"],"summary":"Create table (Developer API)","security":[{"apiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"stackId":{"type":"string"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"}}}}}}}}},"responses":{"201":{"description":"Table created successfully","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Table"}}}]}}}}}}},"/api/v1/rowaction/{id}/{action}":{"post":{"tags":["Row"],"summary":"Perform row action","description":"Execute various actions on table rows","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Table ID","schema":{"type":"integer"}},{"$ref":"#/components/parameters/action"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true},"rowId":{"type":"integer"}}}}}},"responses":{"200":{"description":"Action performed successfully","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Row"}}}]}}}}}}},"/api/v1/rowcreate/{id}/{table}":{"post":{"tags":["Developer API"],"summary":"Create row (Developer API)","description":"Create a new row in specified table","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Stack ID","schema":{"type":"string"}},{"name":"table","in":"path","required":true,"description":"Table name or ID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Row created successfully","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Row"}}}]}}}}}}},"/api/v1/rowlist/{id}/{table}":{"get":{"tags":["Developer API"],"summary":"Get rows (Developer API)","description":"Retrieve rows from specified table","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Stack ID","schema":{"type":"string"}},{"name":"table","in":"path","required":true,"description":"Table name or ID","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","default":25}},{"name":"offset","in":"query","schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"Rows retrieved successfully","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Row"}}}}]}}}}}}},"/api/v1/rowupdate/{id}/{table}":{"put":{"tags":["Developer API"],"summary":"Update row (Developer API)","description":"For an Attachment (multipleAttachment) column, first upload the file via POST /api/v1/uploadfile/{stackId}/{tableId} to get a \"url\", then pass that url (or an array of {\"url\": \"...\", \"filename\": \"...\"} objects) as the field value here.\n","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"table","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"example":{"records":[{"id":"rw_row_id_here","field":{"Attachments":[{"url":"https://cdn.stackby.com/uploads/stk123abc/file_xyz789_document.pdf","filename":"document.pdf"}]}}]}}}}},"responses":{"200":{"description":"Row updated successfully","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Row"}}}]}}}}}}},"/api/v1/rowdelete/{id}/{table}":{"delete":{"tags":["Developer API"],"summary":"Delete row (Developer API)","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"table","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rowId":{"type":"integer"}}}}}},"responses":{"200":{"description":"Row deleted successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/columnaction/{id}/{action}":{"post":{"tags":["Column"],"summary":"Perform column action","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/action"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Action performed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/columnlist/{stackId}/{tableId}":{"get":{"tags":["Developer API"],"summary":"Get columns (Developer API)","security":[{"apiKeyAuth":[]}],"parameters":[{"$ref":"#/components/parameters/stackId"},{"$ref":"#/components/parameters/tableId"}],"responses":{"200":{"description":"Columns retrieved successfully","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Column"}}}}]}}}}}}},"/api/v1/cellupdate/{stackId}/{tableId}":{"post":{"tags":["Cell"],"summary":"Update cell","security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/stackId"},{"$ref":"#/components/parameters/tableId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rowId":{"type":"integer"},"columnId":{"type":"integer"},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"object"}]}}}}}},"responses":{"200":{"description":"Cell updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/dashboardlist/{stackId}":{"get":{"tags":["Dashboard"],"summary":"Get dashboards in stack","description":"Retrieve all dashboards in a specific stack","security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/stackId"}],"responses":{"200":{"description":"Dashboards retrieved successfully","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Dashboard"}}}}]}}}}}}},"/api/v1/dashboardaction/{id}/{action}":{"post":{"tags":["Dashboard"],"summary":"Perform dashboard action","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/action"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Action performed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/blockaction/{id}/{action}":{"post":{"tags":["Block"],"summary":"Perform block action","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/action"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Action performed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/getblock/{stackId}/{blockId}":{"get":{"tags":["Block"],"summary":"Get block details","parameters":[{"$ref":"#/components/parameters/stackId"},{"name":"blockId","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Block details retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Block"}}}]}}}}}}},"/api/v1/getnotification/{page}":{"get":{"tags":["Notification"],"summary":"Get notifications","description":"Retrieve user notifications with pagination","security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/page"}],"responses":{"200":{"description":"Notifications retrieved successfully","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Notification"}}}}]}}}}}}},"/api/v1/readnotification/{id}":{"post":{"tags":["Notification"],"summary":"Mark notification as read","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Notification marked as read","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/plandetails":{"get":{"tags":["Payment"],"summary":"Get plan details","description":"Retrieve available subscription plans","responses":{"200":{"description":"Plan details retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Plan"}}}}]}}}}}}},"/api/v1/paymentactions/{action}":{"post":{"tags":["Payment"],"summary":"Perform payment action","security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/action"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Payment action completed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/automationaction/{id}/{action}":{"post":{"tags":["Automation"],"summary":"Perform automation action","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/action"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Automation action completed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/testautomation/{stackId}":{"get":{"tags":["Automation"],"summary":"Test automation","security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/stackId"}],"responses":{"200":{"description":"Automation test completed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/slackactions/{action}":{"post":{"tags":["Integrations"],"summary":"Slack integration actions","parameters":[{"$ref":"#/components/parameters/action"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Slack action completed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/googleactions/{action}":{"post":{"tags":["Integrations"],"summary":"Google integration actions","security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/action"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Google action completed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/upload":{"post":{"tags":["File Upload"],"summary":"Upload file (Developer API)","security":[{"apiKeyAuth":[]}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}}}}}},"responses":{"200":{"description":"File uploaded successfully","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"type":"object","properties":{"fileId":{"type":"string"},"url":{"type":"string"}}}}}]}}}}}}},"/api/v1/uploadfile/{stackId}/{tableId}":{"post":{"tags":["File Upload"],"summary":"Upload a file attachment (Developer API)","description":"Uploads a file attachment to a stack/table. The returned URL can then be set in an Attachment column when creating or updating a row via the rowcreate/rowupdate Developer API endpoints.\n","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"stackId","in":"path","required":true,"schema":{"type":"string"}},{"name":"tableId","in":"path","required":true,"schema":{"type":"string"},"description":"Table name or table ID"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary"}}}}}},"responses":{"201":{"description":"File uploaded successfully","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","example":"ok"},"data":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"mimeType":{"type":"string"},"size":{"type":"integer"},"url":{"type":"string"},"uploadedAt":{"type":"string","format":"date-time"}}}}}}}},"400":{"description":"Missing file, or stack/table not found"},"401":{"description":"Invalid or missing API key"}}}},"/api/v1/templateslist":{"get":{"tags":["Templates"],"summary":"Get templates list","responses":{"200":{"description":"Templates retrieved successfully","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"},"category":{"type":"string"}}}}}}]}}}}}}},"/api/v1/webhook/listner":{"post":{"tags":["Webhooks"],"summary":"Webhook listener","description":"Generic webhook endpoint for external integrations","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Webhook processed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/healthcheck":{"get":{"tags":["System"],"summary":"Health check","description":"Check system health and status","responses":{"200":{"description":"System is healthy","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","example":"ok"},"timestamp":{"type":"string","format":"date-time"},"uptime":{"type":"number"}}}}}}}}},"/api/v1/fetchTimezone":{"get":{"tags":["Utilities"],"summary":"Get timezone list","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Timezone list retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"timezone":{"type":"string"},"displayName":{"type":"string"}}}}}}]}}}}}}},"/api/v1/fetchcountries":{"get":{"tags":["Utilities"],"summary":"Get country list","responses":{"200":{"description":"Country list retrieved","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}}}}}}]}}}}}}},"/api/v1/activityaction/{stackId}/{action}":{"post":{"tags":["Activity"],"summary":"Perform activity action","description":"Execute various actions on activities/notes within records","security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/stackId"},{"name":"action","in":"path","required":true,"schema":{"type":"string","enum":["addactivity","updateactivity","listactivity","getactivity","deleteactivity","pinactivity","addTemplateactivity","updateTemplateactivity","listTemplateactivity","deleteTemplateactivity","addTemplate","updateTemplate","deleteTemplate","listTemplate","setRemainder"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"Add Activity","properties":{"name":{"type":"string"},"icon":{"type":"string"},"color":{"type":"string"},"tableId":{"type":"string"},"rowId":{"type":"string"},"text":{"type":"string"},"attachment":{"type":"array","items":{"type":"string"}},"dateDuration":{"type":"string"}}},{"type":"object","title":"Update Activity","properties":{"activityId":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string"},"color":{"type":"string"},"text":{"type":"string"},"attachment":{"type":"array","items":{"type":"string"}},"dateDuration":{"type":"string"}}},{"type":"object","title":"List Activity","properties":{"tableId":{"type":"string"},"rowId":{"type":"string"}}},{"type":"object","title":"Activity Template","properties":{"name":{"type":"string"},"tableId":{"type":"string"},"text":{"type":"string"},"isShare":{"type":"integer"}}},{"type":"object","title":"Set Reminder","properties":{"activityId":{"type":"string"},"type":{"type":"string","enum":["20min","1h","3h","nextDay","nextWeek"]},"isRemainder":{"type":"integer"}}}]}}}},"responses":{"200":{"description":"Activity action completed successfully","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"type":"object","properties":{"activity":{"type":"array","items":{"$ref":"#/components/schemas/Activity"}}}}}}]}}}}}}},"/api/v1/ai/conversation/start":{"post":{"tags":["AI Conversation"],"summary":"Start or resume an AI conversation","description":"Creates a new AI conversation or resumes an existing one. When dashboardContext is provided, returns starter prompts and contextual guidance.","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"stackId":{"type":"string","nullable":true,"description":"Optional stack ID to start conversation in"},"startMode":{"type":"string","enum":["continue","new"],"description":"Whether to continue existing or start new"},"conversationId":{"type":"string","nullable":true,"description":"Existing conversation ID to resume"},"workspaceId":{"type":"string","description":"Required when dashboardContext is provided"},"context":{"type":"object","properties":{"tableId":{"type":"string"},"viewId":{"type":"string"}}},"dashboardContext":{"type":"object","description":"Optional - when starting from dashboard (Airtable Omni style)","properties":{"companyName":{"type":"string"},"industryName":{"type":"string"},"audienceName":{"type":"string"},"teamTypeForMarketing":{"type":"string"},"numberOfPrompts":{"type":"integer","minimum":1,"maximum":5}}}}}}}},"responses":{"200":{"description":"Conversation started successfully","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiResponse"},{"type":"object","properties":{"data":{"type":"object","properties":{"conversationId":{"type":"string"},"message":{"type":"string"},"starterPrompts":{"type":"array","items":{"type":"string"}},"userContextPrompt":{"type":"string"},"initialPreferences":{"type":"object"}}}}}]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v3/ai/conversation/{conversationId}/chat":{"post":{"tags":["AI Conversation"],"summary":"Unified V3 chat handler","description":"Handles PLAN phase (create/modify) and EXECUTE/REJECT phase.\n\n**PLAN phase** (when action is not present):\n- If stackId provided → MODIFY existing stack\n- If no stackId → CREATE new stack\n- LLM generates plan, stores in context.v3Plan, waits for approval\n\n**EXECUTE/REJECT phase** (when action is present):\n- If approve → executes via ActionExecutor\n- If reject → clears plan and resets phase\n\nResponse is Server-Sent Events (SSE) stream.\n","parameters":[{"name":"conversationId","in":"path","required":true,"description":"Unique identifier for the conversation","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","maxLength":5000},"stackId":{"type":"string"},"isCreateFlow":{"type":"boolean"},"userSettings":{"type":"object","properties":{"companyName":{"type":"string"},"industryType":{"type":"string"},"team":{"type":"string"}}},"answers":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"question":{"type":"string"},"answer":{"type":"string"}},"required":["question","answer"]},{"type":"string"}]}},"web_search":{"type":"boolean"},"action":{"type":"string","enum":["approve","reject"]}}}}}},"responses":{"200":{"description":"Server-Sent Events stream with conversation updates","content":{"text/event-stream":{"schema":{"type":"string"}}}},"400":{"description":"Validation error"},"500":{"description":"Server error"}}}}},"tags":[{"name":"Authentication","description":"User authentication and session management"},{"name":"OAuth","description":"OAuth authentication with Google, Apple and other providers"},{"name":"SSO","description":"Single Sign-On authentication"},{"name":"User Management","description":"User profile and account operations"},{"name":"MFA","description":"Multi-factor authentication"},{"name":"Workspace","description":"Workspace management and collaboration"},{"name":"Stack","description":"Stack (project) operations"},{"name":"Table","description":"Table structure and management"},{"name":"Row","description":"Data row operations"},{"name":"Column","description":"Column operations and management"},{"name":"Cell","description":"Individual cell operations"},{"name":"Dashboard","description":"Dashboard and visualization"},{"name":"Block","description":"Dashboard block management"},{"name":"Activity","description":"Activity logs and notes management"},{"name":"Notification","description":"Notification system"},{"name":"Payment","description":"Subscription and billing"},{"name":"Automation","description":"Workflow automation"},{"name":"Integrations","description":"Third-party service integrations"},{"name":"Templates","description":"Template management"},{"name":"File Upload","description":"File upload and management"},{"name":"Webhooks","description":"Webhook management"},{"name":"Developer API","description":"External API for developers"},{"name":"System","description":"System health and monitoring"},{"name":"Utilities","description":"Utility functions and helpers"}]}