{"info":{"_postman_id":"45cf8441-14c4-48a9-b286-fe332cfdfdf6","name":"Twiser User Integration Document","description":"<html><head></head><body><p><strong>Welcome to the official API documentation prepared for user integration of our Twiser Wokr and Twiser LXP products. This documentation details all the endpoints, parameters, and authorization processes that allow you to establish seamless user management and data exchange (e.g., user creation, update, and access to relevant data) between your external systems and the Twiser platforms. You can quickly access the documentation for the relevant product from the menu on the left. You will find all the necessary information here to complete your integration quickly and securely.</strong></p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"27134951","collectionId":"45cf8441-14c4-48a9-b286-fe332cfdfdf6","publishedId":"2sB2qcD1yv","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2025-07-01T11:10:39.000Z"},"item":[{"name":"Wokr User Integration Document V2.1","item":[{"name":"Login","item":[{"name":"Login","id":"ab3f990d-adea-4b6d-84fa-b8a99fe750c3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"Email\": \"{{integrationMail}}\",\n    \"Password\": \"{{integrationPassword}}\"\n}","options":{"raw":{"language":"json"}}},"url":"https://{{baseUrl}}/identity/api/auth/login","description":"<h4 id=\"request-parameters\"><strong>Request Parameters:</strong></h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Email</code></td>\n<td>string</td>\n<td>The e-mail information used in the authorization process.</td>\n</tr>\n<tr>\n<td><code>Password</code></td>\n<td>string</td>\n<td>The password information used in the authorization process.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-parameters\"><strong>Response Parameters:</strong></h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>UserId</code></td>\n<td>UserID is the unique information of the user created in Twiser.</td>\n</tr>\n<tr>\n<td><code>CompanyId</code></td>\n<td>It is the company identification number to which the user is affiliated. It can be obtained from Wokr Admin User Interface.</td>\n</tr>\n<tr>\n<td><code>IsFirstLogin</code></td>\n<td>It’s the indication of whether it is the first login. It has to be <code>false</code>.</td>\n</tr>\n<tr>\n<td><code>LoginProvider</code></td>\n<td>Login provider information.</td>\n</tr>\n<tr>\n<td><code>AccessTokenExpiryTime</code></td>\n<td>Token expiration time.</td>\n</tr>\n<tr>\n<td><code>AccessToken</code></td>\n<td>An access token is required to call any other APIs. It needs to be passed through as in the request header.</td>\n</tr>\n<tr>\n<td><code>RefreshTokenExpiryTime</code></td>\n<td>Renewed token expiry time.</td>\n</tr>\n<tr>\n<td><code>RefreshToken</code></td>\n<td>Refresh token used to obtain a new access token after expiration.</td>\n</tr>\n<tr>\n<td><code>Message</code></td>\n<td>Message status.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["identity","api","auth","login"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[{"id":"2883723a-a3e6-457f-8f5a-5637711740d8","name":"Login","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"Email\": \"integration@integration.com\",\n    \"Password\": \"Abc123!+\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api-demo.twiser.com/identity/api/auth/login"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"UserId\": \"a3dc14c7-9f3e-4d87-89a1-09a62b142ff2\",\n    \"CompanyId\": 1,\n    \"IsFirstLogin\": true,\n    \"LoginProvider\": \"Twiser\",\n    \"AccessTokenExpiryTime\": \"2023-06-15T14:32:19.8935482Z\",\n    \"AccessToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImFkbWluQHR3aXNlci5jb20yb2xlIjpbIlN1cGVyQWRtaW4iLCJJbnRlZ3JhdGlvbkFkbWluIl0sIm5iZiI6MTY0MDI1ODY4NCwiZXhwIjoxNjQwMzgwMjg0LCJpYXQiOjE2NDAyNTg2ODQsImlzcyI6Imh0dHBzOi8vbG9jYWxob3N0OjUwMTEiLCJhdWQiOiJodHRwczovL2xvY2FsaG9zdDo1MDAxIn0.Q0nfcvFKeCCCyZGInlgbw-m_dmiyk_OOey6Yg43zuqM\",\n    \"RefreshTokenExpiryTime\": \"2023-07-01T14:32:19.8935482Z\",\n    \"RefreshToken\": \"7f8e04d67e7a132ee0c9f7a2a1a238a7\",\n    \"Message\": \"Success\"\n}"}],"_postman_id":"ab3f990d-adea-4b6d-84fa-b8a99fe750c3"}],"id":"aef98082-ad4b-45de-a031-11416cba1006","_postman_id":"aef98082-ad4b-45de-a031-11416cba1006","description":""},{"name":"User","item":[{"name":"Get User List","id":"52c35e4b-7504-41b1-bbf4-c1a4e4b35b42","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{auth_token}}"}]},"isInherited":false},"method":"GET","header":[],"url":"https://{{baseUrl}}/identity/api/application-user/get-user-list?companyId=0","description":"<h4 id=\"response-parameters\">Response Parameters:</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Id</code></td>\n<td>string</td>\n<td>Unique identifier of the user (UUID format).</td>\n</tr>\n<tr>\n<td><code>CompanyId</code></td>\n<td>integer</td>\n<td>ID of the company to which the user is affiliated.</td>\n</tr>\n<tr>\n<td><code>OrganizationLevelId</code></td>\n<td>string</td>\n<td>ID of the organization level the user belongs to (nullable).</td>\n</tr>\n<tr>\n<td><code>OrganizationLevelText</code></td>\n<td>string</td>\n<td>Display name of the organization level (nullable).</td>\n</tr>\n<tr>\n<td><code>IsManager</code></td>\n<td>boolean</td>\n<td>Indicates whether the user is a manager.</td>\n</tr>\n<tr>\n<td><code>ParentId</code></td>\n<td>string</td>\n<td>ID of the manager or parent user in hierarchy (nullable).</td>\n</tr>\n<tr>\n<td><code>FirstName</code></td>\n<td>string</td>\n<td>User's first name.</td>\n</tr>\n<tr>\n<td><code>LastName</code></td>\n<td>string</td>\n<td>User's last name.</td>\n</tr>\n<tr>\n<td><code>DepartmentId</code></td>\n<td>string</td>\n<td>ID of the department the user is assigned to.</td>\n</tr>\n<tr>\n<td><code>Department</code></td>\n<td>string</td>\n<td>Name of the department.</td>\n</tr>\n<tr>\n<td><code>ImageUrl</code></td>\n<td>string</td>\n<td>URL to the user's profile image (nullable).</td>\n</tr>\n<tr>\n<td><code>Position</code></td>\n<td>string</td>\n<td>User's job title or position.</td>\n</tr>\n<tr>\n<td><code>Email</code></td>\n<td>string</td>\n<td>User's email address.</td>\n</tr>\n<tr>\n<td><code>BusinessUnit</code></td>\n<td>string</td>\n<td>Business unit the user is affiliated with (nullable).</td>\n</tr>\n<tr>\n<td><code>EmployeeId</code></td>\n<td>string</td>\n<td>Internal employee ID (nullable).</td>\n</tr>\n<tr>\n<td><code>HireDate</code></td>\n<td>string</td>\n<td>Date the user was hired (ISO 8601 format).</td>\n</tr>\n<tr>\n<td><code>IsPerformanceIncluded</code></td>\n<td>boolean</td>\n<td>Indicates whether the user is included in performance evaluations.</td>\n</tr>\n<tr>\n<td><code>MatrixManagerId</code></td>\n<td>string</td>\n<td>ID of the matrix manager if applicable (nullable).</td>\n</tr>\n<tr>\n<td><code>IsLeft</code></td>\n<td>boolean</td>\n<td>Indicates whether the user has left the company.</td>\n</tr>\n<tr>\n<td><code>IsDeleted</code></td>\n<td>boolean</td>\n<td>Indicates whether the user is marked as deleted in the system.</td>\n</tr>\n<tr>\n<td><code>IsActive</code></td>\n<td>boolean</td>\n<td>Indicates whether the user is currently active.</td>\n</tr>\n<tr>\n<td><code>Country</code></td>\n<td>string</td>\n<td>Country code where the user is located (e.g., \"TR\").</td>\n</tr>\n<tr>\n<td><code>Gender</code></td>\n<td>string</td>\n<td>User's gender (\"X\", \"M\", or \"F\").</td>\n</tr>\n<tr>\n<td><code>IsWhiteCollar</code></td>\n<td>boolean</td>\n<td>Indicates whether the user is a white-collar employee.</td>\n</tr>\n<tr>\n<td><code>IsTopManagement</code></td>\n<td>boolean</td>\n<td>Indicates whether the user is part of top management.</td>\n</tr>\n<tr>\n<td><code>Location</code></td>\n<td>string</td>\n<td>Location of the user (city or site).</td>\n</tr>\n<tr>\n<td><code>FullName</code></td>\n<td>string</td>\n<td>Full name of the user (concatenated first and last name).</td>\n</tr>\n<tr>\n<td>ExternalCode</td>\n<td>string</td>\n<td>Optional free-text code field</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["identity","api","application-user","get-user-list"],"host":["{{baseUrl}}"],"query":[{"key":"companyId","value":"0"}],"variable":[]}},"response":[{"id":"f75d46d1-cb0d-43ed-b39b-2d293be3964e","name":"Get User List","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer {{auth_token}}","type":"text"}],"url":{"raw":"api-demo.twiser.com/identity/api/application-user/get-user-list?companyId=360","host":["api-demo","twiser","com"],"path":["identity","api","application-user","get-user-list"],"query":[{"key":"companyId","value":"360"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"Id\": \"04384ad6-887c-4623-bde4-e421a6b1832b\",\n        \"CompanyId\": 360,\n        \"OrganizationLevelId\": null,\n        \"OrganizationLevelText\": null,\n        \"IsManager\": false,\n        \"ParentId\": null,\n        \"FirstName\": \"Deanna\",\n        \"LastName\": \"Bayer\",\n        \"DepartmentId\": null,\n        \"Department\": \"Optimization\",\n        \"ImageUrl\": null,\n        \"Position\": \"Global Security Analyst\",\n        \"Email\": \"DeannaBayer@google.com\",\n        \"BusinessUnit\": null,\n        \"EmployeeId\": null,\n        \"HireDate\": \"2022-10-10T00:00:00\",\n        \"IsPerformanceIncluded\": true,\n        \"MatrixManagerId\": null,\n        \"IsLeft\": false,\n        \"IsDeleted\": false,\n        \"IsActive\": true,\n        \"Country\": \"TR\",\n        \"Gender\": \"X\",\n        \"IsWhiteCollar\": true,\n        \"IsTopManagement\": false,\n        \"Location\": \"East Jadonport\",\n        \"FullName\": \"Deanna Bayer\",\n        \"ExternalCode\": \"1233\"\n    },\n    {\n        \"Id\": \"58be1621-b16d-46a5-ac8e-8d0f15c2d0c8\",\n        \"CompanyId\": 360,\n        \"OrganizationLevelId\": null,\n        \"OrganizationLevelText\": null,\n        \"IsManager\": false,\n        \"ParentId\": \"04384ad6-887c-4623-bde4-e421a6b1832b\",\n        \"FirstName\": \"Enos\",\n        \"LastName\": \"Reynolds\",\n        \"DepartmentId\": \"04384ad6-887c-4623-bde4-e421a6b1832b\",\n        \"Department\": \"Quality\",\n        \"ImageUrl\": null,\n        \"Position\": \"Internal Configuration Representative\",\n        \"Email\": \"EnosReynolds@google.com\",\n        \"BusinessUnit\": null,\n        \"EmployeeId\": null,\n        \"HireDate\": \"2022-10-10T00:00:00\",\n        \"IsPerformanceIncluded\": true,\n        \"MatrixManagerId\": null,\n        \"IsLeft\": false,\n        \"IsDeleted\": false,\n        \"IsActive\": true,\n        \"Country\": \"TR\",\n        \"Gender\": \"X\",\n        \"IsWhiteCollar\": true,\n        \"IsTopManagement\": false,\n        \"Location\": \"Ellisfort\",\n        \"FullName\": \"Enos Reynolds\",\n        \"ExternalCode\": \"A58\"\n    },\n    {\n        \"Id\": \"b423816a-293d-479e-b99d-b423cd67e078\",\n        \"CompanyId\": 360,\n        \"OrganizationLevelId\": null,\n        \"OrganizationLevelText\": null,\n        \"IsManager\": false,\n        \"ParentId\": \"04384ad6-887c-4623-bde4-e421a6b1832b\",\n        \"FirstName\": \"Uriah\",\n        \"LastName\": \"Reichel\",\n        \"DepartmentId\": \"04384ad6-887c-4623-bde4-e421a6b1832b\",\n        \"Department\": \"Optimization\",\n        \"ImageUrl\": null,\n        \"Position\": \"Customer Communications Associate\",\n        \"Email\": \"UriahReichel@google.com\",\n        \"BusinessUnit\": null,\n        \"EmployeeId\": null,\n        \"HireDate\": \"2022-10-10T00:00:00\",\n        \"IsPerformanceIncluded\": true,\n        \"MatrixManagerId\": null,\n        \"IsLeft\": false,\n        \"IsDeleted\": false,\n        \"IsActive\": true,\n        \"Country\": \"TR\",\n        \"Gender\": \"X\",\n        \"IsWhiteCollar\": true,\n        \"IsTopManagement\": false,\n        \"Location\": \"West Geraldmouth\",\n        \"FullName\": \"Uriah Reichel\",\n        \"ExternalCode\": \"Ab43\"\n    }\n]"}],"_postman_id":"52c35e4b-7504-41b1-bbf4-c1a4e4b35b42"},{"name":"User Upsert (Create and Update)","id":"1fb7e91f-629f-41a0-a1c6-cc959075f2e2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{auth_token}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"Id\": \"string\",\n  \"TenantId\": 0,\n  \"CompanyId\": 0,\n  \"Email\": \"string\",\n  \"ParentId\": \"string\",\n  \"ParentEmail\": \"string\",\n  \"ParentEmployeeId\": \"string\",\n  \"MatrixManagerId\": \"string\",\n  \"LanguageId\": \"string\",\n  \"Department\": \"string\",\n  \"HireDate\": \"2025-05-27T06:24:47.194Z\",\n  \"HrbpId\": \"string\",\n  \"EmployeeId\": \"string\",\n  \"ExternalCode\": \"string\",\n  \"FirstName\": \"string\",\n  \"LastName\": \"string\",\n  \"FullName\": \"string\",\n  \"Gender\": \"string\",\n  \"Position\": \"string\",\n  \"Location\": \"string\",\n  \"Country\": \"string\",\n  \"TimeZone\": \"string\",\n  \"PhoneNumber\": \"string\",\n  \"ImageUrl\": \"string\",\n  \"UploadedImage\": \"string\",\n  \"OrganizationLevelId\": 0,\n  \"IsActive\": true,\n  \"IsWhiteCollar\": true,\n  \"GeneratePassword\": true,\n  \"IsTopManagement\": true,\n  \"IsGeneralManager\": true,\n  \"ExtendedAuthorizationReportId\": 0,\n  \"ExtendedAuthorizationCompanyObjectiveId\": 0,\n  \"Unsubscribe\": true,\n  \"IsPerformanceIncluded\": true,\n  \"BusinessUnit\": \"string\",\n  \"BusinessGroup\": \"string\",\n  \"HrbpEmail\": \"string\",\n  \"MatrixManagerEmail\": \"string\"\n}","options":{"raw":{"language":"json"}}},"url":"https://{{baseUrl}}/identity/api/application-user","description":"<h2 id=\"behaviour\">Behaviour</h2>\n<p>This endpoint performs an <strong>upsert</strong>: it creates the user when no match is found, and updates the existing record otherwise.</p>\n<p><strong>User matching</strong> is resolved in the following order:</p>\n<ol>\n<li><code>Id</code> — when provided, the user is located directly and all other matching keys are ignored.</li>\n<li><code>TenantId</code> + <code>CompanyId</code> + <code>Email</code></li>\n<li><code>TenantId</code> + <code>CompanyId</code> + <code>EmployeeId</code></li>\n</ol>\n<p><strong>Required fields.</strong> The <code>Required</code> column below applies to create. On update, only the matching keys are required — you may send a single field or the complete payload; both are valid.</p>\n<p><strong>Omitted values.</strong> As a general rule, fields that are omitted or sent as an empty value are left unchanged. The following fields are exceptions:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Behaviour when omitted or empty</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>IsActive</code></td>\n<td>Reset to <code>true</code></td>\n</tr>\n<tr>\n<td><code>IsWhiteCollar</code></td>\n<td>Overwritten with the request value; no null check is applied</td>\n</tr>\n<tr>\n<td><code>BusinessUnit</code>, <code>BusinessGroup</code></td>\n<td>An empty string is stored as an empty value</td>\n</tr>\n<tr>\n<td><code>HrbpId</code>, <code>MatrixManagerId</code></td>\n<td>An empty string clears the assignment</td>\n</tr>\n<tr>\n<td><code>ParentId</code></td>\n<td>Cannot be cleared by an empty value alone — see note (2)</td>\n</tr>\n</tbody>\n</table>\n</div><blockquote>\n<p><strong>Users who have left the company.</strong> A request that does not contain <code>ExitDate</code> restores the user as an active employee: the exit date is cleared and the account is reactivated. When updating a user who has previously been marked as having left, always include <code>ExitDate</code> in the request, or exclude such users from the synchronization altogether. See <strong>User Delete</strong> for details.</p>\n</blockquote>\n<p><strong>Unrecognized fields</strong> in the request body are ignored without error.</p>\n<h2 id=\"request-parameters\">Request Parameters</h2>\n<h3 id=\"identity--access\">Identity &amp; Access</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Id</code></td>\n<td>string</td>\n<td>No</td>\n<td>Internal Wokr user ID. When provided, <code>TenantId</code> and <code>CompanyId</code> are not required. Omit when the ID is not known.</td>\n</tr>\n<tr>\n<td><code>TenantId</code></td>\n<td>integer</td>\n<td>Yes</td>\n<td>ID of the tenant the user is affiliated with. Also used for user matching. Not required when <code>Id</code> is provided.</td>\n</tr>\n<tr>\n<td><code>CompanyId</code></td>\n<td>integer</td>\n<td>Yes</td>\n<td>ID of the company the user belongs to. Also used for user matching. Not required when <code>Id</code> is provided.</td>\n</tr>\n<tr>\n<td><code>Email</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>User's email address. Used as the login identifier, for all system notifications, and for user matching. Must be unique within the tenant. Changing this value on an existing user also changes the address they sign in with.</td>\n</tr>\n<tr>\n<td><code>EmployeeId</code></td>\n<td>string</td>\n<td>No</td>\n<td>Official employee registry number assigned by the company. Used for user matching when <code>Email</code> is not provided. Must be unique within the company.</td>\n</tr>\n<tr>\n<td><code>ExternalCode</code></td>\n<td>string</td>\n<td>No</td>\n<td>Free-text code reserved for customer-specific use (e.g. a reference from an external HR or identity system). Stored as provided and not validated by Twiser. For the employee registry number, use <code>EmployeeId</code> instead.</td>\n</tr>\n<tr>\n<td><code>GeneratePassword</code></td>\n<td>boolean</td>\n<td>Yes</td>\n<td>If <code>true</code>, the system generates a password for the user and delivers it to the address in <code>Email</code>. Applies to newly created users only — the value is ignored when an existing user is matched, and no password is regenerated.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"personal-information\">Personal Information</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>FirstName</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>User's first name.</td>\n</tr>\n<tr>\n<td><code>LastName</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>User's last name.</td>\n</tr>\n<tr>\n<td><code>FullName</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>User's full name as displayed throughout the application.</td>\n</tr>\n<tr>\n<td><code>Gender</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>One of <code>M</code> (male), <code>F</code> (female), or <code>X</code> (unknown/unspecified). Case-sensitive.</td>\n</tr>\n<tr>\n<td><code>Country</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>Country of residence as an ISO 3166-1 alpha-2 code, e.g. <code>TR</code>.</td>\n</tr>\n<tr>\n<td><code>LanguageId</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>UI language as an ISO 639-1 code, e.g. <code>EN</code>, <code>TR</code>.</td>\n</tr>\n<tr>\n<td><code>TimeZone</code></td>\n<td>string</td>\n<td>No</td>\n<td>User's time zone as a UTC offset, e.g. <code>UTC+3</code>.</td>\n</tr>\n<tr>\n<td><code>PhoneNumber</code></td>\n<td>string</td>\n<td>No</td>\n<td>Contact phone number in national format, without a country code — for example <code>05555555555</code>. Requests containing a country code are rejected.</td>\n</tr>\n<tr>\n<td><code>ImageUrl</code></td>\n<td>string</td>\n<td>No</td>\n<td>Publicly reachable URL of the user's profile image. Ignored if <code>UploadedImage</code> is provided.</td>\n</tr>\n<tr>\n<td><code>UploadedImage</code></td>\n<td>string</td>\n<td>No</td>\n<td>Profile image as a Base64-encoded data URI, including the MIME prefix — for example <code>data:image/png;base64,iVBORw0KGgo...</code>. Use this when the image is not available at a public URL. Takes precedence over <code>ImageUrl</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"organization\">Organization</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Department</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>Department name the user is assigned to. (1)</td>\n</tr>\n<tr>\n<td><code>Position</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>Job title or position. (1)</td>\n</tr>\n<tr>\n<td><code>Location</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>Office or work site (city or site name). (1)</td>\n</tr>\n<tr>\n<td><code>HireDate</code></td>\n<td>string (ISO 8601)</td>\n<td>Yes</td>\n<td>Employment start date in UTC. Format: <code>YYYY-MM-DDTHH:MM:SSZ</code></td>\n</tr>\n<tr>\n<td><code>OrganizationLevelId</code></td>\n<td>integer</td>\n<td>No</td>\n<td>Organizational level ID. Organization levels must be defined in the Wokr user interface before they can be referenced here.</td>\n</tr>\n<tr>\n<td><code>BusinessUnit</code></td>\n<td>string</td>\n<td>No</td>\n<td>Business unit the user belongs to. (1) An empty string is stored as an empty value.</td>\n</tr>\n<tr>\n<td><code>BusinessGroup</code></td>\n<td>string</td>\n<td>No</td>\n<td>Organizational grouping the user belongs to. Independent of <code>BusinessUnit</code> — the two are not hierarchically related. (1) An empty string is stored as an empty value.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"reporting-hierarchy\">Reporting Hierarchy</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>ParentId</code></td>\n<td>string</td>\n<td>Conditional (2)</td>\n<td>Internal Wokr ID of the user's manager.</td>\n</tr>\n<tr>\n<td><code>ParentEmail</code></td>\n<td>string</td>\n<td>Conditional (2)</td>\n<td>Email address of the user's manager.</td>\n</tr>\n<tr>\n<td><code>ParentEmployeeId</code></td>\n<td>string</td>\n<td>Conditional (2)</td>\n<td><code>EmployeeId</code> of the user's manager.</td>\n</tr>\n<tr>\n<td><code>MatrixManagerId</code></td>\n<td>string</td>\n<td>Conditional (3)</td>\n<td>Internal Wokr ID of the matrix manager. Send an empty string to clear the assignment.</td>\n</tr>\n<tr>\n<td><code>MatrixManagerEmail</code></td>\n<td>string</td>\n<td>Conditional (3)</td>\n<td>Email address of the matrix manager. Alternative to <code>MatrixManagerId</code>.</td>\n</tr>\n<tr>\n<td><code>HrbpId</code></td>\n<td>string</td>\n<td>Conditional (3)</td>\n<td>Internal Wokr ID of the HR Business Partner. Send an empty string to clear the assignment.</td>\n</tr>\n<tr>\n<td><code>HrbpEmail</code></td>\n<td>string</td>\n<td>Conditional (3)</td>\n<td>Email address of the HR Business Partner. Alternative to <code>HrbpId</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"status-flags\">Status Flags</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Default</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>IsActive</code></td>\n<td>boolean</td>\n<td>No</td>\n<td><code>true</code></td>\n<td>Whether the account can sign in. When omitted on update, it is reset to <code>true</code>.</td>\n</tr>\n<tr>\n<td><code>IsWhiteCollar</code></td>\n<td>boolean</td>\n<td>No</td>\n<td><code>true</code></td>\n<td>Whether the user is a white-collar employee. This value is applied without a null check, so the stored value is always overwritten — include it in every request.</td>\n</tr>\n<tr>\n<td><code>IsTopManagement</code></td>\n<td>boolean</td>\n<td>No</td>\n<td><code>false</code></td>\n<td>Whether the user is part of top management.</td>\n</tr>\n<tr>\n<td><code>IsGeneralManager</code></td>\n<td>boolean</td>\n<td>No</td>\n<td><code>false</code></td>\n<td>Whether the user is a general manager. Also used to remove a user's manager — see note (2).</td>\n</tr>\n<tr>\n<td><code>IsPerformanceIncluded</code></td>\n<td>boolean</td>\n<td>No</td>\n<td><code>true</code></td>\n<td>Whether the user is included in performance processes.</td>\n</tr>\n<tr>\n<td><code>Unsubscribe</code></td>\n<td>boolean</td>\n<td>No</td>\n<td><code>false</code></td>\n<td>If <code>true</code>, the user receives no notification emails.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"authorization\">Authorization</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>ExtendedAuthorizationReportId</code></td>\n<td>integer</td>\n<td>No</td>\n<td>Access level for reports. (4)</td>\n</tr>\n<tr>\n<td><code>ExtendedAuthorizationCompanyObjectiveId</code></td>\n<td>integer</td>\n<td>No</td>\n<td>Access level for company objectives. (4)</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"notes\">Notes</h2>\n<ol>\n<li>Free-text value. It is not validated against a predefined list, and no matching record needs to exist beforehand.</li>\n<li>Provide only one of <code>ParentId</code>, <code>ParentEmail</code>, or <code>ParentEmployeeId</code>. To remove a user's manager, send an empty <code>ParentId</code> together with <code>IsGeneralManager</code> set to <code>true</code>; an empty <code>ParentId</code> on its own is ignored.</li>\n<li>Provide only one identifier per role.</li>\n<li>Accepted values: <code>0</code> = no access, <code>1</code> = read-only access, <code>10</code> = edit access.</li>\n</ol>\n","urlObject":{"protocol":"https","path":["identity","api","application-user"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[{"id":"8d98c7ae-038b-4332-b670-10c749cae7d4","name":"User Create","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{auth_token}}","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"TenantId\": 60,\n  \"CompanyId\": 360,\n  \"Email\": \"john.doe@example.com\",\n  \"EmployeeId\": \"DE00181\",\n  \"ExternalCode\": \"HR-DE00181\",\n  \"GeneratePassword\": true,\n  \"FirstName\": \"John\",\n  \"LastName\": \"Doe\",\n  \"FullName\": \"John Doe\",\n  \"Gender\": \"M\",\n  \"Country\": \"GB\",\n  \"LanguageId\": \"EN\",\n  \"TimeZone\": \"UTC+0\",\n  \"PhoneNumber\": \"01111111111\",\n  \"ImageUrl\": \"https://i.imgur.com/CzXTtJV.jpg\",\n  \"Department\": \"Optimization\",\n  \"Position\": \"Customer Communications Specialist\",\n  \"Location\": \"London\",\n  \"HireDate\": \"2025-04-27T06:24:47Z\",\n  \"BusinessUnit\": \"Customer Operations\",\n  \"BusinessGroup\": \"Commercial\",\n  \"ParentId\": \"b423816a-293d-479e-b99d-b423cd67e078\",\n  \"MatrixManagerId\": \"58be1621-b16d-46a5-ac8e-8d0f15c2d0c8\",\n  \"HrbpId\": \"04384ad6-887c-4623-bde4-e421a6b1832b\",\n  \"IsActive\": true,\n  \"IsWhiteCollar\": true,\n  \"IsTopManagement\": false,\n  \"IsGeneralManager\": false,\n  \"IsPerformanceIncluded\": true,\n  \"Unsubscribe\": false,\n  \"ExtendedAuthorizationReportId\": 10,\n  \"ExtendedAuthorizationCompanyObjectiveId\": 1\n}","options":{"raw":{"language":"json"}}},"url":"https://api-demo.twiser.com/identity/api/application-user"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"Id\": \"c372016f-79d0-4d3f-ae70-077a781ee3c2\",\n    \"TenantId\": 60,\n    \"CompanyId\": 360,\n    \"UserName\": \"26417ac8-6bd6-43e2-b661-5602f6ed0d54\",\n    \"Email\": \"john.doe@example.com\",\n    \"DepartmentId\": \"b423816a-293d-479e-b99d-b423cd67e078\",\n    \"Department\": \"Optimization\",\n    \"BusinessUnit\": \"Customer Operations\",\n    \"BusinessGroup\": \"Commercial\",\n    \"ParentId\": \"b423816a-293d-479e-b99d-b423cd67e078\",\n    \"ParentUser\": {\n        \"Id\": \"b423816a-293d-479e-b99d-b423cd67e078\",\n        \"FirstName\": \"Uriah\",\n        \"LastName\": \"Reichel\",\n        \"Email\": \"uriah.reichel@example.com\",\n        \"EmployeeId\": null,\n        \"FullName\": \"Uriah Reichel\",\n        \"ImageUrl\": null\n    },\n    \"MatrixManagerId\": \"58be1621-b16d-46a5-ac8e-8d0f15c2d0c8\",\n    \"MatrixManager\": {\n        \"Id\": \"58be1621-b16d-46a5-ac8e-8d0f15c2d0c8\",\n        \"FirstName\": \"Enos\",\n        \"LastName\": \"Reynolds\",\n        \"Email\": null,\n        \"EmployeeId\": null,\n        \"FullName\": \"Enos Reynolds\",\n        \"ImageUrl\": null\n    },\n    \"LanguageId\": \"en\",\n    \"HireDate\": \"2025-04-27T06:24:47\",\n    \"ExitDate\": null,\n    \"IsPerformanceIncluded\": true,\n    \"IsHRBPManager\": false,\n    \"HrbpId\": \"04384ad6-887c-4623-bde4-e421a6b1832b\",\n    \"HrbpUser\": {\n        \"Id\": \"04384ad6-887c-4623-bde4-e421a6b1832b\",\n        \"FirstName\": \"Deanna\",\n        \"LastName\": \"Bayer\",\n        \"Email\": \"deanna.bayer@example.com\",\n        \"EmployeeId\": null,\n        \"FullName\": \"Deanna Bayer\",\n        \"ImageUrl\": null\n    },\n    \"EmployeeId\": \"DE00181\",\n    \"FirstName\": \"John\",\n    \"LastName\": \"Doe\",\n    \"FullName\": \"John Doe\",\n    \"Gender\": \"M\",\n    \"Position\": \"Customer Communications Specialist\",\n    \"Location\": \"London\",\n    \"Country\": \"GB\",\n    \"TimeZone\": \"UTC+0\",\n    \"ImageUrl\": \"https://i.imgur.com/CzXTtJV.jpg\",\n    \"OrganizationLevelId\": null,\n    \"GetHierarchyId\": null,\n    \"GetHierarchyLevel\": null,\n    \"HasPassword\": true,\n    \"ExternalAccountList\": null,\n    \"GetDepartmentOfUser\": {\n        \"Id\": \"c372016f-79d0-4d3f-ae70-077a781ee3c2\",\n        \"TenantId\": 60,\n        \"CompanyId\": 360,\n        \"Name\": \"Optimization\",\n        \"ManagerUserName\": \"John Doe\",\n        \"ManagerUserImageUrl\": \"https://i.imgur.com/CzXTtJV.jpg\",\n        \"OrganizationLevel\": null,\n        \"HierarchyId\": null,\n        \"IsActive\": false,\n        \"DepartmentHierarchy\": null,\n        \"CreatedBy\": null,\n        \"CreatedAt\": \"0001-01-01T00:00:00\",\n        \"ChangedBy\": null,\n        \"ChangedAt\": null\n    },\n    \"IsFirstLogin\": true,\n    \"IsActive\": true,\n    \"IsLeft\": false,\n    \"IsWhiteCollar\": true,\n    \"CreatedBy\": \"3f5fd09f-0bf2-4ff4-89e4-72b1cbed18ce\",\n    \"CreatedAt\": \"2025-05-27T06:40:40.9287663Z\",\n    \"ChangedBy\": \"3f5fd09f-0bf2-4ff4-89e4-72b1cbed18ce\",\n    \"ChangedAt\": \"2025-05-27T06:40:40.9287663Z\",\n    \"IsTopManagement\": false,\n    \"IsGeneralManager\": null,\n    \"ExtendedAuthorizationReportId\": null,\n    \"ExtendedAuthorizationAdminPanelId\": null,\n    \"ExtendedAuthorizationCompanyObjectiveId\": 1,\n    \"IsProxyAdmin\": false,\n    \"IsDeleted\": false,\n    \"Unsubscribe\": false,\n    \"NotificationUserId\": null,\n    \"PhoneNumber\": \"01111111111\",\n    \"UserRoles\": [],\n    \"ExternalCode\": \"HR-DE00181\"\n}"}],"_postman_id":"1fb7e91f-629f-41a0-a1c6-cc959075f2e2"},{"name":"User Delete (change status isleft)","id":"68511968-0ddd-409e-9173-886e588951df","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{auth_token}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"Id\": \"string\",\n  \"ExitDate\": \"2025-05-27T06:24:47.194Z\"\n  \n}","options":{"raw":{"language":"json"}}},"url":"https://{{baseUrl}}/identity/api/application-user","description":"<h2 id=\"behaviour\">Behaviour</h2>\n<p>This request uses the same endpoint as <strong>User Upsert</strong>. Sending <code>ExitDate</code> marks the user as having left the company: the account is deactivated, flagged as left, and soft-deleted. The record and its historical data are retained.</p>\n<p><strong>User matching</strong> follows the same rules as User Upsert — instead of <code>Id</code>, you may also send <code>TenantId</code> + <code>CompanyId</code> together with <code>Email</code> or <code>EmployeeId</code>.</p>\n<h2 id=\"request-parameters\">Request Parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Id</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>Internal Wokr ID of the user to be marked as having left. May be replaced by the alternative matching keys described above.</td>\n</tr>\n<tr>\n<td><code>ExitDate</code></td>\n<td>string (ISO 8601)</td>\n<td>Yes</td>\n<td>Employment end date in UTC. Format: <code>YYYY-MM-DDTHH:MM:SSZ</code></td>\n</tr>\n</tbody>\n</table>\n</div><blockquote>\n<p><strong>Subsequent requests.</strong> Any later request for this user that does not contain <code>ExitDate</code> will restore the user as an active employee. To keep a user marked as having left, include <code>ExitDate</code> in every subsequent request, or exclude the user from the synchronization.</p>\n</blockquote>\n<p><strong>Reversing this operation.</strong> To reinstate a user who has left, send a <strong>User Upsert</strong> request without <code>ExitDate</code>.</p>\n","urlObject":{"protocol":"https","path":["identity","api","application-user"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[{"id":"09cf2ad6-0ee4-4bc5-881b-63cbd9dcb361","name":"User Delete","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{auth_token}}","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"Id\": \"c372016f-79d0-4d3f-ae70-077a781ee3c2\",\n    \"ExitDate\": \"2025-04-27T06:24:47.194Z\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api-demo.twiser.com/identity/api/application-user"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n  \"Id\": \"c372016f-79d0-4d3f-ae70-077a781ee3c2\",\n  \"TenantId\": 60,\n  \"CompanyId\": 360,\n  \"UserName\": \"26417ac8-6bd6-43e2-b661-5602f6ed0d54\",\n  \"Email\": null,\n  \"DepartmentId\": \"c372016f-79d0-4d3f-ae70-077a781ee3c2\",\n  \"Department\": \"Optimization\",\n  \"BusinessUnit\": null,\n  \"ParentId\": \"b423816a-293d-479e-b99d-b423cd67e078\",\n  \"ParentUser\": {\n    \"Id\": \"b423816a-293d-479e-b99d-b423cd67e078\",\n    \"FirstName\": \"Uriah\",\n    \"LastName\": \"Reichel\",\n    \"Email\": \"UriahReichel@google.com\",\n    \"EmployeeId\": null,\n    \"FullName\": \"Uriah Reichel\",\n    \"ImageUrl\": null\n  },\n  \"MatrixManagerId\": \"58be1621-b16d-46a5-ac8e-8d0f15c2d0c8\",\n  \"MatrixManager\": {\n    \"Id\": \"58be1621-b16d-46a5-ac8e-8d0f15c2d0c8\",\n    \"FirstName\": \"Enos\",\n    \"LastName\": \"Reynolds\",\n    \"Email\": null,\n    \"EmployeeId\": null,\n    \"FullName\": \"Enos Reynolds\",\n    \"ImageUrl\": null\n  },\n  \"LanguageId\": \"en\",\n  \"HireDate\": \"2025-04-27T06:24:47.194\",\n  \"ExitDate\": \"2025-04-27T06:24:47.194Z\",\n  \"IsPerformanceIncluded\": false,\n  \"IsHRBPManager\": false,\n  \"HrbpId\": \"04384ad6-887c-4623-bde4-e421a6b1832b\",\n  \"HrbpUser\": {\n    \"Id\": \"04384ad6-887c-4623-bde4-e421a6b1832b\",\n    \"FirstName\": \"Deanna\",\n    \"LastName\": \"Bayer\",\n    \"Email\": \"DeannaBayer@google.com\",\n    \"EmployeeId\": null,\n    \"FullName\": \"Deanna Bayer\",\n    \"ImageUrl\": null\n  },\n  \"EmployeeId\": null,\n  \"FirstName\": \"John\",\n  \"LastName\": \"Doe\",\n  \"FullName\": \"John Doe\",\n  \"Gender\": \"X\",\n  \"Position\": \"Customer Communications Specialist\",\n  \"Location\": \"London\",\n  \"Country\": \"UK\",\n  \"TimeZone\": \"UTC+0\",\n  \"ImageUrl\": \"https://i.imgur.com/CzXTtJV.jpg\",\n  \"OrganizationLevelId\": null,\n  \"GetHierarchyId\": \"/11/2/1/\",\n  \"GetHierarchyLevel\": null,\n  \"HasPassword\": true,\n  \"ExternalAccountList\": null,\n  \"GetDepartmentOfUser\": {\n    \"Id\": \"c372016f-79d0-4d3f-ae70-077a781ee3c2\",\n    \"TenantId\": 60,\n    \"CompanyId\": 360,\n    \"Name\": \"Optimization\",\n    \"ManagerUserName\": \"John Doe\",\n    \"ManagerUserImageUrl\": \"https://i.imgur.com/CzXTtJV.jpg\",\n    \"OrganizationLevel\": null,\n    \"HierarchyId\": \"/11/2/1/\",\n    \"IsActive\": false,\n    \"DepartmentHierarchy\": null,\n    \"CreatedBy\": null,\n    \"CreatedAt\": \"0001-01-01T00:00:00\",\n    \"ChangedBy\": null,\n    \"ChangedAt\": null\n  },\n  \"IsFirstLogin\": true,\n  \"IsActive\": false,\n  \"IsLeft\": true,\n  \"IsWhiteCollar\": true,\n  \"CreatedBy\": \"3f5fd09f-0bf2-4ff4-89e4-72b1cbed18ce\",\n  \"CreatedAt\": \"2025-05-27T06:40:40.9287663\",\n  \"ChangedBy\": \"3f5fd09f-0bf2-4ff4-89e4-72b1cbed18ce\",\n  \"ChangedAt\": \"2025-06-27T08:17:41.1014346Z\",\n  \"IsTopManagement\": false,\n  \"IsGeneralManager\": null,\n  \"ExtendedAuthorizationReportId\": null,\n  \"ExtendedAuthorizationAdminPanelId\": null,\n  \"ExtendedAuthorizationCompanyObjectiveId\": 1,\n  \"IsProxyAdmin\": false,\n  \"IsDeleted\": true,\n  \"Unsubscribe\": null,\n  \"NotificationUserId\": null,\n  \"PhoneNumber\": \"01111111111\"\n}"}],"_postman_id":"68511968-0ddd-409e-9173-886e588951df"}],"id":"fb785cd0-85b3-4140-8e08-4c55dfe65efb","_postman_id":"fb785cd0-85b3-4140-8e08-4c55dfe65efb","description":""}],"id":"30131dc2-0ec7-442d-9371-ebd24a9b8ab7","description":"<p>This document outlines the User and Identity Management (Identity Service) API for Twiser products.</p>\n<p>All integration APIs operate based on <strong>company</strong> and <strong>tenant</strong> contexts. Tenant information and access credentials are provided exclusively by Twiser through a dedicated platform. Without valid company and tenant information, no operations can be performed via the APIs.</p>\n<h4 id=\"⚠️-important-note-for-on-premise-deployments\">⚠️ Important Note for On-Premise Deployments</h4>\n<p>For clients using <strong>on-premise</strong> deployments of Twiser products, some of the configurations and access requirements outlined in this document may differ. This includes, but is not limited to:</p>\n<ul>\n<li><p>API base URLs</p>\n</li>\n<li><p>SSL certificate management and trust policies</p>\n</li>\n<li><p>Internal firewall and proxy configurations</p>\n</li>\n<li><p>Email whitelisting domains and SMTP routing</p>\n</li>\n<li><p>Identity service integration and authentication flows</p>\n</li>\n</ul>\n<p>Please consult your <strong>Twiser implementation consultant</strong> or <strong>system administrator</strong> to ensure that the relevant configurations are adapted for your internal environment.</p>\n<h4 id=\"prerequisites-for-api-usage\"><strong>Prerequisites for API Usage</strong></h4>\n<p>Before initiating data integration with Twiser products, it is recommended to verify the following technical requirements:</p>\n<ul>\n<li><p>Firewall configurations</p>\n</li>\n<li><p>Email whitelisting settings</p>\n</li>\n<li><p>SSL certificate installation</p>\n</li>\n<li><p>Access to API endpoints</p>\n</li>\n</ul>\n<h4 id=\"email-whitelisting\"><strong>Email Whitelisting</strong></h4>\n<p>To ensure that system-generated emails are delivered properly, you may need to whitelist the domains of the following email addresses:</p>\n<ul>\n<li><p><a href=\"https://mailto:info@twiser.com\">info@twiser.com</a></p>\n</li>\n<li><p><a href=\"https://mailto:hr@twiser.com\">hr@twiser.com</a></p>\n</li>\n<li><p><a href=\"https://mailto:support@twiser.com\">support@twiser.com</a></p>\n</li>\n<li><p><a href=\"https://mailto:no-reply@twiser.com\">no-reply@twiser.com</a></p>\n</li>\n<li><p><a href=\"https://mailto:admin@twiser.com\">admin@twiser.com</a></p>\n</li>\n</ul>\n<h4 id=\"firewall-settings-and-environment-information\"><strong>Firewall Settings and Environment Information</strong></h4>\n<p>Twiser products use a <strong>socket connection</strong> to enable real-time data transfer between the front-end and back-end. In some organizations, this type of connection might be blocked due to network restrictions. To avoid connection issues, make sure the following domains are allowed through your firewall:</p>\n<h5 id=\"integration-testing-environment\"><strong>Integration Testing Environment:</strong></h5>\n<ul>\n<li><p>UI: <a href=\"https://wokr-demo.twiser.com\">https://wokr-demo.twiser.com</a></p>\n</li>\n<li><p>API: <a href=\"https://api-demo.twiser.com\">https://api-demo.twiser.com</a></p>\n</li>\n</ul>\n<h5 id=\"production-environment\"><strong>Production Environment:</strong></h5>\n<ul>\n<li><p>UI: <a href=\"https://wokr.twiser.com\">https://wokr.twiser.com</a></p>\n</li>\n<li><p>API: <a href=\"https://api.twiser.com\">https://api.twiser.com</a></p>\n</li>\n</ul>\n<h4 id=\"ssl-certificate\"><strong>SSL Certificate</strong></h4>\n<p>Our SSL certificates are public and readily accessible. You can export the certificate using the links below. The same certificate is used for both the <strong>integration</strong> and <strong>production</strong> environments:</p>\n<ul>\n<li><p>Integration: <a href=\"https://wokr-demo.twiser.com\">https://wokr-demo.twiser.com</a></p>\n</li>\n<li><p>Production: <a href=\"https://wokr.twiser.com\">https://wokr.twiser.com</a></p>\n</li>\n</ul>\n","_postman_id":"30131dc2-0ec7-442d-9371-ebd24a9b8ab7"},{"name":"LXP User Integration Document V1","item":[{"name":"Login","item":[{"name":"Identity Authentication","id":"2ac22db2-9571-429d-85d8-b80db81e730a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"Email\": \"sample@sample.com\",\n    \"Password\": \"password\"\n}\n","options":{"raw":{"language":"json"}}},"url":"https://lxp-api-demo.twiser.com/lms/identityv2/Authentication/login","description":"<p>A client must authenticate by calling a login before executing other api calls. Login method requires a ‘email’ and ‘password’ parameters needs to be provided. You may obtain this information from your sales contact.</p>\n<h4 id=\"request-parameters\">Request Parameters:</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Email</td>\n<td>String</td>\n<td>The e-mail information used in the authorization process. For users without an email address, this field must be filled with either the employee's personnel number.</td>\n</tr>\n<tr>\n<td>Password</td>\n<td>String</td>\n<td>The password information used in the authorization process.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-parameters\">Response Parameters:</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>UserId</td>\n<td>UserId is the unique information of user created in Twiser.</td>\n</tr>\n<tr>\n<td>CompanyId</td>\n<td>It is the company identification number to which the user is affiliated.</td>\n</tr>\n<tr>\n<td>IsFirstLogin</td>\n<td>It’s the indication whether its first login or not.</td>\n</tr>\n<tr>\n<td>LoginProvider</td>\n<td>Login provider information</td>\n</tr>\n<tr>\n<td>AccessTokenExpiryTime</td>\n<td>Token expiration time</td>\n</tr>\n<tr>\n<td>AccessToken</td>\n<td><strong>An access token</strong> is required to call any other api's. AccessToken needs to be passed through as <code>&lt;Authorization: Bearer 'accessToken'&gt;</code> tag in request header</td>\n</tr>\n<tr>\n<td>RefreshTokenExpiryTime</td>\n<td>Renewed token expiry time</td>\n</tr>\n<tr>\n<td>RefreshToken</td>\n<td>RefreshToken</td>\n</tr>\n<tr>\n<td>Message</td>\n<td>Message status</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["lms","identityv2","Authentication","login"],"host":["lxp-api-demo","twiser","com"],"query":[],"variable":[]}},"response":[{"id":"111913c5-9519-4a78-8ce9-2bc9753bcecd","name":"Identity Authentication","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"Email\": \"sample@sample.com\",\n    \"Password\": \"password\"\n}\n","options":{"raw":{"language":"json"}}},"url":"https://api.twiser.com/lms/identityv2/Authentication/login"},"_postman_previewlanguage":"","header":[],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"SessionId\": \"358d9668-e1be-483a-a120-ac5d4debcade\",\n    \"UserId\": \"7007c9f4-8865-4766-afc8-e7e3fc0a7901\",\n    \"CompanyId\": 3,\n    \"IsFirstLogin\": false,\n    \"LoginProvider\": \"TWiser\",\n    \"AccessTokenExpiryTime\": \"2025-04-23T18:38:53.722538Z\",\n    \"AccessToken\": \"eyJhbGciOiJIUzI1iIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InN1ZGVtQHN1Y2Nlc3Npb25tYWlsLmNvbSIsInN1YiI6Ij5MkRBMkJGLTlFMEItNURCOEE3RUM1Q0E4NiIsInRlbmFudGlkIjoiMSIsImNvbXBhbnlpZCI6IjYiLCJsYW5ndWFnZWlkIjoidHIiLCJBdXRob3JpemVkVXNlcklkIjoiNTkyREEyQkYtOUUwQi00RI5LThEM0QtREI4QTdFQzVDQTg2IiwiY29tcGFueWNvZGUiOiIwMzU4XzAzNTgiLCJBdXRob3JpemVkQ29tcGFueSI6IjAzNThfMDM1OCIsIkF1dGhvcml6ZWRDb21wYW55SWRzIjoiNiIsIm5iZiI6MTc0NTMwMzYwMiwiZXhwIjoxNzQ1NDI1MjAyLCJpYXQiOjE3NDUzMDM2MDIsImlzcyI6Imh0dHBzOi8vYXBpLWRldi50d2lzZXIuY29tcHM6Ly9sbXMtZGV2LnR3aXNlci5jb20ifQckssbp243KVl9NLY_LcwEiqCd3_aChoerYdZDLFitiU\",\n    \"RefreshTokenExpiryTime\": \"2025-04-30T18:38:53.722538Z\",\n    \"RefreshToken\": \"0itwUfOYdlHQua9OokWPYpzwEkfyNTmau5f4yO5VFOs=\",\n    \"Message\": \"Success\"\n}\n"}],"_postman_id":"2ac22db2-9571-429d-85d8-b80db81e730a"}],"id":"50467c5c-41d6-489b-bcb7-a9604b654e22","_postman_id":"50467c5c-41d6-489b-bcb7-a9604b654e22","description":""},{"name":"User","item":[{"name":"Get User List","id":"d766eef7-4e97-43e1-b440-ec738591ccfc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":false},"method":"POST","header":[],"url":"https://lxp-api-demo.twiser.com/lms/backoffice/user/get-by-company-id?CompanyId=1&PageNumber=1&PageSize=15","urlObject":{"protocol":"https","path":["lms","backoffice","user","get-by-company-id"],"host":["lxp-api-demo","twiser","com"],"query":[{"key":"CompanyId","value":"1"},{"key":"PageNumber","value":"1"},{"key":"PageSize","value":"15"}],"variable":[]}},"response":[{"id":"d045e5a3-5e5a-49c6-a800-07a79342cfa3","name":"Get User List","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{auth_token}}","type":"text"}],"url":{"raw":"https://lxp-api-demo.twiser.com/lms/backoffice/user/get-by-company-id?CompanyId=1&PageNumber=1&PageSize=15","protocol":"https","host":["lxp-api-demo","twiser","com"],"path":["lms","backoffice","user","get-by-company-id"],"query":[{"key":"CompanyId","value":"1"},{"key":"PageNumber","value":"1"},{"key":"PageSize","value":"15"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": \"15ed4042-4e7f-4c28-a7f9-497be71af93a\",\n            \"tenantId\": 56,\n            \"companyId\": 94,\n            \"userName\": \"cekoqe@mailinator.com\",\n            \"email\": \"cekoqe@mailinator.com\",\n            \"languageId\": \"tr\",\n            \"firstName\": \"Xandra\",\n            \"lastName\": \"Church\",\n            \"fullName\": \"Xandra Church\",\n            \"gender\": \"F\",\n            \"location\": \"Nostrud et vero aliq\",\n            \"country\": \"TR\",\n            \"timeZone\": \"UTC+3\",\n            \"hasPassword\": false,\n            \"isFirstLogin\": true,\n            \"isActive\": true,\n            \"createdBy\": \"3f5fd09f-0bf2-4ff4-89e4-72b1cbed18ce\",\n            \"createdAt\": \"2025-10-17T06:55:55.9215351\",\n            \"externalUserId\": \"jyzerimu\"\n        },\n        {\n            \"id\": \"4193D369-E398-4CEC-BB46-E4F3C203C5B0\",\n            \"tenantId\": 56,\n            \"companyId\": 94,\n            \"userName\": \"def@twiser.com\",\n            \"email\": \"def@twiser.com\",\n            \"languageId\": \"tr\",\n            \"firstName\": \"Ali\",\n            \"lastName\": \"Yee\",\n            \"fullName\": \"Ali Yee\",\n            \"gender\": \"I\",\n            \"location\": \"Istanbul\",\n            \"country\": \"TR\",\n            \"timeZone\": \"UTC+3\",\n            \"hasPassword\": false,\n            \"isFirstLogin\": false,\n            \"isActive\": true,\n            \"createdBy\": \"3f5fd09f-0bf2-4ff4-89e4-72b1cbed18ce\",\n            \"createdAt\": \"2024-10-21T10:19:33\",\n            \"changedAt\": \"2024-10-21T10:19:39\"\n        }\n    ],\n    \"totalItemCount\": 2,\n    \"maxPage\": 1,\n    \"currentPage\": 1\n}"}],"_postman_id":"d766eef7-4e97-43e1-b440-ec738591ccfc"},{"name":"Create User","id":"19e2daec-d911-4137-bee1-92b05cf29977","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"email\": \"string\", \n  \"externalUserId\":\"string\",\n  \"managerEmail\": \"string\",\n  \"managerId\": \"string\",\n  \"languageId\": \"string\",\n  \"department\": \"string\",\n  \"firstName\": \"string\", \n  \"lastName\": \"string\",\n  \"gender\": \"string\",\n  \"position\": \"string\",\n  \"companyId\": 0,\n  \"location\": \"string\",\n  \"country\": \"string\",\n  \"password\": \"string\",\n  \"welcomeMail\": true,\n  \"userRole\":\"string\",\n  \"notification\": \"string\",\n  \"phoneNumber\":\"String\",\n  \"isActive\": true\n\n}\n","options":{"raw":{"language":"json"}}},"url":"https://lxp-api-demo.twiser.com/lms/backoffice/user/create","description":"<p>It is used for creating User for LXP application</p>\n<h4 id=\"request-parameters\">Request Parameters:</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>email</td>\n<td>String</td>\n<td>It is the user's email information. Email field will be required to login to user interface. For users without an email address, this field must be filled with either the employee's personnel number or unique ID.</td>\n</tr>\n<tr>\n<td>externalUserId</td>\n<td>String</td>\n<td>It is unique information provided by the customer. It can be used to send and retrieve data via Update User, Delete User Method and also reporting purpose on User Interface.</td>\n</tr>\n<tr>\n<td>managerEmail</td>\n<td>String</td>\n<td>The first manager email of the user. If the manager information will not be sent, this field must be send as null.</td>\n</tr>\n<tr>\n<td>managerId</td>\n<td>String</td>\n<td>The first manager of the user. The unique ID of his/her immediate supervisor must be given in this field. If the manager information will not be sent, this field must be send as null.</td>\n</tr>\n<tr>\n<td>languageId</td>\n<td>String</td>\n<td>Default language information for the user. 2 languages are supported. Turkish (\"TR\"), English (\"EN\").</td>\n</tr>\n<tr>\n<td>department</td>\n<td>String</td>\n<td>This field represents the user's department within the company and should be provided as text. It is used in My Team individual profile information, and department-based filters. This field is optional.</td>\n</tr>\n<tr>\n<td>firstName</td>\n<td>String</td>\n<td>The name of the user.</td>\n</tr>\n<tr>\n<td>lastName</td>\n<td>String</td>\n<td>Last lastname of the user.</td>\n</tr>\n<tr>\n<td>gender</td>\n<td>String</td>\n<td>Gender information of the user. \"M\" or \"F\" values can be sent. This field is optional.</td>\n</tr>\n<tr>\n<td>position</td>\n<td>String</td>\n<td>This field represents the user's position within the company and should be provided as text. It is used in My Team page, individual profile information, and position-based filters. It does not include any system integration or position hierarchy.</td>\n</tr>\n<tr>\n<td>companyId</td>\n<td>String</td>\n<td>Company information to which the user is affiliated. companyId is a required field and can be obtained from the response of \"Identity Authentication (Login)\" method</td>\n</tr>\n<tr>\n<td>location</td>\n<td>String</td>\n<td>Location information of the user. It is optionally used for reporting or viewing purposes.</td>\n</tr>\n<tr>\n<td>country</td>\n<td>String</td>\n<td>Country information of the user. It is optionally used for reporting or display purposes.</td>\n</tr>\n<tr>\n<td>password</td>\n<td>String</td>\n<td>The password the user will use to log into the system. This is an optional field. If It is left as blank, the system will generate a password instead also its recommended to use with Welcome Mail as True in order to notify to user regarding password generated by system. For users without an email address, a password can be set here to allow system access.</td>\n</tr>\n<tr>\n<td>welcomeMail</td>\n<td>Boolean</td>\n<td>If set to true, newly created users will receive a \"welcome mail\" notification that contains the Password. Otherwise user will not be notified regarding the password or new account creation.</td>\n</tr>\n<tr>\n<td>userRole</td>\n<td>String</td>\n<td>Determines the user's role within the application. The values \"Admin\" or \"User\" can be entered. If the user is assigned as \"Admin,\" he/she will have access to the administration panel. If left as an \"empty\", the default value will be set to \"User.\"</td>\n</tr>\n<tr>\n<td>notification</td>\n<td>String</td>\n<td>Accepts Yes or No values. When set to Yes, the user will receive email notifications and push notifications related to the application.</td>\n</tr>\n<tr>\n<td>phoneNumber</td>\n<td>String</td>\n<td>This field is used to enter the phone number that the user will use to log into the system. It is not a mandatory field. If the user prefers to log in with an email, it can be left blank. If provided, the user must enter an 11-digit phone number starting with 05.</td>\n</tr>\n<tr>\n<td>isActive</td>\n<td>Boolean</td>\n<td>The field that indicates whether the user is active or passive.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"error-message-table\">Error Message Table:</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>errorCode</th>\n<th>Fields</th>\n<th>Error Message</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1001</td>\n<td>firstName, lastName, email, companyId, notification</td>\n<td>\"The following required fields are missing: firstName, lastName, email, companyId, notification.\"</td>\n</tr>\n<tr>\n<td>1401</td>\n<td>managerId</td>\n<td>\"Manager not found”</td>\n</tr>\n<tr>\n<td>1402</td>\n<td>companyId</td>\n<td>“Company not found with companyId:1”</td>\n</tr>\n<tr>\n<td>1405</td>\n<td>firstName, lastName, department, position, email</td>\n<td>“The following fields exceed their maximum allowed character limits: firstName (150), lastName (150), email (150), department (255), position (255).”</td>\n</tr>\n<tr>\n<td>1403</td>\n<td>email</td>\n<td>“There is already another user registered with the same email”</td>\n</tr>\n<tr>\n<td>1404</td>\n<td>phoneNumber</td>\n<td>“Please enter a valid phone number.”</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["lms","backoffice","user","create"],"host":["lxp-api-demo","twiser","com"],"query":[],"variable":[]}},"response":[{"id":"5658c0f0-04f6-4ca7-9b73-b7a5009f8f54","name":"Create User","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{auth_token}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"firstName\": \"John\",\n    \"lastName\": \"Doe\",\n    \"email\": \"john.doe@google.com\",\n    \"department\": \"HR\",\n    \"position\": \"HR Specialist\",\n    \"gender\": \"F\",\n    \"languageId\": \"TR\",\n    \"managerEmail\":\"test@test.com\",\n    \"companyId\": 94,\n    \"location\": \"Istanbul\",\n    \"country\": \"TR\",\n    \"welcomeMail\": true,\n    \"userRole\": \"User\",\n    \"isEmailExemption\": false,\n    \"isPushNotificationExemption\": false\n}\n","options":{"raw":{"language":"json"}}},"url":"https://lxp-api-demo.twiser.com/lms/backoffice/user/create"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"id\": \"6c04ecae-f3ae-2da6-835d-8377f23997ff\",\n    \"firstName\": \"John\",\n    \"lastName\": \"Doe\",\n    \"fullName\": \"John Doe\",\n    \"languageId\": \"tr\",\n    \"gender\": \"F\",\n    \"location\": \"Istanbul\",\n    \"country\": \"TR\",\n    \"timeZone\": \"UTC+3\",\n    \"externalUserId\": null,\n    \"phoneNumber\": null,\n    \"userRole\": \"Standard\",\n    \"birthDate\": \"0001-01-01T00:00:00\",\n    \"email\": \"john.doe@google.com\",\n    \"identityNumber\": null,\n    \"imageUrl\": null,\n    \"companyId\": 94,\n    \"tenantId\": 56,\n    \"departmentId\": 331,\n    \"departmentName\": \"Hr\",\n    \"positionId\": 582,\n    \"positionName\": \"Hr Specialist\",\n    \"managerId\": \"2ce4d89b-cdda-44c6-938e-c6e19effef9e\",\n    \"gradeId\": null,\n    \"dateOfStart\": null,\n    \"dateOfEnd\": null,\n    \"isTopManager\": false,\n    \"isManager\": false,\n    \"isCriticRole\": false,\n    \"isCeo\": false,\n    \"isGeneralManager\": false,\n    \"isPrinciple\": false,\n    \"isAdmin\": false,\n    \"manager\": {\n        \"id\": \"2ce4d89b-cdda-44c6-938e-c6e19effef9e\",\n        \"firstName\": \"test\",\n        \"lastName\": \"test\",\n        \"fullName\": \"test test\",\n        \"languageId\": null,\n        \"gender\": null,\n        \"location\": null,\n        \"country\": null,\n        \"timeZone\": null,\n        \"externalUserId\": null,\n        \"phoneNumber\": null,\n        \"userRole\": null,\n        \"birthDate\": \"0001-01-01T00:00:00\",\n        \"email\": null,\n        \"identityNumber\": null,\n        \"imageUrl\": null,\n        \"companyId\": 0,\n        \"tenantId\": 0,\n        \"departmentId\": null,\n        \"departmentName\": null,\n        \"positionId\": null,\n        \"positionName\": null,\n        \"managerId\": null,\n        \"gradeId\": null,\n        \"dateOfStart\": null,\n        \"dateOfEnd\": null,\n        \"isTopManager\": false,\n        \"isManager\": false,\n        \"isCriticRole\": false,\n        \"isCeo\": false,\n        \"isGeneralManager\": false,\n        \"isPrinciple\": false,\n        \"isAdmin\": false,\n        \"manager\": null,\n        \"isEmailExemption\": false,\n        \"isPushNotificationExemption\": false\n    },\n    \"isEmailExemption\": false,\n    \"isPushNotificationExemption\": false\n}"},{"id":"658b6e3a-ea91-4ee8-8a01-c1a2c27391f2","name":"Error message examples","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"email\": \"string\", \n  \"externalUserId\":\"string\",\n  \"managerId\": \"string\",\n  \"languageId\": \"string\",\n  \"department\": \"string\",\n  \"firstName\": \"string\", \n  \"lastName\": \"string\",\n  \"gender\": \"string\",\n  \"position\": \"string\",\n  \"companyId\": 0,\n  \"location\": \"string\",\n  \"country\": \"string\",\n  \"password\": \"string\",\n  \"welcomeMail\": true,\n  \"userRole\":\"string\",\n  \"notification\": \"string\",\n  \"phoneNumber\":\"String\",\n  \"isActive\": true\n\n}\n","options":{"raw":{"language":"json"}}},"url":"https://lxp-api-demo.twiser.com/lms/backoffice/user/create"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"type\": \"https://tools.ietf.org/html/rfc9110#section-15.5.1\",\n    \"title\": \"One or more validation errors occurred.\",\n    \"status\": 400,\n    \"errors\": [\n        {\n            \"propertyName\": \"FirstName\",\n            \"errorMessage\": \"The following required fields are missing: FirstName\",\n            \"errorCode\": 1001\n        },\n        {\n            \"propertyName\": \"LastName\",\n            \"errorMessage\": \"The following required fields are missing: LastName\",\n            \"errorCode\": 1001\n        },\n        {\n            \"propertyName\": \"PhoneNumber\",\n            \"errorMessage\": \"Please enter a valid phone number\",\n            \"errorCode\": 1404\n        },\n        {\n            \"propertyName\": \"CompanyId\",\n            \"errorMessage\": \"Company not found with companyId: 365\",\n            \"errorCode\": 1402\n        },\n        {\n            \"propertyName\": \"ManagerId\",\n            \"errorMessage\": \"Manager not found.\",\n            \"errorCode\": 1401\n        }\n    ]\n}"}],"_postman_id":"19e2daec-d911-4137-bee1-92b05cf29977"},{"name":"Update User","id":"0bd81c79-99af-47cd-843a-88a2a1580f6b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"id\": \"string\", \n  \"email\":\"string\",\n  \"externalUserId\":\"string\",\n  \"firstName\": \"string\",\n  \"lastName\": \"string\",\n  \"managerEmail\": \"string\",\n  \"managerId\": \"string\",\n  \"languageId\": \"string\",\n  \"gender\": \"string\",\n  \"isActive\": true,\n  \"isDeleted\": false,\n  \"department\": \"string\",\n  \"position\": \"string\",\n  \"location\": \"string\",\n  \"country\": \"string\",\n  \"userRole\":\"string\",\n  \"notification\":\"string\",\n  \"password\":\"string\",\n  \"phoneNumber\":\"string\"\n}","options":{"raw":{"language":"json"}}},"url":"https://lxp-api-demo.twiser.com/lms/backoffice/user/update ","urlObject":{"protocol":"https","path":["lms","backoffice","user","update "],"host":["lxp-api-demo","twiser","com"],"query":[],"variable":[]}},"response":[{"id":"4438e43b-26f2-4b25-b330-3b5b0c104521","name":"Update User","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"email\": \"john.doe@google.com\",\n    \"firstName\": \"John\",\n    \"lastName\": \"Doe\",\n    \"managerId\": null,\n    \"languageId\": \"tr\",\n    \"gender\": \"F\",\n    \"department\": \"Hr\",\n    \"position\": \"Hr Specialist\",\n    \"location\": \"New York\",\n    \"country\": \"TR\",\n    \"userRole\": \"User\",\n    \"isEmailExemption\": false,\n    \"isPushNotificationExemption\": false,\n    \"Id\": \"6c04ecae-f3ae-2da6-835d-8377f23997ff\"\n}","options":{"raw":{"language":"json"}}},"url":"https://lxp-api-demo.twiser.com/lms/backoffice/user/update "},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"id\": \"6c04ecae-f3ae-2da6-835d-8377f23997ff\",\n    \"firstName\": \"John\",\n    \"lastName\": \"Doe\",\n    \"fullName\": \"John Doe\",\n    \"languageId\": \"tr\",\n    \"gender\": \"F\",\n    \"location\": \"New York\",\n    \"country\": \"TR\",\n    \"timeZone\": \"UTC+3\",\n    \"externalUserId\": null,\n    \"phoneNumber\": null,\n    \"userRole\": \"Standard\",\n    \"birthDate\": \"0001-01-01T00:00:00\",\n    \"email\": \"john.doe@google.com\",\n    \"identityNumber\": null,\n    \"imageUrl\": null,\n    \"companyId\": 94,\n    \"tenantId\": 56,\n    \"departmentId\": 331,\n    \"departmentName\": \"Hr\",\n    \"positionId\": 582,\n    \"positionName\": \"Hr Specialist\",\n    \"managerId\": null,\n    \"gradeId\": null,\n    \"dateOfStart\": null,\n    \"dateOfEnd\": null,\n    \"isTopManager\": false,\n    \"isManager\": false,\n    \"isCriticRole\": false,\n    \"isCeo\": false,\n    \"isGeneralManager\": false,\n    \"isPrinciple\": false,\n    \"isAdmin\": false,\n    \"manager\": null,\n    \"isEmailExemption\": false,\n    \"isPushNotificationExemption\": false\n}"}],"_postman_id":"0bd81c79-99af-47cd-843a-88a2a1580f6b"},{"name":"Delete User","id":"3d271a26-c66d-4eee-80e9-58f1b7d4af76","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":false},"method":"DELETE","header":[],"url":"https://lxp-api-demo.twiser.com/lms/backoffice/user/delete?id={{userId}}","urlObject":{"protocol":"https","path":["lms","backoffice","user","delete"],"host":["lxp-api-demo","twiser","com"],"query":[{"key":"id","value":"{{userId}}"}],"variable":[]}},"response":[{"id":"073dd7c5-4b97-4316-a70e-b095b685df12","name":"Delete User","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"https://lxp-api-demo.twiser.com/lms/backoffice/user/delete?id= 6c04ec7e-f3ae-4da6-835d-8377f23997ff","protocol":"https","host":["lxp-api-demo","twiser","com"],"path":["lms","backoffice","user","delete"],"query":[{"key":"id","value":" 6c04ec7e-f3ae-4da6-835d-8377f23997ff"}]}},"status":"No Content","code":204,"_postman_previewlanguage":"","header":[],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":""}],"_postman_id":"3d271a26-c66d-4eee-80e9-58f1b7d4af76"}],"id":"8a6262b5-6712-4877-9481-5076d0cd1bcf","description":"<p>It is used to get User list for LXP application</p>\n","_postman_id":"8a6262b5-6712-4877-9481-5076d0cd1bcf"}],"id":"0a0dbd94-7d0d-4aec-924f-08d4a3ab1eb1","description":"<p>This document outlines the User and Identity Management (Identity Service) API for LXP products.</p>\n<p>All integration APIs operate based on <strong>company</strong> and <strong>tenant</strong> contexts. Tenant information and access credentials are provided exclusively by Twiser through a dedicated platform. Without valid company and tenant information, no operations can be performed via the APIs.</p>\n<h4 id=\"⚠️-important-note-for-on-premise-deployments\">⚠️ Important Note for On-Premise Deployments</h4>\n<p>For clients using <strong>on-premise</strong> deployments of Twiser products, some of the configurations and access requirements outlined in this document may differ. This includes, but is not limited to:</p>\n<ul>\n<li><p>API base URLs</p>\n</li>\n<li><p>SSL certificate management and trust policies</p>\n</li>\n<li><p>Internal firewall and proxy configurations</p>\n</li>\n<li><p>Email whitelisting domains and SMTP routing</p>\n</li>\n<li><p>Identity service integration and authentication flows</p>\n</li>\n</ul>\n<p>Please consult your <strong>Twiser implementation consultant</strong> or <strong>system administrator</strong> to ensure that the relevant configurations are adapted for your internal environment.</p>\n<h4 id=\"prerequisites-for-api-usage\"><strong>Prerequisites for API Usage</strong></h4>\n<p>Before initiating data integration with Twiser products, it is recommended to verify the following technical requirements:</p>\n<ul>\n<li><p>Firewall configurations</p>\n</li>\n<li><p>Email whitelisting settings</p>\n</li>\n<li><p>SSL certificate installation</p>\n</li>\n<li><p>Access to API endpoints</p>\n</li>\n</ul>\n<h4 id=\"email-whitelisting\"><strong>Email Whitelisting</strong></h4>\n<p>To ensure that system-generated emails are delivered properly, you may need to whitelist the domains of the following email addresses:</p>\n<ul>\n<li><p><a href=\"https://mailto:info@twiser.com\">info@twiser.com</a></p>\n</li>\n<li><p><a href=\"https://mailto:hr@twiser.com\">hr@twiser.com</a></p>\n</li>\n<li><p><a href=\"https://mailto:support@twiser.com\">support@twiser.com</a></p>\n</li>\n<li><p><a href=\"https://mailto:no-reply@twiser.com\">no-reply@twiser.com</a></p>\n</li>\n<li><p><a href=\"https://mailto:admin@twiser.com\">admin@twiser.com</a></p>\n</li>\n</ul>\n<h4 id=\"firewall-settings-and-environment-information\"><strong>Firewall Settings and Environment Information</strong></h4>\n<p>Twiser products use a <strong>socket connection</strong> to enable real-time data transfer between the front-end and back-end. In some organizations, this type of connection might be blocked due to network restrictions. To avoid connection issues, make sure the following domains are allowed through your firewall:</p>\n<h5 id=\"demo-testing-environment\"><strong>Demo Testing Environment:</strong></h5>\n<ul>\n<li><p>UI: <a href=\"https://wokr-demo.twiser.com\">https://</a><a href=\"https://lxp-demo.twiser.com/\">lxp-demo.twiser.com/</a></p>\n</li>\n<li><p>API: <a href=\"https://api-demo.twiser.com\">https://lxp-api-demo.twiser.com/</a></p>\n</li>\n</ul>\n<h5 id=\"production-environment\"><strong>Production Environment:</strong></h5>\n<ul>\n<li><p>UI: <a href=\"https://wokr.twiser.com\">https://lxp.twiser.com/</a></p>\n</li>\n<li><p>API: <a href=\"https://api.twiser.com\">https://api.twiser.com/</a></p>\n</li>\n</ul>\n<h4 id=\"ssl-certificate\"><strong>SSL Certificate</strong></h4>\n<p>Our SSL certificates are public and readily accessible. You can export the certificate using the links below. The same certificate is used for both the <strong>demo</strong> and <strong>production</strong> environments:</p>\n<ul>\n<li><p>Demo: <a href=\"https://wokr-demo.twiser.com\">https://lxp-demo.twiser.com/</a></p>\n</li>\n<li><p>Production: <a href=\"https://wokr.twiser.com\">https://lxp.twiser.com/</a></p>\n</li>\n</ul>\n","_postman_id":"0a0dbd94-7d0d-4aec-924f-08d4a3ab1eb1"}],"variable":[{"key":"bearer_token_1e7n","secret":true},{"key":"supabase_service_role_api_key_0hsq","secret":true}]}