{"info":{"_postman_id":"164ced2f-adb5-42ce-9964-2d5d53b1c7fe","name":"Duve - Open API","description":"<html><head></head><body><h2 id=\"general\">General</h2>\n<p>This is <strong>Duve</strong> Open API to access your hotel data</p>\n<h4 id=\"copyrights\">Copyrights</h4>\n<p><strong>All information related to the API is Duve proprietary and Duve confidential</strong></p>\n<h1 id=\"gettings-started\">Gettings started</h1>\n<p>On your Duve platform account create a new sync source of type <strong>Duve Open API</strong><br>In case you are missing this type of sync source please contact our <a href=\"https://support@duve.com\">support team</a></p>\n<h1 id=\"rate-limits\">Rate Limits</h1>\n<p>All API requests have rate limits and your system will need to make sure to know to handle 429 response in case of too many requests</p>\n<p>The rate limits are 60 req a minute.</p>\n<h1 id=\"api-authentication\">API authentication</h1>\n<p>Via Bearer token recived from the Authorization Oauth2 flow</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"Gettings started","slug":"gettings-started"},{"content":"Rate Limits","slug":"rate-limits"},{"content":"API authentication","slug":"api-authentication"}],"owner":"7066777","collectionId":"164ced2f-adb5-42ce-9964-2d5d53b1c7fe","publishedId":"2sA2xfZDv4","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"374151","highlight":"755be2"},"publishDate":"2024-03-07T16:26:15.000Z"},"item":[{"name":"Authrization","item":[{"name":"Token","event":[{"listen":"test","script":{"id":"63a15971-cf8b-4d09-a287-1e548ba38aa6","exec":["if(pm.response.code === 200) {","    var data = JSON.parse(responseBody);","    if (data.access_token) {","        postman.setEnvironmentVariable(\"duveApiToken\", data.access_token);","    }","}"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"095d9f82-e1de-4b33-a583-aaf062e4b96f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"urlencoded","urlencoded":[{"key":"client_id","value":"{{clientID}}","type":"text"},{"key":"client_secret","value":"{{clientSecret}}","type":"text"},{"key":"grant_type","value":"client_credentials","type":"text"},{"key":"scope","value":"reservations","type":"text"}]},"url":"{{apiUrl}}/openapi/v1/oauth2/token","description":"<p>Use this request to create a bearer token which will be used after for authenticating the rest of the requests in the OpenApi</p>\n<p>Note: Each token expires after 1H</p>\n","urlObject":{"path":["openapi","v1","oauth2","token"],"host":["{{apiUrl}}"],"query":[],"variable":[]}},"response":[{"id":"19fbe4d7-ace4-406a-b003-1b1c52ba1836","name":"Token Success","originalRequest":{"method":"POST","header":[],"body":{"mode":"urlencoded","urlencoded":[{"key":"client_id","value":"234sdf3r2d233r2r","type":"text"},{"key":"client_secret","value":"QT8*BK5o$ExT99S8t5g$MN$3qXBRd","type":"text"},{"key":"grant_type","value":"client_credentials","type":"text"},{"key":"scope","value":"hotel_id","type":"text"}]},"url":"http://localhost/api/opanapi/v1/oauth2/token"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"expires_in\": 3600,\n    \"access_token\": \"jwt token\"\n}"},{"id":"267de46c-1bc9-488a-9279-298e0abae740","name":"Authorize Error","originalRequest":{"method":"POST","header":[],"body":{"mode":"urlencoded","urlencoded":[{"key":"client_id","value":"invalid_token","type":"text"},{"key":"client_secret","value":"invalid_secret","type":"text"},{"key":"grant_type","value":"client_credentials","type":"text"},{"key":"scope","value":"invalid_hotel_id","type":"text"}]},"url":"{{apiUrl}}/opanapi/v1/oauth2/token"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\":\"invalid_request\"\n}"}],"_postman_id":"095d9f82-e1de-4b33-a583-aaf062e4b96f"}],"id":"ef0602d6-a9b9-42bb-a730-0510bdb82151","description":"<p>Authorization is done via Oauth2 flow using <strong>ClientID</strong> and <strong>ClientSecret</strong> creating an access token with expiration</p>\n<h2 id=\"rate-limits\">Rate Limits</h2>\n<p>Please try to persist your token and reuse it until it expires to prevent rate limit and excesive requests to the authorization route</p>\n","_postman_id":"ef0602d6-a9b9-42bb-a730-0510bdb82151"},{"name":"Reservations","item":[{"name":"GuestLink","id":"b893695a-fd36-479a-a717-a90dea998e27","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{duveApiToken}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{apiUrl}}/openapi/v1/reservations/links?externalId={{reservationId}}&includeLastMessage=1","description":"<p>Use that request to fetch the guest links for a reservation according to the external id or the crs external id of the reservation in the PMS</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Param name</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Required</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>externalId</td>\n<td>The PMS reservation id</td>\n<td>One of the external id's is requried</td>\n</tr>\n<tr>\n<td>crsExternalId</td>\n<td>The CRS reservation id</td>\n<td>One of the external id's is requried</td>\n</tr>\n<tr>\n<td>includeLastMessage</td>\n<td>Use that to fetch the last message sent in the chat of the guest</td>\n<td>Optional</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["openapi","v1","reservations","links"],"host":["{{apiUrl}}"],"query":[{"key":"externalId","value":"{{reservationId}}"},{"disabled":true,"key":"crsExternalId","value":"{{crsExternalId}}"},{"key":"includeLastMessage","value":"1"}],"variable":[]}},"response":[{"id":"c3d6b38d-e80b-4b98-a801-bf0a67a73c13","name":"GuestLink","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{apiUrl}}/openapi/v1/reservations/links?externalId={{reservationId}}","host":["{{apiUrl}}"],"path":["openapi","v1","reservations","links"],"query":[{"key":"externalId","value":"{{reservationId}}"}]}},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":""}],"cookie":[],"responseTime":null,"body":"{\n    \"guestApp\": \"https://m.duve.co/g/pTwpOIS5w\",\n    \"chatLink\": \"https://m.duve.co/g/pTwpOIS5w?id=chat\",\n    \"onlineCheckInLink\": \"https://m.duve.co/p/pTwpOIS5w\", // Online check in link in case guest needst to do the online check in\n    \"chatLastMessage\": {\n        \"body\": \"Everything fly\", // Plain text of the mesasge content\n        \"author\": \"Duve Test\", // Name of the guest sent the message\n        \"authorType\": \"admin\", // user is for guest, admin is for host\n        \"time\": \"2024-06-21T12:59:09.684Z\",\n        \"sentVia\": \"Chat\",\n        \"hasAttachment\": false,\n        \"seen\": false // If the last message is from the guest and a host saw it it will be true othewise false. Vice versa when the host written the message and if the guest saw it or not\n    }\n}"}],"_postman_id":"b893695a-fd36-479a-a717-a90dea998e27"}],"id":"f730219c-e9ac-40c5-ae52-a7911c946af7","description":"<p>This section is for reservation based requests to fetch specifc data for each reservation that exist in Duve.</p>\n","_postman_id":"f730219c-e9ac-40c5-ae52-a7911c946af7"},{"name":"Accounts","item":[{"name":"Accounts","id":"fc5e8da9-0cd5-4cdd-8d9e-20206d90f186","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{duveApiToken}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{apiUrl}}/openapi/v1/accounts?page=2&pageSize=50","description":"<p>This request is used to fetch connected accounts to an open API connection associated with multi accounts scope in the same connection.</p>\n<p>It can be a list of hotels accounts or VR accounts</p>\n<p>In case there is a single account in the scope then it would return an empty array.</p>\n","urlObject":{"path":["openapi","v1","accounts"],"host":["{{apiUrl}}"],"query":[{"description":{"content":"<p>Page number</p>\n","type":"text/plain"},"key":"page","value":"2"},{"description":{"content":"<p>Page size (Maximum 50 per request)</p>\n","type":"text/plain"},"key":"pageSize","value":"50"}],"variable":[]}},"response":[{"id":"bd3d45c1-6384-4cfb-af6c-64053a6b91f0","name":"allAccounts","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{apiUrl}}/openapi/v1/accounts?page=1&pageSize=2","host":["{{apiUrl}}"],"path":["openapi","v1","accounts"],"query":[{"key":"page","value":"1"},{"key":"pageSize","value":"2"}]}},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [{\n        \"name\": \"Hotel A\",\n        \"externalId\": \"\"\n    }, {\n        \"name\": \"Hotel B\",\n        \"externalId\": \"\"\n    }, {\n        \"name\": \"Hotel C\",\n        \"externalId\": \"\"\n    }],\n    \"pagination\": {\n        \"pageSize\": 10,\n        \"total\": 3,\n        \"pages\": 1,\n        \"page\": 1,\n        \"hasMore\": false\n    }\n}"},{"id":"d2bbf686-1ec6-4cce-a4ee-69a559f61cc6","name":"singleAccount","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{apiUrl}}/openapi/v1/accounts?externalId=HotelA&id","host":["{{apiUrl}}"],"path":["openapi","v1","accounts"],"query":[{"key":"page","value":"1","disabled":true},{"key":"pageSize","value":"2","disabled":true},{"key":"externalId","value":"HotelA"},{"key":"id","value":null}]}},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [{\n        \"name\": \"Hotel A\",\n        \"id\": \"\",\n        \"externalId\": \"HotelA\",\n        \"token\": \"jwt_token\",\n        \"expires_in\": 3600\n    }],\n    \"pagination\": {\n        \"pageSize\": 1,\n        \"total\": 1,\n        \"pages\": 1,\n        \"page\": 1,\n        \"hasMore\": false\n    }\n}"}],"_postman_id":"fc5e8da9-0cd5-4cdd-8d9e-20206d90f186"},{"name":"Account Token","event":[{"listen":"test","script":{"id":"826322df-ddc7-48e7-b1bb-fc6b325e3915","exec":["if(pm.response.code === 200) {","    var data = JSON.parse(responseBody);","    if (data.access_token) {","        postman.setEnvironmentVariable(\"duveApiToken\", data.access_token);","    }","}"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"11979a5d-489b-4ce8-a74c-436ae41ad585","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{apiUrl}}/openapi/v1/accounts/{{accountExternalId}}/token","description":"<p>This request is used to fetch connected accounts to an open API connection associated with multi accounts scope in the same connection.</p>\n<p>It can be a list of hotels accounts or VR accounts</p>\n<p>In case there is a single account in the scope then it would return an empty array.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{duveApiToken}}"}]},"isInherited":true,"source":{"_postman_id":"7ba641f7-fc92-482d-8e04-a528f62b9e07","id":"7ba641f7-fc92-482d-8e04-a528f62b9e07","name":"Accounts","type":"folder"}},"urlObject":{"path":["openapi","v1","accounts","{{accountExternalId}}","token"],"host":["{{apiUrl}}"],"query":[],"variable":[]}},"response":[{"id":"83064a4d-e338-4028-8a15-fb68461dfacc","name":"singleAccount","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{apiUrl}}/openapi/v1/accounts/HB3/token","host":["{{apiUrl}}"],"path":["openapi","v1","accounts","HB3","token"],"query":[{"key":"page","value":"1","disabled":true},{"key":"pageSize","value":"2","disabled":true}]}},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"token\": \"access_token\",\n    \"expires_in\": 3600\n}"}],"_postman_id":"11979a5d-489b-4ce8-a74c-436ae41ad585"}],"id":"7ba641f7-fc92-482d-8e04-a528f62b9e07","description":"<p>This section is for account based requests related accounts to the scope of the OpenApi connection.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{duveApiToken}}"}]},"isInherited":false},"event":[{"listen":"prerequest","script":{"id":"145e5442-e107-48e8-92c4-08a88b137da4","type":"text/javascript","packages":{},"exec":[""]}},{"listen":"test","script":{"id":"b5a37baa-9179-4552-8e13-2c10e21e1560","type":"text/javascript","packages":{},"exec":[""]}}],"_postman_id":"7ba641f7-fc92-482d-8e04-a528f62b9e07"},{"name":"Webhooks","item":[{"name":"List Webhooks","id":"d7bc3c10-0cc2-44e3-ad87-f076f1dfa6d6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{duveApiToken}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{apiUrl}}/openapi/v1/webhooks","urlObject":{"path":["openapi","v1","webhooks"],"host":["{{apiUrl}}"],"query":[],"variable":[]}},"response":[{"id":"a457e523-8582-4115-b7d2-855488df091a","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":"{{baseUrl}}/api/openapi/v1/webhooks"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"_id\": \"6711e9a2b3c4d5e6f7a8b9c01\",\n    \"name\": \"My Duve Connect webhook\",\n    \"event\": \"reservationCreated\",\n    \"url\": \"https://example.com/duve/webhooks\",\n    \"conditions\": [],\n    \"dataPoints\": [\"reservation.externalId\", \"guest.email\"],\n    \"isEnabled\": true,\n    \"headers\": [{\"key\": \"X-Wishbox-Auth-Token\", \"value\": \"<token>\"}],\n    \"brands\": [],\n    \"notifyOnWebhookFailures\": false,\n    \"failureNotificationEmails\": []\n  }\n]"},{"id":"efc278b1-da98-4df5-a1f2-60e1f10a7dce","name":"400 Bad Request (example)","originalRequest":{"method":"GET","header":[],"url":"{{baseUrl}}/api/openapi/v1/webhooks"},"status":"Bad Request","code":400,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"invalid_request\",\n  \"message\": \"Malformed query parameters\"\n}"}],"_postman_id":"d7bc3c10-0cc2-44e3-ad87-f076f1dfa6d6"},{"name":"Create Webhook","id":"8cfc30db-9b03-4a1b-9fe9-956318fc362e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{duveApiToken}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"My Duve Connect webhook\",\n  \"event\": \"reservationCreated\",\n  \"url\": \"https://example.com/duve/webhooks\",\n  \"conditions\": [\n    { \"filterType\": 1, \"op\": \"=\", \"value\": \"some-value\" }\n  ],\n  \"dataPoints\": [\"reservation.externalId\", \"guest.email\"],\n  \"isEnabled\": true,\n  \"headers\": [\n    { \"key\": \"X-Wishbox-Auth-Token\", \"value\": \"<token>\" }\n  ]\n}"},"url":"{{apiUrl}}/openapi/v1/webhooks","urlObject":{"path":["openapi","v1","webhooks"],"host":["{{apiUrl}}"],"query":[],"variable":[]}},"response":[{"id":"eee2ae79-31e9-4389-bda6-066d90903969","name":"200 Created successfully","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"My Duve Connect webhook\",\n  \"event\": \"reservationCreated\",\n  \"url\": \"https://example.com/duve/webhooks\",\n  \"isEnabled\": true\n}"},"url":"{{baseUrl}}/api/openapi/v1/webhooks"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"_id\": \"6711e9a2b3c4d5e6f7a8b9c01\",\n  \"name\": \"My Duve Connect webhook\",\n  \"event\": \"reservationCreated\",\n  \"url\": \"https://example.com/duve/webhooks\",\n  \"conditions\": [\n    { \"filterType\": 1, \"op\": \"=\", \"value\": \"some-value\" }\n  ],\n  \"dataPoints\": [\"reservation.externalId\", \"guest.email\"],\n  \"isEnabled\": true,\n  \"headers\": [\n    { \"key\": \"X-Wishbox-Auth-Token\", \"value\": \"<token>\" }\n  ],\n  \"brands\": [],\n  \"notifyOnWebhookFailures\": false,\n  \"failureNotificationEmails\": []\n}"},{"id":"cf1eb202-f43c-4ce0-8343-da3ba4a1b85c","name":"400 Bad Request (example)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/api/openapi/v1/webhooks"},"status":"Bad Request","code":400,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"validation_error\",\n  \"message\": \"Missing required field: url\"\n}"}],"_postman_id":"8cfc30db-9b03-4a1b-9fe9-956318fc362e"},{"name":"Get Webhook by ID","id":"a7527ff2-2e3e-45f4-bb97-ce1d048a30c6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{duveApiToken}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{apiUrl}}/openapi/v1/webhooks/:id","urlObject":{"path":["openapi","v1","webhooks",":id"],"host":["{{apiUrl}}"],"query":[],"variable":[{"type":"any","value":"6711e9a2b3c4d5e6f7a8b9c01","key":"id"}]}},"response":[{"id":"f0c291ae-c21d-4303-9197-42aee72294da","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/openapi/v1/webhooks/:id","host":["{{baseUrl}}"],"path":["api","openapi","v1","webhooks",":id"],"variable":[{"key":"id","value":"6711e9a2b3c4d5e6f7a8b9c01"}]}},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"_id\": \"6711e9a2b3c4d5e6f7a8b9c01\",\n  \"name\": \"My Duve Connect webhook\",\n  \"event\": \"reservationCreated\",\n  \"url\": \"https://example.com/duve/webhooks\",\n  \"conditions\": [],\n  \"dataPoints\": [\"reservation.externalId\"],\n  \"isEnabled\": true,\n  \"headers\": [\n    { \"key\": \"X-Wishbox-Auth-Token\", \"value\": \"<token>\" }\n  ]\n}"},{"id":"86ba1af4-7ac0-4a93-88e3-168077427783","name":"400 Not Found (example)","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/openapi/v1/webhooks/:id","host":["{{baseUrl}}"],"path":["api","openapi","v1","webhooks",":id"],"variable":[{"key":"id","value":"nonexistent"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"not_found\",\n  \"message\": \"Webhook not found\"\n}"}],"_postman_id":"a7527ff2-2e3e-45f4-bb97-ce1d048a30c6"},{"name":"Update Webhook","id":"25875eda-7a66-4deb-957d-3b253c59d66e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{duveApiToken}}"}]},"isInherited":false},"method":"PUT","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"My Duve Connect webhook (updated)\",\n  \"event\": \"orderCreated\",\n  \"url\": \"https://example.com/duve/webhooks\",\n  \"conditions\": [\n    { \"filterType\": 2, \"op\": \"!=\", \"value\": \"canceled\" }\n  ],\n  \"dataPoints\": [\"reservation.externalId\", \"order.orderId\"],\n  \"isEnabled\": true,\n  \"headers\": [\n    { \"key\": \"X-Wishbox-Auth-Token\", \"value\": \"<token>\" }\n  ],\n  \"brands\": [\"5f1e9a2b3c4d5e6f7a8b9c01\"]\n}"},"url":"{{apiUrl}}/openapi/v1/webhooks/:id","urlObject":{"path":["openapi","v1","webhooks",":id"],"host":["{{apiUrl}}"],"query":[],"variable":[{"type":"any","value":"6711e9a2b3c4d5e6f7a8b9c01","key":"id"}]}},"response":[{"id":"1dd12038-db38-4547-a03c-d61323a6dc3a","name":"200 Updated successfully","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{baseUrl}}/api/openapi/v1/webhooks/:id","host":["{{baseUrl}}"],"path":["api","openapi","v1","webhooks",":id"],"variable":[{"key":"id","value":"6711e9a2b3c4d5e6f7a8b9c01"}]}},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"_id\": \"6711e9a2b3c4d5e6f7a8b9c01\",\n  \"name\": \"My Duve Connect webhook (updated)\",\n  \"event\": \"orderCreated\",\n  \"url\": \"https://example.com/duve/webhooks\",\n  \"conditions\": [\n    { \"filterType\": 2, \"op\": \"!=\", \"value\": \"canceled\" }\n  ],\n  \"dataPoints\": [\"reservation.externalId\", \"order.orderId\"],\n  \"isEnabled\": true,\n  \"headers\": [\n    { \"key\": \"X-Wishbox-Auth-Token\", \"value\": \"<token>\" }\n  ],\n  \"brands\": [\"5f1e9a2b3c4d5e6f7a8b9c01\"],\n  \"notifyOnWebhookFailures\": false,\n  \"failureNotificationEmails\": []\n}"},{"id":"fdd9be82-7700-41e1-aaa5-06a4132ba731","name":"400 Bad Request (example)","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{baseUrl}}/api/openapi/v1/webhooks/:id","host":["{{baseUrl}}"],"path":["api","openapi","v1","webhooks",":id"],"variable":[{"key":"id","value":"6711e9a2b3c4d5e6f7a8b9c01"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"validation_error\",\n  \"message\": \"Unknown event: orderCreatedX\"\n}"}],"_postman_id":"25875eda-7a66-4deb-957d-3b253c59d66e"},{"name":"Delete Webhook","id":"4710ea30-f488-4276-af2e-f5934c1135cc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{duveApiToken}}"}]},"isInherited":false},"method":"DELETE","header":[],"url":"{{apiUrl}}/openapi/v1/webhooks/:id","urlObject":{"path":["openapi","v1","webhooks",":id"],"host":["{{apiUrl}}"],"query":[],"variable":[{"type":"any","value":"6711e9a2b3c4d5e6f7a8b9c01","key":"id"}]}},"response":[{"id":"0f9780ee-982e-4ae0-a94f-a28bd2138131","name":"200 Deleted successfully","originalRequest":{"method":"DELETE","header":[{"key":"Authorization","value":"Bearer {{token}}","type":"text"}],"url":{"raw":"{{baseUrl}}/api/openapi/v1/webhooks/:id","host":["{{baseUrl}}"],"path":["api","openapi","v1","webhooks",":id"],"variable":[{"key":"id","value":"6711e9a2b3c4d5e6f7a8b9c01"}]}},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"deleted\"\n}"},{"id":"ad618497-dffb-475d-9fb0-74fdb28c0b44","name":"400 Bad Request (example)","originalRequest":{"method":"DELETE","header":[{"key":"Authorization","value":"Bearer {{token}}","type":"text"}],"url":{"raw":"{{baseUrl}}/api/openapi/v1/webhooks/:id","host":["{{baseUrl}}"],"path":["api","openapi","v1","webhooks",":id"],"variable":[{"key":"id","value":"bad-id"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"invalid_id\",\n  \"message\": \"Invalid webhook id\"\n}"}],"_postman_id":"4710ea30-f488-4276-af2e-f5934c1135cc"}],"id":"462fbe6e-43a7-4e69-b93a-b5a366ef5a08","_postman_id":"462fbe6e-43a7-4e69-b93a-b5a366ef5a08","description":""}],"event":[{"listen":"prerequest","script":{"id":"2479a447-69b2-4352-8a20-d61ca24de84f","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"41971f2f-51f9-4698-a410-423ddf8e796b","type":"text/javascript","exec":[""]}}],"variable":[{"key":"apiUrl","value":"{{apiUrl}}","type":"string"},{"key":"clientID","value":"{{clientID}}","type":"string"},{"key":"clientSecret","value":"{{clientSecret}}","type":"string"},{"key":"duveApiToken","value":"{{duveApiToken}}","type":"string"}]}