{
  "service": "worksnaps",
  "displayName": "Worksnaps",
  "categories": [
    "Productivity"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Token",
      "placeholder": "WORKSNAPS_API_TOKEN",
      "description": "Worksnaps API token used with HTTP Basic auth as the username while the password is ignored. Find or regenerate it in Profile & Settings > Web Service API: https://api.worksnaps.com/api_docs/api_token.html"
    }
  ],
  "homepageUrl": "https://www.worksnaps.com",
  "actions": [
    {
      "id": "worksnaps.get_current_user",
      "service": "worksnaps",
      "name": "get_current_user",
      "description": "Read the current Worksnaps user profile for the connected API token.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "Input parameters for reading the current Worksnaps user."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "user": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "minimum": 1,
                "description": "The Worksnaps user ID."
              },
              "login": {
                "type": "string",
                "minLength": 1,
                "description": "The Worksnaps login name."
              },
              "firstName": {
                "type": "string",
                "minLength": 1,
                "description": "The user's first name."
              },
              "lastName": {
                "type": "string",
                "minLength": 1,
                "description": "The user's last name."
              },
              "email": {
                "type": "string",
                "minLength": 1,
                "description": "The user's email address."
              },
              "timezoneId": {
                "type": "integer",
                "description": "The Worksnaps timezone identifier."
              },
              "timezoneName": {
                "type": "string",
                "minLength": 1,
                "description": "The Worksnaps timezone name."
              },
              "isInDaylightTime": {
                "type": "boolean",
                "description": "Whether the user is currently in daylight saving time."
              },
              "raw": {
                "type": "object",
                "additionalProperties": true,
                "description": "The raw Worksnaps user payload."
              }
            },
            "additionalProperties": true,
            "required": [
              "id",
              "login",
              "raw"
            ],
            "description": "The current Worksnaps user profile."
          }
        },
        "additionalProperties": false,
        "required": [
          "user"
        ],
        "description": "The Worksnaps current user response."
      }
    },
    {
      "id": "worksnaps.get_project",
      "service": "worksnaps",
      "name": "get_project",
      "description": "Read one Worksnaps project by project ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "integer",
            "minimum": 1,
            "description": "The Worksnaps project ID to retrieve."
          },
          "includeUserAssignment": {
            "type": "boolean",
            "description": "Whether Worksnaps should include project member assignments in the response."
          }
        },
        "additionalProperties": false,
        "required": [
          "projectId"
        ],
        "description": "Input parameters for reading one Worksnaps project."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "project": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "minimum": 1,
                "description": "The Worksnaps project ID."
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "The Worksnaps project name."
              },
              "description": {
                "type": "string",
                "minLength": 1,
                "description": "The Worksnaps project description."
              },
              "status": {
                "type": "string",
                "minLength": 1,
                "description": "The Worksnaps project status."
              },
              "userAssignments": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "integer",
                      "minimum": 1,
                      "description": "The Worksnaps user assignment ID."
                    },
                    "projectId": {
                      "type": "integer",
                      "minimum": 1,
                      "description": "The Worksnaps project ID."
                    },
                    "userId": {
                      "type": "integer",
                      "minimum": 1,
                      "description": "The Worksnaps user ID."
                    },
                    "userFirstName": {
                      "type": "string",
                      "minLength": 1,
                      "description": "The assigned user's first name."
                    },
                    "userLastName": {
                      "type": "string",
                      "minLength": 1,
                      "description": "The assigned user's last name."
                    },
                    "userEmail": {
                      "type": "string",
                      "minLength": 1,
                      "description": "The assigned user's email address."
                    },
                    "role": {
                      "type": "string",
                      "minLength": 1,
                      "description": "The assigned project role."
                    },
                    "raw": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "The raw Worksnaps user assignment payload."
                    }
                  },
                  "additionalProperties": true,
                  "required": [
                    "id",
                    "projectId",
                    "userId",
                    "raw"
                  ],
                  "description": "A Worksnaps user assignment record."
                },
                "description": "The project members returned when includeUserAssignment is enabled."
              },
              "raw": {
                "type": "object",
                "additionalProperties": true,
                "description": "The raw Worksnaps project payload."
              }
            },
            "additionalProperties": true,
            "required": [
              "id",
              "name",
              "raw"
            ],
            "description": "A normalized Worksnaps project record."
          }
        },
        "additionalProperties": false,
        "required": [
          "project"
        ],
        "description": "The Worksnaps project detail response."
      }
    },
    {
      "id": "worksnaps.get_project_time_entry",
      "service": "worksnaps",
      "name": "get_project_time_entry",
      "description": "Read one Worksnaps time entry by project ID and time entry ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "integer",
            "minimum": 1,
            "description": "The Worksnaps project ID that owns the time entry."
          },
          "timeEntryId": {
            "type": "integer",
            "minimum": 1,
            "description": "The Worksnaps time entry ID to retrieve."
          }
        },
        "additionalProperties": false,
        "required": [
          "projectId",
          "timeEntryId"
        ],
        "description": "Input parameters for reading one Worksnaps time entry."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "timeEntry": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "minimum": 1,
                "description": "The Worksnaps time entry ID."
              },
              "loggedTimestamp": {
                "type": "string",
                "minLength": 1,
                "description": "The timestamp when Worksnaps logged the entry.",
                "pattern": "^[0-9]+$"
              },
              "fromTimestamp": {
                "type": "string",
                "minLength": 1,
                "description": "The start timestamp of the time entry.",
                "pattern": "^[0-9]+$"
              },
              "durationInMinutes": {
                "type": "integer",
                "minimum": 0,
                "description": "The duration of the time entry in minutes."
              },
              "type": {
                "type": "string",
                "minLength": 1,
                "description": "The Worksnaps time entry type."
              },
              "projectId": {
                "type": "integer",
                "minimum": 1,
                "description": "The Worksnaps project ID."
              },
              "userId": {
                "type": "integer",
                "minimum": 1,
                "description": "The Worksnaps user ID."
              },
              "taskId": {
                "type": "integer",
                "minimum": 1,
                "description": "The Worksnaps task ID."
              },
              "userComment": {
                "type": "string",
                "minLength": 1,
                "description": "The user comment attached to the time entry."
              },
              "thumbnailUrl": {
                "type": "string",
                "minLength": 1,
                "description": "The thumbnail screenshot URL."
              },
              "webcamUrl": {
                "type": "string",
                "minLength": 1,
                "description": "The webcam snapshot URL."
              },
              "activityLevel": {
                "type": "integer",
                "minimum": 0,
                "description": "The activity level reported by Worksnaps."
              },
              "raw": {
                "type": "object",
                "additionalProperties": true,
                "description": "The raw Worksnaps time entry payload."
              }
            },
            "additionalProperties": true,
            "required": [
              "id",
              "loggedTimestamp",
              "fromTimestamp",
              "durationInMinutes",
              "type",
              "raw"
            ],
            "description": "A normalized Worksnaps time entry record."
          }
        },
        "additionalProperties": false,
        "required": [
          "timeEntry"
        ],
        "description": "The Worksnaps time entry detail response."
      }
    },
    {
      "id": "worksnaps.get_project_time_report",
      "service": "worksnaps",
      "name": "get_project_time_report",
      "description": "Read a Worksnaps project report for a bounded time window and user set.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "integer",
            "minimum": 1,
            "description": "The Worksnaps project ID whose report should be generated."
          },
          "reportType": {
            "type": "string",
            "enum": [
              "time_entries",
              "time_summary"
            ],
            "description": "The Worksnaps report type to request."
          },
          "fromTimestamp": {
            "type": "string",
            "minLength": 1,
            "description": "The starting Unix timestamp string at a 10-minute boundary.",
            "pattern": "^[0-9]+$"
          },
          "toTimestamp": {
            "type": "string",
            "minLength": 1,
            "description": "The ending Unix timestamp string at a 10-minute boundary.",
            "pattern": "^[0-9]+$"
          },
          "userIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1,
              "description": "A Worksnaps numeric identifier."
            },
            "description": "A non-empty list of Worksnaps numeric identifiers.",
            "minItems": 1
          },
          "taskIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1,
              "description": "A Worksnaps numeric identifier."
            },
            "description": "A non-empty list of Worksnaps numeric identifiers.",
            "minItems": 1
          },
          "timeEntryType": {
            "type": "string",
            "enum": [
              "online",
              "offline"
            ],
            "description": "The Worksnaps time entry type filter."
          }
        },
        "additionalProperties": false,
        "required": [
          "projectId",
          "reportType",
          "fromTimestamp",
          "toTimestamp",
          "userIds"
        ],
        "description": "Input parameters for reading a Worksnaps project report."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "reportType": {
            "type": "string",
            "enum": [
              "time_entries",
              "time_summary"
            ],
            "description": "The Worksnaps report type to request."
          },
          "reportLines": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "userId": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The Worksnaps user ID."
                },
                "projectId": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The Worksnaps project ID."
                },
                "durationInMinutes": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "The reported duration in minutes."
                },
                "taskId": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The Worksnaps task ID."
                },
                "taskName": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The Worksnaps task name."
                },
                "userComment": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The reported user comment."
                },
                "timeEntryType": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The Worksnaps time entry type."
                },
                "raw": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "The raw Worksnaps report line payload."
                }
              },
              "additionalProperties": true,
              "required": [
                "userId",
                "projectId",
                "durationInMinutes",
                "raw"
              ],
              "description": "A normalized Worksnaps project report line."
            },
            "description": "The Worksnaps report lines returned for the request."
          }
        },
        "additionalProperties": false,
        "required": [
          "reportType",
          "reportLines"
        ],
        "description": "The Worksnaps project report response."
      }
    },
    {
      "id": "worksnaps.get_task",
      "service": "worksnaps",
      "name": "get_task",
      "description": "Read one Worksnaps task by project ID and task ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "integer",
            "minimum": 1,
            "description": "The Worksnaps project ID that owns the task."
          },
          "taskId": {
            "type": "integer",
            "minimum": 1,
            "description": "The Worksnaps task ID to retrieve."
          }
        },
        "additionalProperties": false,
        "required": [
          "projectId",
          "taskId"
        ],
        "description": "Input parameters for reading one Worksnaps task."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "task": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "minimum": 1,
                "description": "The Worksnaps task ID."
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "The Worksnaps task name."
              },
              "description": {
                "type": "string",
                "minLength": 1,
                "description": "The Worksnaps task description."
              },
              "taskAssignments": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "integer",
                      "minimum": 1,
                      "description": "The Worksnaps task assignment ID."
                    },
                    "projectId": {
                      "type": "integer",
                      "minimum": 1,
                      "description": "The Worksnaps project ID."
                    },
                    "taskId": {
                      "type": "integer",
                      "minimum": 1,
                      "description": "The Worksnaps task ID."
                    },
                    "userId": {
                      "type": "integer",
                      "minimum": 1,
                      "description": "The Worksnaps user ID."
                    },
                    "raw": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "The raw Worksnaps task assignment payload."
                    }
                  },
                  "additionalProperties": true,
                  "description": "A Worksnaps task assignment record."
                },
                "description": "The task assignments returned when includeTaskAssignment is enabled."
              },
              "raw": {
                "type": "object",
                "additionalProperties": true,
                "description": "The raw Worksnaps task payload."
              }
            },
            "additionalProperties": true,
            "required": [
              "id",
              "name",
              "raw"
            ],
            "description": "A normalized Worksnaps task record."
          }
        },
        "additionalProperties": false,
        "required": [
          "task"
        ],
        "description": "The Worksnaps task detail response."
      }
    },
    {
      "id": "worksnaps.list_project_task_assignments",
      "service": "worksnaps",
      "name": "list_project_task_assignments",
      "description": "List task assignments for one Worksnaps project.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "integer",
            "minimum": 1,
            "description": "The Worksnaps project ID whose task assignments should be listed."
          }
        },
        "additionalProperties": false,
        "required": [
          "projectId"
        ],
        "description": "Input parameters for listing Worksnaps task assignments in one project."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "taskAssignments": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The Worksnaps task assignment ID."
                },
                "projectId": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The Worksnaps project ID."
                },
                "taskId": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The Worksnaps task ID."
                },
                "userId": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The Worksnaps user ID."
                },
                "raw": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "The raw Worksnaps task assignment payload."
                }
              },
              "additionalProperties": true,
              "description": "A Worksnaps task assignment record."
            },
            "description": "The task assignments returned for the Worksnaps project."
          }
        },
        "additionalProperties": false,
        "required": [
          "taskAssignments"
        ],
        "description": "The Worksnaps task assignment list response."
      }
    },
    {
      "id": "worksnaps.list_project_tasks",
      "service": "worksnaps",
      "name": "list_project_tasks",
      "description": "List tasks that belong to one Worksnaps project.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "integer",
            "minimum": 1,
            "description": "The Worksnaps project ID whose tasks should be listed."
          },
          "includeTaskAssignment": {
            "type": "boolean",
            "description": "Whether Worksnaps should include task assignments in each task record."
          }
        },
        "additionalProperties": false,
        "required": [
          "projectId"
        ],
        "description": "Input parameters for listing tasks in one Worksnaps project."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "tasks": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The Worksnaps task ID."
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The Worksnaps task name."
                },
                "description": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The Worksnaps task description."
                },
                "taskAssignments": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "integer",
                        "minimum": 1,
                        "description": "The Worksnaps task assignment ID."
                      },
                      "projectId": {
                        "type": "integer",
                        "minimum": 1,
                        "description": "The Worksnaps project ID."
                      },
                      "taskId": {
                        "type": "integer",
                        "minimum": 1,
                        "description": "The Worksnaps task ID."
                      },
                      "userId": {
                        "type": "integer",
                        "minimum": 1,
                        "description": "The Worksnaps user ID."
                      },
                      "raw": {
                        "type": "object",
                        "additionalProperties": true,
                        "description": "The raw Worksnaps task assignment payload."
                      }
                    },
                    "additionalProperties": true,
                    "description": "A Worksnaps task assignment record."
                  },
                  "description": "The task assignments returned when includeTaskAssignment is enabled."
                },
                "raw": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "The raw Worksnaps task payload."
                }
              },
              "additionalProperties": true,
              "required": [
                "id",
                "name",
                "raw"
              ],
              "description": "A normalized Worksnaps task record."
            },
            "description": "The Worksnaps tasks returned for the request."
          }
        },
        "additionalProperties": false,
        "required": [
          "tasks"
        ],
        "description": "The Worksnaps task list response."
      }
    },
    {
      "id": "worksnaps.list_project_time_entries",
      "service": "worksnaps",
      "name": "list_project_time_entries",
      "description": "List Worksnaps time entries in one project for one or more users.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "integer",
            "minimum": 1,
            "description": "The Worksnaps project ID whose time entries should be listed."
          },
          "userIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1,
              "description": "A Worksnaps numeric identifier."
            },
            "description": "A non-empty list of Worksnaps numeric identifiers.",
            "minItems": 1
          },
          "fromTimestamp": {
            "type": "string",
            "minLength": 1,
            "description": "The starting Unix timestamp string at a 10-minute boundary.",
            "pattern": "^[0-9]+$"
          },
          "toTimestamp": {
            "type": "string",
            "minLength": 1,
            "description": "The ending Unix timestamp string at a 10-minute boundary.",
            "pattern": "^[0-9]+$"
          },
          "taskIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1,
              "description": "A Worksnaps numeric identifier."
            },
            "description": "A non-empty list of Worksnaps numeric identifiers.",
            "minItems": 1
          },
          "timeEntryType": {
            "type": "string",
            "enum": [
              "online",
              "offline"
            ],
            "description": "The Worksnaps time entry type filter."
          }
        },
        "additionalProperties": false,
        "required": [
          "projectId",
          "userIds",
          "fromTimestamp",
          "toTimestamp"
        ],
        "description": "Input parameters for listing Worksnaps time entries in one project."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "timeEntries": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The Worksnaps time entry ID."
                },
                "loggedTimestamp": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The timestamp when Worksnaps logged the entry.",
                  "pattern": "^[0-9]+$"
                },
                "fromTimestamp": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The start timestamp of the time entry.",
                  "pattern": "^[0-9]+$"
                },
                "durationInMinutes": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "The duration of the time entry in minutes."
                },
                "type": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The Worksnaps time entry type."
                },
                "projectId": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The Worksnaps project ID."
                },
                "userId": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The Worksnaps user ID."
                },
                "taskId": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The Worksnaps task ID."
                },
                "userComment": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The user comment attached to the time entry."
                },
                "thumbnailUrl": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The thumbnail screenshot URL."
                },
                "webcamUrl": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The webcam snapshot URL."
                },
                "activityLevel": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "The activity level reported by Worksnaps."
                },
                "raw": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "The raw Worksnaps time entry payload."
                }
              },
              "additionalProperties": true,
              "required": [
                "id",
                "loggedTimestamp",
                "fromTimestamp",
                "durationInMinutes",
                "type",
                "raw"
              ],
              "description": "A normalized Worksnaps time entry record."
            },
            "description": "The Worksnaps time entries returned for the request."
          }
        },
        "additionalProperties": false,
        "required": [
          "timeEntries"
        ],
        "description": "The Worksnaps time entry list response."
      }
    },
    {
      "id": "worksnaps.list_project_user_assignments",
      "service": "worksnaps",
      "name": "list_project_user_assignments",
      "description": "List user assignments for one Worksnaps project.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "integer",
            "minimum": 1,
            "description": "The Worksnaps project ID whose members should be listed."
          }
        },
        "additionalProperties": false,
        "required": [
          "projectId"
        ],
        "description": "Input parameters for listing Worksnaps project members."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "userAssignments": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The Worksnaps user assignment ID."
                },
                "projectId": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The Worksnaps project ID."
                },
                "userId": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The Worksnaps user ID."
                },
                "userFirstName": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The assigned user's first name."
                },
                "userLastName": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The assigned user's last name."
                },
                "userEmail": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The assigned user's email address."
                },
                "role": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The assigned project role."
                },
                "raw": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "The raw Worksnaps user assignment payload."
                }
              },
              "additionalProperties": true,
              "required": [
                "id",
                "projectId",
                "userId",
                "raw"
              ],
              "description": "A Worksnaps user assignment record."
            },
            "description": "The user assignments returned for the Worksnaps project."
          }
        },
        "additionalProperties": false,
        "required": [
          "userAssignments"
        ],
        "description": "The Worksnaps user assignment list response."
      }
    },
    {
      "id": "worksnaps.list_projects",
      "service": "worksnaps",
      "name": "list_projects",
      "description": "List Worksnaps projects that the current user is involved in.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "includeUserAssignment": {
            "type": "boolean",
            "description": "Whether Worksnaps should include project member assignments in each project record."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Worksnaps projects."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "projects": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The Worksnaps project ID."
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The Worksnaps project name."
                },
                "description": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The Worksnaps project description."
                },
                "status": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The Worksnaps project status."
                },
                "userAssignments": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "integer",
                        "minimum": 1,
                        "description": "The Worksnaps user assignment ID."
                      },
                      "projectId": {
                        "type": "integer",
                        "minimum": 1,
                        "description": "The Worksnaps project ID."
                      },
                      "userId": {
                        "type": "integer",
                        "minimum": 1,
                        "description": "The Worksnaps user ID."
                      },
                      "userFirstName": {
                        "type": "string",
                        "minLength": 1,
                        "description": "The assigned user's first name."
                      },
                      "userLastName": {
                        "type": "string",
                        "minLength": 1,
                        "description": "The assigned user's last name."
                      },
                      "userEmail": {
                        "type": "string",
                        "minLength": 1,
                        "description": "The assigned user's email address."
                      },
                      "role": {
                        "type": "string",
                        "minLength": 1,
                        "description": "The assigned project role."
                      },
                      "raw": {
                        "type": "object",
                        "additionalProperties": true,
                        "description": "The raw Worksnaps user assignment payload."
                      }
                    },
                    "additionalProperties": true,
                    "required": [
                      "id",
                      "projectId",
                      "userId",
                      "raw"
                    ],
                    "description": "A Worksnaps user assignment record."
                  },
                  "description": "The project members returned when includeUserAssignment is enabled."
                },
                "raw": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "The raw Worksnaps project payload."
                }
              },
              "additionalProperties": true,
              "required": [
                "id",
                "name",
                "raw"
              ],
              "description": "A normalized Worksnaps project record."
            },
            "description": "The Worksnaps projects returned for the request."
          }
        },
        "additionalProperties": false,
        "required": [
          "projects"
        ],
        "description": "The Worksnaps project list response."
      }
    }
  ]
}
