Help
RSS
API
Feed
Maltego
Contact
Domain > uservoice.statuspage.io
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2016-06-15
54.149.198.122
(
ClassC
)
2025-01-15
18.65.229.114
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyServer: CloudFrontDate: Wed, 15 Jan 2025 04:12:36 GMTContent-Type: text/htmlContent-Length: 167Connection: keep-aliveLocation: https://uservoice.statuspage.io/X-Cache: Redirect from cloudfrontVia: 1.1 73cb83fe6699afc2791b5c690c1ff8c6.cloudfront.net (CloudFront)X-Amz-Cf-Pop: SEA73-P1X-Amz-Cf-Id: J80yp_O1seIF1Hg_riAux2rSFQjL_rxf6DUwLgsE7E9Duzu3mVweSg html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>hr>center>CloudFront/center>/body>/html>
Port 443
HTTP/1.1 200 OKContent-Type: text/html; charsetutf-8Transfer-Encoding: chunkedConnection: keep-aliveDate: Wed, 15 Jan 2025 04:12:37 GMTX-Download-Options: noopenX-Permitted-Cross-Domain-Policies: noneReferrer-Policy: strict-origin-when-cross-originX-Statuspage-Version: 450b9bfe5a6184ae895ee1ec60fb911d5ce57495Strict-Transport-Security: max-age259200X-Statuspage-Skip-Logging: trueAccess-Control-Allow-Origin: *Cache-Control: max-age3, publicLink: https://dka575ofm4ao0.cloudfront.net/assets/register_subscription_form-589b657fec607087fc5c740c568270907310bc4f6aaa20256e70f01b103025ca.js>; relpreload; asscript; nopush,https://dka575ofm4ao0.cloudfront.net/assets/status_common-c1b99d73ee7ab0fea796bd170723c1daac1381095a7dd7501a38ce6f333d86b3.js>; relpreload; asscript; nopush,https://dka575ofm4ao0.cloudfront.net/assets/vendor/highstock.min-a7181c8f093438143dae37524f8463a97e2503789bc322732d3141f2c00c1c1a.js>; relpreload; asscript; nopush,https://dka575ofm4ao0.cloudfront.net/packs/0.ea264278ec2770a752ef.css>; relpreload; asstyle; nopush,https://dka575ofm4ao0.cloudfront.net/assets/status/status_manifest-260e48dd9b8c9b04e8d6c6286f76aecb8ac22f273beea6dba3eee902141bcbfe.css>; relpreload; asstyle; nopush,https://dka575ofm4ao0.cloudfront.net/assets/jquery-3.5.1.min-729e416557a365062a8a20f0562f18aa171da57298005d392312670c706c68de.js>; relpreload; asscript; nopush,https://dka575ofm4ao0.cloudfront.net/assets/status_manifest-6a7ae3a8e2e1b1e1d9466495faa0851c3f5fff938743f6501c900aa2a8792e8c.js>; relpreload; asscript; nopush,https://dka575ofm4ao0.cloudfront.net/packs/common-3645937076fc4cb82db6.chunk.js>; relpreload; asscript; nopush,https://dka575ofm4ao0.cloudfront.net/packs/globals-8d1e8d4fe031010e25f5.chunk.js>; relpreload; asscript; nopush,https://dka575ofm4ao0.cloudfront.net/packs/runtime-b489f246ad3563eb849f.js>; relpreload; asscript; nopushX-Pollinator-Metadata-Service: status-page-web-pagesETag: W/d799fa7b3cc3d97dea24514431042e82X-Runtime: 0.172518Accept-Ranges: bytesX-Content-Type-Options: nosniffX-Xss-Protection: 1; modeblockAtl-Traceid: 466cebfdff4b4075ab978b853b56df66Atl-Request-Id: 466cebfd-ff4b-4075-ab97-8b853b56df66Report-To: {endpoints: {url: https://dz8aopenkvv6s.cloudfront.net}, group: endpoint-1, include_subdomains: true, max_age: 600}Nel: {failure_fraction: 0.001, include_subdomains: true, max_age: 600, report_to: endpoint-1}Server-Timing: atl-edge;dur247,atl-edge-internal;dur3,atl-edge-upstream;dur245,atl-edge-pop;descaws-us-east-1Server: AtlassianEdgeVary: Accept,Accept-EncodingX-Cache: Miss from cloudfrontVia: 1.1 567b44ed19c8caed2570b7bcd8c70034.cloudfront.net (CloudFront)X-Amz-Cf-Pop: SEA73-P1X-Amz-Cf-Id: EtEUzRQM0I2ngRlChDBm8zk71__mLOOfa96PL9FK4bDwxnJQjWSnTQ !DOCTYPE html>html langen> head> meta http-equivX-UA-Compatible contentIEedge> !-- force IE browsers in compatibility mode to use their most aggressive rendering engine --> meta charsetutf-8> title>UserVoice Status/title> meta namedescription contentWelcome to UserVoice's home for real-time and historical data on system performance.> !-- Mobile viewport optimization --> meta nameHandheldFriendly contentTrue> meta nameMobileOptimized content320> meta nameviewport contentwidthdevice-width, initial-scale1.0, minimum-scale1.0, maximum-scale1.0> !-- Time this page was rendered - http://purl.org/dc/terms/issued --> meta nameissued content1736914357> !-- Mobile IE allows us to activate ClearType technology for smoothing fonts for easy reading --> meta http-equivcleartype contenton> !-- Le fonts -->style> @font-face { font-family: proxima-nova; src: url(https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaLight-f0b2f7c12b6b87c65c02d3c1738047ea67a7607fd767056d8a2964cc6a2393f7.eot?hostuservoice.statuspage.io); src: url(https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaLight-f0b2f7c12b6b87c65c02d3c1738047ea67a7607fd767056d8a2964cc6a2393f7.eot?hostuservoice.statuspage.io#iefix) format(embedded-opentype), url(https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaLight-e642ffe82005c6208632538a557e7f5dccb835c0303b06f17f55ccf567907241.woff?hostuservoice.statuspage.io) format(woff), url(https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaLight-0f094da9b301d03292f97db5544142a16f9f2ddf50af91d44753d9310c194c5f.ttf?hostuservoice.statuspage.io) format(truetype); font-weight:300; font-style:normal; } @font-face { font-family: proxima-nova; src: url(https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegular-366d17769d864aa72f27defaddf591e460a1de4984bb24dacea57a9fc1d14878.eot?hostuservoice.statuspage.io); src: url(https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegular-366d17769d864aa72f27defaddf591e460a1de4984bb24dacea57a9fc1d14878.eot?hostuservoice.statuspage.io#iefix) format(embedded-opentype), url(https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegular-2ee4c449a9ed716f1d88207bd1094e21b69e2818b5cd36b28ad809dc1924ec54.woff?hostuservoice.statuspage.io) format(woff), url(https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegular-a40a469edbd27b65b845b8000d47445a17def8ba677f4eb836ad1808f7495173.ttf?hostuservoice.statuspage.io) format(truetype); font-weight:400; font-style:normal; } @font-face { font-family: proxima-nova; src: url(https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegularIt-0bf83a850b45e4ccda15bd04691e3c47ae84fec3588363b53618bd275a98cbb7.eot?hostuservoice.statuspage.io); src: url(https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegularIt-0bf83a850b45e4ccda15bd04691e3c47ae84fec3588363b53618bd275a98cbb7.eot?hostuservoice.statuspage.io#iefix) format(embedded-opentype), url(https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegularIt-0c394ec7a111aa7928ea470ec0a67c44ebdaa0f93d1c3341abb69656cc26cbdd.woff?hostuservoice.statuspage.io) format(woff), url(https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegularIt-9e43859f8015a4d47d9eaf7bafe8d1e26e3298795ce1f4cdb0be0479b8a4605e.ttf?hostuservoice.statuspage.io) format(truetype); font-weight:400; font-style:italic; } @font-face { font-family: proxima-nova; src: url(https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaSemibold-09566917307251d22021a3f91fc646f3e45f8d095209bcd2cded8a1979f06e54.eot?hostuservoice.statuspage.io); src: url(https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaSemibold-09566917307251d22021a3f91fc646f3e45f8d095209bcd2cded8a1979f06e54.eot?hostuservoice.statuspage.io#iefix) format(embedded-opentype), url(https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaSemibold-86724fb2152613d735ba47c3f47a9ad2424b898bea4bece213dacee40344f966.woff?hostuservoice.statuspage.io) format(woff), url(https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaSemibold-cf3e4eb7fbdf6fb83e526cc2a0141e55b01097e6e1abfd4cbdc3eda75d183f74.ttf?hostuservoice.statuspage.io) format(truetype); font-weight:500; font-style:normal; } @font-face { font-family: proxima-nova; src: url(https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaBold-622ea489d20e12e691663f83217105e957e2d3d09703707d40155a29c06cc9d9.eot?hostuservoice.statuspage.io); src: url(https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaBold-622ea489d20e12e691663f83217105e957e2d3d09703707d40155a29c06cc9d9.eot?hostuservoice.statuspage.io#iefix) format(embedded-opentype), url(https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaBold-c8dc577ff7f76d2fc199843e38c04bb2e9fd15889421358d966a9f846c2ed1cd.woff?hostuservoice.statuspage.io) format(woff), url(https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaBold-27177fe9242acbe089276ee587feef781446667ffe9b6fdc5b7fe21ad73e12f3.ttf?hostuservoice.statuspage.io) format(truetype); font-weight:700; font-style:normal; }/style> link relshortcut icon typeimage/x-icon href//dka575ofm4ao0.cloudfront.net/pages-favicon_logos/original/1121/ZqvmaoQtRwaV0yxStH0j /> link relshortcut icon href//dka575ofm4ao0.cloudfront.net/pages-favicon_logos/original/1121/ZqvmaoQtRwaV0yxStH0j> link relalternate typeapplication/atom+xml hrefhttps://uservoice.statuspage.io/history.atom titleUserVoice Status History - Atom Feed> link relalternate typeapplication/rss+xml hrefhttps://uservoice.statuspage.io/history.rss titleUserVoice Status History - RSS Feed> !-- Canonical Link to ensure that only the custom domain is indexed when present --> link relcanonical hrefhttps://status.uservoice.com> meta name_globalsign-domain-verification contenty_VzfckMy4iePo5oDJNivyYIjh8LffYa4jzUndm_bZ/> meta namerobots contentnoindex,nofollow> link relalternate typeapplication/atom+xml titleATOM hrefhttps://uservoice.statuspage.io/history.atom /> !-- Le styles --> link relstylesheet mediascreen hrefhttps://dka575ofm4ao0.cloudfront.net/packs/0.ea264278ec2770a752ef.css /> link relstylesheet mediaall hrefhttps://dka575ofm4ao0.cloudfront.net/assets/status/status_manifest-260e48dd9b8c9b04e8d6c6286f76aecb8ac22f273beea6dba3eee902141bcbfe.css /> script srchttps://dka575ofm4ao0.cloudfront.net/assets/jquery-3.5.1.min-729e416557a365062a8a20f0562f18aa171da57298005d392312670c706c68de.js>/script> script> window.pageColorData {blue:#00AFE6,border:#c8c9ca,body_background:#ffffff,font:#87898F,graph:#00AFE6,green:#00b487,light_font:#a3a4a8,link:#0A8CC6,orange:#D74119,red:#D2323C,yellow:#FFB405,no_data:#b3bac5}; /script> style> /* BODY BACKGROUND */ /* BODY BACKGROUND */ /* BODY BACKGROUND */ /* BODY BACKGROUND */ /* BODY BACKGROUND */ body, .layout-content.status.status-api .section .example-container .example-opener .color-secondary, .grouped-items-selector, .layout-content.status.status-full-history .history-nav a.current, divid^subscribe-modal .modal-footer, divid^subscribe-modal, divid^updates-dropdown .updates-dropdown-section, #uptime-tooltip .tooltip-box { background-color:#ffffff; } #uptime-tooltip .pointer-container .pointer-smaller { border-bottom-color:#ffffff; } /* PRIMARY FONT COLOR */ /* PRIMARY FONT COLOR */ /* PRIMARY FONT COLOR */ /* PRIMARY FONT COLOR */ body.status, .color-primary, .color-primary:hover, .layout-content.status-index .status-day .update-title.impact-none a, .layout-content.status-index .status-day .update-title.impact-none a:hover, .layout-content.status-index .timeframes-container .timeframe.active, .layout-content.status-full-history .month .incident-container .impact-none, .layout-content.status.status-index .incidents-list .incident-title.impact-none a, .incident-history .impact-none, .layout-content.status .grouped-items-selector.inline .grouped-item.active, .layout-content.status.status-full-history .history-nav a.current, .layout-content.status.status-full-history .history-nav a:not(.current):hover, divid^subscribe-modal .modal-header .close, .grouped-item-label, #uptime-tooltip .tooltip-box .tooltip-content .related-events .related-event a.related-event-link { color:#87898F; } .layout-content.status.status-index .components-statuses .component-container .name { color:#87898F; color:rgba(135,137,143,.8); } /* SECONDARY FONT COLOR */ /* SECONDARY FONT COLOR */ /* SECONDARY FONT COLOR */ /* SECONDARY FONT COLOR */ small, .layout-content.status .table-row .date, .color-secondary, .layout-content.status .grouped-items-selector.inline .grouped-item, .layout-content.status.status-full-history .history-footer .pagination a.disabled, .layout-content.status.status-full-history .history-nav a, #uptime-tooltip .tooltip-box .tooltip-content .related-events #related-event-header { color:#a3a4a8; } /* BORDER COLOR */ /* BORDER COLOR */ /* BORDER COLOR */ /* BORDER COLOR */ /* BORDER COLOR */ /* BORDER COLOR */ body.status .layout-content.status .border-color, hr, .tooltip-base, .markdown-display table, divid^subscribe-modal, #uptime-tooltip .tooltip-box { border-color:#c8c9ca; } divid^subscribe-modal .modal-footer, .markdown-display table td { border-top-color:#c8c9ca; } .markdown-display table td + td, .markdown-display table th + th { border-left-color:#c8c9ca; } divid^subscribe-modal .modal-header, #uptime-tooltip .pointer-container .pointer-larger { border-bottom-color:#c8c9ca; } #uptime-tooltip .tooltip-box .outage-field { /* Generate the background-color for the outage-field from the css_body_background_color and css_border_color. For the default background (#ffffff) and default css_border_color (#e0e0e0), use the luminosity of the default background with a magic number to arrive at the original outage-field background color (#f4f5f7). I used the formula Target Color Color * alpha + Background * (1 - alpha) to find the magic number of ~0.08. For darker css_body_background_color, luminosity values are lower so alpha trends toward becoming transparent (thus outage-field background becomes same as css_body_background_color). */ background-color: rgba(200,201,202,0.31); /* outage-field border-color alpha is inverse to the luminosity of css_body_background_color. That is to say, with a default white background this border is transparent, but on a black background, its opaque css_border_color. */ border-color: rgba(200,201,202,0.0); } /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ .layout-content.status.status-index .status-day .update-title.impact-critical a, .layout-content.status.status-index .status-day .update-title.impact-critical a:hover, .layout-content.status.status-index .page-status.status-critical, .layout-content.status.status-index .unresolved-incident.impact-critical .incident-title, .flat-button.background-red { background-color:#D2323C; } .layout-content.status-index .components-statuses .component-container.status-red:after, .layout-content.status-full-history .month .incident-container .impact-critical, .layout-content.status-incident .incident-name.impact-critical, .layout-content.status.status-index .incidents-list .incident-title.impact-critical a, .status-red .icon-indicator, .incident-history .impact-critical, .components-container .component-inner-container.status-red .component-status, .components-container .component-inner-container.status-red .icon-indicator { color:#D2323C; } .layout-content.status.status-index .unresolved-incident.impact-critical .updates { border-color:#D2323C; } /* CSS ORANGES */ /* CSS ORANGES */ /* CSS ORANGES */ /* CSS ORANGES */ /* CSS ORANGES */ /* CSS ORANGES */ .layout-content.status.status-index .status-day .update-title.impact-major a, .layout-content.status.status-index .status-day .update-title.impact-major a:hover, .layout-content.status.status-index .page-status.status-major, .layout-content.status.status-index .unresolved-incident.impact-major .incident-title { background-color:#D74119; } .layout-content.status-index .components-statuses .component-container.status-orange:after, .layout-content.status-full-history .month .incident-container .impact-major, .layout-content.status-incident .incident-name.impact-major, .layout-content.status.status-index .incidents-list .incident-title.impact-major a, .status-orange .icon-indicator, .incident-history .impact-major, .components-container .component-inner-container.status-orange .component-status, .components-container .component-inner-container.status-orange .icon-indicator { color:#D74119; } .layout-content.status.status-index .unresolved-incident.impact-major .updates { border-color:#D74119; } /* CSS YELLOWS */ /* CSS YELLOWS */ /* CSS YELLOWS */ /* CSS YELLOWS */ /* CSS YELLOWS */ /* CSS YELLOWS */ .layout-content.status.status-index .status-day .update-title.impact-minor a, .layout-content.status.status-index .status-day .update-title.impact-minor a:hover, .layout-content.status.status-index .page-status.status-minor, .layout-content.status.status-index .unresolved-incident.impact-minor .incident-title, .layout-content.status.status-index .scheduled-incidents-container .tab { background-color:#FFB405; } .layout-content.status-index .components-statuses .component-container.status-yellow:after, .layout-content.status-full-history .month .incident-container .impact-minor, .layout-content.status-incident .incident-name.impact-minor, .layout-content.status.status-index .incidents-list .incident-title.impact-minor a, .status-yellow .icon-indicator, .incident-history .impact-minor, .components-container .component-inner-container.status-yellow .component-status, .components-container .component-inner-container.status-yellow .icon-indicator, .layout-content.status.manage-subscriptions .confirmation-infobox .fa { color:#FFB405; } .layout-content.status.status-index .unresolved-incident.impact-minor .updates, .layout-content.status.status-index .scheduled-incidents-container { border-color:#FFB405; } /* CSS BLUES */ /* CSS BLUES */ /* CSS BLUES */ /* CSS BLUES */ /* CSS BLUES */ /* CSS BLUES */ .layout-content.status.status-index .status-day .update-title.impact-maintenance a, .layout-content.status.status-index .status-day .update-title.impact-maintenance a:hover, .layout-content.status.status-index .page-status.status-maintenance, .layout-content.status.status-index .unresolved-incident.impact-maintenance .incident-title, .layout-content.status.status-index .scheduled-incidents-container .tab { background-color:#00AFE6; } .layout-content.status-index .components-statuses .component-container.status-blue:after, .layout-content.status-full-history .month .incident-container .impact-maintenance, .layout-content.status-incident .incident-name.impact-maintenance, .layout-content.status.status-index .incidents-list .incident-title.impact-maintenance a, .status-blue .icon-indicator, .incident-history .impact-maintenance, .components-container .component-inner-container.status-blue .component-status, .components-container .component-inner-container.status-blue .icon-indicator { color:#00AFE6; } .layout-content.status.status-index .unresolved-incident.impact-maintenance .updates, .layout-content.status.status-index .scheduled-incidents-container { border-color:#00AFE6; } /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ .layout-content.status.status-index .page-status.status-none { background-color:#00b487; } .layout-content.status-index .components-statuses .component-container.status-green:after, .status-green .icon-indicator, .components-container .component-inner-container.status-green .component-status, .components-container .component-inner-container.status-green .icon-indicator { color:#00b487; } /* CSS LINK COLOR */ /* CSS LINK COLOR */ /* CSS LINK COLOR */ /* CSS LINK COLOR */ /* CSS LINK COLOR */ /* CSS LINK COLOR */ a, a:hover, .layout-content.status-index .page-footer span a:hover, .layout-content.status-index .timeframes-container .timeframe:not(.active):hover, .layout-content.status-incident .subheader a:hover { color:#0A8CC6; } .flat-button, .masthead .updates-dropdown-container .show-updates-dropdown, .layout-content.status-full-history .show-filter.open { background-color:#0A8CC6; } /* CUSTOM COLOR OVERRIDES FOR UPTIME SHOWCASE */ .components-section .components-uptime-link { color: #a3a4a8; } .layout-content.status .shared-partial.uptime-90-days-wrapper .legend .legend-item { color: #a3a4a8; opacity: 1; } .layout-content.status .shared-partial.uptime-90-days-wrapper .legend .legend-item.light { color: #a3a4a8; opacity: 1; } .layout-content.status .shared-partial.uptime-90-days-wrapper .legend .spacer { background: #a3a4a8; opacity: 1; }/style> !-- custom css --> link relstylesheet typetext/css href//dka575ofm4ao0.cloudfront.net/page_display_customizations-custom_css_externals/2013/external20191021-54-1uecnq0.css> !-- polyfills --> script crossoriginanonymous srchttps://cdnjs.cloudflare.com/polyfill/v3/polyfill.js>/script> !-- Le HTML5 shim --> !--if lt IE 9> script src//html5shim.googlecode.com/svn/trunk/html5.js>/script> !endif--> !-- injection for static --> /head> body classstatus index status-none> div classlayout-content status status-index starter> div classmasthead-container basic> div classmasthead has-logo> div classlogo-container> a hrefhttps://www.uservoice.com/>img altPage logo src//dka575ofm4ao0.cloudfront.net/pages-transactional_logos/retina/1121/OHlTltkpSomks5WPlB3d />/a> /div> div classupdates-dropdown-container data-js-hookupdates-dropdown-container> a href# data-js-hookshow-updates-dropdown idshow-updates-dropdown classshow-updates-dropdown aria-labelSubscribe to updates aria-expandedfalse aria-haspopupdialog rolebutton> /a>!-- Accessibility guidelines for tabs: https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html --> div classupdates-dropdown data-js-hookupdates-dropdown idupdates-dropdown styledisplay:none> div classupdates-dropdown-nav nav-items-6 roletablist aria-labelSubscribe to updates> a href#updates-dropdown-email aria-controlsupdates-dropdown-email aria-labelSubscribe via email roletab aria-selectedtrue idupdates-dropdown-email-btn> span classicon-container email> /a> a href#updates-dropdown-sms aria-controlsupdates-dropdown-sms aria-labelSubscribe via SMS roletab idupdates-dropdown-sms-btn> span classicon-container sms> /a> a href#updates-dropdown-webhook aria-controlsupdates-dropdown-webhook aria-labelSubscribe via webhook roletab idupdates-dropdown-webhook-btn> span classicon-container webhook> /a> a href#updates-dropdown-support aria-controlsupdates-dropdown-support aria-labelContact support roletab idupdates-dropdown-support-btn> span classicon-container support> /a> a href#updates-dropdown-atom aria-controlsupdates-dropdown-atom aria-labelSubscribe via RSS roletab idupdates-dropdown-atom-btn> span classicon-container rss> /a> button data-js-hookupdates-dropdown-close aria-labelClose subscribe form idupdates-dropdown-close-btn> x /button> /div> div classupdates-dropdown-sections-container> div classupdates-dropdown-section email idupdates-dropdown-email styledisplay:none roletabpanel aria-labelledbyupdates-dropdown-email-btn> div classdirections> Get email notifications whenever UserVoice strong>creates/strong>, strong>updates/strong> or strong>resolves/strong> an incident. /div> form idsubscribe-form-email action/subscriptions/new-email accept-charsetUTF-8 data-remotetrue methodpost> input typehidden nameemail_otp_verify_flow idemail_otp_verify_flow valuefalse autocompleteoff /> !-- make sure not to put cookie values in here since this gets cached --> label foremail>Email address:/label> input nameemail idemail typetext classfull-width data-js-hookemail-notification-field autocompleteemail> input nameemail_otp_auth_token typehidden idemail-otp-token-field> div classopt-container-section idemail-otp-container, styledisplay:none > label foremail-otp>Enter OTP:/label> input nameotp idemail-otp typetext value classprepend full-width> p idemail-otp-timer>Resend OTP in: span idemail-otp-countdown>/span> seconds /p> p idresend-email-otp> Didnt receive the OTP? a href# idresend-email-otp-btn >Resend OTP /a> /p> /div> input typehidden namecaptcha_error idcaptcha_error valuefalse autocompleteoff /> input typesubmit valueSubscribe via Email classflat-button full-width g-recaptcha idsubscribe-btn-email data-disabled-textSubscribing... data-sitekey6LdTS8AUAAAAAOIbCKoCAP4LQku1olYGrywPTaZz data-callbacksubmitNewEmailSubscriber data-error-callbackemailSubscriberCaptchaError > div classterms_and_privacy_information bottom small> This site is protected by reCAPTCHA and the Google a target_blank relnoopener hrefhttps://policies.google.com/privacy>Privacy Policy/a> and a target_blank relnoopener data-js-hookcaptcha-terms-of-service-link hrefhttps://policies.google.com/terms>Terms of Service/a> apply./div>/form> /div> div classupdates-dropdown-section phone idupdates-dropdown-sms styledisplay:none roletabpanel aria-labelledbyupdates-dropdown-sms-btn> div classdirections> Get text message notifications whenever UserVoice strong>creates/strong> or strong>resolves/strong> an incident. /div> form idsubscribe-form-sms action/subscriptions/new-sms accept-charsetUTF-8 data-remotetrue methodpost> input typehidden nameotp_verify_flow idotp_verify_flow valuefalse autocompleteoff /> input typehidden namesubscriber_code idsubscriber_code value autocompleteoff /> div classcontrol-group> div classcontrols externalities-sms-container> !-- make sure not to put cookie values in here since this gets cached --> label forphone-country>Country code:/label> div idphone-number-country-code classphone-country-wrapper data-otp-enabledfalse> select namephone_country idphone-country data-js-hookphone-country classphone-country>option valueaf data-otp-enabledfalse >Afghanistan (+93)/option>option valueal data-otp-enabledfalse >Albania (+355)/option>option valuedz data-otp-enabledfalse >Algeria (+213)/option>option valueas data-otp-enabledfalse >American Samoa (+1)/option>option valuead data-otp-enabledfalse >Andorra (+376)/option>option valueao data-otp-enabledfalse >Angola (+244)/option>option valueai data-otp-enabledfalse >Anguilla (+1)/option>option valueag data-otp-enabledfalse >Antigua and Barbuda (+1)/option>option valuear data-otp-enabledfalse >Argentina (+54)/option>option valueam data-otp-enabledfalse >Armenia (+374)/option>option valueaw data-otp-enabledfalse >Aruba (+297)/option>option valueau data-otp-enabledfalse >Australia/Cocos/Christmas Island (+61)/option>option valueat data-otp-enabledfalse >Austria (+43)/option>option valueaz data-otp-enabledfalse >Azerbaijan (+994)/option>option valuebs data-otp-enabledfalse >Bahamas (+1)/option>option valuebh data-otp-enabledfalse >Bahrain (+973)/option>option valuebd data-otp-enabledfalse >Bangladesh (+880)/option>option valuebb data-otp-enabledfalse >Barbados (+1)/option>option valueby data-otp-enabledfalse >Belarus (+375)/option>option valuebe data-otp-enabledfalse >Belgium (+32)/option>option valuebz data-otp-enabledfalse >Belize (+501)/option>option valuebj data-otp-enabledfalse >Benin (+229)/option>option valuebm data-otp-enabledfalse >Bermuda (+1)/option>option valuebo data-otp-enabledfalse >Bolivia (+591)/option>option valueba data-otp-enabledfalse >Bosnia and Herzegovina (+387)/option>option valuebw data-otp-enabledfalse >Botswana (+267)/option>option valuebr data-otp-enabledfalse >Brazil (+55)/option>option valuebn data-otp-enabledfalse >Brunei (+673)/option>option valuebg data-otp-enabledfalse >Bulgaria (+359)/option>option valuebf data-otp-enabledfalse >Burkina Faso (+226)/option>option valuebi data-otp-enabledfalse >Burundi (+257)/option>option valuekh data-otp-enabledfalse >Cambodia (+855)/option>option valuecm data-otp-enabledfalse >Cameroon (+237)/option>option valueca data-otp-enabledfalse >Canada (+1)/option>option valuecv data-otp-enabledfalse >Cape Verde (+238)/option>option valueky data-otp-enabledfalse >Cayman Islands (+1)/option>option valuecf data-otp-enabledfalse >Central Africa (+236)/option>option valuetd data-otp-enabledfalse >Chad (+235)/option>option valuecl data-otp-enabledfalse >Chile (+56)/option>option valuecn data-otp-enabledfalse >China (+86)/option>option valueco data-otp-enabledfalse >Colombia (+57)/option>option valuekm data-otp-enabledfalse >Comoros (+269)/option>option valuecg data-otp-enabledfalse >Congo (+242)/option>option valuecd data-otp-enabledfalse >Congo, Dem Rep (+243)/option>option valuecr data-otp-enabledfalse >Costa Rica (+506)/option>option valuehr data-otp-enabledfalse >Croatia (+385)/option>option valuecy data-otp-enabledfalse >Cyprus (+357)/option>option valuecz data-otp-enabledfalse >Czech Republic (+420)/option>option valuedk data-otp-enabledfalse >Denmark (+45)/option>option valuedj data-otp-enabledfalse >Djibouti (+253)/option>option valuedm data-otp-enabledfalse >Dominica (+1)/option>option valuedo data-otp-enabledfalse >Dominican Republic (+1)/option>option valueeg data-otp-enabledfalse >Egypt (+20)/option>option valuesv data-otp-enabledfalse >El Salvador (+503)/option>option valuegq data-otp-enabledfalse >Equatorial Guinea (+240)/option>option valueee data-otp-enabledfalse >Estonia (+372)/option>option valueet data-otp-enabledfalse >Ethiopia (+251)/option>option valuefo data-otp-enabledfalse >Faroe Islands (+298)/option>option valuefj data-otp-enabledfalse >Fiji (+679)/option>option valuefi data-otp-enabledfalse >Finland/Aland Islands (+358)/option>option valuefr data-otp-enabledfalse >France (+33)/option>option valuegf data-otp-enabledfalse >French Guiana (+594)/option>option valuepf data-otp-enabledfalse >French Polynesia (+689)/option>option valuega data-otp-enabledfalse >Gabon (+241)/option>option valuegm data-otp-enabledfalse >Gambia (+220)/option>option valuege data-otp-enabledfalse >Georgia (+995)/option>option valuede data-otp-enabledfalse >Germany (+49)/option>option valuegh data-otp-enabledfalse >Ghana (+233)/option>option valuegi data-otp-enabledfalse >Gibraltar (+350)/option>option valuegr data-otp-enabledfalse >Greece (+30)/option>option valuegl data-otp-enabledfalse >Greenland (+299)/option>option valuegd data-otp-enabledfalse >Grenada (+1)/option>option valuegp data-otp-enabledfalse >Guadeloupe (+590)/option>option valuegu data-otp-enabledfalse >Guam (+1)/option>option valuegt data-otp-enabledfalse >Guatemala (+502)/option>option valuegn data-otp-enabledfalse >Guinea (+224)/option>option valuegy data-otp-enabledfalse >Guyana (+592)/option>option valueht data-otp-enabledfalse >Haiti (+509)/option>option valuehn data-otp-enabledfalse >Honduras (+504)/option>option valuehk data-otp-enabledfalse >Hong Kong (+852)/option>option valuehu data-otp-enabledfalse >Hungary (+36)/option>option valueis data-otp-enabledfalse >Iceland (+354)/option>option valuein data-otp-enabledfalse >India (+91)/option>option valueid data-otp-enabledfalse >Indonesia (+62)/option>option valueiq data-otp-enabledfalse >Iraq (+964)/option>option valueie data-otp-enabledfalse >Ireland (+353)/option>option valueil data-otp-enabledfalse >Israel (+972)/option>option valueit data-otp-enabledfalse >Italy (+39)/option>option valuejm data-otp-enabledfalse >Jamaica (+1)/option>option valuejp data-otp-enabledfalse >Japan (+81)/option>option valuejo data-otp-enabledfalse >Jordan (+962)/option>option valueke data-otp-enabledfalse >Kenya (+254)/option>option valuekr data-otp-enabledfalse >Korea, Republic of (+82)/option>option valuexk data-otp-enabledfalse >Kosovo (+383)/option>option valuekw data-otp-enabledfalse >Kuwait (+965)/option>option valuekg data-otp-enabledfalse >Kyrgyzstan (+996)/option>option valuela data-otp-enabledfalse >Laos (+856)/option>option valuelv data-otp-enabledfalse >Latvia (+371)/option>option valuelb data-otp-enabledfalse >Lebanon (+961)/option>option valuels data-otp-enabledfalse >Lesotho (+266)/option>option valuelr data-otp-enabledfalse >Liberia (+231)/option>option valuely data-otp-enabledfalse >Libya (+218)/option>option valueli data-otp-enabledfalse >Liechtenstein (+423)/option>option valuelt data-otp-enabledfalse >Lithuania (+370)/option>option valuelu data-otp-enabledfalse >Luxembourg (+352)/option>option valuemo data-otp-enabledfalse >Macao (+853)/option>option valuemk data-otp-enabledfalse >Macedonia (+389)/option>option valuemg data-otp-enabledfalse >Madagascar (+261)/option>option valuemw data-otp-enabledfalse >Malawi (+265)/option>option valuemy data-otp-enabledfalse >Malaysia (+60)/option>option valuemv data-otp-enabledfalse >Maldives (+960)/option>option valueml data-otp-enabledfalse >Mali (+223)/option>option valuemt data-otp-enabledfalse >Malta (+356)/option>option valuemq data-otp-enabledfalse >Martinique (+596)/option>option valuemr data-otp-enabledfalse >Mauritania (+222)/option>option valuemu data-otp-enabledfalse >Mauritius (+230)/option>option valuemx data-otp-enabledfalse >Mexico (+52)/option>option valuemc data-otp-enabledfalse >Monaco (+377)/option>option valuemn data-otp-enabledfalse >Mongolia (+976)/option>option valueme data-otp-enabledfalse >Montenegro (+382)/option>option valuems data-otp-enabledfalse >Montserrat (+1)/option>option valuema data-otp-enabledfalse >Morocco/Western Sahara (+212)/option>option valuemz data-otp-enabledfalse >Mozambique (+258)/option>option valuena data-otp-enabledfalse >Namibia (+264)/option>option valuenp data-otp-enabledfalse >Nepal (+977)/option>option valuenl data-otp-enabledfalse >Netherlands (+31)/option>option valuenz data-otp-enabledfalse >New Zealand (+64)/option>option valueni data-otp-enabledfalse >Nicaragua (+505)/option>option valuene data-otp-enabledfalse >Niger (+227)/option>option valueng data-otp-enabledfalse >Nigeria (+234)/option>option valueno data-otp-enabledfalse >Norway (+47)/option>option valueom data-otp-enabledfalse >Oman (+968)/option>option valuepk data-otp-enabledfalse >Pakistan (+92)/option>option valueps data-otp-enabledfalse >Palestinian Territory (+970)/option>option valuepa data-otp-enabledfalse >Panama (+507)/option>option valuepy data-otp-enabledfalse >Paraguay (+595)/option>option valuepe data-otp-enabledfalse >Peru (+51)/option>option valueph data-otp-enabledfalse >Philippines (+63)/option>option valuepl data-otp-enabledfalse >Poland (+48)/option>option valuept data-otp-enabledfalse >Portugal (+351)/option>option valuepr data-otp-enabledfalse >Puerto Rico (+1)/option>option valueqa data-otp-enabledfalse >Qatar (+974)/option>option valuere data-otp-enabledfalse >Reunion/Mayotte (+262)/option>option valuero data-otp-enabledfalse >Romania (+40)/option>option valueru data-otp-enabledfalse >Russia/Kazakhstan (+7)/option>option valuerw data-otp-enabledfalse >Rwanda (+250)/option>option valuews data-otp-enabledfalse >Samoa (+685)/option>option valuesm data-otp-enabledfalse >San Marino (+378)/option>option valuesa data-otp-enabledfalse >Saudi Arabia (+966)/option>option valuesn data-otp-enabledfalse >Senegal (+221)/option>option valuers data-otp-enabledfalse >Serbia (+381)/option>option valuesc data-otp-enabledfalse >Seychelles (+248)/option>option valuesl data-otp-enabledfalse >Sierra Leone (+232)/option>option valuesg data-otp-enabledfalse >Singapore (+65)/option>option valuesk data-otp-enabledfalse >Slovakia (+421)/option>option valuesi data-otp-enabledfalse >Slovenia (+386)/option>option valueza data-otp-enabledfalse >South Africa (+27)/option>option valuees data-otp-enabledfalse >Spain (+34)/option>option valuelk data-otp-enabledfalse >Sri Lanka (+94)/option>option valuekn data-otp-enabledfalse >St Kitts and Nevis (+1)/option>option valuelc data-otp-enabledfalse >St Lucia (+1)/option>option valuevc data-otp-enabledfalse >St Vincent Grenadines (+1)/option>option valuesd data-otp-enabledfalse >Sudan (+249)/option>option valuesr data-otp-enabledfalse >Suriname (+597)/option>option valuesz data-otp-enabledfalse >Swaziland (+268)/option>option valuese data-otp-enabledfalse >Sweden (+46)/option>option valuech data-otp-enabledfalse >Switzerland (+41)/option>option valuetw data-otp-enabledfalse >Taiwan (+886)/option>option valuetj data-otp-enabledfalse >Tajikistan (+992)/option>option valuetz data-otp-enabledfalse >Tanzania (+255)/option>option valueth data-otp-enabledfalse >Thailand (+66)/option>option valuetg data-otp-enabledfalse >Togo (+228)/option>option valueto data-otp-enabledfalse >Tonga (+676)/option>option valuett data-otp-enabledfalse >Trinidad and Tobago (+1)/option>option valuetn data-otp-enabledfalse >Tunisia (+216)/option>option valuetr data-otp-enabledfalse >Turkey (+90)/option>option valuetc data-otp-enabledfalse >Turks and Caicos Islands (+1)/option>option valueug data-otp-enabledfalse >Uganda (+256)/option>option valueua data-otp-enabledfalse >Ukraine (+380)/option>option valueae data-otp-enabledfalse >United Arab Emirates (+971)/option>option valuegb data-otp-enabledfalse >United Kingdom (+44)/option>option valueus data-otp-enabledfalse selected>United States (+1)/option>option valueuy data-otp-enabledfalse >Uruguay (+598)/option>option valueuz data-otp-enabledfalse >Uzbekistan (+998)/option>option valueve data-otp-enabledfalse >Venezuela (+58)/option>option valuevn data-otp-enabledfalse >Vietnam (+84)/option>option valuevg data-otp-enabledfalse >Virgin Islands, British (+1)/option>option valuevi data-otp-enabledfalse >Virgin Islands, U.S. (+1)/option>option valueye data-otp-enabledfalse >Yemen (+967)/option>option valuezm data-otp-enabledfalse >Zambia (+260)/option>option valuezw data-otp-enabledfalse >Zimbabwe (+263)/option>/select> /div> label forphone-number>Phone number:/label> input namephone_number idphone-number typetext classprepend full-width data-js-hooksms-notification-field> div classsms-atl-error idsms-atl-error>/div> div classclearfix>/div> div classopt-container-section idotp-container styledisplay:none> a href# idbtn-subcriber-change-number>Change number/a> label forotp>Enter OTP:/label> input nameotp idotp typetext classprepend full-width> p idtimer>Resend OTP in: span idcountdown>30/span> seconds /p> p idresend> Didnt receive the OTP? a href# idresend-otp-btn >Resend OTP /a> /p> /div> /div> /div> input typehidden namecaptcha_error idcaptcha_error valuefalse autocompleteoff /> input typesubmit valueSubscribe via Text Message classflat-button full-width g-recaptcha idsubscribe-btn-sms data-disabled-textSubscribing... data-sitekey6LcH-b0UAAAAACVQtMb14LBhflMA9y0Nmu7l_W6d data-callbacksubmitNewSmsSubscriber data-error-callbacksmsSubscriberCaptchaError> div classterms_and_privacy_information bottom small>Message and data rates may apply. By subscribing you agree to the Atlassian a target_blank relnoopener hrefhttps://www.atlassian.com/legal/product-specific-terms#statuspage-specific-terms>Terms of Service/a>, and the Atlassian a target_blank relnoopener hrefhttps://www.atlassian.com/legal/privacy-policy>Privacy Policy/a>. This site is protected by reCAPTCHA and the Google a target_blank relnoopener hrefhttps://policies.google.com/privacy>Privacy Policy/a> and a target_blank relnoopener data-js-hookcaptcha-terms-of-service-link hrefhttps://policies.google.com/terms>Terms of Service/a> apply./div>/form> /div> div classupdates-dropdown-section webhook idupdates-dropdown-webhook styledisplay:none roletabpanel aria-labelledbyupdates-dropdown-webhook-btn> div classdirections> Get webhook notifications whenever UserVoice strong>creates/strong> an incident, strong>updates/strong> an incident, strong>resolves/strong> an incident or strong>changes/strong> a component status. /div> form idsubscribe-form-webhook action/subscriptions/webhook.json accept-charsetUTF-8 data-remotetrue methodpost> div classcontrol-group> div classcontrols> label forendpoint-webhooks>Webhook URL:/label> input typetext nameendpoint idendpoint-webhooks data-js-hookendpoint classfull-width aria-describedbyurl-help-block /> p classhelp-block idurl-help-block>The URL we should send the webhooks to/p> /div> /div> div classcontrol-group> div classcontrols> label foremail-webhooks>Email address:/label> input typetext nameemail idemail-webhooks data-js-hookemail classfull-width aria-describedbyemail-help-block /> p classhelp-block idemail-help-block>Well send you email if your endpoint fails/p> /div> /div> input typehidden namecaptcha_error idcaptcha_error valuefalse autocompleteoff /> input typesubmit valueSubscribe To Notifications classflat-button full-width g-recaptcha idsubscribe-btn-webhook data-disabled-textSubscribing... data-sitekey6LcQ-b0UAAAAAJjfdwO_-ozGC-CzWDj4Pm1kJ2Ah data-callbacksubmitNewWebhookSubscriber data-error-callbackwebhookSubscriberCaptchaError> div classterms_and_privacy_information bottom small> This site is protected by reCAPTCHA and the Google a target_blank relnoopener hrefhttps://policies.google.com/privacy>Privacy Policy/a> and a target_blank relnoopener data-js-hookcaptcha-terms-of-service-link hrefhttps://policies.google.com/terms>Terms of Service/a> apply./div>/form> /div> div classupdates-dropdown-section support idupdates-dropdown-support styledisplay:none roletabpanel aria-labelledbyupdates-dropdown-support-btn> Visit our a target_blank hrefhttp://feedback.uservoice.com>support site/a>. /div> div classupdates-dropdown-section atom idupdates-dropdown-atom roletabpanel aria-labelledbyupdates-dropdown-atom-btn> Get the a hrefhttps://uservoice.statuspage.io/history.atom target_blank>Atom Feed/a> or a hrefhttps://uservoice.statuspage.io/history.rss target_blank>RSS Feed/a>. /div> /div> /div> /div>script> $(function () { const phoneNumberInput $(#phone-number); const errorDiv $(#sms-atl-error) if(errorDiv.length){ function checkSelectedCountry() { const selectedCountry $(#phone-country).val(); const isOtpEnabled $(#phone-number-country-code).attr(data-otp-enabled) true; const form document.getElementById(subscribe-form-sms); form.action /subscriptions/new-sms; const isOtpFlow document.getElementById(otp_verify_flow); document.getElementById(otp-container).style.display none; if(false && selectedCountry sg) { // Replace SG with the actual value representing Singapore in your select tag phoneNumberInput.prop(disabled, true); errorDiv.html(`Due to new Singapore government regulations, were currently not supporting text subscriptions in Singapore.a hrefhttps://community.atlassian.com/t5/Statuspage-articles/Attention-SMS-notifications-will-be-disabled-on-August-1st-2023/ba-p/2424398 target_blank> Learn more./a> br> Select another method to subscribe.`); } else { phoneNumberInput.prop(readonly, false); errorDiv.html(); if(false){ if(isOtpEnabled){ document.getElementById(subscribe-btn-sms).value Send OTP; } else { isOtpFlow.value false; document.getElementById(subscribe-btn-sms).value Subscribe via Text Message; } } } } $(#phone-country).on(change, checkSelectedCountry); checkSelectedCountry(); } }); document.addEventListener(DOMContentLoaded, function() { const dropdown document.querySelector(#phone-number-country-code .phone-country); if (dropdown){ const wrapperDiv document.getElementById(phone-number-country-code); const selectedOption dropdown.optionsdropdown.selectedIndex; const otpEnabled selectedOption.getAttribute(data-otp-enabled); wrapperDiv.setAttribute(data-otp-enabled, otpEnabled); dropdown.addEventListener(change, function() { const selectedOption dropdown.optionsdropdown.selectedIndex; const otpEnabled selectedOption.getAttribute(data-otp-enabled); wrapperDiv.setAttribute(data-otp-enabled, otpEnabled); }); } }); var countdownTimer; var resendBtn document.getElementById(resend); var timer document.getElementById(timer); var form document.getElementById(subscribe-form-sms); var RESEND_TIMER 30; $(function() { $(#subscribe-form-sms).on(ajax:success, function(e, data, status, xhr){ const form this; const action form.getAttribute(action); if (data.type success && data.otp_flow true) { document.getElementById(subscriber_code).value data.subscriber_code document.getElementById(otp-container).style.display block; $(#phone-number).prop(readonly, true); var display document.getElementById(countdown); disableResend(); startTimer(RESEND_TIMER, display) document.getElementById(subscribe-btn-sms).value Verify OTP and Subscribe; document.getElementById(otp_verify_flow).value true; form.action /subscriptions/verify-otp; } else if (data.type success && action.includes(verify)){ document.getElementById(otp-container).style.display none; $(#phone-number).val().prop(readonly, false); $(#otp).val(); document.getElementById(subscribe-btn-sms).value Send OTP; document.getElementById(otp_verify_flow).value false; form.action /subscriptions/new-sms; SP.currentPage.updatesDropdown.hide(); } }); $(#btn-subcriber-change-number).on(click, () > { document.getElementById(otp-container).style.display none; $(#phone-number).prop(readonly, false); document.getElementById(subscribe-btn-sms).value Send OTP; form.action /subscriptions/new-sms; return false }) $(#resend-otp-btn).on(click, function(e) { e.preventDefault(); let phoneNumber $(#phone-number).val(); let countryCode $(.phone-country).val(); $.ajax({ type: POST, url: /subscriptions/new-sms, data: { phone_number: phoneNumber, phone_country: countryCode, type: resend }, }).done(function(data) { var messageOptions (data.type ! undefined && data.type ! null) ? { cssClass: data.type } : {}; HRB.utils.notify(data.text, messageOptions); var display document.getElementById(countdown); disableResend(); timer.style.display none if (data.type success) { startTimer(RESEND_TIMER, display); } }) }); }) function startTimer(duration, display){ var timer duration, seconds; clearInterval(countdownTimer); countdownTimer setInterval(function () { seconds parseInt(timer % 60, 10); display.textContent seconds; if(--timer 0){ enableResend(); clearInterval(countdownTimer); } }, 1000); disableResend(); } function enableResend(){ resendBtn.style.display block; timer.style.display none } function disableResend(){ resendBtn.style.display none; timer.style.display block } $(function() { $(#subscribe-form-email).on(submit, function() { var tokenField document.getElementById(email-otp-token-field); let page_code v46xg3ljl03j let key keyForEmailOtpToken($(#email).val(), page_code); tokenField.value localStorage.getItem(key); }); }); var emailOtpCountdownTimer; var emailOtpResendBtn document.getElementById(resend-email-otp); var emailOtpTimer document.getElementById(email-otp-timer); var emailOtpForm document.getElementById(subscribe-form-email); var EMAIL_OTP_RESEND_TIMER 600; $(function() { $(#subscribe-form-email).on(ajax:success, function(e, data, status, xhr){ const form this; const action form.getAttribute(action); if (data.type success && data.email_otp_verify_flow true) { document.getElementById(email-otp-container).style.display block; var display document.getElementById(email-otp-countdown); display.textContent EMAIL_OTP_RESEND_TIMER; disableEmailOtpResend(); startEmailOtpTimer(EMAIL_OTP_RESEND_TIMER, display) document.getElementById(subscribe-btn-email).value Verify OTP and Subscribe; document.getElementById(email_otp_verify_flow).value true; form.action /subscriptions/verify-email-otp; } else if (data.type success && action.includes(verify)){ let email $(#email) let page_code v46xg3ljl03j let key keyForEmailOtpToken(email.val(), page_code); localStorage.setItem(key, data.email_otp_auth_token); document.getElementById(email-otp-container).style.display none; email.val().prop(readonly, false); $(#email-otp).val(); document.getElementById(subscribe-btn-email).value Send OTP; document.getElementById(email_otp_verify_flow).value false; form.action /subscriptions/new-email; SP.currentPage.updatesDropdown.hide(); } }); $(#resend-email-otp-btn).on(click, function(e) { e.preventDefault(); let email $(#email).val(); $.ajax({ type: POST, url: /subscriptions/new-email, data: { email: email }, }).done(function(data) { var messageOptions (data.type ! undefined && data.type ! null) ? { cssClass: data.type } : {}; HRB.utils.notify(data.text, messageOptions); if (data.type success) { var display document.getElementById(email-otp-countdown); display.textContent EMAIL_OTP_RESEND_TIMER; disableEmailOtpResend(); emailOtpTimer.style.display none startEmailOtpTimer(EMAIL_OTP_RESEND_TIMER, display); } }) }); }) function startEmailOtpTimer(duration, display){ var timer duration, seconds; clearInterval(emailOtpCountdownTimer); emailOtpCountdownTimer setInterval(function () { seconds parseInt(timer, 10); display.textContent seconds; if(--timer 0){ enableEmailOtpResend(); clearInterval(emailOtpCountdownTimer); } }, 1000); disableEmailOtpResend(); } function enableEmailOtpResend(){ emailOtpResendBtn.style.display block; emailOtpTimer.style.display none } function disableEmailOtpResend(){ emailOtpResendBtn.style.display none; emailOtpTimer.style.display block } function keyForEmailOtpToken(email, pageCode) { return email + | + pageCode+ |SUBSCRIBE_VIA_EMAIL; }/script> div classclearfix>/div> /div>/div> !-- this is outside of the .container so that the cover photo can go full width on mobile --> div classcontainer> div classpage-status status-none> span classstatus font-large> All Systems Operational /span> span classlast-updated-stamp font-small>/span> /div> div classcomponents-section font-regular> div classcomponents-container one-column> div classcomponent-container border-color> div data-component-id4bd5l1zxrtbh classcomponent-inner-container status-green data-component-statusoperational data-js-hook> span classname> Web Portal (subdomain) /span> span classtooltip-base tool titlesubdomain.uservoice.com>?/span> span classcomponent-status title > Operational /span> span classtool icon-indicator fa fa-check titleOperational>/span>/div> /div> div classcomponent-container border-color> div data-component-id68qt1vltn3jp classcomponent-inner-container status-green data-component-statusoperational data-js-hook> span classname> Admin Console /span> span classtooltip-base tool titleYour account dashboard/settings>?/span> span classcomponent-status title > Operational /span> span classtool icon-indicator fa fa-check titleOperational>/span>/div> /div> div classcomponent-container border-color> div data-component-id16pcjpv4l02s classcomponent-inner-container status-green data-component-statusoperational data-js-hook> span classname> UserVoice API /span> span classcomponent-status title > Operational /span> span classtool icon-indicator fa fa-check titleOperational>/span>/div> /div> div classcomponent-container border-color> div data-component-idk9tnc0g2g3w7 classcomponent-inner-container status-green data-component-statusoperational data-js-hook> span classname> Helpdesk API /span> span classcomponent-status title > Operational /span> span classtool icon-indicator fa fa-check titleOperational>/span>/div> /div> div classcomponent-container border-color> div data-component-idpjzv3r8gfpy8 classcomponent-inner-container status-green data-component-statusoperational data-js-hook> span classname> Widgets /span> span classtooltip-base tool titleEmbeddable Javascript widgets>?/span> span classcomponent-status title > Operational /span> span classtool icon-indicator fa fa-check titleOperational>/span>/div> /div> div classcomponent-container border-color> div data-component-idn38dml0b9krw classcomponent-inner-container status-green data-component-statusoperational data-js-hook> span classname> Email (incoming) /span> span classcomponent-status title > Operational /span> span classtool icon-indicator fa fa-check titleOperational>/span>/div> /div> div classcomponent-container border-color> div data-component-idk682rhfg661f classcomponent-inner-container status-green data-component-statusoperational data-js-hook> span classname> Email (delivery) /span> span classcomponent-status title > Operational /span> span classtool icon-indicator fa fa-check titleOperational>/span>/div> /div> div classcomponent-container border-color> div data-component-idskjcbxqtqk8q classcomponent-inner-container status-green data-component-statusoperational data-js-hook> span classname> Search /span> span classcomponent-status title > Operational /span> span classtool icon-indicator fa fa-check titleOperational>/span>/div> /div> div classcomponent-container border-color> div data-component-idfc0kb1wh12k5 classcomponent-inner-container status-green data-component-statusoperational data-js-hook> span classname> User Analytics /span> span classtooltip-base tool titleJavascript-powered user identification system>?/span> span classcomponent-status title > Operational /span> span classtool icon-indicator fa fa-check titleOperational>/span>/div> /div> /div> div classcomponent-statuses-legend font-small> div classlegend-item status-green> span classicon-indicator fa fa-check>/span> Operational /div> div classlegend-item status-yellow> span classicon-indicator fa fa-minus-square>/span> Degraded Performance /div> div classlegend-item status-orange> span classicon-indicator fa fa-exclamation-triangle>/span> Partial Outage /div> div classbreaker>/div> div classlegend-item status-red> span classicon-indicator fa fa-times>/span> Major Outage /div> div classlegend-item status-blue> span classicon-indicator fa fa-wrench>/span> Maintenance /div>/div> /div> div classcustom-metrics-container idcustom-metrics-container> div classtimeframes-container> a classfont-largest no-link idsystem-metrics href#system-metrics>System Metrics/a> a href# classtimeframe color-secondary font-regular border-color data-js-hookdata-time-period-toggle data-time-periodmonth>Month/a> a href# classtimeframe color-secondary font-regular border-color data-js-hookdata-time-period-toggle data-time-periodweek>span classtranslation_missing titletranslation missing: en.week>Week/span>/a> a href# classtimeframe active color-secondary font-regular border-color data-js-hookdata-time-period-toggle data-time-periodday>Day/a> /div> div classmetrics-container> div classmetric border-color> div classmetric-meta font-large> div classmetric-name color-primary> Web Portal Uptime (subdomain.uservoice.com) /div> div data-js-hookmetrics-display-current-0bpq0w28t7ss classmetric-average color-secondary>span classtranslation_missing titletranslation missing: en.fetching>Fetching/span>/div> /div> div classmetrics-display-graph> div classgraph-container idmetrics-display-graph-container-0bpq0w28t7ss data-js-hook metrics-display-graph-container-0bpq0w28t7ss>/div> /div> /div> div classmetric border-color> div classmetric-meta font-large> div classmetric-name color-primary> UserVoice API /div> div data-js-hookmetrics-display-current-flcl1r2l8p2p classmetric-average color-secondary>span classtranslation_missing titletranslation missing: en.fetching>Fetching/span>/div> /div> div classmetrics-display-graph> div classgraph-container idmetrics-display-graph-container-flcl1r2l8p2p data-js-hook metrics-display-graph-container-flcl1r2l8p2p>/div> /div> /div> div classmetric border-color> div classmetric-meta font-large> div classmetric-name color-primary> Web Portal Response Time (subdomain.uservoice.com) /div> div data-js-hookmetrics-display-current-pxqfsjpqy5v3 classmetric-average color-secondary>span classtranslation_missing titletranslation missing: en.fetching>Fetching/span>/div> /div> div classmetrics-display-graph> div classgraph-container idmetrics-display-graph-container-pxqfsjpqy5v3 data-js-hook metrics-display-graph-container-pxqfsjpqy5v3>/div> /div> /div> div classmetric border-color> div classmetric-meta font-large> div classmetric-name color-primary> Marketing Site Uptime (www.uservoice.com) /div> div data-js-hookmetrics-display-current-tlbs4yg5c13n classmetric-average color-secondary>span classtranslation_missing titletranslation missing: en.fetching>Fetching/span>/div> /div> div classmetrics-display-graph> div classgraph-container idmetrics-display-graph-container-tlbs4yg5c13n data-js-hook metrics-display-graph-container-tlbs4yg5c13n>/div> /div> /div> div classmetric border-color> div classmetric-meta font-large> div classmetric-name color-primary> Helpdesk API /div> div data-js-hookmetrics-display-current-b5t0nl2q9nf0 classmetric-average color-secondary>span classtranslation_missing titletranslation missing: en.fetching>Fetching/span>/div> /div> div classmetrics-display-graph> div classgraph-container idmetrics-display-graph-container-b5t0nl2q9nf0 data-js-hook metrics-display-graph-container-b5t0nl2q9nf0>/div> /div> /div> /div> /div> div classincidents-list format-expanded> a classfont-largest no-link idpast-incidents href#past-incidents>Past Incidents/a> div classstatus-day font-regular no-incidents> div classdate border-color font-large>Jan var data-vardate>14/var>, var data-varyear>2025/var>/div> p classcolor-secondary>No incidents reported today./p> /div> div classstatus-day font-regular no-incidents> div classdate border-color font-large>Jan var data-vardate>13/var>, var data-varyear>2025/var>/div> p classcolor-secondary>No incidents reported./p> /div> div classstatus-day font-regular no-incidents> div classdate border-color font-large>Jan var data-vardate>12/var>, var data-varyear>2025/var>/div> p classcolor-secondary>No incidents reported./p> /div> div classstatus-day font-regular no-incidents> div classdate border-color font-large>Jan var data-vardate>11/var>, var data-varyear>2025/var>/div> p classcolor-secondary>No incidents reported./p> /div> div classstatus-day font-regular no-incidents> div classdate border-color font-large>Jan var data-vardate>10/var>, var data-varyear>2025/var>/div> p classcolor-secondary>No incidents reported./p> /div> div classstatus-day font-regular no-incidents> div classdate border-color font-large>Jan var data-vardate> 9/var>, var data-varyear>2025/var>/div> p classcolor-secondary>No incidents reported./p> /div> div classstatus-day font-regular no-incidents> div classdate border-color font-large>Jan var data-vardate> 8/var>, var data-varyear>2025/var>/div> p classcolor-secondary>No incidents reported./p> /div> div classstatus-day font-regular no-incidents> div classdate border-color font-large>Jan var data-vardate> 7/var>, var data-varyear>2025/var>/div> p classcolor-secondary>No incidents reported./p> /div> div classstatus-day font-regular no-incidents> div classdate border-color font-large>Jan var data-vardate> 6/var>, var data-varyear>2025/var>/div> p classcolor-secondary>No incidents reported./p> /div> div classstatus-day font-regular no-incidents> div classdate border-color font-large>Jan var data-vardate> 5/var>, var data-varyear>2025/var>/div> p classcolor-secondary>No incidents reported./p> /div> div classstatus-day font-regular no-incidents> div classdate border-color font-large>Jan var data-vardate> 4/var>, var data-varyear>2025/var>/div> p classcolor-secondary>No incidents reported./p> /div> div classstatus-day font-regular no-incidents> div classdate border-color font-large>Jan var data-vardate> 3/var>, var data-varyear>2025/var>/div> p classcolor-secondary>No incidents reported./p> /div> div classstatus-day font-regular no-incidents> div classdate border-color font-large>Jan var data-vardate> 2/var>, var data-varyear>2025/var>/div> p classcolor-secondary>No incidents reported./p> /div> div classstatus-day font-regular no-incidents> div classdate border-color font-large>Jan var data-vardate> 1/var>, var data-varyear>2025/var>/div> p classcolor-secondary>No incidents reported./p> /div> div classstatus-day font-regular no-incidents> div classdate border-color font-large>Dec var data-vardate>31/var>, var data-varyear>2024/var>/div> p classcolor-secondary>No incidents reported./p> /div> /div> div classpage-footer border-color font-small> a href/history classhistory-footer-link>span stylefont-family:arial>←/span> Incident History/a> span classcolor-secondary powered-by>a classcolor-secondary target_blank relnoopener noreferrer nofollow hrefhttps://www.atlassian.com/software/statuspage?utm_campaignstatus.uservoice.com&utm_contentSP-notifications&utm_mediumpowered-by&utm_sourceinapp>Powered by Atlassian Statuspage/a>/span> /div> /div> /div> !-- custom metrics stuff --> script srchttps://dka575ofm4ao0.cloudfront.net/assets/status_manifest-6a7ae3a8e2e1b1e1d9466495faa0851c3f5fff938743f6501c900aa2a8792e8c.js>/script> div idcpt-notification-container>/div> !-- all of the content_for stuff --> script srchttps://dka575ofm4ao0.cloudfront.net/assets/register_subscription_form-589b657fec607087fc5c740c568270907310bc4f6aaa20256e70f01b103025ca.js>/script> script typetext/javascript> $(function() { SP.currentPage.registerSubscriptionForm(email); SP.currentPage.registerSubscriptionForm(sms); SP.currentPage.registerSubscriptionForm(webhook); }); /script> script srchttps://dka575ofm4ao0.cloudfront.net/assets/status_common-c1b99d73ee7ab0fea796bd170723c1daac1381095a7dd7501a38ce6f333d86b3.js>/script> script> SP.pollForChanges(/api/v2/status.json); /script> script> $(function() { $(.tool).tooltipster({ animationDuration: 100, contentAsHTML: true, delay: 100, theme: tooltipster-borderless, functionInit: function (instance, helper) { var $origin $(helper.origin), dataOptions $origin.attr(data-tooltip-config); if (dataOptions){ dataOptions JSON.parse(dataOptions); $.each(dataOptions, function(name, option){ instance.option(name, option); }); } } }); // clicks on first tab in subscribe popout since we wont know which is first // upon construction in the ruby code $(.updates-dropdown-nav > a).eq(0).click(); // twitter follow button needs some margin $(.twitter-follow-button).css(margin-right, 6px); }); $(function() { // open/close component groups HRB.utils.djshook(component-group-opener).on(click, function() { var groupParentIndicator $(this).find(.group-parent-indicator); groupParentIndicator.toggleClass(fa-plus-square-o).toggleClass(fa-minus-square-o).end().parent().toggleClass(open); toggleGroup(groupParentIndicator) }); }); $(function() { HRB.utils.djshook(component-group-opener).on(keydown, function(event) { if (event.key ! Enter && event.key ! ) { return; } event.preventDefault() var groupParentIndicator $(this).find(.group-parent-indicator); groupParentIndicator.toggleClass(fa-plus-square-o).toggleClass(fa-minus-square-o).end().parent().toggleClass(open); toggleGroup(groupParentIndicator) }); }); function toggleGroup(groupParentIndicator) { var isOpen groupParentIndicator.attr(aria-expanded) if (isOpen false) { groupParentIndicator.attr(aria-expanded, true); } else { groupParentIndicator.attr(aria-expanded, false); } } $(function() { $(document).on(ajax:complete, .modal.in, function(e) { // Close the active modal. $(.modal.in).modal(hide); }); }); /script> script srchttps://dka575ofm4ao0.cloudfront.net/assets/vendor/highstock.min-a7181c8f093438143dae37524f8463a97e2503789bc322732d3141f2c00c1c1a.js>/script> script> //!CDATA String.prototype.commafy function () { return this.replace(/(^|^\w.)(\d{4,})/g, function($0, $1, $2) { return $1 + $2.replace(/\d(?(?:\d\d\d)+(?!\d))/g, $&,); }); } Number.prototype.commafy function () { return String(this).commafy(); } $(function() { SP.currentPage.numberToDecimalPlaces function(num, dec) { if (dec 0) { return Math.round(num).commafy(); } newnum num.toFixed(dec) var finalValue; // this gets rid of the 100.000% thing if (num parseInt(newnum)) finalValue Math.round(num); else finalValue newnum; return finalValue.commafy(); } SP.currentPage.getDataForTimePeriod function(period) { $.ajax({ type: GET, // this line must be end up with //status.* type of URLs (no protocol, just leading slashes). customers use SSL through us or by offloading with // cloudflare or something like it and the request.protocol the server sees is different than what the browser sees url: //uservoice.statuspage.io/metrics-display/0bpq0w28t7ss/_.json.replace(_, period) }).done(function(metricsDisplay, textStatus, xhr) { var summary metricsDisplay.summary , $metricSummaryLabel HRB.utils.djshook(metrics-display-current-0bpq0w28t7ss) , $graphContainer HRB.utils.djshook(metrics-display-graph-container-0bpq0w28t7ss); var errorMsg null; if(summary unavailable) { errorMsg We\re having issues retrieving data for strong>Web Portal Uptime (subdomain.uservoice.com)/strong>./div>; } else if(summary) { // we need to do a basic check to make sure we have any data at all var hasDataRollupsAvailable false; for(var h 0; h metricsDisplay.metrics.length; h++) { if(metricsDisplay.metricsh.data.length > 0) { hasDataRollupsAvailable true; break; } } if(!hasDataRollupsAvailable) { errorMsg Oops! No data has been indexed for strong>Web Portal Uptime (subdomain.uservoice.com)/strong> for this time period yet.; } } else { errorMsg Failed to load. strong>Web Portal Uptime (subdomain.uservoice.com)/strong>; } if(errorMsg ! null) { $metricSummaryLabel.text(--); // display -- instead of number $graphContainer.html(div classsmall styletext-align:center;> + errorMsg + /div>); // removed .parent().find(.metric-meta).remove() so name still shows $graphContainer.removeAttr(style); return; } $graphContainer.show(); $graphContainer.attr(style, height: 120px); // set style after error message removed it // proceed since we have data $metricSummaryLabel.text(SP.currentPage.numberToDecimalPlaces(summarymean, 3 ) + %); var metricDataPoints {} , intervalMsec metricsDisplay.period.interval * 1000; var startingBucketMsec parseInt((new Date()).getTime() / intervalMsec) * intervalMsec; for(var h 0; h metricsDisplay.metrics.length; h++) { metricDataPointsmetricsDisplay.metricsh.metric.id var data metricsDisplay.metricsh.data , currentBucketMsec startingBucketMsec; for(var i metricsDisplay.period.count; i > 0; i--) { // loop over the data and pull out the data point with the following characteristics // -> closest to currentBucketMsec // -> without being greater than currentMsecBucket // -> without being more than 1 intervalMsec bucket away var valueToUse null; for(var j data.length - 1; j > 0; j--) { var currentTimestampMsec dataj.timestamp * 1000; if(currentTimestampMsec currentBucketMsec && currentTimestampMsec > (currentBucketMsec - intervalMsec)) { valueToUse dataj.value; // console.log(Using ts: + currentTimestampMsec + with value: + valueToUse + for bucket: + currentBucketMsec); break; } } // local time var offset -1 * (new Date()).getTimezoneOffset() * 60 * 1000; metricDataPointsmetricsDisplay.metricsh.metric.id.push(currentBucketMsec + offset, valueToUse) currentBucketMsec - intervalMsec; } metricDataPointsmetricsDisplay.metricsh.metric.id.reverse(); } // set Global options Highcharts.setOptions({ lang: { thousandsSep: , } }); $(#metrics-display-graph-container-0bpq0w28t7ss).highcharts(StockChart, { plotOptions : { series : { animation : false, color : #00AFE6, connectNulls: false }, }, chart : { backgroundColor: #ffffff }, title : { text: , style: { display: none, } }, credits : { enabled : false }, exporting : { enabled : false }, rangeSelector : { enabled : false }, scrollbar : { enabled : false }, navigator : { enabled : false }, xAxis: { gridLineColor : rgba(200,201,202,.8), labels: { style : { color: #a3a4a8 } }, lineColor: #c8c9ca, }, yAxis: { gridLineColor : rgba(200,201,202,.5), labels: { align: left, x: 5, y: 3, style : { color: #a3a4a8 }, enabled : true }, showLastLabel: true, tickPositions: 0.0, 50.0, 100.0, min: 0.0, startOnTick: false, max: 100.0, endOnTick: false, }, series : { name : Web Portal Uptime (subdomain.uservoice.com), data : metricDataPoints0bpq0w28t7ss, tooltip: { valueSuffix: % }, enableMouseTracking : ($(window).outerWidth() > 480) && false } , tooltip: { borderWidth: 0, enabled: ($(window).outerWidth() > 480) && false, headerFormat: span stylefont-size: 10px>{point.key} /span>, hideDelay: 300, pointFormat: span stylecolor:{point.color}>●/span> b>{point.y}/b>br/>, positioner: function() { return {x: 0, y: 0 }; }, shadow: false, shape: square, split: false } }); }); $.ajax({ type: GET, // this line must be end up with //status.* type of URLs (no protocol, just leading slashes). customers use SSL through us or by offloading with // cloudflare or something like it and the request.protocol the server sees is different than what the browser sees url: //uservoice.statuspage.io/metrics-display/flcl1r2l8p2p/_.json.replace(_, period) }).done(function(metricsDisplay, textStatus, xhr) { var summary metricsDisplay.summary , $metricSummaryLabel HRB.utils.djshook(metrics-display-current-flcl1r2l8p2p) , $graphContainer HRB.utils.djshook(metrics-display-graph-container-flcl1r2l8p2p); var errorMsg null; if(summary unavailable) { errorMsg We\re having issues retrieving data for strong>UserVoice API/strong>./div>; } else if(summary) { // we need to do a basic check to make sure we have any data at all var hasDataRollupsAvailable false; for(var h 0; h metricsDisplay.metrics.length; h++) { if(metricsDisplay.metricsh.data.length > 0) { hasDataRollupsAvailable true; break; } } if(!hasDataRollupsAvailable) { errorMsg Oops! No data has been indexed for strong>UserVoice API/strong> for this time period yet.; } } else { errorMsg Failed to load. strong>UserVoice API/strong>; } if(errorMsg ! null) { $metricSummaryLabel.text(--); // display -- instead of number $graphContainer.html(div classsmall styletext-align:center;> + errorMsg + /div>); // removed .parent().find(.metric-meta).remove() so name still shows $graphContainer.removeAttr(style); return; } $graphContainer.show(); $graphContainer.attr(style, height: 120px); // set style after error message removed it // proceed since we have data $metricSummaryLabel.text(SP.currentPage.numberToDecimalPlaces(summarymean, 3 ) + %); var metricDataPoints {} , intervalMsec metricsDisplay.period.interval * 1000; var startingBucketMsec parseInt((new Date()).getTime() / intervalMsec) * intervalMsec; for(var h 0; h metricsDisplay.metrics.length; h++) { metricDataPointsmetricsDisplay.metricsh.metric.id var data metricsDisplay.metricsh.data , currentBucketMsec startingBucketMsec; for(var i metricsDisplay.period.count; i > 0; i--) { // loop over the data and pull out the data point with the following characteristics // -> closest to currentBucketMsec // -> without being greater than currentMsecBucket // -> without being more than 1 intervalMsec bucket away var valueToUse null; for(var j data.length - 1; j > 0; j--) { var currentTimestampMsec dataj.timestamp * 1000; if(currentTimestampMsec currentBucketMsec && currentTimestampMsec > (currentBucketMsec - intervalMsec)) { valueToUse dataj.value; // console.log(Using ts: + currentTimestampMsec + with value: + valueToUse + for bucket: + currentBucketMsec); break; } } // local time var offset -1 * (new Date()).getTimezoneOffset() * 60 * 1000; metricDataPointsmetricsDisplay.metricsh.metric.id.push(currentBucketMsec + offset, valueToUse) currentBucketMsec - intervalMsec; } metricDataPointsmetricsDisplay.metricsh.metric.id.reverse(); } // set Global options Highcharts.setOptions({ lang: { thousandsSep: , } }); $(#metrics-display-graph-container-flcl1r2l8p2p).highcharts(StockChart, { plotOptions : { series : { animation : false, color : #00AFE6, connectNulls: false }, }, chart : { backgroundColor: #ffffff }, title : { text: , style: { display: none, } }, credits : { enabled : false }, exporting : { enabled : false }, rangeSelector : { enabled : false }, scrollbar : { enabled : false }, navigator : { enabled : false }, xAxis: { gridLineColor : rgba(200,201,202,.8), labels: { style : { color: #a3a4a8 } }, lineColor: #c8c9ca, }, yAxis: { gridLineColor : rgba(200,201,202,.5), labels: { align: left, x: 5, y: 3, style : { color: #a3a4a8 }, enabled : true }, showLastLabel: true, tickPositions: 0.0, 50.0, 100.0, min: 0.0, startOnTick: false, max: 100.0, endOnTick: false, }, series : { name : UserVoice API, data : metricDataPointsw9vkcdrh6khc, tooltip: { valueSuffix: % }, enableMouseTracking : ($(window).outerWidth() > 480) && true } , tooltip: { borderWidth: 0, enabled: ($(window).outerWidth() > 480) && true, headerFormat: span stylefont-size: 10px>{point.key} /span>, hideDelay: 300, pointFormat: span stylecolor:{point.color}>●/span> b>{point.y}/b>br/>, positioner: function() { return {x: 0, y: 0 }; }, shadow: false, shape: square, split: false } }); }); $.ajax({ type: GET, // this line must be end up with //status.* type of URLs (no protocol, just leading slashes). customers use SSL through us or by offloading with // cloudflare or something like it and the request.protocol the server sees is different than what the browser sees url: //uservoice.statuspage.io/metrics-display/pxqfsjpqy5v3/_.json.replace(_, period) }).done(function(metricsDisplay, textStatus, xhr) { var summary metricsDisplay.summary , $metricSummaryLabel HRB.utils.djshook(metrics-display-current-pxqfsjpqy5v3) , $graphContainer HRB.utils.djshook(metrics-display-graph-container-pxqfsjpqy5v3); var errorMsg null; if(summary unavailable) { errorMsg We\re having issues retrieving data for strong>Web Portal Response Time (subdomain.uservoice.com)/strong>./div>; } else if(summary) { // we need to do a basic check to make sure we have any data at all var hasDataRollupsAvailable false; for(var h 0; h metricsDisplay.metrics.length; h++) { if(metricsDisplay.metricsh.data.length > 0) { hasDataRollupsAvailable true; break; } } if(!hasDataRollupsAvailable) { errorMsg Oops! No data has been indexed for strong>Web Portal Response Time (subdomain.uservoice.com)/strong> for this time period yet.; } } else { errorMsg Failed to load. strong>Web Portal Response Time (subdomain.uservoice.com)/strong>; } if(errorMsg ! null) { $metricSummaryLabel.text(--); // display -- instead of number $graphContainer.html(div classsmall styletext-align:center;> + errorMsg + /div>); // removed .parent().find(.metric-meta).remove() so name still shows $graphContainer.removeAttr(style); return; } $graphContainer.show(); $graphContainer.attr(style, height: 120px); // set style after error message removed it // proceed since we have data $metricSummaryLabel.text(SP.currentPage.numberToDecimalPlaces(summarymean, 0 ) + ms); var metricDataPoints {} , intervalMsec metricsDisplay.period.interval * 1000; var startingBucketMsec parseInt((new Date()).getTime() / intervalMsec) * intervalMsec; for(var h 0; h metricsDisplay.metrics.length; h++) { metricDataPointsmetricsDisplay.metricsh.metric.id var data metricsDisplay.metricsh.data , currentBucketMsec startingBucketMsec; for(var i metricsDisplay.period.count; i > 0; i--) { // loop over the data and pull out the data point with the following characteristics // -> closest to currentBucketMsec // -> without being greater than currentMsecBucket // -> without being more than 1 intervalMsec bucket away var valueToUse null; for(var j data.length - 1; j > 0; j--) { var currentTimestampMsec dataj.timestamp * 1000; if(currentTimestampMsec currentBucketMsec && currentTimestampMsec > (currentBucketMsec - intervalMsec)) { valueToUse dataj.value; // console.log(Using ts: + currentTimestampMsec + with value: + valueToUse + for bucket: + currentBucketMsec); break; } } // local time var offset -1 * (new Date()).getTimezoneOffset() * 60 * 1000; metricDataPointsmetricsDisplay.metricsh.metric.id.push(currentBucketMsec + offset, valueToUse) currentBucketMsec - intervalMsec; } metricDataPointsmetricsDisplay.metricsh.metric.id.reverse(); } // set Global options Highcharts.setOptions({ lang: { thousandsSep: , } }); $(#metrics-display-graph-container-pxqfsjpqy5v3).highcharts(StockChart, { plotOptions : { series : { animation : false, color : #00AFE6, connectNulls: false }, }, chart : { backgroundColor: #ffffff }, title : { text: , style: { display: none, } }, credits : { enabled : false }, exporting : { enabled : false }, rangeSelector : { enabled : false }, scrollbar : { enabled : false }, navigator : { enabled : false }, xAxis: { gridLineColor : rgba(200,201,202,.8), labels: { style : { color: #a3a4a8 } }, lineColor: #c8c9ca, }, yAxis: { gridLineColor : rgba(200,201,202,.5), labels: { align: left, x: 5, y: 3, style : { color: #a3a4a8 }, enabled : true }, showLastLabel: true, min: 0.0, startOnTick: false, tickPixelInterval: 40, }, series : { name : Web Portal Response Time (subdomain.uservoice.com), data : metricDataPointspxqfsjpqy5v3, tooltip: { valueSuffix: ms }, enableMouseTracking : ($(window).outerWidth() > 480) && false } , tooltip: { borderWidth: 0, enabled: ($(window).outerWidth() > 480) && false, headerFormat: span stylefont-size: 10px>{point.key} /span>, hideDelay: 300, pointFormat: span stylecolor:{point.color}>●/span> b>{point.y}/b>br/>, positioner: function() { return {x: 0, y: 0 }; }, shadow: false, shape: square, split: false } }); }); $.ajax({ type: GET, // this line must be end up with //status.* type of URLs (no protocol, just leading slashes). customers use SSL through us or by offloading with // cloudflare or something like it and the request.protocol the server sees is different than what the browser sees url: //uservoice.statuspage.io/metrics-display/tlbs4yg5c13n/_.json.replace(_, period) }).done(function(metricsDisplay, textStatus, xhr) { var summary metricsDisplay.summary , $metricSummaryLabel HRB.utils.djshook(metrics-display-current-tlbs4yg5c13n) , $graphContainer HRB.utils.djshook(metrics-display-graph-container-tlbs4yg5c13n); var errorMsg null; if(summary unavailable) { errorMsg We\re having issues retrieving data for strong>Marketing Site Uptime (www.uservoice.com)/strong>./div>; } else if(summary) { // we need to do a basic check to make sure we have any data at all var hasDataRollupsAvailable false; for(var h 0; h metricsDisplay.metrics.length; h++) { if(metricsDisplay.metricsh.data.length > 0) { hasDataRollupsAvailable true; break; } } if(!hasDataRollupsAvailable) { errorMsg Oops! No data has been indexed for strong>Marketing Site Uptime (www.uservoice.com)/strong> for this time period yet.; } } else { errorMsg Failed to load. strong>Marketing Site Uptime (www.uservoice.com)/strong>; } if(errorMsg ! null) { $metricSummaryLabel.text(--); // display -- instead of number $graphContainer.html(div classsmall styletext-align:center;> + errorMsg + /div>); // removed .parent().find(.metric-meta).remove() so name still shows $graphContainer.removeAttr(style); return; } $graphContainer.show(); $graphContainer.attr(style, height: 120px); // set style after error message removed it // proceed since we have data $metricSummaryLabel.text(SP.currentPage.numberToDecimalPlaces(summarymean, 3 ) + %); var metricDataPoints {} , intervalMsec metricsDisplay.period.interval * 1000; var startingBucketMsec parseInt((new Date()).getTime() / intervalMsec) * intervalMsec; for(var h 0; h metricsDisplay.metrics.length; h++) { metricDataPointsmetricsDisplay.metricsh.metric.id var data metricsDisplay.metricsh.data , currentBucketMsec startingBucketMsec; for(var i metricsDisplay.period.count; i > 0; i--) { // loop over the data and pull out the data point with the following characteristics // -> closest to currentBucketMsec // -> without being greater than currentMsecBucket // -> without being more than 1 intervalMsec bucket away var valueToUse null; for(var j data.length - 1; j > 0; j--) { var currentTimestampMsec dataj.timestamp * 1000; if(currentTimestampMsec currentBucketMsec && currentTimestampMsec > (currentBucketMsec - intervalMsec)) { valueToUse dataj.value; // console.log(Using ts: + currentTimestampMsec + with value: + valueToUse + for bucket: + currentBucketMsec); break; } } // local time var offset -1 * (new Date()).getTimezoneOffset() * 60 * 1000; metricDataPointsmetricsDisplay.metricsh.metric.id.push(currentBucketMsec + offset, valueToUse) currentBucketMsec - intervalMsec; } metricDataPointsmetricsDisplay.metricsh.metric.id.reverse(); } // set Global options Highcharts.setOptions({ lang: { thousandsSep: , } }); $(#metrics-display-graph-container-tlbs4yg5c13n).highcharts(StockChart, { plotOptions : { series : { animation : false, color : #00AFE6, connectNulls: false }, }, chart : { backgroundColor: #ffffff }, title : { text: , style: { display: none, } }, credits : { enabled : false }, exporting : { enabled : false }, rangeSelector : { enabled : false }, scrollbar : { enabled : false }, navigator : { enabled : false }, xAxis: { gridLineColor : rgba(200,201,202,.8), labels: { style : { color: #a3a4a8 } }, lineColor: #c8c9ca, }, yAxis: { gridLineColor : rgba(200,201,202,.5), labels: { align: left, x: 5, y: 3, style : { color: #a3a4a8 }, enabled : true }, showLastLabel: true, tickPositions: 0.0, 50.0, 100.0, min: 0.0, startOnTick: false, max: 100.0, endOnTick: false, }, series : { name : Marketing Site Uptime (www.uservoice.com), data : metricDataPointstlbs4yg5c13n, tooltip: { valueSuffix: % }, enableMouseTracking : ($(window).outerWidth() > 480) && false } , tooltip: { borderWidth: 0, enabled: ($(window).outerWidth() > 480) && false, headerFormat: span stylefont-size: 10px>{point.key} /span>, hideDelay: 300, pointFormat: span stylecolor:{point.color}>●/span> b>{point.y}/b>br/>, positioner: function() { return {x: 0, y: 0 }; }, shadow: false, shape: square, split: false } }); }); $.ajax({ type: GET, // this line must be end up with //status.* type of URLs (no protocol, just leading slashes). customers use SSL through us or by offloading with // cloudflare or something like it and the request.protocol the server sees is different than what the browser sees url: //uservoice.statuspage.io/metrics-display/b5t0nl2q9nf0/_.json.replace(_, period) }).done(function(metricsDisplay, textStatus, xhr) { var summary metricsDisplay.summary , $metricSummaryLabel HRB.utils.djshook(metrics-display-current-b5t0nl2q9nf0) , $graphContainer HRB.utils.djshook(metrics-display-graph-container-b5t0nl2q9nf0); var errorMsg null; if(summary unavailable) { errorMsg We\re having issues retrieving data for strong>Helpdesk API/strong>./div>; } else if(summary) { // we need to do a basic check to make sure we have any data at all var hasDataRollupsAvailable false; for(var h 0; h metricsDisplay.metrics.length; h++) { if(metricsDisplay.metricsh.data.length > 0) { hasDataRollupsAvailable true; break; } } if(!hasDataRollupsAvailable) { errorMsg Oops! No data has been indexed for strong>Helpdesk API/strong> for this time period yet.; } } else { errorMsg Failed to load. strong>Helpdesk API/strong>; } if(errorMsg ! null) { $metricSummaryLabel.text(--); // display -- instead of number $graphContainer.html(div classsmall styletext-align:center;> + errorMsg + /div>); // removed .parent().find(.metric-meta).remove() so name still shows $graphContainer.removeAttr(style); return; } $graphContainer.show(); $graphContainer.attr(style, height: 120px); // set style after error message removed it // proceed since we have data $metricSummaryLabel.text(SP.currentPage.numberToDecimalPlaces(summarymean, 3 ) + %); var metricDataPoints {} , intervalMsec metricsDisplay.period.interval * 1000; var startingBucketMsec parseInt((new Date()).getTime() / intervalMsec) * intervalMsec; for(var h 0; h metricsDisplay.metrics.length; h++) { metricDataPointsmetricsDisplay.metricsh.metric.id var data metricsDisplay.metricsh.data , currentBucketMsec startingBucketMsec; for(var i metricsDisplay.period.count; i > 0; i--) { // loop over the data and pull out the data point with the following characteristics // -> closest to currentBucketMsec // -> without being greater than currentMsecBucket // -> without being more than 1 intervalMsec bucket away var valueToUse null; for(var j data.length - 1; j > 0; j--) { var currentTimestampMsec dataj.timestamp * 1000; if(currentTimestampMsec currentBucketMsec && currentTimestampMsec > (currentBucketMsec - intervalMsec)) { valueToUse dataj.value; // console.log(Using ts: + currentTimestampMsec + with value: + valueToUse + for bucket: + currentBucketMsec); break; } } // local time var offset -1 * (new Date()).getTimezoneOffset() * 60 * 1000; metricDataPointsmetricsDisplay.metricsh.metric.id.push(currentBucketMsec + offset, valueToUse) currentBucketMsec - intervalMsec; } metricDataPointsmetricsDisplay.metricsh.metric.id.reverse(); } // set Global options Highcharts.setOptions({ lang: { thousandsSep: , } }); $(#metrics-display-graph-container-b5t0nl2q9nf0).highcharts(StockChart, { plotOptions : { series : { animation : false, color : #00AFE6, connectNulls: false }, }, chart : { backgroundColor: #ffffff }, title : { text: , style: { display: none, } }, credits : { enabled : false }, exporting : { enabled : false }, rangeSelector : { enabled : false }, scrollbar : { enabled : false }, navigator : { enabled : false }, xAxis: { gridLineColor : rgba(200,201,202,.8), labels: { style : { color: #a3a4a8 } }, lineColor: #c8c9ca, }, yAxis: { gridLineColor : rgba(200,201,202,.5), labels: { align: left, x: 5, y: 3, style : { color: #a3a4a8 }, enabled : true }, showLastLabel: true, tickPositions: 0.0, 50.0, 100.0, min: 0.0, startOnTick: false, max: 100.0, endOnTick: false, }, series : { name : Helpdesk API, data : metricDataPoints6nthq4ycjdcc, tooltip: { valueSuffix: % }, enableMouseTracking : ($(window).outerWidth() > 480) && true } , tooltip: { borderWidth: 0, enabled: ($(window).outerWidth() > 480) && true, headerFormat: span stylefont-size: 10px>{point.key} /span>, hideDelay: 300, pointFormat: span stylecolor:{point.color}>●/span> b>{point.y}/b>br/>, positioner: function() { return {x: 0, y: 0 }; }, shadow: false, shape: square, split: false } }); }); } var $timePeriodToggles HRB.utils.djshook(data-time-period-toggle); SP.currentPage.activeTimePeriodToggle function(period) { $timePeriodToggles.removeClass(active); $timePeriodToggles.filter(data-time-period + period + ).addClass(active); } SP.currentPage.getAndDisplayInitialChartData function() { if (window.location.hash #week) { SP.currentPage.getDataForTimePeriod(week); SP.currentPage.activeTimePeriodToggle(week); } else if (window.location.hash #month) { SP.currentPage.getDataForTimePeriod(month); SP.currentPage.activeTimePeriodToggle(month); } else { SP.currentPage.getDataForTimePeriod(day); SP.currentPage.activeTimePeriodToggle(day); } } $timePeriodToggles.on(click, function() { var newPeriod $(this).attr(data-time-period); SP.currentPage.activeTimePeriodToggle(newPeriod); SP.currentPage.getDataForTimePeriod(newPeriod); window.location.hash newPeriod; return false; }); SP.currentPage.getAndDisplayInitialChartData(); }) //> /script> script> /** INITIALIZATION **/ var recaptchaIds {} // Unfortunately theres no unique selectors on the parent divs that recaptcha adds. The first unique selector // is the iframe rendered 2 levels deep. So this waits until the iframes are added to the page, then finds // the parent div and sets the z index so that itll render above our modals & dropdowns from the start. function setZIndex(captchaCount, startTime) { // bail after 10s just in case so we dont do this forever if something whaky happens if (new Date() - startTime > 10000) { return; } var iframes document.querySelectorAll(iframetitlerecaptcha challenge); if (iframes.length ! captchaCount) { setTimeout(function() { setZIndex(captchaCount, startTime); }, 500); } for (var i 0; i iframes.length; i++) { // incident subscribe modal is 1050, so this has to be above that iframesi.parentElement.parentElement.style.zIndex 1100; } } function updateCaptchaIframeTitle(captchaCount, startTime, updates0) { if (new Date() - startTime > 10000 || captchaCount updates) { return; } var iframesWithTitle document.querySelectorAll(iframetitlerecaptcha challenge expires in two minutes); if (iframesWithTitle.length ! captchaCount) { setTimeout(function() { updateCaptchaIframeTitle(captchaCount, startTime, iframesWithTitle.length + updates); }, 500); } for (var i 0; i iframesWithTitle.length; i++) { iframesWithTitlei.title recaptcha; } } function addIncidentCaptcha() { var incidentCaptcha document.createElement(div); incidentCaptcha.setAttribute(id, subscribe-incident-recaptcha); incidentCaptcha.setAttribute(class, g-recaptcha); incidentCaptcha.setAttribute(data-sitekey, 6LcZ-b0UAAAAAENi956aWzynTT2ZJ80dGU3F80Op); incidentCaptcha.setAttribute(data-callback, submitIncidentSubscriberSuccess); incidentCaptcha.setAttribute(data-error-callback, submitIncidentSubscriberError); incidentCaptcha.setAttribute(data-size, invisible); document.body.appendChild(incidentCaptcha); var incidentCode document.createElement(input); incidentCode.setAttribute(type, hidden); incidentCode.setAttribute(id, submit_incident_code); document.body.appendChild(incidentCode); } var onloadCallback function() { // if there is an incident, then add incident captcha element if (document.getElementsByClassName(modal-open-incident-subscribe).length > 0) { addIncidentCaptcha(); } var captchas document.getElementsByClassName(g-recaptcha); for(var i 0; i captchas.length; i++) { var elId captchasi.id; recaptchaIdselId grecaptcha.enterprise.render(elId); } setZIndex(captchas.length, new Date()); updateCaptchaIframeTitle(captchas.length, new Date()); } /** SUBSCRIBE DROPDOWN */ // callbacks for captcha success function submitNewSubscriber(type, error) { if (error) document.querySelector(#subscribe-form- + type + #captcha_error).value true; document.getElementById(subscribe-form- + type).dispatchEvent(new Event(submit, {bubbles: true, cancelable: true})); grecaptcha.enterprise.reset(recaptchaIdssubscribe-btn- + type); } function submitNewEmailSubscriber(token) { submitNewSubscriber(email); } function submitNewSmsSubscriber(token) { submitNewSubscriber(sms); } function submitNewWebhookSubscriber(token) { submitNewSubscriber(webhook); } function submitIncidentSubscriber(token, error) { var incidentCode document.getElementById(submit_incident_code).value; var incidentForm document.getElementById(subscribe-form- + incidentCode); incidentForm.querySelector(inputnamecaptcha_error).value error; incidentForm.querySelector(inputnameg-recaptcha-response).value token; incidentForm.dispatchEvent(new Event(submit, {bubbles: true, cancelable: true})); grecaptcha.enterprise.reset(recaptchaIdssubscribe-incident-recaptcha); } function submitIncidentSubscriberSuccess(token) { submitIncidentSubscriber(token, false); } // callbacks if we get captcha network errors function emailSubscriberCaptchaError(token) { submitNewSubscriber(email, true); } function smsSubscriberCaptchaError(token) { submitNewSubscriber(sms, true); } function webhookSubscriberCaptchaError(token) { submitNewSubscriber(webhook, true); } function submitIncidentSubscriberError(token) { submitIncidentSubscriber(token, true); } // tracking clicks email, sms, webhook.forEach(function(type) { var el document.getElementById(subscribe-btn- + type); el && el.addEventListener(click, function() { $.ajax({ type: POST, url: /subscriptions/track_attempt, data: { type: type } }) }) }) // form submission success callbacks $(#subscribe-form-email).on(ajax:success, function(e, data, status, xhr){ if (data.type success) { SP.currentPage.updatesDropdown.hide(); document.getElementById(email).value ; } }); $(#subscribe-form-sms).on(ajax:success, function(e, data, status, xhr){ if (data.type success && data.otp_flow ! true) { SP.currentPage.updatesDropdown.hide(); document.getElementById(phone-number).value ; } }); $(#subscribe-form-webhook).on(ajax:success, function(e, data, status, xhr){ if (data.type success) { SP.currentPage.updatesDropdown.hide(); document.getElementById(endpoint-webhooks).value ; document.getElementById(email-webhooks).value ; } }); $(a.subscribe).on(click, function() { document.body.style.overflow hidden; document.body.style.height 100vh; }); $(div.modal-open-incident-subscribe).on(hidden, function(){ document.body.style.overflow ; document.body.style.height ; }); function submitCaptchaIncidentSubscribe(event) { var incidentCode event.target.id.split(-)2; event.preventDefault(); $.ajax({ type: POST, url: /subscriptions/track_attempt, data: { type: incident } }) document.getElementById(submit_incident_code).value incidentCode; grecaptcha.enterprise.execute(recaptchaIdssubscribe-incident-recaptcha); }/script>script srchttps://www.recaptcha.net/recaptcha/enterprise.js?onloadonloadCallback&renderexplicit async defer>/script> script srchttps://dka575ofm4ao0.cloudfront.net/packs/common-3645937076fc4cb82db6.chunk.js>/script> script srchttps://dka575ofm4ao0.cloudfront.net/packs/globals-8d1e8d4fe031010e25f5.chunk.js>/script> script srchttps://dka575ofm4ao0.cloudfront.net/packs/runtime-b489f246ad3563eb849f.js>/script> script> window.addEventListener(load, function () { const urlParams new URLSearchParams(window.location.search); const messageToken urlParams.get(slack_message_token); const channelName escape(urlParams.get(channel_name)); if(!!messageToken) { switch(messageToken) { case slack_auth_error: HRB.utils.notify(The Slack authorization attempt was unsuccessful. Try again., {cssClass:error}); break; case subscribers_disabled_error: HRB.utils.notify(Slack subscriptions are not enabled on this page., {cssClass:error}); break; case direct_message_channel_error: HRB.utils.notify(Subscriptions aren’t supported in direct messages. Try subscribing again and choose a channel instead., {cssClass:error}); break case duplicate_error: HRB.utils.notify(Youre already subscribed to get Slack notifications in that channel., {cssClass:error}); break; case duplicate_private_channel_error: HRB.utils.notify(`Youre already subscribed to get Slack notifications in #${channelName}. Invite the @Statuspage app to that channel to start getting status updates.`, {cssClass: error}); break; case default_success: HRB.utils.notify(Youre now subscribed to get Statuspage updates in Slack!, {cssClass:success}); break; case private_channel_success: HRB.utils.notify(`IMPORTANT: Invite the @Statuspage app to your Slack channel #${channelName} to start getting status updates.`, {cssClass:success}); break; } } });/script> !-- FOR FLASH NOTICES -->!-- FOR ERROR --> script> $(function() { var $link $(span classcolor-secondary powered-by>a classcolor-secondary target_blank relnoopener noreferrer nofollow hrefhttps://www.atlassian.com/software/statuspage?utm_campaignstatus.uservoice.com&utm_contentSP-notifications&utm_mediumpowered-by&utm_sourceinapp>Powered by Atlassian Statuspage/a>/span>); var setPoweredByStyles function() { if (!$(.powered-by).length) { $link.appendTo($(.page-footer)) } $(.powered-by).attr(style, display: inline !important; visibility:visible !important; opacity: 1 !important; position:static !important; text-indent:0px !important; transform:scale(1) !important); } setInterval(setPoweredByStyles, 1000); });/script> /body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]