# Organizations

Organization (entity/account) management operations

## List all organizations

> Returns all organizations accessible to the authenticated user

```json
{"openapi":"3.0.3","info":{"title":"Kaana Organizations API","version":"1.0.0"},"tags":[{"name":"Organizations","description":"Organization (entity/account) 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":{"Organization":{"type":"object","required":["id","name","type","status","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique organization identifier"},"name":{"type":"string","description":"Organization name"},"type":{"type":"string","enum":["customer","partner","vendor","prospect"],"description":"Organization type"},"status":{"type":"string","enum":["active","inactive","churned"],"description":"Organization status"},"industry":{"type":"string","nullable":true,"description":"Industry category"},"website":{"type":"string","nullable":true,"description":"Organization website URL"},"description":{"type":"string","nullable":true,"description":"Organization description"},"metadata":{"type":"object","nullable":true,"description":"Additional organization metadata"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp"}}}}},"paths":{"/organizations":{"get":{"tags":["Organizations"],"summary":"List all organizations","description":"Returns all organizations accessible to the authenticated user","operationId":"listOrganizations","responses":{"200":{"description":"List of organizations","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Organization"}}}}},"401":{"description":"Not authenticated"},"403":{"description":"Access denied"},"500":{"description":"Server error"}}}}}}
```

## Create a new organization

> Creates a new organization. Requires consultant or admin role.

```json
{"openapi":"3.0.3","info":{"title":"Kaana Organizations API","version":"1.0.0"},"tags":[{"name":"Organizations","description":"Organization (entity/account) 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":{"OrganizationCreate":{"type":"object","required":["name","type","status"],"properties":{"name":{"type":"string","description":"Organization name"},"type":{"type":"string","enum":["customer","partner","vendor","prospect"]},"status":{"type":"string","enum":["active","inactive","churned"],"default":"active"},"industry":{"type":"string","nullable":true},"website":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"metadata":{"type":"object","nullable":true}}},"Organization":{"type":"object","required":["id","name","type","status","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique organization identifier"},"name":{"type":"string","description":"Organization name"},"type":{"type":"string","enum":["customer","partner","vendor","prospect"],"description":"Organization type"},"status":{"type":"string","enum":["active","inactive","churned"],"description":"Organization status"},"industry":{"type":"string","nullable":true,"description":"Industry category"},"website":{"type":"string","nullable":true,"description":"Organization website URL"},"description":{"type":"string","nullable":true,"description":"Organization description"},"metadata":{"type":"object","nullable":true,"description":"Additional organization metadata"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp"}}}}},"paths":{"/organizations":{"post":{"tags":["Organizations"],"summary":"Create a new organization","description":"Creates a new organization. Requires consultant or admin role.","operationId":"createOrganization","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationCreate"}}}},"responses":{"200":{"description":"Organization created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}}},"400":{"description":"Validation error"},"401":{"description":"Not authenticated"},"403":{"description":"Permission denied"},"500":{"description":"Server error"}}}}}}
```

## Get an organization

> Returns a specific organization by ID

```json
{"openapi":"3.0.3","info":{"title":"Kaana Organizations API","version":"1.0.0"},"tags":[{"name":"Organizations","description":"Organization (entity/account) 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":{"Organization":{"type":"object","required":["id","name","type","status","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique organization identifier"},"name":{"type":"string","description":"Organization name"},"type":{"type":"string","enum":["customer","partner","vendor","prospect"],"description":"Organization type"},"status":{"type":"string","enum":["active","inactive","churned"],"description":"Organization status"},"industry":{"type":"string","nullable":true,"description":"Industry category"},"website":{"type":"string","nullable":true,"description":"Organization website URL"},"description":{"type":"string","nullable":true,"description":"Organization description"},"metadata":{"type":"object","nullable":true,"description":"Additional organization metadata"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp"}}}}},"paths":{"/organizations/{id}":{"get":{"tags":["Organizations"],"summary":"Get an organization","description":"Returns a specific organization by ID","operationId":"getOrganization","parameters":[{"name":"id","in":"path","required":true,"description":"Organization ID","schema":{"type":"integer"}}],"responses":{"200":{"description":"Organization details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}}},"401":{"description":"Not authenticated"},"403":{"description":"Access denied"},"404":{"description":"Organization not found"},"500":{"description":"Server error"}}}}}}
```

## Update an organization

> Updates an existing organization

```json
{"openapi":"3.0.3","info":{"title":"Kaana Organizations API","version":"1.0.0"},"tags":[{"name":"Organizations","description":"Organization (entity/account) 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":{"OrganizationUpdate":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["customer","partner","vendor","prospect"]},"status":{"type":"string","enum":["active","inactive","churned"]},"industry":{"type":"string","nullable":true},"website":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"metadata":{"type":"object","nullable":true}}},"Organization":{"type":"object","required":["id","name","type","status","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique organization identifier"},"name":{"type":"string","description":"Organization name"},"type":{"type":"string","enum":["customer","partner","vendor","prospect"],"description":"Organization type"},"status":{"type":"string","enum":["active","inactive","churned"],"description":"Organization status"},"industry":{"type":"string","nullable":true,"description":"Industry category"},"website":{"type":"string","nullable":true,"description":"Organization website URL"},"description":{"type":"string","nullable":true,"description":"Organization description"},"metadata":{"type":"object","nullable":true,"description":"Additional organization metadata"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp"}}}}},"paths":{"/organizations/{id}":{"put":{"tags":["Organizations"],"summary":"Update an organization","description":"Updates an existing organization","operationId":"updateOrganization","parameters":[{"name":"id","in":"path","required":true,"description":"Organization ID","schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationUpdate"}}}},"responses":{"200":{"description":"Organization updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}}},"401":{"description":"Not authenticated"},"403":{"description":"Permission denied"},"404":{"description":"Organization not found"},"500":{"description":"Server error"}}}}}}
```

## Delete an organization

> Deletes an organization. Requires consultant or admin role.

```json
{"openapi":"3.0.3","info":{"title":"Kaana Organizations API","version":"1.0.0"},"tags":[{"name":"Organizations","description":"Organization (entity/account) 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":{"/organizations/{id}":{"delete":{"tags":["Organizations"],"summary":"Delete an organization","description":"Deletes an organization. Requires consultant or admin role.","operationId":"deleteOrganization","parameters":[{"name":"id","in":"path","required":true,"description":"Organization ID","schema":{"type":"integer"}}],"responses":{"204":{"description":"Organization deleted successfully"},"400":{"description":"Cannot delete organization with related items"},"401":{"description":"Not authenticated"},"403":{"description":"Permission denied"},"404":{"description":"Organization not found"},"500":{"description":"Server error"}}}}}}
```

## Duplicate an organization

> Creates a copy of an existing organization

```json
{"openapi":"3.0.3","info":{"title":"Kaana Organizations API","version":"1.0.0"},"tags":[{"name":"Organizations","description":"Organization (entity/account) 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":{"Organization":{"type":"object","required":["id","name","type","status","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique organization identifier"},"name":{"type":"string","description":"Organization name"},"type":{"type":"string","enum":["customer","partner","vendor","prospect"],"description":"Organization type"},"status":{"type":"string","enum":["active","inactive","churned"],"description":"Organization status"},"industry":{"type":"string","nullable":true,"description":"Industry category"},"website":{"type":"string","nullable":true,"description":"Organization website URL"},"description":{"type":"string","nullable":true,"description":"Organization description"},"metadata":{"type":"object","nullable":true,"description":"Additional organization metadata"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp"}}}}},"paths":{"/organizations/{id}/duplicate":{"post":{"tags":["Organizations"],"summary":"Duplicate an organization","description":"Creates a copy of an existing organization","operationId":"duplicateOrganization","parameters":[{"name":"id","in":"path","required":true,"description":"Organization ID to duplicate","schema":{"type":"integer"}}],"responses":{"200":{"description":"Organization duplicated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}}},"401":{"description":"Not authenticated"},"403":{"description":"Permission denied"},"404":{"description":"Organization not found"},"500":{"description":"Server error"}}}}}}
```

## List tasks for an organization

> Returns all tasks associated with a specific organization

```json
{"openapi":"3.0.3","info":{"title":"Kaana Organizations API","version":"1.0.0"},"tags":[{"name":"Organizations","description":"Organization (entity/account) 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":{"/organizations/{organizationId}/tasks":{"get":{"tags":["Organizations"],"summary":"List tasks for an organization","description":"Returns all tasks associated with a specific organization","operationId":"listOrganizationTasks","parameters":[{"name":"organizationId","in":"path","required":true,"description":"Organization ID","schema":{"type":"integer"}}],"responses":{"200":{"description":"List of organization tasks","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}},"401":{"description":"Not authenticated"},"403":{"description":"Access denied"},"500":{"description":"Server error"}}}}}}
```

## List projects for an organization

> Returns all projects associated with a specific organization

```json
{"openapi":"3.0.3","info":{"title":"Kaana Organizations API","version":"1.0.0"},"tags":[{"name":"Organizations","description":"Organization (entity/account) 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":{"/organizations/{organizationId}/projects":{"get":{"tags":["Organizations"],"summary":"List projects for an organization","description":"Returns all projects associated with a specific organization","operationId":"listOrganizationProjects","parameters":[{"name":"organizationId","in":"path","required":true,"description":"Organization ID","schema":{"type":"integer"}}],"responses":{"200":{"description":"List of organization projects","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}},"401":{"description":"Not authenticated"},"403":{"description":"Access denied"},"500":{"description":"Server error"}}}}}}
```

## List documents for an organization

> Returns all documents associated with a specific organization

```json
{"openapi":"3.0.3","info":{"title":"Kaana Organizations API","version":"1.0.0"},"tags":[{"name":"Organizations","description":"Organization (entity/account) 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":{"/organizations/{organizationId}/documents":{"get":{"tags":["Organizations"],"summary":"List documents for an organization","description":"Returns all documents associated with a specific organization","operationId":"listOrganizationDocuments","parameters":[{"name":"organizationId","in":"path","required":true,"description":"Organization ID","schema":{"type":"integer"}}],"responses":{"200":{"description":"List of organization documents","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}},"401":{"description":"Not authenticated"},"403":{"description":"Access denied"},"500":{"description":"Server error"}}}}}}
```

## List members of an organization

> Returns all contact members of a specific organization

```json
{"openapi":"3.0.3","info":{"title":"Kaana Organizations API","version":"1.0.0"},"tags":[{"name":"Organizations","description":"Organization (entity/account) 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":{"OrganizationMember":{"type":"object","properties":{"organizationId":{"type":"integer"},"contactId":{"type":"integer"},"role":{"type":"string","enum":["primary","secondary","observer"]},"contact":{"type":"object","properties":{"id":{"type":"integer"},"fullName":{"type":"string"},"email":{"type":"string"},"title":{"type":"string","nullable":true}}}}}}},"paths":{"/organizations/{organizationId}/members":{"get":{"tags":["Organizations"],"summary":"List members of an organization","description":"Returns all contact members of a specific organization","operationId":"listOrganizationMembers","parameters":[{"name":"organizationId","in":"path","required":true,"description":"Organization ID","schema":{"type":"integer"}}],"responses":{"200":{"description":"List of organization members","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationMember"}}}}},"401":{"description":"Not authenticated"},"500":{"description":"Server error"}}}}}}
```

## Add a member to an organization

> Associates a contact with an organization

```json
{"openapi":"3.0.3","info":{"title":"Kaana Organizations API","version":"1.0.0"},"tags":[{"name":"Organizations","description":"Organization (entity/account) 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":{"/organizations/{organizationId}/members":{"post":{"tags":["Organizations"],"summary":"Add a member to an organization","description":"Associates a contact with an organization","operationId":"addOrganizationMember","parameters":[{"name":"organizationId","in":"path","required":true,"description":"Organization ID","schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["contactId","role"],"properties":{"contactId":{"type":"integer","description":"Contact ID to add"},"role":{"type":"string","enum":["primary","secondary","observer"],"description":"Member role"}}}}}},"responses":{"200":{"description":"Member added successfully"},"401":{"description":"Not authenticated"},"403":{"description":"Permission denied"},"500":{"description":"Server error"}}}}}}
```

## Remove a member from an organization

> Removes the association between a contact and an organization

```json
{"openapi":"3.0.3","info":{"title":"Kaana Organizations API","version":"1.0.0"},"tags":[{"name":"Organizations","description":"Organization (entity/account) 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":{"/organizations/{organizationId}/members/{contactId}":{"delete":{"tags":["Organizations"],"summary":"Remove a member from an organization","description":"Removes the association between a contact and an organization","operationId":"removeOrganizationMember","parameters":[{"name":"organizationId","in":"path","required":true,"description":"Organization ID","schema":{"type":"integer"}},{"name":"contactId","in":"path","required":true,"description":"Contact ID","schema":{"type":"integer"}}],"responses":{"204":{"description":"Member removed successfully"},"401":{"description":"Not authenticated"},"403":{"description":"Permission denied"},"404":{"description":"Member not found"},"500":{"description":"Server error"}}}}}}
```

## Update an organization member

> Updates a member's role in the organization

```json
{"openapi":"3.0.3","info":{"title":"Kaana Organizations API","version":"1.0.0"},"tags":[{"name":"Organizations","description":"Organization (entity/account) 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":{"/organizations/{organizationId}/members/{contactId}":{"patch":{"tags":["Organizations"],"summary":"Update an organization member","description":"Updates a member's role in the organization","operationId":"updateOrganizationMember","parameters":[{"name":"organizationId","in":"path","required":true,"description":"Organization ID","schema":{"type":"integer"}},{"name":"contactId","in":"path","required":true,"description":"Contact ID","schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["primary","secondary","observer"]}}}}}},"responses":{"200":{"description":"Member updated successfully"},"401":{"description":"Not authenticated"},"403":{"description":"Permission denied"},"404":{"description":"Member not found"},"500":{"description":"Server error"}}}}}}
```
