# Activities

Activity management operations

## List all activities

> Returns all activities accessible to the authenticated user within their organization

```json
{"openapi":"3.0.3","info":{"title":"Kaana Activities API","version":"1.0.0"},"tags":[{"name":"Activities","description":"Activity management operations"}],"servers":[{"url":"/api","description":"API base path"}],"security":[{"sessionAuth":[]}],"components":{"securitySchemes":{"sessionAuth":{"type":"apiKey","in":"cookie","name":"connect.sid","description":"Session-based authentication via HTTP-only cookie"}},"schemas":{"ActivityWithRelations":{"allOf":[{"$ref":"#/components/schemas/Activity"},{"type":"object","properties":{"creator":{"type":"object","properties":{"id":{"type":"integer"},"username":{"type":"string"},"fullName":{"type":"string","nullable":true}}},"project":{"type":"object","nullable":true,"properties":{"id":{"type":"integer"},"title":{"type":"string"}}}}}]},"Activity":{"type":"object","required":["id","timestamp","type","description","creatorId","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique activity identifier"},"timestamp":{"type":"string","format":"date-time","description":"When the activity occurred"},"type":{"type":"string","enum":["note","email","phone_call","meeting","document","task","service","slack"],"description":"Activity type"},"subtype":{"type":"string","nullable":true,"description":"Activity subtype for categorization"},"description":{"type":"string","description":"Activity description/content"},"projectId":{"type":"integer","nullable":true,"description":"Associated project ID"},"organizationId":{"type":"integer","nullable":true,"description":"Associated organization ID"},"creatorId":{"type":"integer","description":"User ID who created the activity"},"metadata":{"type":"object","nullable":true,"description":"Additional activity metadata"},"evidence":{"type":"object","nullable":true,"description":"Supporting evidence/attachments"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp"}}}}},"paths":{"/activities":{"get":{"tags":["Activities"],"summary":"List all activities","description":"Returns all activities accessible to the authenticated user within their organization","operationId":"listActivities","responses":{"200":{"description":"List of activities","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ActivityWithRelations"}}}}},"401":{"description":"Not authenticated"},"403":{"description":"Access denied"},"500":{"description":"Server error"}}}}}}
```

## Create a new activity

> Creates a new activity (note, email, phone call, meeting, etc.)

```json
{"openapi":"3.0.3","info":{"title":"Kaana Activities API","version":"1.0.0"},"tags":[{"name":"Activities","description":"Activity management operations"}],"servers":[{"url":"/api","description":"API base path"}],"security":[{"sessionAuth":[]}],"components":{"securitySchemes":{"sessionAuth":{"type":"apiKey","in":"cookie","name":"connect.sid","description":"Session-based authentication via HTTP-only cookie"}},"schemas":{"ActivityCreate":{"type":"object","required":["timestamp","type","description"],"properties":{"timestamp":{"type":"string","format":"date-time","description":"When the activity occurred (ISO 8601 format)"},"type":{"type":"string","enum":["note","email","phone_call","meeting","document","task","service","slack"]},"subtype":{"type":"string","nullable":true},"description":{"type":"string","description":"Activity description/content"},"projectId":{"type":"integer","nullable":true,"description":"Project to associate with"},"organizationId":{"type":"integer","nullable":true,"description":"Organization to associate with"},"metadata":{"type":"object","nullable":true},"evidence":{"type":"object","nullable":true}}},"Activity":{"type":"object","required":["id","timestamp","type","description","creatorId","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique activity identifier"},"timestamp":{"type":"string","format":"date-time","description":"When the activity occurred"},"type":{"type":"string","enum":["note","email","phone_call","meeting","document","task","service","slack"],"description":"Activity type"},"subtype":{"type":"string","nullable":true,"description":"Activity subtype for categorization"},"description":{"type":"string","description":"Activity description/content"},"projectId":{"type":"integer","nullable":true,"description":"Associated project ID"},"organizationId":{"type":"integer","nullable":true,"description":"Associated organization ID"},"creatorId":{"type":"integer","description":"User ID who created the activity"},"metadata":{"type":"object","nullable":true,"description":"Additional activity metadata"},"evidence":{"type":"object","nullable":true,"description":"Supporting evidence/attachments"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp"}}}}},"paths":{"/activities":{"post":{"tags":["Activities"],"summary":"Create a new activity","description":"Creates a new activity (note, email, phone call, meeting, etc.)","operationId":"createActivity","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityCreate"}}}},"responses":{"200":{"description":"Activity created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Activity"}}}},"400":{"description":"Validation error"},"401":{"description":"Not authenticated"},"403":{"description":"Permission denied"},"404":{"description":"Project or organization not found"},"500":{"description":"Server error"}}}}}}
```

## Get an activity

> Returns a specific activity by ID

```json
{"openapi":"3.0.3","info":{"title":"Kaana Activities API","version":"1.0.0"},"tags":[{"name":"Activities","description":"Activity management operations"}],"servers":[{"url":"/api","description":"API base path"}],"security":[{"sessionAuth":[]}],"components":{"securitySchemes":{"sessionAuth":{"type":"apiKey","in":"cookie","name":"connect.sid","description":"Session-based authentication via HTTP-only cookie"}},"schemas":{"ActivityWithRelations":{"allOf":[{"$ref":"#/components/schemas/Activity"},{"type":"object","properties":{"creator":{"type":"object","properties":{"id":{"type":"integer"},"username":{"type":"string"},"fullName":{"type":"string","nullable":true}}},"project":{"type":"object","nullable":true,"properties":{"id":{"type":"integer"},"title":{"type":"string"}}}}}]},"Activity":{"type":"object","required":["id","timestamp","type","description","creatorId","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique activity identifier"},"timestamp":{"type":"string","format":"date-time","description":"When the activity occurred"},"type":{"type":"string","enum":["note","email","phone_call","meeting","document","task","service","slack"],"description":"Activity type"},"subtype":{"type":"string","nullable":true,"description":"Activity subtype for categorization"},"description":{"type":"string","description":"Activity description/content"},"projectId":{"type":"integer","nullable":true,"description":"Associated project ID"},"organizationId":{"type":"integer","nullable":true,"description":"Associated organization ID"},"creatorId":{"type":"integer","description":"User ID who created the activity"},"metadata":{"type":"object","nullable":true,"description":"Additional activity metadata"},"evidence":{"type":"object","nullable":true,"description":"Supporting evidence/attachments"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp"}}}}},"paths":{"/activities/{id}":{"get":{"tags":["Activities"],"summary":"Get an activity","description":"Returns a specific activity by ID","operationId":"getActivity","parameters":[{"name":"id","in":"path","required":true,"description":"Activity ID","schema":{"type":"integer"}}],"responses":{"200":{"description":"Activity details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityWithRelations"}}}},"401":{"description":"Not authenticated"},"403":{"description":"Access denied"},"404":{"description":"Activity not found"},"500":{"description":"Server error"}}}}}}
```

## List activities for a project

> Returns all activities associated with a specific project

```json
{"openapi":"3.0.3","info":{"title":"Kaana Activities API","version":"1.0.0"},"tags":[{"name":"Activities","description":"Activity management operations"}],"servers":[{"url":"/api","description":"API base path"}],"security":[{"sessionAuth":[]}],"components":{"securitySchemes":{"sessionAuth":{"type":"apiKey","in":"cookie","name":"connect.sid","description":"Session-based authentication via HTTP-only cookie"}},"schemas":{"ActivityWithRelations":{"allOf":[{"$ref":"#/components/schemas/Activity"},{"type":"object","properties":{"creator":{"type":"object","properties":{"id":{"type":"integer"},"username":{"type":"string"},"fullName":{"type":"string","nullable":true}}},"project":{"type":"object","nullable":true,"properties":{"id":{"type":"integer"},"title":{"type":"string"}}}}}]},"Activity":{"type":"object","required":["id","timestamp","type","description","creatorId","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique activity identifier"},"timestamp":{"type":"string","format":"date-time","description":"When the activity occurred"},"type":{"type":"string","enum":["note","email","phone_call","meeting","document","task","service","slack"],"description":"Activity type"},"subtype":{"type":"string","nullable":true,"description":"Activity subtype for categorization"},"description":{"type":"string","description":"Activity description/content"},"projectId":{"type":"integer","nullable":true,"description":"Associated project ID"},"organizationId":{"type":"integer","nullable":true,"description":"Associated organization ID"},"creatorId":{"type":"integer","description":"User ID who created the activity"},"metadata":{"type":"object","nullable":true,"description":"Additional activity metadata"},"evidence":{"type":"object","nullable":true,"description":"Supporting evidence/attachments"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp"}}}}},"paths":{"/projects/{projectId}/activities":{"get":{"tags":["Activities"],"summary":"List activities for a project","description":"Returns all activities associated with a specific project","operationId":"listProjectActivities","parameters":[{"name":"projectId","in":"path","required":true,"description":"Project ID","schema":{"type":"integer"}}],"responses":{"200":{"description":"List of project activities","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ActivityWithRelations"}}}}},"401":{"description":"Not authenticated"},"403":{"description":"Access denied"},"500":{"description":"Server error"}}}}}}
```

## List activities for an organization

> Returns all activities associated with a specific organization

```json
{"openapi":"3.0.3","info":{"title":"Kaana Activities API","version":"1.0.0"},"tags":[{"name":"Activities","description":"Activity management operations"}],"servers":[{"url":"/api","description":"API base path"}],"security":[{"sessionAuth":[]}],"components":{"securitySchemes":{"sessionAuth":{"type":"apiKey","in":"cookie","name":"connect.sid","description":"Session-based authentication via HTTP-only cookie"}},"schemas":{"ActivityWithRelations":{"allOf":[{"$ref":"#/components/schemas/Activity"},{"type":"object","properties":{"creator":{"type":"object","properties":{"id":{"type":"integer"},"username":{"type":"string"},"fullName":{"type":"string","nullable":true}}},"project":{"type":"object","nullable":true,"properties":{"id":{"type":"integer"},"title":{"type":"string"}}}}}]},"Activity":{"type":"object","required":["id","timestamp","type","description","creatorId","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique activity identifier"},"timestamp":{"type":"string","format":"date-time","description":"When the activity occurred"},"type":{"type":"string","enum":["note","email","phone_call","meeting","document","task","service","slack"],"description":"Activity type"},"subtype":{"type":"string","nullable":true,"description":"Activity subtype for categorization"},"description":{"type":"string","description":"Activity description/content"},"projectId":{"type":"integer","nullable":true,"description":"Associated project ID"},"organizationId":{"type":"integer","nullable":true,"description":"Associated organization ID"},"creatorId":{"type":"integer","description":"User ID who created the activity"},"metadata":{"type":"object","nullable":true,"description":"Additional activity metadata"},"evidence":{"type":"object","nullable":true,"description":"Supporting evidence/attachments"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp"}}}}},"paths":{"/organizations/{organizationId}/activities":{"get":{"tags":["Activities"],"summary":"List activities for an organization","description":"Returns all activities associated with a specific organization","operationId":"listOrganizationActivities","parameters":[{"name":"organizationId","in":"path","required":true,"description":"Organization ID","schema":{"type":"integer"}}],"responses":{"200":{"description":"List of organization activities","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ActivityWithRelations"}}}}},"401":{"description":"Not authenticated"},"403":{"description":"Access denied"},"500":{"description":"Server error"}}}}}}
```

## List comments on an activity

> Returns all comments for a specific activity

```json
{"openapi":"3.0.3","info":{"title":"Kaana Activities API","version":"1.0.0"},"tags":[{"name":"Activities","description":"Activity management operations"}],"servers":[{"url":"/api","description":"API base path"}],"security":[{"sessionAuth":[]}],"components":{"securitySchemes":{"sessionAuth":{"type":"apiKey","in":"cookie","name":"connect.sid","description":"Session-based authentication via HTTP-only cookie"}},"schemas":{"Comment":{"type":"object","required":["id","content","userId","createdAt","updatedAt"],"properties":{"id":{"type":"integer"},"content":{"type":"string"},"activityId":{"type":"integer","nullable":true},"userId":{"type":"integer"},"parentId":{"type":"integer","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"user":{"type":"object","properties":{"id":{"type":"integer"},"username":{"type":"string"},"fullName":{"type":"string"}}}}}}},"paths":{"/activities/{activityId}/comments":{"get":{"tags":["Activities"],"summary":"List comments on an activity","description":"Returns all comments for a specific activity","operationId":"listActivityComments","parameters":[{"name":"activityId","in":"path","required":true,"description":"Activity ID","schema":{"type":"integer"}}],"responses":{"200":{"description":"List of comments","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}}}}},"401":{"description":"Not authenticated"},"500":{"description":"Server error"}}}}}}
```

## Add a comment to an activity

> Creates a new comment on an activity

```json
{"openapi":"3.0.3","info":{"title":"Kaana Activities API","version":"1.0.0"},"tags":[{"name":"Activities","description":"Activity management operations"}],"servers":[{"url":"/api","description":"API base path"}],"security":[{"sessionAuth":[]}],"components":{"securitySchemes":{"sessionAuth":{"type":"apiKey","in":"cookie","name":"connect.sid","description":"Session-based authentication via HTTP-only cookie"}},"schemas":{"Comment":{"type":"object","required":["id","content","userId","createdAt","updatedAt"],"properties":{"id":{"type":"integer"},"content":{"type":"string"},"activityId":{"type":"integer","nullable":true},"userId":{"type":"integer"},"parentId":{"type":"integer","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"user":{"type":"object","properties":{"id":{"type":"integer"},"username":{"type":"string"},"fullName":{"type":"string"}}}}}}},"paths":{"/activities/{activityId}/comments":{"post":{"tags":["Activities"],"summary":"Add a comment to an activity","description":"Creates a new comment on an activity","operationId":"createActivityComment","parameters":[{"name":"activityId","in":"path","required":true,"description":"Activity ID","schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["content"],"properties":{"content":{"type":"string","description":"Comment content"},"parentId":{"type":"integer","nullable":true,"description":"Parent comment ID for replies"}}}}}},"responses":{"200":{"description":"Comment created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}}},"401":{"description":"Not authenticated"},"403":{"description":"Permission denied"},"500":{"description":"Server error"}}}}}}
```

## Add a tag to an activity

> Associates a tag with an activity

```json
{"openapi":"3.0.3","info":{"title":"Kaana Activities API","version":"1.0.0"},"tags":[{"name":"Activities","description":"Activity management operations"}],"servers":[{"url":"/api","description":"API base path"}],"security":[{"sessionAuth":[]}],"components":{"securitySchemes":{"sessionAuth":{"type":"apiKey","in":"cookie","name":"connect.sid","description":"Session-based authentication via HTTP-only cookie"}}},"paths":{"/activities/{activityId}/tags":{"post":{"tags":["Activities"],"summary":"Add a tag to an activity","description":"Associates a tag with an activity","operationId":"addActivityTag","parameters":[{"name":"activityId","in":"path","required":true,"description":"Activity ID","schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["tagId"],"properties":{"tagId":{"type":"integer","description":"Tag ID to add"}}}}}},"responses":{"200":{"description":"Tag added successfully"},"401":{"description":"Not authenticated"},"403":{"description":"Permission denied"},"500":{"description":"Server error"}}}}}}
```

## Remove a tag from an activity

> Removes the association between a tag and an activity

```json
{"openapi":"3.0.3","info":{"title":"Kaana Activities API","version":"1.0.0"},"tags":[{"name":"Activities","description":"Activity management operations"}],"servers":[{"url":"/api","description":"API base path"}],"security":[{"sessionAuth":[]}],"components":{"securitySchemes":{"sessionAuth":{"type":"apiKey","in":"cookie","name":"connect.sid","description":"Session-based authentication via HTTP-only cookie"}}},"paths":{"/activities/{activityId}/tags/{tagId}":{"delete":{"tags":["Activities"],"summary":"Remove a tag from an activity","description":"Removes the association between a tag and an activity","operationId":"removeActivityTag","parameters":[{"name":"activityId","in":"path","required":true,"description":"Activity ID","schema":{"type":"integer"}},{"name":"tagId","in":"path","required":true,"description":"Tag ID","schema":{"type":"integer"}}],"responses":{"204":{"description":"Tag removed successfully"},"401":{"description":"Not authenticated"},"403":{"description":"Permission denied"},"500":{"description":"Server error"}}}}}}
```
