openapi: 3.1.0 info: title: Mattermost REST Channels Users API version: '4' description: 'Mattermost REST API v4 for managing users, teams, channels, posts, threads, files, integrations, plugins, webhooks, slash commands, and OAuth applications on a self-hosted or cloud Mattermost server. Authentication uses Personal Access Tokens or session tokens carried as a Bearer token. ' contact: name: Mattermost API Documentation url: https://developers.mattermost.com/api-documentation servers: - url: https://{your-mattermost-server}/api/v4 description: Self-hosted Mattermost server variables: your-mattermost-server: default: your-mattermost-server.com description: Hostname of your Mattermost server security: - bearerAuth: [] tags: - name: Users paths: /users/login: post: tags: - Users summary: Login to Mattermost security: [] requestBody: required: true content: application/json: schema: type: object properties: login_id: type: string password: type: string token: type: string device_id: type: string responses: '200': description: Successful login. Session token returned in Token header. content: application/json: schema: $ref: '#/components/schemas/User' /users/logout: post: tags: - Users summary: End the user session responses: '200': description: Logged out /users: get: tags: - Users summary: List users parameters: - in: query name: page schema: type: integer default: 0 - in: query name: per_page schema: type: integer default: 60 - in: query name: in_team schema: type: string - in: query name: in_channel schema: type: string responses: '200': description: A page of users content: application/json: schema: type: array items: $ref: '#/components/schemas/User' post: tags: - Users summary: Create a user requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/User' responses: '201': description: User created content: application/json: schema: $ref: '#/components/schemas/User' /users/{user_id}: parameters: - in: path name: user_id required: true schema: type: string get: tags: - Users summary: Get a user responses: '200': description: User content: application/json: schema: $ref: '#/components/schemas/User' put: tags: - Users summary: Update a user requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/User' responses: '200': description: Updated user delete: tags: - Users summary: Deactivate a user responses: '200': description: Deactivated /users/{user_id}/patch: put: tags: - Users summary: Partially update a user parameters: - in: path name: user_id required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/User' responses: '200': description: Patched user /users/search: post: tags: - Users summary: Search users requestBody: required: true content: application/json: schema: type: object properties: term: type: string team_id: type: string in_channel_id: type: string not_in_channel_id: type: string allow_inactive: type: boolean responses: '200': description: Search results content: application/json: schema: type: array items: $ref: '#/components/schemas/User' /users/autocomplete: get: tags: - Users summary: Autocomplete users parameters: - in: query name: name required: true schema: type: string - in: query name: team_id schema: type: string - in: query name: channel_id schema: type: string responses: '200': description: Autocomplete results /users/{user_id}/sessions: get: tags: - Users summary: List active sessions for a user parameters: - in: path name: user_id required: true schema: type: string responses: '200': description: Sessions components: schemas: User: type: object properties: id: type: string username: type: string email: type: string first_name: type: string last_name: type: string roles: type: string create_at: type: integer update_at: type: integer securitySchemes: bearerAuth: type: http scheme: bearer description: Personal Access Token or session token issued by /users/login.