Export - CSV (All fields)
Export - CSV (Current fields)
- NET-477 
 Disable enter key to submit token create dialog
- NET-473 
 /datum/maint/agg/stale for period with only reset record does not reprocess
- NET-466 
 /datum/maint/agg/stale should mark deleted hours as stale
- NET-464 
 Add credential based rate limiting
- NET-461 
 Support lookup of security token by ID
- NET-460 
 Add Instruction bluk update API
- NET-456 
 Add "expiration" date to instruction API, to allow instructions to automatically transition to Completed state
- NET-455 
 Change instruction APIs that list instructions to stream the results
- NET-453 
 Method of using "secrets" in Cloud Integration expressions
- NET-438 
 /user/expire/datum-delete/confirm rejected when startDate and endDate provided
- NET-436 
 Implement Spring HealthIndicator API for /ping tests
- NET-435 
 Add billing rate for SolarUser API calls
- NET-434 
 Add datum delete API that supports cherry-picked IDs
- NET-414 
 Implement SolarFlux support in cloud datum streams
- NET-407 
 Caching layer for SolarUser popular queries
- NET-403 
 Document the Locus Energy cloud integration service API
- NET-402 
 Document the SolarUser cloud integrations API
- NET-399 
 SolarUser cloud datum stream API
- NET-396 
 SolarUser cloud datum stream UI
- NET-391 
 Integrate Swagger documentation into SolarUser app
- NET-389 
 Add API to discover billing tier rates
- NET-388 
 Add API to rename datum stream property names
- NET-383 
 Split SolarUser management UI from API
- NET-382 
 Persistent HTTP sessions for SolarUser
- NET-379 
 Allow configuring SolarFlux aggregate datum publishing
- NET-376 
 Improve startup speed by setting proxyBeanMethods to false in @Configuration where possible
- NET-374 
 Add "copy" button to SolarNode invitation code
- NET-373 
 Sort "Allowed Chargers" list in OCPP UI
- NET-372 
 Updating OCCP charger details fails with HTTP 403 error
- NET-369 
 Support user metadata in Instruction Input endpoint transforms
- NET-368 
 Managed instruction input endpoints
- NET-365 
 Managed datum input endpoints
- NET-364 
 Update OCPP connector UI to support EVSE ID field
- NET-354 
 Support full security policy UI for user security tokens
- NET-353 
 Support assocating security token ID with user-submitted jobs
- NET-347 
 Add SolarUser UI to manage DNP3 settings
- NET-346 
 Add SolarUser APIs to manage DNP3 settings
- NET-332 
 Add audit tracking of node instruction counts
- NET-331 
 Large number of pending instructions can cause OOM errors
- NET-328 
 Add descriptive name to security tokens
- NET-324 
 Support filtering by JSON path in SolarUser /user/events API
- NET-310 
 Add framework to handle user-customizable DataTransfer OCPP messages
- NET-305 
 Handle DataIntegrityViolation exceptions in OCPP controller
- NET-302 
 Recalculate aggregates after deleting a datum reset auxiliary record
- NET-300 
 Document location request API
- NET-299 
 Add API for location creation requests
- NET-298 
 User registration redirecting to HTTP
- NET-297 
 DataIntegrityViolationException
- NET-296 
 DataIntegrityViolationException thrown in user datum export
- NET-293 
 SolarUser authentication failing on multipart/form-data request
{"searchers":{"groups":[{"searchers":[{"name":"Project","id":"project","key":"issue.field.project","isShown":true,"lastViewed":1761918196290,"shown":true},{"name":"Summary","id":"summary","key":"issue.field.summary","isShown":true,"shown":true},{"name":"Type","id":"issuetype","key":"issue.field.issuetype","isShown":true,"lastViewed":1761918196291,"shown":true},{"name":"Status","id":"status","key":"issue.field.status","isShown":true,"lastViewed":1761918196294,"shown":true},{"name":"Priority","id":"priority","key":"issue.field.priority","isShown":true,"shown":true},{"name":"Resolution","id":"resolution","key":"issue.field.resolution","isShown":true,"shown":true},{"name":"Creator","id":"creator","key":"issue.field.creator","isShown":true,"shown":true},{"name":"Affects Version","id":"version","key":"issue.field.affectsversions","isShown":false,"shown":false},{"name":"Fix Version","id":"fixfor","key":"issue.field.fixversions","isShown":false,"shown":false},{"name":"Component","id":"component","key":"issue.field.components","isShown":true,"lastViewed":1761918196296,"shown":true},{"name":"% Limits","id":"workratio","key":"issue.field.workratio","isShown":true,"shown":true},{"name":"Link types","id":"issue_link_type","key":"issue.field.issuelinks","isShown":true,"shown":true},{"name":"Environment","id":"environment","key":"issue.field.environment","isShown":true,"shown":true},{"name":"Description","id":"description","key":"issue.field.description","isShown":true,"shown":true},{"name":"Comment","id":"comment","key":"issue.field.comment","isShown":true,"shown":true},{"name":"Label","id":"labels","key":"issue.field.labels","isShown":true,"shown":true},{"name":"Query","id":"text","key":"text","isShown":true,"shown":true},{"name":"Component","id":"customfield_10100","key":"com.atlassian.jira.plugin.system.customfieldtypes:labels","isShown":true,"shown":true},{"name":"Development","id":"customfield_10200","key":"com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary","isShown":true,"shown":true},{"name":"Epic Color","id":"customfield_10008","key":"com.pyxis.greenhopper.jira:gh-epic-color","isShown":false,"shown":false},{"name":"Epic Link","id":"customfield_10006","key":"com.pyxis.greenhopper.jira:gh-epic-link","isShown":true,"shown":true},{"name":"Epic Name","id":"customfield_10005","key":"com.pyxis.greenhopper.jira:gh-epic-label","isShown":true,"shown":true},{"name":"Epic Status","id":"customfield_10007","key":"com.pyxis.greenhopper.jira:gh-epic-status","isShown":false,"shown":false},{"name":"Epic/Theme","id":"customfield_10001","key":"com.atlassian.jira.plugin.system.customfieldtypes:labels","isShown":true,"shown":true},{"name":"Flagged","id":"customfield_10000","key":"com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes","isShown":true,"shown":true},{"name":"Original story points","id":"customfield_10303","key":"com.atlassian.jpo:jpo-custom-field-original-story-points","isShown":true,"shown":true},{"name":"Parent Link","id":"customfield_10300","key":"com.atlassian.jpo:jpo-custom-field-parent","isShown":false,"shown":false},{"name":"Rank","id":"customfield_10009","key":"com.pyxis.greenhopper.jira:gh-lexo-rank","isShown":true,"shown":true},{"name":"Sprint","id":"customfield_10004","key":"com.pyxis.greenhopper.jira:gh-sprint","isShown":true,"shown":true},{"name":"Story Points","id":"customfield_10002","key":"com.atlassian.jira.plugin.system.customfieldtypes:float","isShown":false,"shown":false},{"name":"Team","id":"customfield_10304","key":"com.atlassian.teams:rm-teams-custom-field-team","isShown":true,"shown":true}],"type":"DETAILS","title":"Details"},{"searchers":[{"name":"Created Date","id":"created","key":"issue.field.created","isShown":true,"shown":true},{"name":"Updated Date","id":"updated","key":"issue.field.updated","isShown":true,"shown":true},{"name":"Resolution Date","id":"resolutiondate","key":"issue.field.resolution.date","isShown":true,"shown":true},{"name":"Due Date","id":"duedate","key":"issue.field.duedate","isShown":true,"shown":true},{"name":"Target end","id":"customfield_10302","key":"com.atlassian.jpo:jpo-custom-field-baseline-end","isShown":true,"shown":true},{"name":"Target start","id":"customfield_10301","key":"com.atlassian.jpo:jpo-custom-field-baseline-start","isShown":true,"shown":true}],"type":"DATES","title":"Dates"},{"searchers":[{"name":"Assignee","id":"assignee","key":"issue.field.assignee","isShown":true,"lastViewed":1761918196295,"shown":true},{"name":"Reporter","id":"reporter","key":"issue.field.reporter","isShown":true,"shown":true}],"type":"PEOPLE","title":"People"}]},"values":{"issuetype":{"name":"Type","editHtml":"\n\n\n\n                                <div class=\"field-group aui-field-issuetype\" >\n                                                                        <label for=\"searcher-type\">Type</label>                    <select class=\"select js-default-checkboxmultiselect\"\n            id=\"searcher-type\"\n            multiple=\"multiple\"\n            name=\"type\"\n            data-max-inline-results-displayed=\"100\"\n            data-placeholder-text=\"Find Issue Types...\">\n        <optgroup>\n             \n    <option class=\"        \"\n                id=\"type_-2\"\n                            title=\"All Standard Issue Types\"\n                value=\"-2\">All Standard Issue Types</option>\n  \n    <option class=\"        \"\n                id=\"type_-3\"\n                            title=\"All Sub-Task Issue Types\"\n                value=\"-3\">All Sub-Task Issue Types</option>\n         </optgroup>\n\n        <optgroup label=\"Standard Issue Types\">\n             \n    <option class=\" imagebacked 10000         \"\n                        data-icon=\"/jira/secure/viewavatar?size=xsmall&avatarId=10503&avatarType=issuetype\"\n                data-fallback-icon=\"/jira/images/icons/issuetypes/blank.png\"\n                id=\"type_1\"\n                            title=\"Bug\"\n                value=\"1\">Bug</option>\n  \n    <option class=\" imagebacked 10000         \"\n                        data-icon=\"/jira/images/icons/issuetypes/epic.svg\"\n                data-fallback-icon=\"/jira/images/icons/issuetypes/blank.png\"\n                id=\"type_10000\"\n                            title=\"Epic\"\n                value=\"10000\">Epic</option>\n  \n    <option class=\" imagebacked 10000         \"\n                        data-icon=\"/jira/secure/viewavatar?size=xsmall&avatarId=10510&avatarType=issuetype\"\n                data-fallback-icon=\"/jira/images/icons/issuetypes/blank.png\"\n                id=\"type_4\"\n                            title=\"Improvement\"\n                value=\"4\">Improvement</option>\n  \n    <option class=\" imagebacked 10000         \"\n                        data-icon=\"/jira/secure/viewavatar?size=xsmall&avatarId=10511&avatarType=issuetype\"\n                data-fallback-icon=\"/jira/images/icons/issuetypes/blank.png\"\n                id=\"type_2\"\n                            title=\"New Feature\"\n                value=\"2\">New Feature</option>\n  \n    <option class=\" imagebacked 10000         \"\n                        data-icon=\"/jira/images/icons/issuetypes/story.svg\"\n                data-fallback-icon=\"/jira/images/icons/issuetypes/blank.png\"\n                id=\"type_10001\"\n                            title=\"Story\"\n                value=\"10001\">Story</option>\n  \n    <option class=\" imagebacked 10000         \"\n                        data-icon=\"/jira/secure/viewavatar?size=xsmall&avatarId=10518&avatarType=issuetype\"\n                data-fallback-icon=\"/jira/images/icons/issuetypes/blank.png\"\n                id=\"type_3\"\n                            title=\"Task\"\n                value=\"3\">Task</option>\n         </optgroup>\n\n        <optgroup label=\"Sub-Task Issue Types\">\n             \n    <option class=\" imagebacked 10000         \"\n                        data-icon=\"/jira/secure/viewavatar?size=xsmall&avatarId=10516&avatarType=issuetype\"\n                data-fallback-icon=\"/jira/images/icons/issuetypes/blank.png\"\n                id=\"type_5\"\n                            title=\"Sub-task\"\n                value=\"5\">Sub-task</option>\n         </optgroup>\n    </select>\n                                        </div>\n    ","validSearcher":true,"isShown":true},"component":{"name":"Component","viewHtml":"                <div class=\"searcherValue\">\n    \n            <label class=\"fieldLabel\" for=\"fieldcomponent\">Component:</label><span id=\"fieldcomponent\" class=\"fieldValue\">\n    \n                                                            SolarUser                                        </span></div>\n","editHtml":"\n                                <div class=\"field-group aui-field-projectconstant\" >\n                                                                        <label for=\"searcher-component\">Component</label>                        <select class=\"select js-default-checkboxmultiselectcomponent\"\n        id=\"searcher-component\"\n        multiple=\"multiple\"\n        name=\"component\"\n        data-max-inline-results-displayed=\"100\"\n         aria-label=\"Search for components\">\n            <optgroup   label=\"\">\n                                                            <option   value=\"-1\" title=\"No Component\">No Component</option>\n                                                            <option   value=\"id:Billing\" title=\"Billing\">Billing</option>\n                                                            <option   value=\"id:Cloud Integrations\" title=\"Cloud Integrations\">Cloud Integrations</option>\n                                                            <option   value=\"id:Commons\" title=\"Commons\">Commons</option>\n                                                            <option   value=\"id:Datum Expire\" title=\"Datum Expire\">Datum Expire</option>\n                                                            <option   value=\"id:Datum Export\" title=\"Datum Export\">Datum Export</option>\n                                                            <option   value=\"id:Datum Import\" title=\"Datum Import\">Datum Import</option>\n                                                            <option   value=\"id:DB\" title=\"DB\">DB</option>\n                                                            <option   value=\"id:DIN\" title=\"DIN\">DIN</option>\n                                                            <option   value=\"id:DNP3\" title=\"DNP3\">DNP3</option>\n                                                            <option   value=\"id:Docs\" title=\"Docs\">Docs</option>\n                                                            <option   value=\"id:Documentation\" title=\"Documentation\">Documentation</option>\n                                                            <option   value=\"id:Instructions\" title=\"Instructions\">Instructions</option>\n                                                            <option   value=\"id:NIM\" title=\"NIM\">NIM</option>\n                                                            <option   value=\"id:OCPP\" title=\"OCPP\">OCPP</option>\n                                                            <option   value=\"id:OSCP\" title=\"OSCP\">OSCP</option>\n                                                            <option   value=\"id:Security\" title=\"Security\">Security</option>\n                                                            <option   value=\"id:SolarCA\" title=\"SolarCA\">SolarCA</option>\n                                                            <option   value=\"id:SolarDin\" title=\"SolarDin\">SolarDin</option>\n                                                            <option   value=\"id:SolarDNP3\" title=\"SolarDNP3\">SolarDNP3</option>\n                                                            <option   value=\"id:SolarFlux\" title=\"SolarFlux\">SolarFlux</option>\n                                                            <option   value=\"id:SolarIn\" title=\"SolarIn\">SolarIn</option>\n                                                            <option   value=\"id:SolarJobs\" title=\"SolarJobs\">SolarJobs</option>\n                                                            <option   value=\"id:SolarQuery\" title=\"SolarQuery\">SolarQuery</option>\n                                                            <option   selected=\"selected\" value=\"id:SolarUser\" title=\"SolarUser\">SolarUser</option>\n                                                            <option   value=\"id:SolarViz\" title=\"SolarViz\">SolarViz</option>\n                    </optgroup>\n    </select>\n                                        </div>\n    \n","jql":"component = SolarUser","validSearcher":true,"isShown":true},"project":{"name":"Project","viewHtml":"                    <div class=\"searcherValue\">\n    \n            <label class=\"fieldLabel\" for=\"fieldpid\">Project:</label><span id=\"fieldpid\" class=\"fieldValue\">\n    \n                <a data-pid=\"10200\" data-issue-type-ids=\"\" href=\"/jira/browse/NET\" title=\"Browse SolarNet project\">SolarNet</a>                    </span></div>\n","editHtml":"    \n                                    <div class=\"field-group aui-field-project\" >\n                                                                        <label for=\"searcher-pid\">Project</label>                            <select class=\"js-project-checkboxmultiselect\"\n                data-placeholder-text=\"Find Projects...\"\n                id=\"searcher-pid\"\n                multiple=\"multiple\"\n                name=\"pid\">\n                            <optgroup label=\"Recent Projects\">\n                                    </optgroup>\n                                                            <optgroup label=\"All Projects\" >\n                                        <option data-icon=\"/jira/secure/projectavatar?pid=10200&size=small\"\n             selected=\"selected\"             title=\"SolarNet\"\n            value=\"10200\">\n        SolarNet (NET)\n    </option>\n                \n                                                                                                    <option data-icon=\"/jira/secure/projectavatar?pid=10400&size=small\"\n                        title=\"JavaScript API\"\n            value=\"10400\">\n        JavaScript API (JS)\n    </option>\n                                                                                                        <option data-icon=\"/jira/secure/projectavatar?pid=10600&size=small\"\n                        title=\"Operational Support\"\n            value=\"10600\">\n        Operational Support (OPS)\n    </option>\n                                                                                                                                                                <option data-icon=\"/jira/secure/projectavatar?pid=10100&size=small\"\n                        title=\"SolarNode\"\n            value=\"10100\">\n        SolarNode (NODE)\n    </option>\n                                                </optgroup>\n        </select>\n                                                </div>\n        \n\n","jql":"project = \"10200\"","validSearcher":true,"isShown":true},"assignee":{"name":"Assignee","editHtml":"\n    \n                                    <div class=\"field-group aui-field-userlist\" >\n                                                                        <label for=\"searcher-assigneeSelect\">Assignee</label>                    <fieldset rel=\"assignee\" class=\"hidden user-group-searcher-params\">\n            </fieldset>\n    <select class=\"js-usergroup-checkboxmultiselect\" multiple=\"multiple\" id=\"assignee\" name=\"assignee\" data-placeholder-text=\"Enter username or group\">\n                <optgroup>\n                            <option class=\"headerOption\" data-icon=\"https://dev.solarnetwork.net/jira/secure/useravatar?size=xsmall&avatarId=10123\"  value=\"empty\" title=\"Unassigned\">Unassigned</option>\n            </optgroup>\n                            <optgroup>\n    </optgroup>\n    </select>\n    <input type=\"hidden\" name=\"check_prev_assignee\" value=\"true\">\n                                                </div>\n        \n","validSearcher":true,"isShown":true},"status":{"name":"Status","editHtml":"\n                                <div class=\"field-group aui-field-constants\" >\n                                                                        <label for=\"searcher-status\">Status</label>                        <select class=\"select js-default-checkboxmultiselectstatuslozenge\"\n        data-placeholder-text=\"Find Statuses...\"\n        id=\"searcher-status\"\n        multiple=\"multiple\"\n        name=\"status\"\n        data-max-inline-results-displayed=\"100\"\n        data-footer-text=\"-95 more options. Continue typing to refine further.\"        data-status-lozenge=\"true\">\n    <optgroup >\n                                                                                <option   class=\"imagebacked\" data-icon=\"/jira/images/icons/statuses/open.png\" value=\"1\" title=\"Open\" data-simple-status=\"{"id":"1","name":"Open","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"/jira/images/icons/statuses/open.png","statusCategory":{"id":2,"key":"new","colorName":"default"}}\">Open</option>\n                                            <option   class=\"imagebacked\" data-icon=\"/jira/images/icons/statuses/inprogress.png\" value=\"3\" title=\"In Progress\" data-simple-status=\"{"id":"3","name":"In Progress","description":"This issue is being actively worked on at the moment by the assignee.","iconUrl":"/jira/images/icons/statuses/inprogress.png","statusCategory":{"id":4,"key":"indeterminate","colorName":"inprogress"}}\">In Progress</option>\n                                            <option   class=\"imagebacked\" data-icon=\"/jira/images/icons/statuses/reopened.png\" value=\"4\" title=\"Reopened\" data-simple-status=\"{"id":"4","name":"Reopened","description":"This issue was once resolved, but the resolution was deemed incorrect. From here issues are either marked assigned or resolved.","iconUrl":"/jira/images/icons/statuses/reopened.png","statusCategory":{"id":2,"key":"new","colorName":"default"}}\">Reopened</option>\n                                            <option   class=\"imagebacked\" data-icon=\"/jira/images/icons/statuses/resolved.png\" value=\"5\" title=\"Resolved\" data-simple-status=\"{"id":"5","name":"Resolved","description":"A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.","iconUrl":"/jira/images/icons/statuses/resolved.png","statusCategory":{"id":3,"key":"done","colorName":"success"}}\">Resolved</option>\n                                            <option   class=\"imagebacked\" data-icon=\"/jira/images/icons/statuses/closed.png\" value=\"6\" title=\"Closed\" data-simple-status=\"{"id":"6","name":"Closed","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"/jira/images/icons/statuses/closed.png","statusCategory":{"id":3,"key":"done","colorName":"success"}}\">Closed</option>\n            </optgroup>\n</select>\n                                        </div>\n    \n","validSearcher":true,"isShown":true}}}
        [{"id":-1,"name":"My open issues","jql":"assignee = currentUser() AND resolution = Unresolved order by updated DESC","isSystem":true,"sharePermissions":[],"requiresLogin":true},{"id":-2,"name":"Reported by me","jql":"reporter = currentUser() order by created DESC","isSystem":true,"sharePermissions":[],"requiresLogin":true},{"id":-4,"name":"All issues","jql":"order by created DESC","isSystem":true,"sharePermissions":[],"requiresLogin":false},{"id":-5,"name":"Open issues","jql":"resolution = Unresolved order by priority DESC,updated DESC","isSystem":true,"sharePermissions":[],"requiresLogin":false},{"id":-9,"name":"Done issues","jql":"statusCategory = Done order by updated DESC","isSystem":true,"sharePermissions":[],"requiresLogin":false},{"id":-3,"name":"Viewed recently","jql":"issuekey in issueHistory() order by lastViewed DESC","isSystem":true,"sharePermissions":[],"requiresLogin":false},{"id":-6,"name":"Created recently","jql":"created >= -1w order by created DESC","isSystem":true,"sharePermissions":[],"requiresLogin":false},{"id":-7,"name":"Resolved recently","jql":"resolutiondate >= -1w order by updated DESC","isSystem":true,"sharePermissions":[],"requiresLogin":false},{"id":-8,"name":"Updated recently","jql":"updated >= -1w order by updated DESC","isSystem":true,"sharePermissions":[],"requiresLogin":false}]
        0.3
        0