{"info":{"_postman_id":"44f1d74e-9491-4086-a27f-87cfa05bc849","name":"OTO Tammim API","description":"<html><head></head><body><p>The <strong>Tammim API</strong> provides a comprehensive set of endpoints that enable merchants, freelancers, and companies to seamlessly integrate registration, authentication, checkout, payment, and webhook management capabilities into their systems.</p>\n<p>Tammim API is designed to simplify the full transaction lifecycle — from seller onboarding to payment completion — while offering secure authentication, flexible checkout initiation, and real-time event notifications via webhooks. The API supports both <strong>freelancer</strong> and <strong>company</strong> seller models, each with tailored validation rules and document requirements, ensuring compliance with regulatory and business standards.</p>\n<p>Through the Tammim API, integrators can:</p>\n<ul>\n<li><p>Register sellers with detailed identity, banking, address, and document verification</p>\n</li>\n<li><p>Authenticate users and manage access securely using access and refresh tokens</p>\n</li>\n<li><p>Initiate checkout sessions and generate hosted payment pages</p>\n</li>\n<li><p>Track payment status and transaction outcomes</p>\n</li>\n<li><p>Configure and manage webhooks for real-time checkout and payment notifications</p>\n</li>\n</ul>\n<p>All endpoints follow RESTful principles, use standard HTTP status codes, and exchange data in JSON format (with multipart support where required). Security best practices such as HTTPS enforcement, token-based authentication, and controlled webhook access are integral to the platform.</p>\n<p>The Tammim API is built to be scalable, reliable, and easy to integrate, enabling businesses to focus on growth while Tammim handles the underlying payment and checkout infrastructure.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"29568745","collectionId":"44f1d74e-9491-4086-a27f-87cfa05bc849","publishedId":"2sBXcEkg4f","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-03-02T08:06:11.000Z"},"item":[{"name":"Supported Banks","item":[],"id":"e7936339-13e2-4c2b-aa73-d92196e07060","description":"<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Bank ID</th>\n<th>Bank Name</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>40</td>\n<td>Riyad Bank</td>\n</tr>\n<tr>\n<td>44</td>\n<td>Al Bilad Bank</td>\n</tr>\n<tr>\n<td>45</td>\n<td>Al Inma Bank</td>\n</tr>\n<tr>\n<td>46</td>\n<td>Al Rajhi Bank</td>\n</tr>\n<tr>\n<td>47</td>\n<td>Arab National Bank</td>\n</tr>\n<tr>\n<td>48</td>\n<td>Bank Al Jazira</td>\n</tr>\n<tr>\n<td>49</td>\n<td>Bank Muscat</td>\n</tr>\n<tr>\n<td>50</td>\n<td>Banque Saudi Fransi</td>\n</tr>\n<tr>\n<td>51</td>\n<td>BNP Paribas</td>\n</tr>\n<tr>\n<td>52</td>\n<td>Deutsche Bank</td>\n</tr>\n<tr>\n<td>53</td>\n<td>Emirates Bank</td>\n</tr>\n<tr>\n<td>54</td>\n<td>Gulf International Bank</td>\n</tr>\n<tr>\n<td>55</td>\n<td>National Bank of Bahrain</td>\n</tr>\n<tr>\n<td>56</td>\n<td>National Bank of Kuwait</td>\n</tr>\n<tr>\n<td>57</td>\n<td>National Bank of Pakistan</td>\n</tr>\n<tr>\n<td>58</td>\n<td>Saudi National Bank</td>\n</tr>\n<tr>\n<td>59</td>\n<td>Samba Financial Services</td>\n</tr>\n<tr>\n<td>60</td>\n<td>Saudi Arabian Monetary Agency</td>\n</tr>\n<tr>\n<td>61</td>\n<td>Saudi British Bank (SABB)</td>\n</tr>\n<tr>\n<td>62</td>\n<td>Saudi Hollandi Bank</td>\n</tr>\n<tr>\n<td>63</td>\n<td>Saudi Investment Bank</td>\n</tr>\n<tr>\n<td>64</td>\n<td>State Bank of India</td>\n</tr>\n<tr>\n<td>3</td>\n<td>Riyad Bank</td>\n</tr>\n<tr>\n<td>65</td>\n<td>Other Bank</td>\n</tr>\n<tr>\n<td>66</td>\n<td>Additional Bank</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"e7936339-13e2-4c2b-aa73-d92196e07060"},{"name":"Register","item":[{"name":"Register Company / Freelance","id":"bf332566-963f-4e5f-ad00-74ae94e1f931","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"multipart/form-data"}],"body":{"mode":"formdata","formdata":[{"key":"civilFile","type":"file","uuid":"5f55df87-5764-4d06-a574-da49608940c1","src":"/Users/ibrahim/Downloads/files_%2F414%2FcompanyFile%2F8d0a92ea-acc2-42a0-996b-a2f4212ee12a.docx"},{"key":"companyFile","type":"file","uuid":"27a3f8b2-73c8-4a18-93bb-aa59e5bb9b14","src":"/Users/ibrahim/Downloads/files_%2f414%2FcivilFile%2F3d14cc2a-d00d-468a-b922-347fc9b654e5.docx"},{"key":"data","value":"{\n    \"email\": \"i.sahin.tammim.1184@gmail.com\",\n    \"password\": \"Qw123456\",\n    \"phoneNumber\": \"9665113323252\",\n    \"firstName\": \"ibrahim\",\n    \"lastName\": \"sahin\",\n    \"invoiceType\": \"company\",\n    \"VATNumber\": \"312391230912390\",\n    \"CRNumber\": \"5646546545\",\n    \"unifiedNumber\": \"7321231231\",\n    \"nationalId\": null,\n    \"bankId\": 40,\n    \"BankIban\": \"SA2312312123132132312123123\",\n    \"BankHolderName\": \"bank holfe\",\n    \"address\": {\n        \"addressText\": \"Riyadh Front Exhibition & Conference Center, Riyadh\",\n        \"city\": null,\n        \"stateName\": \"Riyadh Province\",\n        \"districtName\": \"King Khalid International Airport\",\n        \"neighbourhoodName\": \"King Khalid International Airport\",\n        \"street\": \"RPPH+7PH\",\n        \"buildingName\": \"5544\",\n        \"zipCode\": \"13413\",\n        \"lat\": 24.8356823,\n        \"lng\": 46.729356,\n        \"shortAddressCode\": null,\n        \"secondary\": \"1secc12\"\n    }\n}","type":"text","uuid":"272d4132-dac1-4d86-bcfa-b09478420efc"}]},"url":"{{tammim-url}}/api/v1/register","description":"<p>The seller type is determined by the <code>invoiceType</code> field:</p>\n<ul>\n<li><p><code>freelancer</code> – Individual seller registration</p>\n</li>\n<li><p><code>company</code> – Business entity registration</p>\n</li>\n</ul>\n<p>Required documents and validation rules vary based on the selected <code>invoiceType</code>.</p>\n<p>Upon successful validation, a new seller account is created in the system.</p>\n<p><strong>Business Logic</strong></p>\n<p><strong>Registration Process Flow</strong></p>\n<ul>\n<li><p>Validate invoice type (<code>freelancer</code> or <code>company</code>).</p>\n</li>\n<li><p>Validate all required fields based on the selected invoice type.</p>\n</li>\n<li><p>Verify that the provided city exists in the system.</p>\n</li>\n<li><p>Validate file uploads (<code>civilFile</code> and <code>companyFile</code>).</p>\n</li>\n<li><p>Create the authentication account.</p>\n</li>\n<li><p>Register the user in the system with seller privileges.</p>\n</li>\n<li><p>Upload and securely store document files.</p>\n</li>\n<li><p>Update account settings and bank information.</p>\n</li>\n<li><p>Generate and return authentication tokens.</p>\n</li>\n</ul>\n<p><strong>Invoice Type Differences</strong></p>\n<p><strong>Freelancer</strong></p>\n<p>· Requires only common fields</p>\n<p>· companyFile should contain freelance document</p>\n<p>· No VAT or CR number required</p>\n<p><strong>Company</strong></p>\n<p><strong>·</strong> Requires VATNumber and CRNumber in addition to common fields</p>\n<p>· companyFile should contain Commercial Registration document</p>\n<p>· Must be VAT registered</p>\n<p><strong>Authentication</strong></p>\n<p>No authentication required - This is a public endpoint for new company/ freelancer registration.</p>\n<p><strong>File Upload Requirements</strong></p>\n<h6 id=\"civilfile-required\"><strong>civilFile (Required)</strong></h6>\n<p><strong>·</strong> Civil ID document upload</p>\n<p>· Accepted formats: PDF, JPG, PNG</p>\n<p>· Maximum file size: 10MB</p>\n<p>· Must be clear and readable</p>\n<h6 id=\"companyfile-required\"><strong>companyFile (Required)</strong></h6>\n<p><strong>·</strong> For Freelancers: Freelance document</p>\n<p>· For Companies: Commercial Registration (CR) document</p>\n<p>· Accepted formats: PDF, JPG, PNG</p>\n<p>· Maximum file size: 10MB</p>\n<p>· Must be clear and readable</p>\n<h4 id=\"request-fields-json-data\"><strong>Request Fields (JSON Data)</strong></h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field Name</th>\n<th><strong>Required</strong></th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>email</td>\n<td>Yes</td>\n<td>String</td>\n<td>User email address (must be unique)</td>\n</tr>\n<tr>\n<td>password</td>\n<td>Yes</td>\n<td>String</td>\n<td>Account password (minimum 6 characters)</td>\n</tr>\n<tr>\n<td>phoneNumber</td>\n<td>Yes</td>\n<td>String</td>\n<td>Phone number with country code (e.g., 966511234567)</td>\n</tr>\n<tr>\n<td>firstName</td>\n<td>Yes</td>\n<td>String</td>\n<td>First name</td>\n</tr>\n<tr>\n<td>lastName</td>\n<td>Yes</td>\n<td>String</td>\n<td>Last name</td>\n</tr>\n<tr>\n<td>invoiceType</td>\n<td>Yes</td>\n<td>String</td>\n<td>Type of registration: <code>freelancer</code> or <code>company</code></td>\n</tr>\n<tr>\n<td>bankId</td>\n<td>Yes</td>\n<td>Long</td>\n<td>Bank identifier (see supported banks list)</td>\n</tr>\n<tr>\n<td>bankIban</td>\n<td>Yes</td>\n<td>String</td>\n<td>IBAN number</td>\n</tr>\n<tr>\n<td>bankHolderName</td>\n<td>Yes</td>\n<td>String</td>\n<td>Bank account holder name</td>\n</tr>\n<tr>\n<td>addressText</td>\n<td>Yes</td>\n<td>String</td>\n<td>Full address text</td>\n</tr>\n<tr>\n<td>city</td>\n<td>Yes</td>\n<td>String</td>\n<td>City name (e.g., <code>Riyadh</code>)</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"additional-fields-for-freelancers-invoicetype-freelancer\"><strong>Additional Fields for Freelancers (invoiceType: \"freelancer\")</strong></h4>\n<p>Currently no additional required fields for freelancers.</p>\n<h4 id=\"additional-required-fields-for-companies-invoicetype-company\">Additional Required Fields for Companies (invoiceType: <code>\"company\"</code>)</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th><strong>Required</strong></th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>VATNumber</td>\n<td>Yes</td>\n<td>String</td>\n<td>VAT registration number</td>\n</tr>\n<tr>\n<td>CRNumber</td>\n<td>Yes</td>\n<td>String</td>\n<td>Commercial registration number</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"optional-fields-all-users\">Optional Fields (All Users)</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th><strong>Required</strong></th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>companyName</td>\n<td>No</td>\n<td>String</td>\n<td>Company or business name</td>\n</tr>\n<tr>\n<td>freelancerNumber</td>\n<td>No</td>\n<td>String</td>\n<td>Freelancer registration number</td>\n</tr>\n<tr>\n<td>nationalId</td>\n<td>No</td>\n<td>String</td>\n<td>National ID number</td>\n</tr>\n<tr>\n<td>unifiedNumber</td>\n<td>No</td>\n<td>String</td>\n<td>Unified number</td>\n</tr>\n<tr>\n<td>stateName</td>\n<td>No</td>\n<td>String</td>\n<td>State / Province name</td>\n</tr>\n<tr>\n<td>districtName</td>\n<td>No</td>\n<td>String</td>\n<td>District name</td>\n</tr>\n<tr>\n<td>neighbourhoodName</td>\n<td>No</td>\n<td>String</td>\n<td>Neighbourhood name</td>\n</tr>\n<tr>\n<td>street</td>\n<td>No</td>\n<td>String</td>\n<td>Street name / number</td>\n</tr>\n<tr>\n<td>buildingName</td>\n<td>No</td>\n<td>String</td>\n<td>Building name</td>\n</tr>\n<tr>\n<td>zipCode</td>\n<td>No</td>\n<td>String</td>\n<td>Postal / ZIP code</td>\n</tr>\n<tr>\n<td>lat</td>\n<td>No</td>\n<td>Double</td>\n<td>Latitude coordinate</td>\n</tr>\n<tr>\n<td>lng</td>\n<td>No</td>\n<td>Double</td>\n<td>Longitude coordinate</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Response Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>userType</td>\n<td>String</td>\n<td>User type (always <code>\"seller\"</code>)</td>\n</tr>\n<tr>\n<td>idToken</td>\n<td>String</td>\n<td>Authentication token for API requests</td>\n</tr>\n<tr>\n<td>refreshToken</td>\n<td>String</td>\n<td>Token used to refresh the <code>idToken</code> when it expires</td>\n</tr>\n<tr>\n<td>email</td>\n<td>String</td>\n<td>Registered email address</td>\n</tr>\n<tr>\n<td>expiresIn</td>\n<td>String</td>\n<td>Token expiration time in seconds (typically <code>3600</code>)</td>\n</tr>\n<tr>\n<td>userID</td>\n<td>Number</td>\n<td>Unique identifier of the user</td>\n</tr>\n<tr>\n<td>sessionCreated</td>\n<td>Boolean</td>\n<td>Indicates whether a new session was successfully created</td>\n</tr>\n<tr>\n<td>forceLogoutDays</td>\n<td>Number</td>\n<td>Number of days after which the user is forced to log out</td>\n</tr>\n<tr>\n<td>successs</td>\n<td>Boolean</td>\n<td>Indicates whether the request was successful</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","v1","register"],"host":["{{tammim-url}}"],"query":[],"variable":[]}},"response":[{"id":"9a2cceab-ca5d-4747-8531-9d8baa75dbab","name":"200-Register Company","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"multipart/form-data"},{"key":"Cookie","value":"session=eyJhbGciOiJSUzI1NiIsImtpZCI6IjB1a2x0QSJ9.eyJpc3MiOiJodHRwczovL3Nlc3Npb24uZmlyZWJhc2UuZ29vZ2xlLmNvbS9vdG8tc3RhZ2UtYXBpIiwiZmlyZWJhc2VVSUQiOiJHc2twelgyRnNYUzhNTWxXMnlWaWFYZE5ySjczIiwicGhvbmVOdW1iZXIiOiI5NjY1MTEyMzQ2MjMiLCJ0YW1taW1Db21wYW55SUQiOjE2MiwidXNlclR5cGUiOiJzZWxsZXIiLCJ1c2VySUQiOjM5MSwiYXVkIjoib3RvLXN0YWdlLWFwaSIsImF1dGhfdGltZSI6MTc2OTUyNTIwNSwidXNlcl9pZCI6Ikdza3B6WDJGc1hTOE1NbFcyeVZpYVhkTnJKNzMiLCJzdWIiOiJHc2twelgyRnNYUzhNTWxXMnlWaWFYZE5ySjczIiwiaWF0IjoxNzY5NTI1MjA2LCJleHAiOjE3Njk3ODQ0MDYsImVtYWlsIjoiaS5zYWhpbi50YW1taW0uMTI0QGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJlbWFpbCI6WyJpLnNhaGluLnRhbW1pbS4xMjRAZ21haWwuY29tIl19LCJzaWduX2luX3Byb3ZpZGVyIjoiY3VzdG9tIn19.TR9gfSJrK47K4NAXKVoqbz9E9hHmgUBIQwoWAuhzodmpfScuUPDMNz_JxieIn7M2niLwnNCkEqjO7LQJdDAz677IbCG5mg_rJpTjbjH4i3Hbsco8avCFr2_8BGCgwLFIc7QUn30uJhL4fsyUw4-FVV3srhWVBX3WKqIg5moPITfwd9cBpenY9n0oeSQqWX4zCFChOgDtQtrAc7DgYQpSfpppz0es2hI16XnBtRAU29JycTdpLxQg6RZd80yez0wghtJM7vI45KelvLSA0Y6tsXWjz8ZsKzo7IWo58_gfJQ8AD4dqnljOpvINI1VN1ozBbvzTTZrzxJaa35JsYzMgsA; session=eyJhbGciOiJSUzI1NiIsImtpZCI6IjB1a2x0QSJ9.eyJpc3MiOiJodHRwczovL3Nlc3Npb24uZmlyZWJhc2UuZ29vZ2xlLmNvbS9vdG8tc3RhZ2UtYXBpIiwiZmlyZWJhc2VVSUQiOiJHc2twelgyRnNYUzhNTWxXMnlWaWFYZE5ySjczIiwicGhvbmVOdW1iZXIiOiI5NjY1MTEyMzQ2MjMiLCJ0YW1taW1Db21wYW55SUQiOjE2MiwidXNlclR5cGUiOiJzZWxsZXIiLCJ1c2VySUQiOjM5MSwiYXVkIjoib3RvLXN0YWdlLWFwaSIsImF1dGhfdGltZSI6MTc2OTUyNTIwNSwidXNlcl9pZCI6Ikdza3B6WDJGc1hTOE1NbFcyeVZpYVhkTnJKNzMiLCJzdWIiOiJHc2twelgyRnNYUzhNTWxXMnlWaWFYZE5ySjczIiwiaWF0IjoxNzY5NTI1MjA2LCJleHAiOjE3Njk3ODQ0MDYsImVtYWlsIjoiaS5zYWhpbi50YW1taW0uMTI0QGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJlbWFpbCI6WyJpLnNhaGluLnRhbW1pbS4xMjRAZ21haWwuY29tIl19LCJzaWduX2luX3Byb3ZpZGVyIjoiY3VzdG9tIn19.TR9gfSJrK47K4NAXKVoqbz9E9hHmgUBIQwoWAuhzodmpfScuUPDMNz_JxieIn7M2niLwnNCkEqjO7LQJdDAz677IbCG5mg_rJpTjbjH4i3Hbsco8avCFr2_8BGCgwLFIc7QUn30uJhL4fsyUw4-FVV3srhWVBX3WKqIg5moPITfwd9cBpenY9n0oeSQqWX4zCFChOgDtQtrAc7DgYQpSfpppz0es2hI16XnBtRAU29JycTdpLxQg6RZd80yez0wghtJM7vI45KelvLSA0Y6tsXWjz8ZsKzo7IWo58_gfJQ8AD4dqnljOpvINI1VN1ozBbvzTTZrzxJaa35JsYzMgsA; session=eyJhbGciOiJSUzI1NiIsImtpZCI6IjB1a2x0QSJ9.eyJpc3MiOiJodHRwczovL3Nlc3Npb24uZmlyZWJhc2UuZ29vZ2xlLmNvbS9vdG8tc3RhZ2UtYXBpIiwiZmlyZWJhc2VVSUQiOiJHc2twelgyRnNYUzhNTWxXMnlWaWFYZE5ySjczIiwicGhvbmVOdW1iZXIiOiI5NjY1MTEyMzQ2MjMiLCJ0YW1taW1Db21wYW55SUQiOjE2MiwidXNlclR5cGUiOiJzZWxsZXIiLCJ1c2VySUQiOjM5MSwiYXVkIjoib3RvLXN0YWdlLWFwaSIsImF1dGhfdGltZSI6MTc2OTUyNTIwNSwidXNlcl9pZCI6Ikdza3B6WDJGc1hTOE1NbFcyeVZpYVhkTnJKNzMiLCJzdWIiOiJHc2twelgyRnNYUzhNTWxXMnlWaWFYZE5ySjczIiwiaWF0IjoxNzY5NTI1MjA2LCJleHAiOjE3Njk3ODQ0MDYsImVtYWlsIjoiaS5zYWhpbi50YW1taW0uMTI0QGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJlbWFpbCI6WyJpLnNhaGluLnRhbW1pbS4xMjRAZ21haWwuY29tIl19LCJzaWduX2luX3Byb3ZpZGVyIjoiY3VzdG9tIn19.TR9gfSJrK47K4NAXKVoqbz9E9hHmgUBIQwoWAuhzodmpfScuUPDMNz_JxieIn7M2niLwnNCkEqjO7LQJdDAz677IbCG5mg_rJpTjbjH4i3Hbsco8avCFr2_8BGCgwLFIc7QUn30uJhL4fsyUw4-FVV3srhWVBX3WKqIg5moPITfwd9cBpenY9n0oeSQqWX4zCFChOgDtQtrAc7DgYQpSfpppz0es2hI16XnBtRAU29JycTdpLxQg6RZd80yez0wghtJM7vI45KelvLSA0Y6tsXWjz8ZsKzo7IWo58_gfJQ8AD4dqnljOpvINI1VN1ozBbvzTTZrzxJaa35JsYzMgsA","disabled":true},{"key":"","value":"","type":"text","disabled":true}],"body":{"mode":"formdata","formdata":[{"key":"civilFile","type":"file","uuid":"5f55df87-5764-4d06-a574-da49608940c1","src":"/Users/ibrahim/Downloads/files_%2F414%2FcivilFile%2F33125566-4572-4893-b72e-9e7ae18504a3.docx"},{"key":"companyFile","type":"file","uuid":"27a3f8b2-73c8-4a18-93bb-aa59e5bb9b14","src":"/Users/ibrahim/Downloads/files_%2f414%2FcivilFile%2F3d14cc2a-d00d-468a-b922-347fc9b654e5.docx"},{"key":"data","value":"{\n    \"email\": \"i.sahin.tammim.1003@gmail.com\",\n    \"password\": \"Qw123456\",\n    \"phoneNumber\": \"966511232323\",\n    \"firstName\": \"ibrahim\",\n    \"lastName\": \"sahin\",\n    \"invoiceType\": \"company\",\n    \"VATNumber\": \"312391230912390\",\n    \"CRNumber\": \"5646546545\",\n    \"unifiedNumber\": \"7321231231\",\n    \"nationalId\": null,\n    \"bankId\": 40,\n    \"BankIban\": \"SA2312312123132132312123123\",\n    \"BankHolderName\": \"bank holfe\",\n    \"address\": {\n        \"addressText\": \"Riyadh Front Exhibition & Conference Center, Riyadh\",\n        \"city\": \"Riyadh\",\n        \"stateName\": \"Riyadh Province\",\n        \"districtName\": \"King Khalid International Airport\",\n        \"neighbourhoodName\": \"King Khalid International Airport\",\n        \"street\": \"RPPH+7PH\",\n        \"buildingName\": null,\n        \"zipCode\": \"13413\",\n        \"lat\": 24.8356823,\n        \"lng\": 46.729356,\n        \"shortAddressCode\": null,\n        \"secondary\": null\n    }\n}","type":"text","uuid":"272d4132-dac1-4d86-bcfa-b09478420efc"}]},"url":"https://dashboard.tammim.app/api/v1/register"},"_postman_previewlanguage":"","header":[],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\r\n\t\"userType\": \"seller\",\r\n\t\"idToken\": \"eyJhbGciOiJSUzI1NiIsImtpZCI6IjFjMzIxOT...\",\r\n\t\"refreshToken\": \"AMf-vBzD2f3NV_1FVzLLEwrsQtAtSegjE...\",\r\n\t\"email\": \"company@example.com\",\r\n\t\"expiresIn\": \"3600\",\r\n\t\"userID\": \"234\"\r\n    \"sessionCreate\": true,\r\n    \"forceLogoutDays\": 3,\r\n\t\"success\": true\r\n}\r\n"},{"id":"a77b2fae-f38c-4aee-8eaf-1054091f5db4","name":"200-Register Freelance","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Cookie","value":"session=eyJhbGciOiJSUzI1NiIsImtpZCI6IjB1a2x0QSJ9.eyJpc3MiOiJodHRwczovL3Nlc3Npb24uZmlyZWJhc2UuZ29vZ2xlLmNvbS9vdG8tc3RhZ2UtYXBpIiwiZmlyZWJhc2VVSUQiOiJHc2twelgyRnNYUzhNTWxXMnlWaWFYZE5ySjczIiwicGhvbmVOdW1iZXIiOiI5NjY1MTEyMzQ2MjMiLCJ0YW1taW1Db21wYW55SUQiOjE2MiwidXNlclR5cGUiOiJzZWxsZXIiLCJ1c2VySUQiOjM5MSwiYXVkIjoib3RvLXN0YWdlLWFwaSIsImF1dGhfdGltZSI6MTc2OTUyNTIwNSwidXNlcl9pZCI6Ikdza3B6WDJGc1hTOE1NbFcyeVZpYVhkTnJKNzMiLCJzdWIiOiJHc2twelgyRnNYUzhNTWxXMnlWaWFYZE5ySjczIiwiaWF0IjoxNzY5NTI1MjA2LCJleHAiOjE3Njk3ODQ0MDYsImVtYWlsIjoiaS5zYWhpbi50YW1taW0uMTI0QGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJlbWFpbCI6WyJpLnNhaGluLnRhbW1pbS4xMjRAZ21haWwuY29tIl19LCJzaWduX2luX3Byb3ZpZGVyIjoiY3VzdG9tIn19.TR9gfSJrK47K4NAXKVoqbz9E9hHmgUBIQwoWAuhzodmpfScuUPDMNz_JxieIn7M2niLwnNCkEqjO7LQJdDAz677IbCG5mg_rJpTjbjH4i3Hbsco8avCFr2_8BGCgwLFIc7QUn30uJhL4fsyUw4-FVV3srhWVBX3WKqIg5moPITfwd9cBpenY9n0oeSQqWX4zCFChOgDtQtrAc7DgYQpSfpppz0es2hI16XnBtRAU29JycTdpLxQg6RZd80yez0wghtJM7vI45KelvLSA0Y6tsXWjz8ZsKzo7IWo58_gfJQ8AD4dqnljOpvINI1VN1ozBbvzTTZrzxJaa35JsYzMgsA; session=eyJhbGciOiJSUzI1NiIsImtpZCI6IjB1a2x0QSJ9.eyJpc3MiOiJodHRwczovL3Nlc3Npb24uZmlyZWJhc2UuZ29vZ2xlLmNvbS9vdG8tc3RhZ2UtYXBpIiwiZmlyZWJhc2VVSUQiOiJHc2twelgyRnNYUzhNTWxXMnlWaWFYZE5ySjczIiwicGhvbmVOdW1iZXIiOiI5NjY1MTEyMzQ2MjMiLCJ0YW1taW1Db21wYW55SUQiOjE2MiwidXNlclR5cGUiOiJzZWxsZXIiLCJ1c2VySUQiOjM5MSwiYXVkIjoib3RvLXN0YWdlLWFwaSIsImF1dGhfdGltZSI6MTc2OTUyNTIwNSwidXNlcl9pZCI6Ikdza3B6WDJGc1hTOE1NbFcyeVZpYVhkTnJKNzMiLCJzdWIiOiJHc2twelgyRnNYUzhNTWxXMnlWaWFYZE5ySjczIiwiaWF0IjoxNzY5NTI1MjA2LCJleHAiOjE3Njk3ODQ0MDYsImVtYWlsIjoiaS5zYWhpbi50YW1taW0uMTI0QGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJlbWFpbCI6WyJpLnNhaGluLnRhbW1pbS4xMjRAZ21haWwuY29tIl19LCJzaWduX2luX3Byb3ZpZGVyIjoiY3VzdG9tIn19.TR9gfSJrK47K4NAXKVoqbz9E9hHmgUBIQwoWAuhzodmpfScuUPDMNz_JxieIn7M2niLwnNCkEqjO7LQJdDAz677IbCG5mg_rJpTjbjH4i3Hbsco8avCFr2_8BGCgwLFIc7QUn30uJhL4fsyUw4-FVV3srhWVBX3WKqIg5moPITfwd9cBpenY9n0oeSQqWX4zCFChOgDtQtrAc7DgYQpSfpppz0es2hI16XnBtRAU29JycTdpLxQg6RZd80yez0wghtJM7vI45KelvLSA0Y6tsXWjz8ZsKzo7IWo58_gfJQ8AD4dqnljOpvINI1VN1ozBbvzTTZrzxJaa35JsYzMgsA","disabled":true}],"body":{"mode":"formdata","formdata":[{"key":"civilFile","type":"file","uuid":"e59bfe0b-69f3-421a-ae29-18603fac90bf","src":"/Users/ibrahim/Downloads/files_%2F414%2FcivilFile%2F0fb36ca9-39b5-4927-8e21-98ca40f2babe.docx"},{"key":"companyFile","type":"file","uuid":"a10a69aa-446e-4559-88e8-977e7e085250","src":"/Users/ibrahim/Downloads/files_%2F414%2FcivilFile%2F33125566-4572-4893-b72e-9e7ae18504a3.docx"},{"key":"data","value":"{\n    \"email\": \"i.sahin.tammim.1006@gmail.com\",\n    \"password\": \"Qw123456\",\n    \"phoneNumber\": \"966511234623\",\n    \"firstName\": \"ibrahim\",\n    \"lastName\": \"sahin\",\n    \"invoiceType\": \"freelancer\",\n    \"freelancerNumber\": null,\n    \"nationalId\": null,\n    \"unifiedNumber\": null,\n    \"bankId\": 40,\n    \"BankIban\": \"SA0380049800608010167519\",\n    \"BankHolderName\": \"ibrahim sahin\",\n    \"address\" : {\n        \"addressText\": \"Riyadh Front Exhibition & Conference Center, Riyadh\",\n        \"city\": \"Riyadh\",\n        \"stateName\": \"Riyadh Province\",\n        \"districtName\": \"King Khalid International Airport\",\n        \"neighbourhoodName\": \"King Khalid International Airport\",\n        \"street\": \"RPPH+7PH\",\n        \"buildingName\": null,\n        \"zipCode\": \"13413\",\n        \"lat\": 24.8356823,\n        \"lng\": 46.729356,\n        \"shortAddressCode\": null,\n        \"secondary\": null\n    }\n}","type":"text","uuid":"a8abece7-f403-4da9-a76a-8c12200fd54b"}]},"url":"https://dashboard.tammim.app/api/v1/register"},"_postman_previewlanguage":"","header":[],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\r\n\t\"userType\": \"seller\",\r\n\t\"idToken\": \"eyJhbGciOiJSUzI1NiIsImtpZCI6IjFjMzIxOT...\",\r\n\t\"refreshToken\": \"AMf-vBzD2f3NV_1FVzLLEwrsQtAtSegjE...\",\r\n\t\"email\": \"freeelancery@example.com\",\r\n\t\"expiresIn\": \"3600\",\r\n\t\"userID\": \"234\"\r\n    \"sessionCreate\": true,\r\n    \"forceLogoutDays\": 3,\r\n\t\"success\": true\r\n}\r\n"},{"id":"afb0142c-f5e6-44d4-8fbe-a9a7f44259e9","name":"400-Missing Email","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"multipart/form-data"},{"key":"Cookie","value":"session=eyJhbGciOiJSUzI1NiIsImtpZCI6IjB1a2x0QSJ9.eyJpc3MiOiJodHRwczovL3Nlc3Npb24uZmlyZWJhc2UuZ29vZ2xlLmNvbS9vdG8tc3RhZ2UtYXBpIiwiZmlyZWJhc2VVSUQiOiJHc2twelgyRnNYUzhNTWxXMnlWaWFYZE5ySjczIiwicGhvbmVOdW1iZXIiOiI5NjY1MTEyMzQ2MjMiLCJ0YW1taW1Db21wYW55SUQiOjE2MiwidXNlclR5cGUiOiJzZWxsZXIiLCJ1c2VySUQiOjM5MSwiYXVkIjoib3RvLXN0YWdlLWFwaSIsImF1dGhfdGltZSI6MTc2OTUyNTIwNSwidXNlcl9pZCI6Ikdza3B6WDJGc1hTOE1NbFcyeVZpYVhkTnJKNzMiLCJzdWIiOiJHc2twelgyRnNYUzhNTWxXMnlWaWFYZE5ySjczIiwiaWF0IjoxNzY5NTI1MjA2LCJleHAiOjE3Njk3ODQ0MDYsImVtYWlsIjoiaS5zYWhpbi50YW1taW0uMTI0QGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJlbWFpbCI6WyJpLnNhaGluLnRhbW1pbS4xMjRAZ21haWwuY29tIl19LCJzaWduX2luX3Byb3ZpZGVyIjoiY3VzdG9tIn19.TR9gfSJrK47K4NAXKVoqbz9E9hHmgUBIQwoWAuhzodmpfScuUPDMNz_JxieIn7M2niLwnNCkEqjO7LQJdDAz677IbCG5mg_rJpTjbjH4i3Hbsco8avCFr2_8BGCgwLFIc7QUn30uJhL4fsyUw4-FVV3srhWVBX3WKqIg5moPITfwd9cBpenY9n0oeSQqWX4zCFChOgDtQtrAc7DgYQpSfpppz0es2hI16XnBtRAU29JycTdpLxQg6RZd80yez0wghtJM7vI45KelvLSA0Y6tsXWjz8ZsKzo7IWo58_gfJQ8AD4dqnljOpvINI1VN1ozBbvzTTZrzxJaa35JsYzMgsA; session=eyJhbGciOiJSUzI1NiIsImtpZCI6IjB1a2x0QSJ9.eyJpc3MiOiJodHRwczovL3Nlc3Npb24uZmlyZWJhc2UuZ29vZ2xlLmNvbS9vdG8tc3RhZ2UtYXBpIiwiZmlyZWJhc2VVSUQiOiJHc2twelgyRnNYUzhNTWxXMnlWaWFYZE5ySjczIiwicGhvbmVOdW1iZXIiOiI5NjY1MTEyMzQ2MjMiLCJ0YW1taW1Db21wYW55SUQiOjE2MiwidXNlclR5cGUiOiJzZWxsZXIiLCJ1c2VySUQiOjM5MSwiYXVkIjoib3RvLXN0YWdlLWFwaSIsImF1dGhfdGltZSI6MTc2OTUyNTIwNSwidXNlcl9pZCI6Ikdza3B6WDJGc1hTOE1NbFcyeVZpYVhkTnJKNzMiLCJzdWIiOiJHc2twelgyRnNYUzhNTWxXMnlWaWFYZE5ySjczIiwiaWF0IjoxNzY5NTI1MjA2LCJleHAiOjE3Njk3ODQ0MDYsImVtYWlsIjoiaS5zYWhpbi50YW1taW0uMTI0QGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJlbWFpbCI6WyJpLnNhaGluLnRhbW1pbS4xMjRAZ21haWwuY29tIl19LCJzaWduX2luX3Byb3ZpZGVyIjoiY3VzdG9tIn19.TR9gfSJrK47K4NAXKVoqbz9E9hHmgUBIQwoWAuhzodmpfScuUPDMNz_JxieIn7M2niLwnNCkEqjO7LQJdDAz677IbCG5mg_rJpTjbjH4i3Hbsco8avCFr2_8BGCgwLFIc7QUn30uJhL4fsyUw4-FVV3srhWVBX3WKqIg5moPITfwd9cBpenY9n0oeSQqWX4zCFChOgDtQtrAc7DgYQpSfpppz0es2hI16XnBtRAU29JycTdpLxQg6RZd80yez0wghtJM7vI45KelvLSA0Y6tsXWjz8ZsKzo7IWo58_gfJQ8AD4dqnljOpvINI1VN1ozBbvzTTZrzxJaa35JsYzMgsA; session=eyJhbGciOiJSUzI1NiIsImtpZCI6IjB1a2x0QSJ9.eyJpc3MiOiJodHRwczovL3Nlc3Npb24uZmlyZWJhc2UuZ29vZ2xlLmNvbS9vdG8tc3RhZ2UtYXBpIiwiZmlyZWJhc2VVSUQiOiJHc2twelgyRnNYUzhNTWxXMnlWaWFYZE5ySjczIiwicGhvbmVOdW1iZXIiOiI5NjY1MTEyMzQ2MjMiLCJ0YW1taW1Db21wYW55SUQiOjE2MiwidXNlclR5cGUiOiJzZWxsZXIiLCJ1c2VySUQiOjM5MSwiYXVkIjoib3RvLXN0YWdlLWFwaSIsImF1dGhfdGltZSI6MTc2OTUyNTIwNSwidXNlcl9pZCI6Ikdza3B6WDJGc1hTOE1NbFcyeVZpYVhkTnJKNzMiLCJzdWIiOiJHc2twelgyRnNYUzhNTWxXMnlWaWFYZE5ySjczIiwiaWF0IjoxNzY5NTI1MjA2LCJleHAiOjE3Njk3ODQ0MDYsImVtYWlsIjoiaS5zYWhpbi50YW1taW0uMTI0QGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJlbWFpbCI6WyJpLnNhaGluLnRhbW1pbS4xMjRAZ21haWwuY29tIl19LCJzaWduX2luX3Byb3ZpZGVyIjoiY3VzdG9tIn19.TR9gfSJrK47K4NAXKVoqbz9E9hHmgUBIQwoWAuhzodmpfScuUPDMNz_JxieIn7M2niLwnNCkEqjO7LQJdDAz677IbCG5mg_rJpTjbjH4i3Hbsco8avCFr2_8BGCgwLFIc7QUn30uJhL4fsyUw4-FVV3srhWVBX3WKqIg5moPITfwd9cBpenY9n0oeSQqWX4zCFChOgDtQtrAc7DgYQpSfpppz0es2hI16XnBtRAU29JycTdpLxQg6RZd80yez0wghtJM7vI45KelvLSA0Y6tsXWjz8ZsKzo7IWo58_gfJQ8AD4dqnljOpvINI1VN1ozBbvzTTZrzxJaa35JsYzMgsA","disabled":true},{"key":"","value":"","type":"text","disabled":true}],"body":{"mode":"formdata","formdata":[{"key":"civilFile","type":"file","uuid":"5f55df87-5764-4d06-a574-da49608940c1","src":"/Users/ibrahim/Downloads/files_%2F414%2FcivilFile%2F33125566-4572-4893-b72e-9e7ae18504a3.docx"},{"key":"companyFile","type":"file","uuid":"27a3f8b2-73c8-4a18-93bb-aa59e5bb9b14","src":"/Users/ibrahim/Downloads/files_%2f414%2FcivilFile%2F3d14cc2a-d00d-468a-b922-347fc9b654e5.docx"},{"key":"data","value":"{\n    \"password\": \"Qw123456\",\n    \"phoneNumber\": \"966511232323\",\n    \"firstName\": \"ibrahim\",\n    \"lastName\": \"sahin\",\n    \"invoiceType\": \"company\",\n    \"VATNumber\": \"312391230912390\",\n    \"CRNumber\": \"5646546545\",\n    \"unifiedNumber\": \"7321231231\",\n    \"nationalId\": null,\n    \"bankId\": 40,\n    \"BankIban\": \"SA2312312123132132312123123\",\n    \"BankHolderName\": \"bank holfe\",\n    \"address\": {\n        \"addressText\": \"Riyadh Front Exhibition & Conference Center, Riyadh\",\n        \"city\": \"Riyadh\",\n        \"stateName\": \"Riyadh Province\",\n        \"districtName\": \"King Khalid International Airport\",\n        \"neighbourhoodName\": \"King Khalid International Airport\",\n        \"street\": \"RPPH+7PH\",\n        \"buildingName\": null,\n        \"zipCode\": \"13413\",\n        \"lat\": 24.8356823,\n        \"lng\": 46.729356,\n        \"shortAddressCode\": null,\n        \"secondary\": null\n    }\n}","type":"text","uuid":"272d4132-dac1-4d86-bcfa-b09478420efc"}]},"url":"https://dashboard.tammim.app/api/v1/register"},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\r\n\t\"error\": \"Missing required field: email\"\r\n}"},{"id":"6d5f265d-75f1-4a17-a8c0-d7d823996806","name":"400-Invalid Invoice Type","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"multipart/form-data"},{"key":"Cookie","value":"session=eyJhbGciOiJSUzI1NiIsImtpZCI6IjB1a2x0QSJ9.eyJpc3MiOiJodHRwczovL3Nlc3Npb24uZmlyZWJhc2UuZ29vZ2xlLmNvbS9vdG8tc3RhZ2UtYXBpIiwiZmlyZWJhc2VVSUQiOiJHc2twelgyRnNYUzhNTWxXMnlWaWFYZE5ySjczIiwicGhvbmVOdW1iZXIiOiI5NjY1MTEyMzQ2MjMiLCJ0YW1taW1Db21wYW55SUQiOjE2MiwidXNlclR5cGUiOiJzZWxsZXIiLCJ1c2VySUQiOjM5MSwiYXVkIjoib3RvLXN0YWdlLWFwaSIsImF1dGhfdGltZSI6MTc2OTUyNTIwNSwidXNlcl9pZCI6Ikdza3B6WDJGc1hTOE1NbFcyeVZpYVhkTnJKNzMiLCJzdWIiOiJHc2twelgyRnNYUzhNTWxXMnlWaWFYZE5ySjczIiwiaWF0IjoxNzY5NTI1MjA2LCJleHAiOjE3Njk3ODQ0MDYsImVtYWlsIjoiaS5zYWhpbi50YW1taW0uMTI0QGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJlbWFpbCI6WyJpLnNhaGluLnRhbW1pbS4xMjRAZ21haWwuY29tIl19LCJzaWduX2luX3Byb3ZpZGVyIjoiY3VzdG9tIn19.TR9gfSJrK47K4NAXKVoqbz9E9hHmgUBIQwoWAuhzodmpfScuUPDMNz_JxieIn7M2niLwnNCkEqjO7LQJdDAz677IbCG5mg_rJpTjbjH4i3Hbsco8avCFr2_8BGCgwLFIc7QUn30uJhL4fsyUw4-FVV3srhWVBX3WKqIg5moPITfwd9cBpenY9n0oeSQqWX4zCFChOgDtQtrAc7DgYQpSfpppz0es2hI16XnBtRAU29JycTdpLxQg6RZd80yez0wghtJM7vI45KelvLSA0Y6tsXWjz8ZsKzo7IWo58_gfJQ8AD4dqnljOpvINI1VN1ozBbvzTTZrzxJaa35JsYzMgsA; session=eyJhbGciOiJSUzI1NiIsImtpZCI6IjB1a2x0QSJ9.eyJpc3MiOiJodHRwczovL3Nlc3Npb24uZmlyZWJhc2UuZ29vZ2xlLmNvbS9vdG8tc3RhZ2UtYXBpIiwiZmlyZWJhc2VVSUQiOiJHc2twelgyRnNYUzhNTWxXMnlWaWFYZE5ySjczIiwicGhvbmVOdW1iZXIiOiI5NjY1MTEyMzQ2MjMiLCJ0YW1taW1Db21wYW55SUQiOjE2MiwidXNlclR5cGUiOiJzZWxsZXIiLCJ1c2VySUQiOjM5MSwiYXVkIjoib3RvLXN0YWdlLWFwaSIsImF1dGhfdGltZSI6MTc2OTUyNTIwNSwidXNlcl9pZCI6Ikdza3B6WDJGc1hTOE1NbFcyeVZpYVhkTnJKNzMiLCJzdWIiOiJHc2twelgyRnNYUzhNTWxXMnlWaWFYZE5ySjczIiwiaWF0IjoxNzY5NTI1MjA2LCJleHAiOjE3Njk3ODQ0MDYsImVtYWlsIjoiaS5zYWhpbi50YW1taW0uMTI0QGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJlbWFpbCI6WyJpLnNhaGluLnRhbW1pbS4xMjRAZ21haWwuY29tIl19LCJzaWduX2luX3Byb3ZpZGVyIjoiY3VzdG9tIn19.TR9gfSJrK47K4NAXKVoqbz9E9hHmgUBIQwoWAuhzodmpfScuUPDMNz_JxieIn7M2niLwnNCkEqjO7LQJdDAz677IbCG5mg_rJpTjbjH4i3Hbsco8avCFr2_8BGCgwLFIc7QUn30uJhL4fsyUw4-FVV3srhWVBX3WKqIg5moPITfwd9cBpenY9n0oeSQqWX4zCFChOgDtQtrAc7DgYQpSfpppz0es2hI16XnBtRAU29JycTdpLxQg6RZd80yez0wghtJM7vI45KelvLSA0Y6tsXWjz8ZsKzo7IWo58_gfJQ8AD4dqnljOpvINI1VN1ozBbvzTTZrzxJaa35JsYzMgsA; session=eyJhbGciOiJSUzI1NiIsImtpZCI6IjB1a2x0QSJ9.eyJpc3MiOiJodHRwczovL3Nlc3Npb24uZmlyZWJhc2UuZ29vZ2xlLmNvbS9vdG8tc3RhZ2UtYXBpIiwiZmlyZWJhc2VVSUQiOiJHc2twelgyRnNYUzhNTWxXMnlWaWFYZE5ySjczIiwicGhvbmVOdW1iZXIiOiI5NjY1MTEyMzQ2MjMiLCJ0YW1taW1Db21wYW55SUQiOjE2MiwidXNlclR5cGUiOiJzZWxsZXIiLCJ1c2VySUQiOjM5MSwiYXVkIjoib3RvLXN0YWdlLWFwaSIsImF1dGhfdGltZSI6MTc2OTUyNTIwNSwidXNlcl9pZCI6Ikdza3B6WDJGc1hTOE1NbFcyeVZpYVhkTnJKNzMiLCJzdWIiOiJHc2twelgyRnNYUzhNTWxXMnlWaWFYZE5ySjczIiwiaWF0IjoxNzY5NTI1MjA2LCJleHAiOjE3Njk3ODQ0MDYsImVtYWlsIjoiaS5zYWhpbi50YW1taW0uMTI0QGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJlbWFpbCI6WyJpLnNhaGluLnRhbW1pbS4xMjRAZ21haWwuY29tIl19LCJzaWduX2luX3Byb3ZpZGVyIjoiY3VzdG9tIn19.TR9gfSJrK47K4NAXKVoqbz9E9hHmgUBIQwoWAuhzodmpfScuUPDMNz_JxieIn7M2niLwnNCkEqjO7LQJdDAz677IbCG5mg_rJpTjbjH4i3Hbsco8avCFr2_8BGCgwLFIc7QUn30uJhL4fsyUw4-FVV3srhWVBX3WKqIg5moPITfwd9cBpenY9n0oeSQqWX4zCFChOgDtQtrAc7DgYQpSfpppz0es2hI16XnBtRAU29JycTdpLxQg6RZd80yez0wghtJM7vI45KelvLSA0Y6tsXWjz8ZsKzo7IWo58_gfJQ8AD4dqnljOpvINI1VN1ozBbvzTTZrzxJaa35JsYzMgsA","disabled":true},{"key":"","value":"","type":"text","disabled":true}],"body":{"mode":"formdata","formdata":[{"key":"civilFile","type":"file","uuid":"5f55df87-5764-4d06-a574-da49608940c1","src":"/Users/ibrahim/Downloads/files_%2F414%2FcivilFile%2F33125566-4572-4893-b72e-9e7ae18504a3.docx"},{"key":"companyFile","type":"file","uuid":"27a3f8b2-73c8-4a18-93bb-aa59e5bb9b14","src":"/Users/ibrahim/Downloads/files_%2f414%2FcivilFile%2F3d14cc2a-d00d-468a-b922-347fc9b654e5.docx"},{"key":"data","value":"{\n    \"email\": \"i.sahin.tammim.1003@gmail.com\",\n    \"password\": \"Qw123456\",\n    \"phoneNumber\": \"966511232323\",\n    \"firstName\": \"ibrahim\",\n    \"lastName\": \"sahin\",\n    \"invoiceType\": \"null\",\n    \"VATNumber\": \"312391230912390\",\n    \"CRNumber\": \"5646546545\",\n    \"unifiedNumber\": \"7321231231\",\n    \"nationalId\": null,\n    \"bankId\": 40,\n    \"BankIban\": \"SA2312312123132132312123123\",\n    \"BankHolderName\": \"bank holfe\",\n    \"address\": {\n        \"addressText\": \"Riyadh Front Exhibition & Conference Center, Riyadh\",\n        \"city\": \"Riyadh\",\n        \"stateName\": \"Riyadh Province\",\n        \"districtName\": \"King Khalid International Airport\",\n        \"neighbourhoodName\": \"King Khalid International Airport\",\n        \"street\": \"RPPH+7PH\",\n        \"buildingName\": null,\n        \"zipCode\": \"13413\",\n        \"lat\": 24.8356823,\n        \"lng\": 46.729356,\n        \"shortAddressCode\": null,\n        \"secondary\": null\n    }\n}","type":"text","uuid":"272d4132-dac1-4d86-bcfa-b09478420efc"}]},"url":"https://dashboard.tammim.app/api/v1/register"},"_postman_previewlanguage":"","header":[],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\r\n\t\"error\": \"Invalid or missing invoiceType\"\r\n}"}],"_postman_id":"bf332566-963f-4e5f-ad00-74ae94e1f931"}],"id":"4bc864d2-eec6-4f90-b940-2c9efa115070","description":"<p>This endpoint allows <strong>freelancers and companies</strong> to create a seller profile by submitting required personal or business information, bank details, address data, and supporting documents.</p>\n","_postman_id":"4bc864d2-eec6-4f90-b940-2c9efa115070"},{"name":"Sign In","item":[{"name":"Sign In","id":"ef85189b-9e38-4c68-b483-39e4e3f0cef3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"email\" : \"i.sahin.tammim.1006@gmail.com\",\n    \"password\" : \"Qw123456\"\n}","options":{"raw":{"language":"json"}}},"url":"{{tammim-url}}/api/v1/signIn","urlObject":{"path":["api","v1","signIn"],"host":["{{tammim-url}}"],"query":[],"variable":[]}},"response":[{"id":"627e0194-97db-4a5d-8e0a-fbbb41d1b883","name":"200- Sign In","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"email\" : \"i.sahin.tammim.1006@gmail.com\",\n    \"password\" : \"Qw123456\"\n}","options":{"raw":{"language":"json"}}},"url":"https://dashboard.tammim.app/api/v1/signIn"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"kind\": \"identitytoolkit#SignupNewUserResponse\",\n    \"idToken\": \"eyJhbGciOiJSUzI1NiIsImtpZCI6IjFjMzIxOTgzNGRhNTBlMjBmYWVhZWE3Yzg2Y2U3YjU1MzhmMTdiZTEiLCJ0eXAiOiJKV1QifQ...\",\n    \"email\": \"user@example.com\",\n    \"refreshToken\": \"AMf-vByw8M9jYyzL-czaerLQCBZsfS8lqKpOO2dkJgdQgRBPDT6wnUjoA6i6S29KzBGB3UsCRtRQMJw7oeADRjbLQh09MZp1B4aLgC3nZ8smVaZNtR5dm8...\",\n    \"expiresIn\": \"3600\",\n    \"localId\": \"pOKhVzbIgGZTPoGlkvyM1NdDlWI3\"\n}"},{"id":"8ae3f901-5135-4ea5-9cd3-51b471f19007","name":"400- Sign In","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"email\" : \"i.sahin.tammim.1006@gmail.com\",\n    \"password\" : \"Qw1234564444\"\n}","options":{"raw":{"language":"json"}}},"url":"https://dashboard.tammim.app/api/v1/signIn"},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\r\n\t\"error\": \"Signup failed: INVALID_PASSWORD\"\r\n}"}],"_postman_id":"ef85189b-9e38-4c68-b483-39e4e3f0cef3"}],"id":"93e1cf96-a638-4f2c-b856-dec628667870","description":"<p>This API endpoint authenticates a user using email and password credentials. Returns authentication tokens that can be used to access protected API endpoints.</p>\n<p><strong>Authentication</strong></p>\n<p>No authentication required - This is a public endpoint</p>\n<p><strong>Request Headers</strong></p>\n<p>Content-Type: application/json</p>\n<p><strong>Request Body</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th><strong>Required</strong></th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>email</td>\n<td>Yes</td>\n<td>String</td>\n<td>User email address</td>\n</tr>\n<tr>\n<td>password</td>\n<td>Yes</td>\n<td>String</td>\n<td>User password</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Response Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>kind</td>\n<td>String</td>\n<td>Response type identifier</td>\n</tr>\n<tr>\n<td>idToken</td>\n<td>String</td>\n<td>Access token for authenticated API requests (valid for 1 hour)</td>\n</tr>\n<tr>\n<td>email</td>\n<td>String</td>\n<td>User email address</td>\n</tr>\n<tr>\n<td>refreshToken</td>\n<td>String</td>\n<td>Token used to refresh the idToken when it expires</td>\n</tr>\n<tr>\n<td>expiresIn</td>\n<td>String</td>\n<td>Token expiration time in seconds (typically 3600)</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"93e1cf96-a638-4f2c-b856-dec628667870"},{"name":"Authorization","item":[{"name":"Refresh Token","id":"2a6150bc-c39c-421e-a32f-bf0bd47d0cb1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"refresh_token\" : \"AMf-vByZj9SLsU06ql1_fRCeAXeUVJTNtT4eCDsqLSt8bJ2ypG23G33F30PVDQfDrKa2ol5ysNJczAQ8mOhcv7ay54f0DG_keicbOcaC3BYFxqrfkcas5yyNtmuAijWdsZgPNedzVZL54E9fvZKA0oXs5HfHKt8zONB-DwHcF5iOmWUYS-JnsZ0\",\n    \"grand_type\" : \"refresh_token\"\n}","options":{"raw":{"language":"json"}}},"url":"https://dashboard.tammim.app/api/v1/refreshToken","description":"<p>This API endpoint covers the authentication endpoints for the Tammim API. After registering an account, users receive authentication tokens that must be included in subsequent API requests. This document explains how to sign in to your account and refresh expired tokens.</p>\n<h4 id=\"authentication-flow\"><strong>Authentication Flow</strong></h4>\n<ul>\n<li><p>Register a new account using /register endpoint</p>\n</li>\n<li><p>Receive idToken and refreshToken in the registration response</p>\n</li>\n<li><p>Use idToken (also called access_token) in Authorization header for API requests</p>\n</li>\n<li><p>When idToken expires (after 3600 seconds), use refreshToken to get a new idToken</p>\n</li>\n<li><p>If refreshToken expires, sign in again using email and password</p>\n</li>\n</ul>\n<h4 id=\"using-access-tokens-in-api-requests\"><strong>Using Access Tokens in API Requests</strong></h4>\n<p>All authenticated API endpoints require the access token (idToken) to be included in the request headers:</p>\n<p>*<em>Authorization: Bearer {access_token}<br />Cookie: session={access_token}<br />*</em></p>\n","urlObject":{"protocol":"https","path":["api","v1","refreshToken"],"host":["dashboard","tammim","app"],"query":[],"variable":[]}},"response":[{"id":"186c0ebf-ddc5-417d-aafd-1a95a700c407","name":"200-Refresh Token","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"refresh_token\" : \"AMf-vByZj9SLsU06ql1_fRCeAXeUVJTNtT4eCDsqLSt8bJ2ypG23G33F30PVDQfDrKa2ol5ysNJczAQ8mOhcv7ay54f0DG_keicbOcaC3BYFxqrfkcas5yyNtmuAijWdsZgPNedzVZL54E9fvZKA0oXs5HfHKt8zONB-DwHcF5iOmWUYS-JnsZ0\",\n    \"grand_type\" : \"refresh_token\"\n}","options":{"raw":{"language":"json"}}},"url":"https://dashboard.tammim.app/api/v1/refreshToken"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n\t\"access_token\": \"eyJhbGciOiJSUzI1NiIsImtpZCI6IjFjMzIxOTgzNGRhNTBlMjBmYWVhZWE3Yzg2Y2U3YjU1MzhmMTdiZTEiLCJ0eXAiOiJKV1QifQ...\",\r\n\t\"expires_in\": \"3600\",\r\n\t\"token_type\": \"Bearer\",\r\n\t\"refresh_token\": \"AMf-vByw8M9jYyzL-czaerLQCBZsfS8lqKpOO2dkJgdQgRBPDT6wnUjoA6i6S29KzBGB3UsCRtRQMJw7oeADRjbLQh09MZp1B4aLgC3nZ8smVaZNtR5dm8...\",\r\n\t\"id_token\": \"eyJhbGciOiJSUzI1NiIsImtpZCI6IjFjMzIxOTgzNGRhNTBlMjBmYWVhZWE3Yzg2Y2U3YjU1MzhmMTdiZTEiLCJ0eXAiOiJKV1QifQ...\",\r\n\t\"user_id\": \"pOKhVzbIgGZTPoGlkvyM1NdDlWI3\",\r\n\t\"project_id\": \"924792569625\"\r\n"},{"id":"50dd0bb4-434a-4b2d-b478-f3089dedd404","name":"400-Token Expired","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"refresh_token\" : \"AMf-vByZj9SLsU06ql1_fRCeAXeUVJTNtT4eCDsqLSt8bJ2ypG23G33F30PVDQfDrKa2ol5ysNJczAQ8mOhcv7ay54f0DG_keicbOcaC3BYFxqrfkcas5yyNtmuAijWdsZgPNedzVZL54E9fvZKA0oXs5HfHKt8zONB-DwHcF5iOmWUYS-JnsZ0\",\n    \"grand_type\" : \"refresh_token\"\n}","options":{"raw":{"language":"json"}}},"url":"https://dashboard.tammim.app/api/v1/refreshToken"},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\r\n\t\"error\": \"Refresh token has expired\"\r\n}\r\n"}],"_postman_id":"2a6150bc-c39c-421e-a32f-bf0bd47d0cb1"}],"id":"b6ebefa7-4ce1-40f5-bab6-af16ca9a31ea","description":"<p>This API endpoint exchanges a valid refresh token for a new access token (idToken). Use this endpoint when your access token expires (after 3600 seconds) to obtain a new one without requiring the user to sign in again.</p>\n<p><strong>Authentication</strong></p>\n<p>No authentication required - Uses refresh token for validation</p>\n<p><strong>Request Headers</strong></p>\n<p>Content-Type: application/json</p>\n<p><strong>Request Body</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th><strong>Required</strong></th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>grant_type</td>\n<td>Yes</td>\n<td>String</td>\n<td>Must be <code>\"refresh_token\"</code></td>\n</tr>\n<tr>\n<td>refresh_token</td>\n<td>Yes</td>\n<td>String</td>\n<td>The refresh token received from sign in or registration</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Response Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>access_token</td>\n<td>String</td>\n<td>New access token for API requests (same as id_token)</td>\n</tr>\n<tr>\n<td>expires_in</td>\n<td>String</td>\n<td>Token expiration time in seconds (typically 3600)</td>\n</tr>\n<tr>\n<td>token_type</td>\n<td>String</td>\n<td>Token type (always <code>\"Bearer\"</code>)</td>\n</tr>\n<tr>\n<td>refresh_token</td>\n<td>String</td>\n<td>Refresh token (may be the same or a new one)</td>\n</tr>\n<tr>\n<td>id_token</td>\n<td>String</td>\n<td>New ID token (same as access_token)</td>\n</tr>\n<tr>\n<td>user_id</td>\n<td>String</td>\n<td>Unique user identifier</td>\n</tr>\n<tr>\n<td>project_id</td>\n<td>String</td>\n<td>Project identifier_</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"best-practices\"><strong>Best Practices</strong></h1>\n<h2 id=\"token-storage\"><strong>Token Storage</strong></h2>\n<p>· Store tokens securely (use secure storage mechanisms)</p>\n<p>· Never store tokens in plain text or in client-side code</p>\n<p>· Use httpOnly cookies for web applications when possible</p>\n<p>· Clear tokens on logout</p>\n<h2 id=\"token-refresh-strategy\"><strong>Token Refresh Strategy</strong></h2>\n<p><strong>·</strong> Refresh tokens proactively before expiration (e.g., 1 minute before)</p>\n<p>· Implement automatic retry logic for 401 errors</p>\n<p>· Handle refresh token expiration gracefully</p>\n<p>· Redirect to login page if refresh fails</p>\n<h2 id=\"security\"><strong>Security</strong></h2>\n<p>· Always use HTTPS for authentication requests</p>\n<p>· Never log or expose tokens in error messages</p>\n<p>· Implement rate limiting for sign in attempts</p>\n<p>· Use strong password requirements</p>\n<p>· Monitor for suspicious authentication activity</p>\n<h2 id=\"error-handling\"><strong>Error Handling</strong></h2>\n<p><strong>·</strong> Implement proper error handling for authentication failures</p>\n<p>· Provide clear error messages to users</p>\n<p>· Log authentication errors for security monitoring</p>\n<p>· Handle network errors and timeouts gracefully</p>\n<h1 id=\"token-lifecycle\"><strong>Token Lifecycle</strong></h1>\n<p>1. <strong>Registration/Sign In</strong>: Receive idToken and refreshToken</p>\n<p>2. <strong>Active Use</strong>: Use idToken for API requests (valid for 3600 seconds)</p>\n<p>3. <strong>Near Expiry</strong>: Refresh token proactively before expiration</p>\n<p>4. <strong>Token Refresh</strong>: Exchange refreshToken for new idToken</p>\n<p>5. <strong>Continued Use</strong>: Use new idToken for API requests</p>\n<p>6. <strong>Logout/Session End</strong>: Clear all stored tokens</p>\n","_postman_id":"b6ebefa7-4ce1-40f5-bab6-af16ca9a31ea"},{"name":"Checkout","item":[{"name":"Checkout","id":"a9c171b7-47ac-48a8-98cb-2c768a4dd755","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"merchant_id\": \"196\",\n  \"reference_id\": \"order-67890-122\",\n  \"currency\": \"SAR\",\n  \"returnUrl\": \"https://merchant.com/success\",\n  \"cancelUrl\": \"https://merchant.com/cancel\",\n  \"customer\": {\n    \"code\": \"CUST001\",\n    \"firstName\": \"John\",\n    \"lastName\": \"Doe\",\n    \"email\": \"john.doe@example.com\",\n    \"phone\": \"+966500000000\"\n  },\n  \"customer_address\": {\n    \"city\": \"Riyadh\",\n    \"district\": \"Al Olaya\",\n    \"street\": \"King Fahd Road\",\n    \"fullAddress\": \"123 King Fahd Road, Riyadh, Saudi Arabia\",\n    \"shortCode\": \"KFR123\",\n    \"country\": \"SA\",\n    \"zipCode\": \"11564\",\n    \"building\": \"Building 10\"\n  },\n  \"cart\": [\n    {\n      \"sku\": \"PROD001\",\n      \"name\": \"Product 1\",\n      \"quantity\": 2,\n      \"unit_price\": 50.75,\n      \"image\": \"https://merchant.com/images/prod001.jpg\"\n    },\n    {\n      \"sku\": \"PROD002\",\n      \"name\": \"Product 2\",\n      \"quantity\": 1,\n      \"unit_price\": 100.00,\n      \"image\": \"https://merchant.com/images/prod002.jpg\"\n    }\n  ],\n  \"totals\": {\n    \"subtotal\": 201.50,\n    \"discounts\": 10.00,\n    \"tax\": 15.00,\n    \"grand_total\": 206.50\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://dashboard.tammim.app/api/v1/checkout/initiate","urlObject":{"protocol":"https","path":["api","v1","checkout","initiate"],"host":["dashboard","tammim","app"],"query":[],"variable":[]}},"response":[{"id":"5ead0b70-3948-444f-8894-c7d2ae2a4d5d","name":"200-Checkout","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6ImY3NThlNTYzYzBiNjRhNzVmN2UzZGFlNDk0ZDM5NTk1YzE0MGVmOTMiLCJ0eXAiOiJKV1QifQ.eyJmaXJlYmFzZVVJRCI6IjBQU01sUU8wZFBkME5reHZGbUxlZHdJRG1HNTIiLCJwaG9uZU51bWJlciI6Ijk2NjUxMTIzNDYyMyIsInRhbW1pbUNvbXBhbnlJRCI6MjA0LCJ1c2VyVHlwZSI6InNlbGxlciIsInVzZXJJRCI6NDM1LCJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vb3RvLXN0YWdlLWFwaSIsImF1ZCI6Im90by1zdGFnZS1hcGkiLCJhdXRoX3RpbWUiOjE3Njk3NzEyODMsInVzZXJfaWQiOiIwUFNNbFFPMGRQZDBOa3h2Rm1MZWR3SURtRzUyIiwic3ViIjoiMFBTTWxRTzBkUGQwTmt4dkZtTGVkd0lEbUc1MiIsImlhdCI6MTc2OTc3MTI4MywiZXhwIjoxNzY5Nzc0ODgzLCJlbWFpbCI6Imkuc2FoaW4udGFtbWltLjEwMDZAZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJmaXJlYmFzZSI6eyJpZGVudGl0aWVzIjp7ImVtYWlsIjpbImkuc2FoaW4udGFtbWltLjEwMDZAZ21haWwuY29tIl19LCJzaWduX2luX3Byb3ZpZGVyIjoicGFzc3dvcmQifX0.IrNfeReXzvHXAT_kUrqSq0hWmArHNCpz2HfQFVC6x4VDztj0yJgptUr2JfbzOWj_2Zk2jANNvG8O3CMFpog5GJa63dOh4fvalZHDtN1YAdwfMv5tnta8goq2CI_l_T6kwD-Lpmz3SHA9ynhgTxV91YaQQBxzggRunmSSBrrMDfGQZ8NJRnTPOenXgZEdlxQGrWRVIsAPOKKUoSqwUWwgIBMGefy9kbFgpODD6WmfoxwG9cRSU0VtGSqAnAOC51lMiqi4gksT-jSHys94ugWIHFTAz4brZ4Yy0dTtCBbG3jnlZ-TdQ_2ss_Y2KUrD4cg-6lexAq0M9KXBDJG11KD8Qw","disabled":true},{"key":"Content-Type","value":"application/json"},{"key":"Cookie","value":"session=eyJhbGciOiJSUzI1NiIsImtpZCI6IjB1a2x0QSJ9.eyJpc3MiOiJodHRwczovL3Nlc3Npb24uZmlyZWJhc2UuZ29vZ2xlLmNvbS9vdG8tc3RhZ2UtYXBpIiwiZmlyZWJhc2VVSUQiOiIwUFNNbFFPMGRQZDBOa3h2Rm1MZWR3SURtRzUyIiwicGhvbmVOdW1iZXIiOiI5NjY1MTEyMzQ2MjMiLCJ0YW1taW1Db21wYW55SUQiOjIwNCwidXNlclR5cGUiOiJzZWxsZXIiLCJ1c2VySUQiOjQzNSwiYXVkIjoib3RvLXN0YWdlLWFwaSIsImF1dGhfdGltZSI6MTc2OTc3MTIxNCwidXNlcl9pZCI6IjBQU01sUU8wZFBkME5reHZGbUxlZHdJRG1HNTIiLCJzdWIiOiIwUFNNbFFPMGRQZDBOa3h2Rm1MZWR3SURtRzUyIiwiaWF0IjoxNzY5NzcxMjE0LCJleHAiOjE3NzAwMzA0MTQsImVtYWlsIjoiaS5zYWhpbi50YW1taW0uMTAwNkBnbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsImZpcmViYXNlIjp7ImlkZW50aXRpZXMiOnsiZW1haWwiOlsiaS5zYWhpbi50YW1taW0uMTAwNkBnbWFpbC5jb20iXX0sInNpZ25faW5fcHJvdmlkZXIiOiJjdXN0b20ifX0.opl8wQ46Y-kRLIKGD1waBJ94WIM4u-q3cYRpebufCU_iEiKmtlt1OM4DtWhArA6Jej1vlDf8Ut2COrxg0axEHEeJhogl02idB2siZY4SSRLmRpWj_SmcCrwq-GUvFaR72UXqxUTOETYI35ll7I3aN-Y16l-RGHTwMZFGPRlyYMm6cOG7MHpYmVkvxoesz17N1nH9m1jekWyxHF4oqI5xx_NGoK2e6kNQE6wRA6MAF6Z1sy1-znCZpzf7L6EYDs-4mZRCmK4p3wXdU-CCT6HqVZCQ6r4tOuSH_1sR1Y1GLRRG7fTwmTnotPgghMY1Npk5yj0o-ID8Toedt38VjdsnOA","disabled":true}],"body":{"mode":"raw","raw":"{\n  \"merchant_id\": \"196\",\n  \"reference_id\": \"order-67890-122\",\n  \"currency\": \"SAR\",\n  \"returnUrl\": \"https://merchant.com/success\",\n  \"cancelUrl\": \"https://merchant.com/cancel\",\n  \"customer\": {\n    \"code\": \"CUST001\",\n    \"firstName\": \"John\",\n    \"lastName\": \"Doe\",\n    \"email\": \"john.doe@example.com\",\n    \"phone\": \"+966500000000\"\n  },\n  \"customer_address\": {\n    \"city\": \"Riyadh\",\n    \"district\": \"Al Olaya\",\n    \"street\": \"King Fahd Road\",\n    \"fullAddress\": \"123 King Fahd Road, Riyadh, Saudi Arabia\",\n    \"shortCode\": \"KFR123\",\n    \"country\": \"SA\",\n    \"zipCode\": \"11564\",\n    \"building\": \"Building 10\"\n  },\n  \"cart\": [\n    {\n      \"sku\": \"PROD001\",\n      \"name\": \"Product 1\",\n      \"quantity\": 2,\n      \"unit_price\": 50.75,\n      \"image\": \"https://merchant.com/images/prod001.jpg\"\n    },\n    {\n      \"sku\": \"PROD002\",\n      \"name\": \"Product 2\",\n      \"quantity\": 1,\n      \"unit_price\": 100.00,\n      \"image\": \"https://merchant.com/images/prod002.jpg\"\n    }\n  ],\n  \"totals\": {\n    \"subtotal\": 201.50,\n    \"discounts\": 10.00,\n    \"tax\": 15.00,\n    \"grand_total\": 206.50\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://oto-tammim-web-api-924792569625.europe-west1.run.app/api/v1/checkout/initiate"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"status\": \"SUCCESS\",\n    \"checkout_url\": \"https://domain.com/checkout?key=abc123xyz\",\n    \"tammim_session_id\": \"abc123xyz\"\n}"},{"id":"21451721-d5ec-4093-a4ea-709c3bc2bbd9","name":"400-Checkout","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6ImY3NThlNTYzYzBiNjRhNzVmN2UzZGFlNDk0ZDM5NTk1YzE0MGVmOTMiLCJ0eXAiOiJKV1QifQ.eyJmaXJlYmFzZVVJRCI6IjBQU01sUU8wZFBkME5reHZGbUxlZHdJRG1HNTIiLCJwaG9uZU51bWJlciI6Ijk2NjUxMTIzNDYyMyIsInRhbW1pbUNvbXBhbnlJRCI6MjA0LCJ1c2VyVHlwZSI6InNlbGxlciIsInVzZXJJRCI6NDM1LCJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vb3RvLXN0YWdlLWFwaSIsImF1ZCI6Im90by1zdGFnZS1hcGkiLCJhdXRoX3RpbWUiOjE3Njk3NzEyODMsInVzZXJfaWQiOiIwUFNNbFFPMGRQZDBOa3h2Rm1MZWR3SURtRzUyIiwic3ViIjoiMFBTTWxRTzBkUGQwTmt4dkZtTGVkd0lEbUc1MiIsImlhdCI6MTc2OTc3MTI4MywiZXhwIjoxNzY5Nzc0ODgzLCJlbWFpbCI6Imkuc2FoaW4udGFtbWltLjEwMDZAZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJmaXJlYmFzZSI6eyJpZGVudGl0aWVzIjp7ImVtYWlsIjpbImkuc2FoaW4udGFtbWltLjEwMDZAZ21haWwuY29tIl19LCJzaWduX2luX3Byb3ZpZGVyIjoicGFzc3dvcmQifX0.IrNfeReXzvHXAT_kUrqSq0hWmArHNCpz2HfQFVC6x4VDztj0yJgptUr2JfbzOWj_2Zk2jANNvG8O3CMFpog5GJa63dOh4fvalZHDtN1YAdwfMv5tnta8goq2CI_l_T6kwD-Lpmz3SHA9ynhgTxV91YaQQBxzggRunmSSBrrMDfGQZ8NJRnTPOenXgZEdlxQGrWRVIsAPOKKUoSqwUWwgIBMGefy9kbFgpODD6WmfoxwG9cRSU0VtGSqAnAOC51lMiqi4gksT-jSHys94ugWIHFTAz4brZ4Yy0dTtCBbG3jnlZ-TdQ_2ss_Y2KUrD4cg-6lexAq0M9KXBDJG11KD8Qw","disabled":true},{"key":"Content-Type","value":"application/json"},{"key":"Cookie","value":"session=eyJhbGciOiJSUzI1NiIsImtpZCI6IjB1a2x0QSJ9.eyJpc3MiOiJodHRwczovL3Nlc3Npb24uZmlyZWJhc2UuZ29vZ2xlLmNvbS9vdG8tc3RhZ2UtYXBpIiwiZmlyZWJhc2VVSUQiOiIwUFNNbFFPMGRQZDBOa3h2Rm1MZWR3SURtRzUyIiwicGhvbmVOdW1iZXIiOiI5NjY1MTEyMzQ2MjMiLCJ0YW1taW1Db21wYW55SUQiOjIwNCwidXNlclR5cGUiOiJzZWxsZXIiLCJ1c2VySUQiOjQzNSwiYXVkIjoib3RvLXN0YWdlLWFwaSIsImF1dGhfdGltZSI6MTc2OTc3MTIxNCwidXNlcl9pZCI6IjBQU01sUU8wZFBkME5reHZGbUxlZHdJRG1HNTIiLCJzdWIiOiIwUFNNbFFPMGRQZDBOa3h2Rm1MZWR3SURtRzUyIiwiaWF0IjoxNzY5NzcxMjE0LCJleHAiOjE3NzAwMzA0MTQsImVtYWlsIjoiaS5zYWhpbi50YW1taW0uMTAwNkBnbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsImZpcmViYXNlIjp7ImlkZW50aXRpZXMiOnsiZW1haWwiOlsiaS5zYWhpbi50YW1taW0uMTAwNkBnbWFpbC5jb20iXX0sInNpZ25faW5fcHJvdmlkZXIiOiJjdXN0b20ifX0.opl8wQ46Y-kRLIKGD1waBJ94WIM4u-q3cYRpebufCU_iEiKmtlt1OM4DtWhArA6Jej1vlDf8Ut2COrxg0axEHEeJhogl02idB2siZY4SSRLmRpWj_SmcCrwq-GUvFaR72UXqxUTOETYI35ll7I3aN-Y16l-RGHTwMZFGPRlyYMm6cOG7MHpYmVkvxoesz17N1nH9m1jekWyxHF4oqI5xx_NGoK2e6kNQE6wRA6MAF6Z1sy1-znCZpzf7L6EYDs-4mZRCmK4p3wXdU-CCT6HqVZCQ6r4tOuSH_1sR1Y1GLRRG7fTwmTnotPgghMY1Npk5yj0o-ID8Toedt38VjdsnOA","disabled":true}],"body":{"mode":"raw","raw":"{\n  \"merchant_id\": \"196aaaa\",\n  \"reference_id\": \"order-67890-122\",\n  \"currency\": \"SAR\",\n  \"returnUrl\": \"https://merchant.com/success\",\n  \"cancelUrl\": \"https://merchant.com/cancel\",\n  \"customer\": {\n    \"code\": \"CUST001\",\n    \"firstName\": \"John\",\n    \"lastName\": \"Doe\",\n    \"email\": \"john.doe@example.com\",\n    \"phone\": \"+966500000000\"\n  },\n  \"customer_address\": {\n    \"city\": \"Riyadh\",\n    \"district\": \"Al Olaya\",\n    \"street\": \"King Fahd Road\",\n    \"fullAddress\": \"123 King Fahd Road, Riyadh, Saudi Arabia\",\n    \"shortCode\": \"KFR123\",\n    \"country\": \"SA\",\n    \"zipCode\": \"11564\",\n    \"building\": \"Building 10\"\n  },\n  \"cart\": [\n    {\n      \"sku\": \"PROD001\",\n      \"name\": \"Product 1\",\n      \"quantity\": 2,\n      \"unit_price\": 50.75,\n      \"image\": \"https://merchant.com/images/prod001.jpg\"\n    },\n    {\n      \"sku\": \"PROD002\",\n      \"name\": \"Product 2\",\n      \"quantity\": 1,\n      \"unit_price\": 100.00,\n      \"image\": \"https://merchant.com/images/prod002.jpg\"\n    }\n  ],\n  \"totals\": {\n    \"subtotal\": 201.50,\n    \"discounts\": 10.00,\n    \"tax\": 15.00,\n    \"grand_total\": 206.50\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://oto-tammim-web-api-924792569625.europe-west1.run.app/api/v1/checkout/initiate"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ERROR\",\n    \"errorMessage\": \"Invalid merchant_id\"\n}"},{"id":"dd2e8945-b911-42ed-a00d-755f013d2579","name":"400- Already Exist","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6ImY3NThlNTYzYzBiNjRhNzVmN2UzZGFlNDk0ZDM5NTk1YzE0MGVmOTMiLCJ0eXAiOiJKV1QifQ.eyJmaXJlYmFzZVVJRCI6IjBQU01sUU8wZFBkME5reHZGbUxlZHdJRG1HNTIiLCJwaG9uZU51bWJlciI6Ijk2NjUxMTIzNDYyMyIsInRhbW1pbUNvbXBhbnlJRCI6MjA0LCJ1c2VyVHlwZSI6InNlbGxlciIsInVzZXJJRCI6NDM1LCJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vb3RvLXN0YWdlLWFwaSIsImF1ZCI6Im90by1zdGFnZS1hcGkiLCJhdXRoX3RpbWUiOjE3Njk3NzEyODMsInVzZXJfaWQiOiIwUFNNbFFPMGRQZDBOa3h2Rm1MZWR3SURtRzUyIiwic3ViIjoiMFBTTWxRTzBkUGQwTmt4dkZtTGVkd0lEbUc1MiIsImlhdCI6MTc2OTc3MTI4MywiZXhwIjoxNzY5Nzc0ODgzLCJlbWFpbCI6Imkuc2FoaW4udGFtbWltLjEwMDZAZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJmaXJlYmFzZSI6eyJpZGVudGl0aWVzIjp7ImVtYWlsIjpbImkuc2FoaW4udGFtbWltLjEwMDZAZ21haWwuY29tIl19LCJzaWduX2luX3Byb3ZpZGVyIjoicGFzc3dvcmQifX0.IrNfeReXzvHXAT_kUrqSq0hWmArHNCpz2HfQFVC6x4VDztj0yJgptUr2JfbzOWj_2Zk2jANNvG8O3CMFpog5GJa63dOh4fvalZHDtN1YAdwfMv5tnta8goq2CI_l_T6kwD-Lpmz3SHA9ynhgTxV91YaQQBxzggRunmSSBrrMDfGQZ8NJRnTPOenXgZEdlxQGrWRVIsAPOKKUoSqwUWwgIBMGefy9kbFgpODD6WmfoxwG9cRSU0VtGSqAnAOC51lMiqi4gksT-jSHys94ugWIHFTAz4brZ4Yy0dTtCBbG3jnlZ-TdQ_2ss_Y2KUrD4cg-6lexAq0M9KXBDJG11KD8Qw","disabled":true},{"key":"Content-Type","value":"application/json"},{"key":"Cookie","value":"session=eyJhbGciOiJSUzI1NiIsImtpZCI6IjB1a2x0QSJ9.eyJpc3MiOiJodHRwczovL3Nlc3Npb24uZmlyZWJhc2UuZ29vZ2xlLmNvbS9vdG8tc3RhZ2UtYXBpIiwiZmlyZWJhc2VVSUQiOiIwUFNNbFFPMGRQZDBOa3h2Rm1MZWR3SURtRzUyIiwicGhvbmVOdW1iZXIiOiI5NjY1MTEyMzQ2MjMiLCJ0YW1taW1Db21wYW55SUQiOjIwNCwidXNlclR5cGUiOiJzZWxsZXIiLCJ1c2VySUQiOjQzNSwiYXVkIjoib3RvLXN0YWdlLWFwaSIsImF1dGhfdGltZSI6MTc2OTc3MTIxNCwidXNlcl9pZCI6IjBQU01sUU8wZFBkME5reHZGbUxlZHdJRG1HNTIiLCJzdWIiOiIwUFNNbFFPMGRQZDBOa3h2Rm1MZWR3SURtRzUyIiwiaWF0IjoxNzY5NzcxMjE0LCJleHAiOjE3NzAwMzA0MTQsImVtYWlsIjoiaS5zYWhpbi50YW1taW0uMTAwNkBnbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsImZpcmViYXNlIjp7ImlkZW50aXRpZXMiOnsiZW1haWwiOlsiaS5zYWhpbi50YW1taW0uMTAwNkBnbWFpbC5jb20iXX0sInNpZ25faW5fcHJvdmlkZXIiOiJjdXN0b20ifX0.opl8wQ46Y-kRLIKGD1waBJ94WIM4u-q3cYRpebufCU_iEiKmtlt1OM4DtWhArA6Jej1vlDf8Ut2COrxg0axEHEeJhogl02idB2siZY4SSRLmRpWj_SmcCrwq-GUvFaR72UXqxUTOETYI35ll7I3aN-Y16l-RGHTwMZFGPRlyYMm6cOG7MHpYmVkvxoesz17N1nH9m1jekWyxHF4oqI5xx_NGoK2e6kNQE6wRA6MAF6Z1sy1-znCZpzf7L6EYDs-4mZRCmK4p3wXdU-CCT6HqVZCQ6r4tOuSH_1sR1Y1GLRRG7fTwmTnotPgghMY1Npk5yj0o-ID8Toedt38VjdsnOA","disabled":true}],"body":{"mode":"raw","raw":"{\n  \"merchant_id\": \"196\",\n  \"reference_id\": \"order-67890-122\",\n  \"currency\": \"SAR\",\n  \"returnUrl\": \"https://merchant.com/success\",\n  \"cancelUrl\": \"https://merchant.com/cancel\",\n  \"customer\": {\n    \"code\": \"CUST001\",\n    \"firstName\": \"John\",\n    \"lastName\": \"Doe\",\n    \"email\": \"john.doe@example.com\",\n    \"phone\": \"+966500000000\"\n  },\n  \"customer_address\": {\n    \"city\": \"Riyadh\",\n    \"district\": \"Al Olaya\",\n    \"street\": \"King Fahd Road\",\n    \"fullAddress\": \"123 King Fahd Road, Riyadh, Saudi Arabia\",\n    \"shortCode\": \"KFR123\",\n    \"country\": \"SA\",\n    \"zipCode\": \"11564\",\n    \"building\": \"Building 10\"\n  },\n  \"cart\": [\n    {\n      \"sku\": \"PROD001\",\n      \"name\": \"Product 1\",\n      \"quantity\": 2,\n      \"unit_price\": 50.75,\n      \"image\": \"https://merchant.com/images/prod001.jpg\"\n    },\n    {\n      \"sku\": \"PROD002\",\n      \"name\": \"Product 2\",\n      \"quantity\": 1,\n      \"unit_price\": 100.00,\n      \"image\": \"https://merchant.com/images/prod002.jpg\"\n    }\n  ],\n  \"totals\": {\n    \"subtotal\": 201.50,\n    \"discounts\": 10.00,\n    \"tax\": 15.00,\n    \"grand_total\": 206.50\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://oto-tammim-web-api-924792569625.europe-west1.run.app/api/v1/checkout/initiate"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ERROR\",\n    \"errorMessage\": \"Order with this reference_id already exists\"\n}"}],"_postman_id":"a9c171b7-47ac-48a8-98cb-2c768a4dd755"}],"id":"61f4348d-6d69-4163-a4da-c7e74d3b47cc","description":"<p>This API endpoint initiates a new checkout session and generates a secure payment page URL for the customer. It also creates and stores the associated order, customer, and address records in the system to ensure a complete and traceable transaction flow.</p>\n<p><strong>Authentication</strong></p>\n<p>· Bearer Token is required</p>\n<p>· USER_ID and TAMMIM_COMPANY_ID must be present in request attributes</p>\n<p><strong>Request Headers</strong></p>\n<p>Content-Type: application/json</p>\n<p>Authorization: Bearer {token}</p>\n<h3 id=\"request-body\">Request Body</h3>\n<p><strong>Required Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th><strong>Required</strong></th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>merchant_id</td>\n<td>Yes</td>\n<td>String</td>\n<td>Unique identifier</td>\n</tr>\n<tr>\n<td>reference_id</td>\n<td>Yes</td>\n<td>String</td>\n<td>Unique order reference number assigned by the merchant</td>\n</tr>\n<tr>\n<td>currency</td>\n<td>Yes</td>\n<td>String</td>\n<td>Currency code (e.g., \"TRY\", \"SAR\")</td>\n</tr>\n<tr>\n<td>returnUrl</td>\n<td>Yes</td>\n<td>String</td>\n<td>URL to redirect after successful payment</td>\n</tr>\n<tr>\n<td>cancelUrl</td>\n<td>Yes</td>\n<td>String</td>\n<td>URL to redirect when payment is cancelled</td>\n</tr>\n<tr>\n<td>cart</td>\n<td>Yes</td>\n<td>Array</td>\n<td>List of cart items</td>\n</tr>\n<tr>\n<td>totals</td>\n<td>Yes</td>\n<td>Object</td>\n<td>Order total information</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Optional Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th><strong>Required</strong></th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>customer</td>\n<td>No</td>\n<td>Object</td>\n<td>Customer information</td>\n</tr>\n<tr>\n<td>customer_address</td>\n<td>No</td>\n<td>Object</td>\n<td>Customer address information</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Customer Object</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Required</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>code</td>\n<td>No</td>\n<td>String</td>\n<td>Customer code</td>\n</tr>\n<tr>\n<td>firstName</td>\n<td>No</td>\n<td>String</td>\n<td>First name</td>\n</tr>\n<tr>\n<td>lastName</td>\n<td>No</td>\n<td>String</td>\n<td>Last name</td>\n</tr>\n<tr>\n<td>email</td>\n<td>No</td>\n<td>String</td>\n<td>Email address</td>\n</tr>\n<tr>\n<td>phone</td>\n<td>No</td>\n<td>String</td>\n<td>Phone number (used for customer identification)</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Customer Address Object</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Required</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>city</td>\n<td>No</td>\n<td>String</td>\n<td>City name</td>\n</tr>\n<tr>\n<td>district</td>\n<td>No</td>\n<td>String</td>\n<td>District name</td>\n</tr>\n<tr>\n<td>street</td>\n<td>No</td>\n<td>String</td>\n<td>Street name</td>\n</tr>\n<tr>\n<td>fullAddress</td>\n<td>No</td>\n<td>String</td>\n<td>Complete address</td>\n</tr>\n<tr>\n<td>shortCode</td>\n<td>No</td>\n<td>String</td>\n<td>Short address code</td>\n</tr>\n<tr>\n<td>country</td>\n<td>No</td>\n<td>String</td>\n<td>Country code</td>\n</tr>\n<tr>\n<td>zipCode</td>\n<td>No</td>\n<td>String</td>\n<td>Postal code</td>\n</tr>\n<tr>\n<td>building</td>\n<td>No</td>\n<td>String</td>\n<td>Building name/number</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Cart Item Object</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Required</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>sku</td>\n<td>No</td>\n<td>String</td>\n<td>Stock keeping unit code</td>\n</tr>\n<tr>\n<td>name</td>\n<td>No</td>\n<td>String</td>\n<td>Product name</td>\n</tr>\n<tr>\n<td>quantity</td>\n<td>No</td>\n<td>Integer</td>\n<td>Quantity</td>\n</tr>\n<tr>\n<td>unit_price</td>\n<td>No</td>\n<td>String</td>\n<td>Unit price</td>\n</tr>\n<tr>\n<td>image</td>\n<td>No</td>\n<td>String</td>\n<td>Product image URL</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Totals Object</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Required</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>subtotal</td>\n<td>No</td>\n<td>String</td>\n<td>Subtotal amount</td>\n</tr>\n<tr>\n<td>discounts</td>\n<td>No</td>\n<td>String</td>\n<td>Discount amount</td>\n</tr>\n<tr>\n<td>tax</td>\n<td>No</td>\n<td>String</td>\n<td>Tax amount</td>\n</tr>\n<tr>\n<td>grand_total</td>\n<td>No</td>\n<td>String</td>\n<td>Grand total amount</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Response Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>status</td>\n<td>String</td>\n<td>Operation status (\"SUCCESS\")</td>\n</tr>\n<tr>\n<td>checkout_url</td>\n<td>String</td>\n<td>Payment page URL where the customer should be redirected</td>\n</tr>\n<tr>\n<td>tammim_session_id</td>\n<td>String</td>\n<td>Checkout session key</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"business-logic\"><strong>Business Logic</strong></h3>\n<h4 id=\"customer-processing\"><strong>Customer Processing</strong></h4>\n<p><strong>·</strong>   The system checks for an existing customer using the phone number</p>\n<p>·   If the customer does not exist, new customer, buyer, and address records are created</p>\n<p>·   If the customer exists, the existing ID is used</p>\n<h4 id=\"order-creation-process\"><strong>Order Creation Process</strong></h4>\n<p>1. Order record is created (status: \"pendingPayment\")</p>\n<p>2. Product records are created for each cart item</p>\n<p>3. Order items are created</p>\n<p>4. Unique link key (linkKey) is generated</p>\n<p>5. Checkout URL is returned</p>\n<h2 id=\"payment-method\"><strong>Payment Method</strong></h2>\n<p>Default payment method: Credit Card (CC)</p>\n","_postman_id":"61f4348d-6d69-4163-a4da-c7e74d3b47cc"},{"name":"Webhook","item":[{"name":"Webhook Payload","item":[],"id":"e54ff0fa-2f4d-494f-a74e-b48ce3b03be4","description":"<p>When you register a webhook with the type <strong>\"checkoutInitiate\"</strong>, Tammim will send HTTP POST requests to your configured webhook URL whenever a checkout session is created or updated (including when the payment process is completed). This document provides a detailed description of the payload structure and the data fields included in these webhook notifications.</p>\n<h4 id=\"http-request-details\"><strong>HTTP Request Details</strong></h4>\n<p><strong>Payload Structure</strong></p>\n<p>The webhook payload is sent as JSON in the request body with the following structure.</p>\n<p> <strong>Complete Payload Example</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"timestamp\": \"2026-01-27T10:30:45.123+00:00\",\n  \"tammim_transaction_id\": 12345,\n  \"merchant_ref_id\": \"ORDER-2026-0001\",\n  \"status\": \"completed\",\n  \"final_total\": 480.00,\n  \"customer_details\": {\n    \"customer_name\": \"John Doe\",\n    \"customer_phone\": \"+905551234567\",\n    \"customer_email\": \"john.doe@example.com\",\n    \"customer_code\": \"CUST001\"\n  },\n  \"shipping_details\": {\n    \"shipping_fullAddress\": \"Bagdat Avenue No:123 Kadikoy/Istanbul\",\n    \"shipping_city\": \"Istanbul\",\n    \"shipping_district\": \"Kadikoy\",\n    \"shipping_street\": \"Bagdat Avenue\",\n    \"shipping_shortCode\": \"KDK123\",\n    \"shipping_Building\": \"Block A\",\n    \"shipping_zipCode\": \"34710\",\n    \"shipping_country\": \"TR\",\n    \"selected_carrier\": \"express_shipping\"\n  },\n  \"payment_details\": {\n    \"payment_method\": \"CC\",\n    \"payment_transactionID\": 67890,\n    \"payment_transaction_status\": \"success\",\n    \"payment_transactionTime\": \"2026-01-27T10:30:45.000+00:00\",\n    \"payment_failReason\": null\n  }\n}\n\n\n</code></pre>\n<h4 id=\"payload-fields-description\"><strong>Payload Fields Description</strong></h4>\n<p><strong>Root Level Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>timestamp</td>\n<td>String</td>\n<td>ISO 8601 formatted timestamp when the event occurred</td>\n</tr>\n<tr>\n<td>tammim_transaction_id</td>\n<td>Long</td>\n<td>Unique Tammim transaction identifier</td>\n</tr>\n<tr>\n<td>merchant_ref_id</td>\n<td>String</td>\n<td>Your reference ID provided during checkout initiation</td>\n</tr>\n<tr>\n<td>status</td>\n<td>String</td>\n<td>Current order status (e.g., \"completed\", \"pendingPayment\", \"cancelled\")</td>\n</tr>\n<tr>\n<td>final_total</td>\n<td>Double</td>\n<td>Final total amount of the order</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>customer_details Object</strong></p>\n<p>Contains information about the customer who initiated the checkout.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>customer_name</td>\n<td>String</td>\n<td>Full name of the customer (firstName + lastName)</td>\n</tr>\n<tr>\n<td>customer_phone</td>\n<td>String</td>\n<td>Customer phone number with country code</td>\n</tr>\n<tr>\n<td>customer_email</td>\n<td>String</td>\n<td>Customer email address</td>\n</tr>\n<tr>\n<td>customer_code</td>\n<td>String</td>\n<td>Customer code if provided during registration</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>shipping_details Object</strong></p>\n<p>Contains shipping and delivery address information.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>shipping_fullAddress</td>\n<td>String</td>\n<td>Complete shipping address</td>\n</tr>\n<tr>\n<td>shipping_city</td>\n<td>String</td>\n<td>City name</td>\n</tr>\n<tr>\n<td>shipping_district</td>\n<td>String</td>\n<td>District/neighborhood name</td>\n</tr>\n<tr>\n<td>shipping_street</td>\n<td>String</td>\n<td>Street name</td>\n</tr>\n<tr>\n<td>shipping_shortCode</td>\n<td>String</td>\n<td>Short address code</td>\n</tr>\n<tr>\n<td>shipping_Building</td>\n<td>String</td>\n<td>Building name or number</td>\n</tr>\n<tr>\n<td>shipping_zipCode</td>\n<td>String</td>\n<td>Postal/ZIP code</td>\n</tr>\n<tr>\n<td>shipping_country</td>\n<td>String</td>\n<td>Country code (ISO 3166-1 alpha-2)</td>\n</tr>\n<tr>\n<td>selected_carrier</td>\n<td>String</td>\n<td>Selected shipping method/carrier</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>payment_details Object</strong></p>\n<p>Contains payment transaction information.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>payment_method</td>\n<td>String</td>\n<td>Payment method used (e.g., \"CC\" for credit card)</td>\n</tr>\n<tr>\n<td>payment_transactionID</td>\n<td>Long</td>\n<td>Unique payment transaction identifier</td>\n</tr>\n<tr>\n<td>payment_transaction_status</td>\n<td>String</td>\n<td>Payment status (e.g., \"success\", \"failed\", \"pending\")</td>\n</tr>\n<tr>\n<td>payment_transactionTime</td>\n<td>String</td>\n<td>ISO 8601 timestamp of payment transaction</td>\n</tr>\n<tr>\n<td>payment_failReason</td>\n<td>String</td>\n<td>Reason for payment failure (null if successful)</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"e54ff0fa-2f4d-494f-a74e-b48ce3b03be4"},{"name":"List Webhook","id":"c98982bb-247c-4f7b-a35e-b919a2169316","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{tammim-url}}/api/v1/webhook/list","description":"<p>This API endpoint allows you retrieves all webhook configurations for the authenticated company.</p>\n<p><strong>Request Headers</strong></p>\n<p>Authorization: Bearer {token}</p>\n<p><strong>Request Parameters</strong></p>\n<p><strong>No request parameters required</strong></p>\n","urlObject":{"path":["api","v1","webhook","list"],"host":["{{tammim-url}}"],"query":[],"variable":[]}},"response":[{"id":"688ee149-975d-4103-8a8c-203b01465fb3","name":"200-List Webhook","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6ImY3NThlNTYzYzBiNjRhNzVmN2UzZGFlNDk0ZDM5NTk1YzE0MGVmOTMiLCJ0eXAiOiJKV1QifQ.eyJmaXJlYmFzZVVJRCI6IjBQU01sUU8wZFBkME5reHZGbUxlZHdJRG1HNTIiLCJwaG9uZU51bWJlciI6Ijk2NjUxMTIzNDYyMyIsInRhbW1pbUNvbXBhbnlJRCI6MjA0LCJ1c2VyVHlwZSI6InNlbGxlciIsInVzZXJJRCI6NDM1LCJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vb3RvLXN0YWdlLWFwaSIsImF1ZCI6Im90by1zdGFnZS1hcGkiLCJhdXRoX3RpbWUiOjE3Njk3NzMxNjgsInVzZXJfaWQiOiIwUFNNbFFPMGRQZDBOa3h2Rm1MZWR3SURtRzUyIiwic3ViIjoiMFBTTWxRTzBkUGQwTmt4dkZtTGVkd0lEbUc1MiIsImlhdCI6MTc2OTc3MzE2OCwiZXhwIjoxNzY5Nzc2NzY4LCJlbWFpbCI6Imkuc2FoaW4udGFtbWltLjEwMDZAZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJmaXJlYmFzZSI6eyJpZGVudGl0aWVzIjp7ImVtYWlsIjpbImkuc2FoaW4udGFtbWltLjEwMDZAZ21haWwuY29tIl19LCJzaWduX2luX3Byb3ZpZGVyIjoicGFzc3dvcmQifX0.iezgkRiMd1LDhIsUtGveE0tTt396zI5XO9yGS6POLF7E69YytIiUdsPw2ISHiISNS2aVgze5SafSm1sX6RM4N4RXZPLj4j4BBn2Npw9LrKxnBVxYioCoaOxgMIH9xh77F1HyXRVPai2KRJRLjvtk48mKsew2rpRfxWJ-mdY86JJaOEBfadXaY62d6fTiOe-Q8FrPMOS0CujSKYyfp2ZVpPSmUzJtD0r6-K7VC9Qx8ry-cBPiGpuSsJAZ4MWJlO9YIpKXZMnntKrtDxIikS27wpdnWKTzNCi33RbeF5Cx_GKmxSnrcWmG-hVdJGZ525xQxBN8n3hLCTpqeXtkyoA9Vg","type":"text"}],"url":"{{tammim-url}}/api/v1/webhook/list"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"SUCCESS\",\n    \"data\": [\n        {\n            \"id\": 1,\n            \"webhookurl\": \"https://example.com/webhook/checkout\",\n            \"webhookType\": \"checkoutInitiate\"\n        },\n        {\n            \"id\": 2,\n            \"webhookurl\": \"https://example.com/webhook/payment\",\n            \"webhookType\": \"paymentComplete\"\n        }\n    ]\n}"},{"id":"d0b32991-5674-4129-b44a-80b9179911f2","name":"400-Invalid Company","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6ImY3NThlNTYzYzBiNjRhNzVmN2UzZGFlNDk0ZDM5NTk1YzE0MGVmOTMiLCJ0eXAiOiJKV1QifQ.eyJmaXJlYmFzZVVJRCI6IjBQU01sUU8wZFBkME5reHZGbUxlZHdJRG1HNTIiLCJwaG9uZU51bWJlciI6Ijk2NjUxMTIzNDYyMyIsInRhbW1pbUNvbXBhbnlJRCI6MjA0LCJ1c2VyVHlwZSI6InNlbGxlciIsInVzZXJJRCI6NDM1LCJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vb3RvLXN0YWdlLWFwaSIsImF1ZCI6Im90by1zdGFnZS1hcGkiLCJhdXRoX3RpbWUiOjE3Njk3NzMxNjgsInVzZXJfaWQiOiIwUFNNbFFPMGRQZDBOa3h2Rm1MZWR3SURtRzUyIiwic3ViIjoiMFBTTWxRTzBkUGQwTmt4dkZtTGVkd0lEbUc1MiIsImlhdCI6MTc2OTc3MzE2OCwiZXhwIjoxNzY5Nzc2NzY4LCJlbWFpbCI6Imkuc2FoaW4udGFtbWltLjEwMDZAZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJmaXJlYmFzZSI6eyJpZGVudGl0aWVzIjp7ImVtYWlsIjpbImkuc2FoaW4udGFtbWltLjEwMDZAZ21haWwuY29tIl19LCJzaWduX2luX3Byb3ZpZGVyIjoicGFzc3dvcmQifX0.iezgkRiMd1LDhIsUtGveE0tTt396zI5XO9yGS6POLF7E69YytIiUdsPw2ISHiISNS2aVgze5SafSm1sX6RM4N4RXZPLj4j4BBn2Npw9LrKxnBVxYioCoaOxgMIH9xh77F1HyXRVPai2KRJRLjvtk48mKsew2rpRfxWJ-mdY86JJaOEBfadXaY62d6fTiOe-Q8FrPMOS0CujSKYyfp2ZVpPSmUzJtD0r6-K7VC9Qx8ry-cBPiGpuSsJAZ4MWJlO9YIpKXZMnntKrtDxIikS27wpdnWKTzNCi33RbeF5Cx_GKmxSnrcWmG-hVdJGZ525xQxBN8n3hLCTpqeXtkyoA9Vg","type":"text"}],"url":"{{tammim-url}}/api/v1/webhook/list"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ERROR\",\n    \"errorMessage\": \"Invalid company\"\n}"}],"_postman_id":"c98982bb-247c-4f7b-a35e-b919a2169316"},{"name":"Add Webhook","id":"0f6b3658-cad6-403f-a831-040f1b723e3a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"webhookurl\" : \"webhook.site/236124\",\n    \"authorizationKey\" : \"key23234\",\n    \"secretKey\" : \"sfddsf2\"\n}","options":{"raw":{"language":"json"}}},"url":"{{tammim-url}}/api/v1/webhook/add","description":"<p>This API endpoint creates a new webhook configuration to receive real-time event notifications.</p>\n<p>This endpoint allows clients to register a callback URL, define the events they want to subscribe to, and securely receive automated updates whenever those events occur in the system.</p>\n<p><strong>Request Headers</strong></p>\n<p>Authorization: Bearer {token}</p>\n<p>Content-Type: application/json</p>\n<p><strong>Request Body</strong></p>\n<p><strong>Required Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Required</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>webhookurl</td>\n<td>Yes</td>\n<td>String</td>\n<td>URL endpoint to receive webhook notifications (HTTPS recommended)</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Optional Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Required</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>secretKey</td>\n<td>No</td>\n<td>String</td>\n<td>Secret key for webhook signature verification</td>\n</tr>\n<tr>\n<td>authorizationKey</td>\n<td>No</td>\n<td>String</td>\n<td>Authorization key to be sent with webhook requests</td>\n</tr>\n<tr>\n<td>webhookType</td>\n<td>No</td>\n<td>String</td>\n<td>Type of webhook (default: \"checkoutInitiate\")</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Response Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>status</td>\n<td>String</td>\n<td>Operation status (\"SUCCESS\" or \"ERROR\")</td>\n</tr>\n<tr>\n<td>id</td>\n<td>Long</td>\n<td>Unique identifier of the created webhook</td>\n</tr>\n<tr>\n<td>webhook</td>\n<td>String</td>\n<td>Confirmed webhook URL</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","v1","webhook","add"],"host":["{{tammim-url}}"],"query":[],"variable":[]}},"response":[{"id":"e51aaf64-91e6-47db-98f9-e0132b5dc722","name":"200- Add Webhook","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{tammim-token}}","type":"text","disabled":true}],"body":{"mode":"raw","raw":"{\n    \"webhookurl\" : \"webhook.site/236124\",\n    \"authorizationKey\" : \"key23234\",\n    \"secretKey\" : \"sfddsf2\"\n}","options":{"raw":{"language":"json"}}},"url":"{{tammim-url}}/api/v1/webhook/add"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"SUCCESS\",\n    \"id\": 123,\n    \"webhook\": \"https://example.com/webhook/checkout\"\n}"},{"id":"a0298b36-3982-4b25-b315-af84f324d3dd","name":"400-Webhook URL Required","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{tammim-token}}","type":"text","disabled":true}],"body":{"mode":"raw","raw":"{\n    \"authorizationKey\" : \"key23234\",\n    \"secretKey\" : \"sfddsf2\"\n}","options":{"raw":{"language":"json"}}},"url":"{{tammim-url}}/api/v1/webhook/add"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ERROR\",\n    \"error\": \"webhookurl is required!\"\n}"},{"id":"fea82c4c-1a9a-4e48-b421-90c2b9c2e44a","name":"400-Invalid Company","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{tammim-token}}","type":"text","disabled":true}],"body":{"mode":"raw","raw":"{\n    \"webhookurl\" : \"webhook.site/236124\",\n    \"authorizationKey\" : \"key23234\",\n    \"secretKey\" : \"sfddsf2\"\n}","options":{"raw":{"language":"json"}}},"url":"{{tammim-url}}/api/v1/webhook/add"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ERROR\",\n    \"errorMessage\": \"Invalid company\"\n}"}],"_postman_id":"0f6b3658-cad6-403f-a831-040f1b723e3a"},{"name":"Update Webhook","id":"b2da85e6-626f-4f02-b92b-52a2728c7bc7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"id\" : \"6\",\n    \"webhookurl\" : \"updateurl.webhook.site\"\n}","options":{"raw":{"language":"json"}}},"url":"https://oto-tammim-web-api-924792569625.europe-west1.run.app/api/v1/webhook/update","description":"<p>This API endpoint allows clients to modify webhook settings such as the callback URL, subscribed events, authentication details, or activation status.</p>\n<p><strong>Request Headers</strong></p>\n<p>Authorization: Bearer {token}</p>\n<p>Content-Type: application/json</p>\n<h3 id=\"request-body\"><strong>Request Body</strong></h3>\n<p><strong>Required Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Required</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>Yes</td>\n<td>Long</td>\n<td>Webhook ID to update</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Optional Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Required</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>webhookurl</td>\n<td>No</td>\n<td>String</td>\n<td>New webhook URL</td>\n</tr>\n<tr>\n<td>secretKey</td>\n<td>No</td>\n<td>String</td>\n<td>New secret key</td>\n</tr>\n<tr>\n<td>authorizationKey</td>\n<td>No</td>\n<td>String</td>\n<td>New authorization key</td>\n</tr>\n<tr>\n<td>webhookType</td>\n<td>No</td>\n<td>String</td>\n<td>New webhook type (default: \"checkoutInitiate\")</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["api","v1","webhook","update"],"host":["oto-tammim-web-api-924792569625","europe-west1","run","app"],"query":[],"variable":[]}},"response":[{"id":"e09e158b-26e1-478a-8d5c-5e735bb6ed64","name":"200-Update Webhook","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6ImY3NThlNTYzYzBiNjRhNzVmN2UzZGFlNDk0ZDM5NTk1YzE0MGVmOTMiLCJ0eXAiOiJKV1QifQ.eyJmaXJlYmFzZVVJRCI6IjBQU01sUU8wZFBkME5reHZGbUxlZHdJRG1HNTIiLCJwaG9uZU51bWJlciI6Ijk2NjUxMTIzNDYyMyIsInRhbW1pbUNvbXBhbnlJRCI6MjA0LCJ1c2VyVHlwZSI6InNlbGxlciIsInVzZXJJRCI6NDM1LCJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vb3RvLXN0YWdlLWFwaSIsImF1ZCI6Im90by1zdGFnZS1hcGkiLCJhdXRoX3RpbWUiOjE3Njk3NzMxNjgsInVzZXJfaWQiOiIwUFNNbFFPMGRQZDBOa3h2Rm1MZWR3SURtRzUyIiwic3ViIjoiMFBTTWxRTzBkUGQwTmt4dkZtTGVkd0lEbUc1MiIsImlhdCI6MTc2OTc3MzE2OCwiZXhwIjoxNzY5Nzc2NzY4LCJlbWFpbCI6Imkuc2FoaW4udGFtbWltLjEwMDZAZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJmaXJlYmFzZSI6eyJpZGVudGl0aWVzIjp7ImVtYWlsIjpbImkuc2FoaW4udGFtbWltLjEwMDZAZ21haWwuY29tIl19LCJzaWduX2luX3Byb3ZpZGVyIjoicGFzc3dvcmQifX0.iezgkRiMd1LDhIsUtGveE0tTt396zI5XO9yGS6POLF7E69YytIiUdsPw2ISHiISNS2aVgze5SafSm1sX6RM4N4RXZPLj4j4BBn2Npw9LrKxnBVxYioCoaOxgMIH9xh77F1HyXRVPai2KRJRLjvtk48mKsew2rpRfxWJ-mdY86JJaOEBfadXaY62d6fTiOe-Q8FrPMOS0CujSKYyfp2ZVpPSmUzJtD0r6-K7VC9Qx8ry-cBPiGpuSsJAZ4MWJlO9YIpKXZMnntKrtDxIikS27wpdnWKTzNCi33RbeF5Cx_GKmxSnrcWmG-hVdJGZ525xQxBN8n3hLCTpqeXtkyoA9Vg","disabled":true},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"id\" : \"6\",\n    \"webhookurl\" : \"updateurl.webhook.site\"\n}","options":{"raw":{"language":"json"}}},"url":"https://oto-tammim-web-api-924792569625.europe-west1.run.app/api/v1/webhook/update"},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":null}],"_postman_id":"b2da85e6-626f-4f02-b92b-52a2728c7bc7"},{"name":"Delete Webhook","id":"541729ea-9919-42bc-91a5-18eb8db292e2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"id\" : \"5\"\n}","options":{"raw":{"language":"json"}}},"url":"https://oto-tammim-web-api-924792569625.europe-west1.run.app/api/v1/webhook/delete","description":"<p>This API endpoint deletes an existing webhook configuration.</p>\n<p>Once removed, the webhook will stop receiving all event notifications, effectively unsubscribing the client from any previously registered events.</p>\n<h3 id=\"request-headers\"><strong>Request Headers</strong></h3>\n<p>Authorization: Bearer {token}</p>\n<p>Content-Type: application/json</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Required</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>Yes</td>\n<td>Long</td>\n<td>Webhook ID to delete</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Response - Success (200 OK)</strong></p>\n<p>No response body is returned. HTTP 200 status indicates successful deletion.</p>\n","urlObject":{"protocol":"https","path":["api","v1","webhook","delete"],"host":["oto-tammim-web-api-924792569625","europe-west1","run","app"],"query":[],"variable":[]}},"response":[{"id":"295fb043-9aee-458d-8cf2-3e7100aee3bd","name":"200-Delete Webhook","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6ImY3NThlNTYzYzBiNjRhNzVmN2UzZGFlNDk0ZDM5NTk1YzE0MGVmOTMiLCJ0eXAiOiJKV1QifQ.eyJmaXJlYmFzZVVJRCI6IjBQU01sUU8wZFBkME5reHZGbUxlZHdJRG1HNTIiLCJwaG9uZU51bWJlciI6Ijk2NjUxMTIzNDYyMyIsInRhbW1pbUNvbXBhbnlJRCI6MjA0LCJ1c2VyVHlwZSI6InNlbGxlciIsInVzZXJJRCI6NDM1LCJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vb3RvLXN0YWdlLWFwaSIsImF1ZCI6Im90by1zdGFnZS1hcGkiLCJhdXRoX3RpbWUiOjE3Njk3NzMxNjgsInVzZXJfaWQiOiIwUFNNbFFPMGRQZDBOa3h2Rm1MZWR3SURtRzUyIiwic3ViIjoiMFBTTWxRTzBkUGQwTmt4dkZtTGVkd0lEbUc1MiIsImlhdCI6MTc2OTc3MzE2OCwiZXhwIjoxNzY5Nzc2NzY4LCJlbWFpbCI6Imkuc2FoaW4udGFtbWltLjEwMDZAZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJmaXJlYmFzZSI6eyJpZGVudGl0aWVzIjp7ImVtYWlsIjpbImkuc2FoaW4udGFtbWltLjEwMDZAZ21haWwuY29tIl19LCJzaWduX2luX3Byb3ZpZGVyIjoicGFzc3dvcmQifX0.iezgkRiMd1LDhIsUtGveE0tTt396zI5XO9yGS6POLF7E69YytIiUdsPw2ISHiISNS2aVgze5SafSm1sX6RM4N4RXZPLj4j4BBn2Npw9LrKxnBVxYioCoaOxgMIH9xh77F1HyXRVPai2KRJRLjvtk48mKsew2rpRfxWJ-mdY86JJaOEBfadXaY62d6fTiOe-Q8FrPMOS0CujSKYyfp2ZVpPSmUzJtD0r6-K7VC9Qx8ry-cBPiGpuSsJAZ4MWJlO9YIpKXZMnntKrtDxIikS27wpdnWKTzNCi33RbeF5Cx_GKmxSnrcWmG-hVdJGZ525xQxBN8n3hLCTpqeXtkyoA9Vg","disabled":true},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"id\" : \"5\"\n}","options":{"raw":{"language":"json"}}},"url":"https://oto-tammim-web-api-924792569625.europe-west1.run.app/api/v1/webhook/delete"},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":null}],"_postman_id":"541729ea-9919-42bc-91a5-18eb8db292e2"}],"id":"3603840c-95c8-44e4-881c-879946a3c7f1","description":"<p>This API endpoint allows sellers to configure and manage webhook endpoints for receiving real-time notifications about checkout events. Webhooks enable automated integration between Tammim and your systems by sending HTTP POST requests to your specified URL when events occur.</p>\n<p><strong>Authentication</strong></p>\n<p><strong>·</strong> All webhook management endpoints require authentication:</p>\n<p>· Bearer Token must be included in the Authorization header</p>\n<p><strong>Response Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>status</td>\n<td>String</td>\n<td>Operation status (\"SUCCESS\" or \"ERROR\")</td>\n</tr>\n<tr>\n<td>data</td>\n<td>Array</td>\n<td>Array of webhook configurations</td>\n</tr>\n<tr>\n<td>data[].id</td>\n<td>Long</td>\n<td>Webhook unique identifier</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"3603840c-95c8-44e4-881c-879946a3c7f1"},{"name":"Error Messages","item":[],"id":"5bbdc95c-a3eb-411c-b16a-82dd1d622e88","description":"<h4 id=\"http-status-codes\"><strong>HTTP Status Codes</strong></h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP Status</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200</td>\n<td>Success – Registration completed successfully</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Bad Request – Missing fields, invalid data, or validation errors</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Unauthorized</td>\n</tr>\n<tr>\n<td>500</td>\n<td>Internal Server Error – File upload or server error</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"registration\"><strong>Registration</strong></h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>HTTP Status Code</strong></th>\n<th><strong>Error Message</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>Missing required field: email</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Invalid or missing invoiceType</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Missing required file: civilFile</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Invalid city name: InvalidCity</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Invalid bank ID: 999</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Signup failed: EMAIL_EXISTS</td>\n</tr>\n<tr>\n<td>500</td>\n<td>File upload failed: IOException occurred</td>\n</tr>\n</tbody>\n</table>\n</div><p>Common Errors &amp; Solutions</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Error</th>\n<th>Solution</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>EMAIL_EXISTS</td>\n<td>Email already registered. Use different email or try login.</td>\n</tr>\n<tr>\n<td>Missing required field</td>\n<td>Check all required fields are present in JSON data.</td>\n</tr>\n<tr>\n<td>Invalid city name</td>\n<td>Use valid city name from supported cities list.</td>\n</tr>\n<tr>\n<td>Invalid bank ID</td>\n<td>Use bank ID from supported banks list.</td>\n</tr>\n<tr>\n<td>File upload failed</td>\n<td>Check file size and format. Ensure files are not corrupted.</td>\n</tr>\n<tr>\n<td>Invalid invoiceType</td>\n<td>Use either \"freelancer\" or \"company\" as invoiceType.</td>\n</tr>\n<tr>\n<td>WEAK_PASSWORD</td>\n<td>Use stronger password (min 6 characters).</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"sıgn-in\"><strong>Sıgn In</strong></h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Error Code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>EMAIL_NOT_FOUND</td>\n<td>Email address not registered</td>\n</tr>\n<tr>\n<td>INVALID_PASSWORD</td>\n<td>Incorrect password</td>\n</tr>\n<tr>\n<td>USER_DISABLED</td>\n<td>User account has been disabled</td>\n</tr>\n<tr>\n<td>INVALID_EMAIL</td>\n<td>Email address format is invalid_</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"refresh-token\">Refresh Token</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP Status</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200</td>\n<td>Success – Authentication successful</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Bad Request – Invalid credentials or parameters</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Unauthorized – Invalid or expired token</td>\n</tr>\n</tbody>\n</table>\n</div><div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Error Code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>INVALID_REFRESH_TOKEN</td>\n<td>Refresh token is invalid or expired</td>\n</tr>\n<tr>\n<td>TOKEN_EXPIRED</td>\n<td>Refresh token has expired</td>\n</tr>\n<tr>\n<td>USER_DISABLED</td>\n<td>User account has been disabled</td>\n</tr>\n</tbody>\n</table>\n</div><p>Common Errors &amp; Solutions</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Issue</th>\n<th>Solution</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>EMAIL_NOT_FOUND</td>\n<td>Email is not registered. Check the email or register a new account.</td>\n</tr>\n<tr>\n<td>INVALID_PASSWORD</td>\n<td>Password is incorrect. Verify the password or use password reset.</td>\n</tr>\n<tr>\n<td>INVALID_REFRESH_TOKEN</td>\n<td>Refresh token is expired or invalid. Sign in again.</td>\n</tr>\n<tr>\n<td>Token expired immediately</td>\n<td>Check system clock synchronization.</td>\n</tr>\n<tr>\n<td>401 errors after refresh</td>\n<td>Clear tokens and sign in again.</td>\n</tr>\n<tr>\n<td>Tokens not persisting</td>\n<td>Check storage implementation (localStorage, cookies, etc.).</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"checkout\">Checkout</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Error</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Invalid Merchant ID</td>\n<td>The provided <code>merchant_id</code> is invalid.</td>\n</tr>\n<tr>\n<td>Duplicate Reference ID</td>\n<td>An order with this <code>reference_id</code> already exists.</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"5bbdc95c-a3eb-411c-b16a-82dd1d622e88"}],"event":[{"listen":"prerequest","script":{"id":"aa3e5c21-9cbf-4c41-95da-2dbf7d64420f","type":"text/javascript","packages":{},"requests":{},"exec":[""]}},{"listen":"test","script":{"id":"ac10a400-4f00-4b1c-9494-8229ecd1be4d","type":"text/javascript","packages":{},"requests":{},"exec":[""]}}],"variable":[{"value":"","type":"default"}]}