# Users

Operations related to users

## Get Users

> Retrieves a paginated list of users for the tenant with optional filters. Use metadata=\[campo=valor] format for metadata filtering.

```json
{"openapi":"3.0.0","info":{"title":"Salescaling API","version":"1.0"},"tags":[{"name":"Users","description":"Operations related to users"}],"servers":[{"url":"https://api.salescaling.com","description":"Base API URL"}],"security":[{},{"bearer":[]}],"paths":{"/api/v1/users":{"get":{"operationId":"PublicApiUserController_getUsers","summary":"Get Users","description":"Retrieves a paginated list of users for the tenant with optional filters. Use metadata=[campo=valor] format for metadata filtering.","parameters":[{"name":"page","required":false,"in":"query","description":"Page number for pagination (default: 1)","schema":{"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Number of items per page (default: 10)","schema":{"type":"number"}},{"name":"email","required":false,"in":"query","description":"Filter by email (partial match)","schema":{"type":"string"}},{"name":"phone","required":false,"in":"query","description":"Filter by phone (partial match)","schema":{"type":"string"}},{"name":"metadata","required":false,"in":"query","description":"Filter by metadata fields (format: [campo=valor]&[campo2=valor2])","schema":{"type":"array","items":{}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiGetUsersResponseDto"}}}},"401":{"description":"Unauthorized - missing or invalid API key or Bearer token"}},"tags":["Users"]}}},"components":{"schemas":{"PublicApiGetUsersResponseDto":{"type":"object","properties":{"statusCode":{"type":"number","default":200},"count":{"type":"number"},"error":{"type":"string","nullable":true},"data":{"description":"Array of users","type":"array","items":{"$ref":"#/components/schemas/PublicApiUserDto"}}},"required":["statusCode","count","error","data"]},"PublicApiUserDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the user"},"email":{"type":"string","description":"Email address of the user"},"firstName":{"type":"string","description":"First name of the user"},"lastName":{"type":"string","description":"Last name of the user"},"phone":{"type":"string","description":"Phone number of the user"},"position":{"type":"string","description":"Job position of the user","enum":["founder","c_level","engineering_product","sales_manager","account_executive","closer","sales_development_representative","marketing","customer_support_success","finance","business_analyst","operations","other"]},"metadata":{"type":"object","description":"Additional metadata for the user"},"personId":{"type":"string","description":"ID of the person associated with this user"}},"required":["id","email","firstName","lastName","personId"]}}}}
```

## Get User Meetings

> Returns meetings where the user is the owner and/or a participant (via person linked to the user). Paginated.

```json
{"openapi":"3.0.0","info":{"title":"Salescaling API","version":"1.0"},"tags":[{"name":"Users","description":"Operations related to users"}],"servers":[{"url":"https://api.salescaling.com","description":"Base API URL"}],"security":[{},{"bearer":[]}],"paths":{"/api/v1/users/{id}/meetings":{"get":{"operationId":"PublicApiUserController_getUserMeetings","summary":"Get User Meetings","description":"Returns meetings where the user is the owner and/or a participant (via person linked to the user). Paginated.","parameters":[{"name":"id","required":true,"in":"path","description":"User ID to list meetings for.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve.","schema":{"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Number of items per page.","schema":{"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiGetMeetingsResponseDto"}}}},"401":{"description":"Unauthorized - missing or invalid API key or Bearer token"}},"tags":["Users"]}}},"components":{"schemas":{"PublicApiGetMeetingsResponseDto":{"type":"object","properties":{"statusCode":{"type":"number","default":200},"count":{"type":"number"},"error":{"type":"string","nullable":true},"data":{"type":"array","items":{"$ref":"#/components/schemas/PublicApiMeetingDto"}}},"required":["statusCode","count","error","data"]},"PublicApiMeetingDto":{"type":"object","properties":{"meetingId":{"type":"string","description":"Unique identifier for the meeting"},"status":{"type":"string","enum":["scheduled","processing","completed"],"description":"Current status of the meeting"},"name":{"type":"string","description":"Name or title of the meeting"},"startDateTime":{"format":"date-time","type":"string","description":"Date and time when the meeting is scheduled to start"},"endDateTime":{"format":"date-time","type":"string","description":"Date and time when the meeting ended "},"duration":{"type":"number","description":"Duration of the meeting in seconds"},"description":{"type":"string","description":"Detailed description of the meeting"},"mediaType":{"type":"string","enum":["videocall","presential","phonecall"],"description":"Media type of the meeting"},"language":{"type":"string","description":"Language of the meeting in ISO 639-1 format"},"thumbnailUrl":{"type":"string","description":"URL of the meeting thumbnail image"},"meetingType":{"description":"Meeting type associated with this meeting ","allOf":[{"$ref":"#/components/schemas/PublicApiMeetingTypeDto"}]},"aiScore":{"type":"number","description":"AI score or rating of the meeting "},"url":{"type":"string","description":"URL of the meeting"},"calendarEventId":{"type":"string","description":"Unique identifier of the calendar event, if the meeting is associated with a calendar event"}},"required":["meetingId","status","name","startDateTime","url"]},"PublicApiMeetingTypeDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the meeting type"},"name":{"type":"string","description":"Descriptive name of the meeting type"}},"required":["id","name"]}}}}
```

## Update User Metadata

> Updates the metadata for a specific user

```json
{"openapi":"3.0.0","info":{"title":"Salescaling API","version":"1.0"},"tags":[{"name":"Users","description":"Operations related to users"}],"servers":[{"url":"https://api.salescaling.com","description":"Base API URL"}],"security":[{},{"bearer":[]}],"paths":{"/api/v1/users/{id}/metadata":{"put":{"operationId":"PublicApiUserController_updateUserMetadata","summary":"Update User Metadata","description":"Updates the metadata for a specific user","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiUserMetadataUpdateDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiUserMetadataResponseDto"}}}},"401":{"description":"Unauthorized - missing or invalid API key or Bearer token"}},"tags":["Users"]}}},"components":{"schemas":{"PublicApiUserMetadataUpdateDto":{"type":"object","properties":{"metadata":{"type":"object","description":"Metadata fields to update for the user"}},"required":["metadata"]},"PublicApiUserMetadataResponseDto":{"type":"object","properties":{"statusCode":{"type":"number","default":200},"count":{"type":"number"},"error":{"type":"string","nullable":true},"data":{"type":"object","description":"Updated user metadata"}},"required":["statusCode","count","error","data"]}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.salescaling.com/api/users.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
