All of the ad-hoc things you're doing to manage incidents today, done for you, and much more!

Overview

About

What's Dispatch?

Put simply, Dispatch is:

All of the ad-hoc things you’re doing to manage incidents today, done for you, and a bunch of other things you should've been doing, but have not had the time!

Dispatch helps us effectively manage security incidents by deeply integrating with existing tools used throughout an organization (Slack, GSuite, Jira, etc.,) Dispatch is able to leverage the existing familiarity of these tools to provide orchestration instead of introducing another tool.

This means you can let Dispatch focus on creating resources, assembling participants, sending out notifications, tracking tasks, and assisting with post-incident reviews; allowing you to focus on actually fixing the issue!

Project resources

Comments
  • Cannot see dispatch views being populated with data, after configuring database correctly!

    Cannot see dispatch views being populated with data, after configuring database correctly!

    Describe the bug This similar to issue: https://github.com/Netflix/dispatch/issues/416

    Problem: I start the dispatch server: docker-compose up -d When I hit the URL http://server1.fyre.ibm.com:8000/dashboard I do see the page rendering but the views/dashboards are not getting populated and a message appears saying "Something has gone very wrong please retry or inform your admin you are receiving this error""

    To Reproduce Steps to reproduce the behavior:

    1. Go to http://server1.fyre.ibm.com:8000/dashboard
    2. Database is started and populated with .dump file (from repository)
    3. No data in dispatch UI See error "Something has gone very wrong please retry or inform your admin you are receiving this error""

    What I have done (below)

    Hello Kevin I have been requested to investigate the possibility of using Netflix Dispatch as a new Incident Management solution in my organization. I have TWO Fyre Virtual machines server1, server2. The former is where the dispatch server is being installed and the second hosts the Postgres database that Dispatch relies on. I presume it is ok to have the server and DB on two separate machines? Both servers have Ubuntu OS. I have performed the following actions:

    • On server1, installed Docker (17.05.0) and Docker Compose (1.19.) cloned the git repository and ran the install.sh. (no configuration changes made until later) the install.sh produced the errors in attachment "Install_Dispatch.out", .. (this would be expected) Setting up database... No JWT secret specified, this is required if you are using basic authentication. NCIDENT_DAILY_SUMMARY_ONCALL_SERVICE_ID has been deprecated. Please use INCIDENT_ONCALL_SERVICE_ID instead. No metric providers specified metrics will not be sent. ERROR:dispatch.common.utils.cli:Something went wrong with creating plugin rows, is the database setup correctly? : :

    • On server2, installed PostgreSQL 12.3 created a new role called 'dispatch' :
      su - postgres createuser --interactive --pwprompt Enter name of role to add: dispatch Enter password for new role: Enter it again: Shall the new role be a superuser? (y/n) y

       postgres=# \du
                                          List of roles
        Role name |                         Attributes                         | Member of
       -----------+------------------------------------------------------------+-----------
        dispatch  | Superuser, Create role, Create DB                          | {}
        postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
      

      and then imported the sample .dump file from the Git repository to populate the database 'dispatch_db'

      drop database dispatch_db create database dispatch_db

      sudo -u postgres -i psql -h 127.0.0.1 -U postgres -p 5432 dispatch_db < /root/dispatch-sample-data.dump This was successful. and postgres is listening on 5432

    • Finally I made some configuration changes on server1

      modified the .env file to include the Database information

      NOTE: Ensure that DATABASE_CREDENTIALS match the values passed to POSTGRES_USER and POSTGRES_PASSWORD

      DATABASE_CREDENTIALS=postgres: DATABASE_HOSTNAME=server2.fyre.ibm.com DATABASE_NAME=dispatch_db DATABASE_PORT=5432

      Used by postgres docker

      POSTGRES_DB=dispatch_db POSTGRES_PASSWORD= POSTGRES_USER=postgres

      Modified the. docker-compose.yml. file (this line)

            volumes:
        - "dispatch-postgres:/var/lib/postgresql/12/main"
      
      as this is where the data is stored according to command below
      
      # sudo -u postgres psql -c "show data_directory;"
             data_directory
      -----------------------------
       /var/lib/postgresql/12/main
      (1 row)
      -------------------------------------------------------------------------------------------------------
      systemctl start [email protected]
      -------------------------------------------------------------------------------------------------------
      

    I tried running the ./install.sh again.... but I still get the same error in the UI... the views are not getting populated.

    I investigated further and used a small java application on server1 to connect to 'dispatch_db' and run a query on the database. e.g SELECT ID,NAME,DESCRIPTION FROM INCIDENT_PRIORITY

    java -cp ./postgresql-42.2.14.jre7.jar:. Testserver1 //server2.fyre.ibm.com:5432/dispatch_db postgres

    This worked and output the query data , but ONLY after making these necessary changes on the Postgres side:

    • Insert line listen_addresses = '*' in postgresql.conf

    • Insert line host dispatch_db all /24 md5 in pg_hba.conf . This is to allow connections from clients then restart postgres service

      so at this point it is possible to connect and retrieve the data from Postgres to remote computers

      However I still cannot see the data coming across in the UI..

    QUESTIONS: As far as I can see the database is ok.. Is there some other change I need to make to get the data across to the dispatch machine?

        How is the CLI enabled?  or how to use it.....
        when I run dispatch I get command not found.   (on the dispatch server)
    
    From looking at the other GitHub issues. >dispatch upgrade database is necessary 
    How do you start the CLI?  
    
    Any help appreeciated 
    Thanks 
    /Martin
    

    Expected behavior A clear and concise description of what you expected to happen.

    Screenshots If applicable, add screenshots to help explain your problem.

    Desktop (please complete the following information):

    • OS: [e.g. iOS]
    • Browser [e.g. chrome, safari]
    • Version [e.g. 22]

    Smartphone (please complete the following information):

    • Device: [e.g. iPhone6]
    • OS: [e.g. iOS8.1]
    • Browser [e.g. stock browser, safari]
    • Version [e.g. 22]

    Additional context Add any other context about the problem here.

    opened by mccannm1 51
  • Web errors

    Web errors

    Unable to submit an incident, web container is throwing this, any help much appreciated.

    Failed to load plugin zoom_conference. Reason: "Config 'ZOOM_API_USER_ID' is missing, and has no default."
    WARNING:  Unable to import fbprophet, some metrics will not be usable.
    WARNING:  Failed to load plugin zoom_conference. Reason: "Config 'ZOOM_API_USER_ID' is missing, and has no default."
    INFO:     Started server process [1]
    INFO:     Waiting for application startup.
    INFO:     Application startup complete.
    INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
    INFO:     9.211.132.131:56970 - "GET / HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56970 - "GET /static/css/app.95d8a627.css HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56971 - "GET /static/css/chunk-vendors.54ed3ea1.css HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56972 - "GET /static/js/chunk-vendors.f9f651a8.js HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56970 - "GET /static/js/app.1cedeeb4.js HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56974 - "GET /static/css/definition-table.ebaaeb9b.css HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56975 - "GET /static/css/definition-table~incident-dashboard~incident-table~incidents-report~incidents-status~individual-tabl~653abfa5.343268aa.css HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56976 - "GET /static/css/definition-table~incident-table~incidents-status~individual-table~knowledge-table~policy-table~routi~95f9995b.548fe094.css HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56974 - "GET /static/css/error-403.5125a358.css HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56976 - "GET /static/css/errors-404.de8a6bb5.css HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56975 - "GET /static/css/errors-500.bbf8b0ec.css HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56974 - "GET /static/css/incident-dashboard~incident-table.b315c2ce.css HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56976 - "GET /static/css/incident-table.641f6b2c.css HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56970 - "GET /static/css/incidents-report.9d21c0d7.css HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56975 - "GET /static/css/individual-table.d5fecaa8.css HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56974 - "GET /static/css/knowledge-table.d5fecaa8.css HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56976 - "GET /static/css/policy-table.9d21c0d7.css HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56970 - "GET /static/css/routing-table~service-table.1d27bab4.css HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56975 - "GET /static/css/tag-table.9d21c0d7.css HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56974 - "GET /static/css/team-table.d5fecaa8.css HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56976 - "GET /static/js/definition-table.a05461b5.js HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56970 - "GET /static/js/definition-table~incident-dashboard~incident-table~incidents-report~incidents-status~individual-tabl~653abfa5.c90c4de1.js HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56975 - "GET /static/js/definition-table~incident-table~incidents-report~individual-table~knowledge-table~routing-table~serv~9c57d9df.7546f311.js HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56974 - "GET /static/js/definition-table~incident-table~incidents-status~individual-table~knowledge-table~policy-table~routi~95f9995b.bd2967ff.js HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56972 - "GET /static/js/error-403.8c1e8dbb.js HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56971 - "GET /static/js/errors-404.c705045c.js HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56970 - "GET /static/js/errors-500.f59c3e98.js HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56976 - "GET /static/js/incident-dashboard.d1db1531.js HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56971 - "GET /static/js/incidents-report.1147d598.js HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56970 - "GET /static/js/incident-dashboard~incident-table.fae29dec.js HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56975 - "GET /static/js/incident-table.9ff946a3.js HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56974 - "GET /static/js/incidents-status.7b1e502b.js HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56971 - "GET /static/js/individual-table.86a83a39.js HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56972 - "GET /static/js/knowledge-table.0d010175.js HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56970 - "GET /static/js/policy-table.1ecce372.js HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56974 - "GET /static/js/routing-table.3c4ab2f4.js HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56971 - "GET /static/js/routing-table~service-table.efa19ce9.js HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56972 - "GET /static/js/search-result-list.f64f2c7c.js HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56970 - "GET /static/js/service-table.4d71d004.js HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56975 - "GET /static/js/tag-table.05994c1a.js HTTP/1.1" 200 OK
    ERROR:    Unable to find slug:  in self.all version 1: <generator object PluginManager.all at 0x7ff2d6813740> or version 2: <generator object PluginManager.all at 0x7ff2d6813740>
    INFO:     9.211.132.131:56974 - "GET /api/v1/incident_types/?itemsPerPage=50&sortBy[]=name&descending[]=false HTTP/1.1" 500 Internal Server Error
    ERROR:    Exception in ASGI application
    Traceback (most recent call last):
      File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi
        result = await app(self.scope, self.receive, self.send)
      File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
        return await self.app(scope, receive, send)
      File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
        await self.middleware_stack(scope, receive, send)
      File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
        raise exc from None
      File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
        await self.app(scope, receive, _send)
      File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 25, in __call__
        response = await self.dispatch_func(request, self.call_next)
      File "/usr/local/lib/python3.8/site-packages/dispatch/main.py", line 103, in dispatch
        metric_provider.timer("server.call.elapsed", value=elapsed_time, tags=tags)
      File "/usr/local/lib/python3.8/site-packages/dispatch/metrics.py", line 40, in timer
        p = plugins.get(provider)
      File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/base/manager.py", line 43, in get
        raise KeyError(slug)
    KeyError: ''
    INFO:     9.211.132.131:56972 - "GET /static/fonts/Roboto-Regular.73f0a88b.woff2 HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56970 - "GET /static/fonts/materialdesignicons-webfont.7fb0e378.woff2 HTTP/1.1" 200 OK
    INFO:     9.211.132.131:56971 - "GET /static/fonts/Roboto-Medium.90d16760.woff2 HTTP/1.1" 200 OK
    ERROR:    Unable to find slug:  in self.all version 1: <generator object PluginManager.all at 0x7ff2d47787b0> or version 2: <generator object PluginManager.all at 0x7ff2d47787b0>
    INFO:     9.211.132.131:56975 - "GET /api/v1/incident_priorities/?sortBy[]=view_order&descending[]=false HTTP/1.1" 500 Internal Server Error
    ERROR:    Exception in ASGI application
    Traceback (most recent call last):
      File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi
        result = await app(self.scope, self.receive, self.send)
      File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
        return await self.app(scope, receive, send)
      File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
        await self.middleware_stack(scope, receive, send)
      File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
        raise exc from None
      File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
        await self.app(scope, receive, _send)
      File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 25, in __call__
        response = await self.dispatch_func(request, self.call_next)
      File "/usr/local/lib/python3.8/site-packages/dispatch/main.py", line 103, in dispatch
        metric_provider.timer("server.call.elapsed", value=elapsed_time, tags=tags)
      File "/usr/local/lib/python3.8/site-packages/dispatch/metrics.py", line 40, in timer
        p = plugins.get(provider)
      File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/base/manager.py", line 43, in get
        raise KeyError(slug)
    KeyError: ''
    
    

    What's the keyerror?

    opened by gazzerman2 46
  • Dispatch Install, Deployment, and Config Support

    Dispatch Install, Deployment, and Config Support

    Describe the bug This regards to dispatch slack configuration issue, I have updated the necessary details in slack plugins according to dispatch [slack documentation.] But I am getting multiple errors.

    Errors:

    Error from Slack app: dispatch-conversionAPP 8:31 PM Looks like you tried to run /dispatch-list-incidents in a conversation where the Dispatch bot is not present. Add the bot to your conversation or run the command in one of the following conversations: Only visible to you 8:34 I see you tried to run /dispatch-list-participants in an non-incident conversation. Incident-specifc commands can only be run in incident conversations. Only visible to you 8:39 I see you tried to run /dispatch-list-my-tasks in an non-incident conversation. Incident-specifc commands can only be run in incident conversations. Only visible to you 8:39 I see you tried to run /dispatch-update-incident in an non-incident conversation. Incident-specifc commands can only be run in incident conversations. Only visible to you 8:42 Looks like you tried to run /dispatch-list-incidents in a conversation where the Dispatch bot is not present. Add the bot to your conversation or run the command in one of the following conversations:

    Error from docker backend ERROR:dispatch.plugins.dispatch_slack.service:SlackError. Response: {'ok': False, 'error': 'channel_not_found'} Endpoint: conversations.info kwargs: {'channel': 'C03MFS2LV9Q'} ERROR:dispatch.plugins.dispatch_slack.service:SlackError. Response: {'ok': False, 'error': 'channel_not_found'} Endpoint: conversations.info kwargs: {'channel': 'C03MFS2LV9Q'}

    triaged 
    opened by Hellboy7 40
  • MJML error with v20210212

    MJML error with v20210212

    Describe the bug When attempting to send emails using the email plugin I get the following in my error log. As with #976 I was not defining the mjml path inside my environmental vars. The incident does create successfully, but it does not send out emails. This build is using v20210212 as base. How would you recommend resolving? I have not worked with mjml before.

    2021-02-23 13:55:02.637 EST- /usr/local/lib/python3.8/site-packages/dispatch/static/dispatch/node_modules/.bin/mjml
    
    2021-02-23 13:55:02.637 EST at Function.Module._resolveFilename (internal/modules/cjs/loader.js:980:15)
    
    2021-02-23 13:55:02.637 EST at Function.Module._load (internal/modules/cjs/loader.js:862:27)
    
    2021-02-23 13:55:02.637 EST at Module.require (internal/modules/cjs/loader.js:1042:19)
    
    2021-02-23 13:55:02.637 EST at require (internal/modules/cjs/helpers.js:77:18)
    
    2021-02-23 13:55:02.637 EST at Object.<anonymous> (/usr/local/lib/python3.8/site-packages/dispatch/static/dispatch/node_modules/.bin/mjml:3:1)
    
    2021-02-23 13:55:02.638 ESTTraceback (most recent call last): File "/usr/local/lib/python3.8/site-packages/dispatch/decorators.py", line 37, in wrapper result = func(*args, **kwargs) File "/usr/local/lib/python3.8/site-packages/dispatch/incident/flows.py", line 687, in incident_create_flow send_incident_created_notifications(incident, db_session) File "/usr/local/lib/python3.8/site-packages/dispatch/incident/messaging.py", line 266, in send_incident_created_notifications notification_service.filter_and_send( File "/usr/local/lib/python3.8/site-packages/dispatch/notification/service.py", line 116, in filter_and_send send( File "/usr/local/lib/python3.8/site-packages/dispatch/notification/service.py", line 92, in send plugin.instance.send( File "/usr/local/lib/python3.8/site-packages/dispatch/decorators.py", line 58, in wrapper result = func(*args, **kwargs) File "/usr/local/lib/python3.8/site-packages/dispatch/decorators.py", line 74, in wrapper return func(*args, **kwargs) File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_google/gmail/plugin.py", line 94, in send message_body = create_message_body(notification_template, notification_type, **kwargs) File "/usr/local/lib/python3.8/site-packages/dispatch/messaging/email/utils.py", line 87, in create_message_body return render_html(template.render(**kwargs)) File "/usr/local/lib/python3.8/site-packages/dispatch/messaging/email/utils.py", line 103, in render_html raise Exception("MJML template processing failed.") Exception: MJML template processing failed.
    
    opened by PurpleStarChild 34
  • Takes a long time to create incident.

    Takes a long time to create incident.

    Describe the bug Create incident is stuck almost for 5-10 minutes without any response.

    To Reproduce This is the setup I have so far:

    1. Empty database without sample data
    2. Slack app and credentials setup
    3. JIRA credentials setup
    4. UI Works but has no data
    5. Entered incident priority fields from UI
    6. Entered Incident type from UI

    Expected behavior The expected behavior is for the incident to be created in a few seconds at most.

    Screenshots image

    Additional context Setup using ECS fargate and RDS

    opened by sfc-gh-pkommini 33
  • Scheduler error after creating new incident

    Scheduler error after creating new incident

    After creating an incident in Dispatch I get the following error in the logs. This seems related to the incident creation process itself. Do you have any suggestions on what may be the cause?

    scheduler_1 | ERROR:dispatch.incident.scheduled:unsupported operand type(s) for -: 'NoneType' and 'datetime.datetime'

    For context I am running a fresh copy of the development branch through docker.

    opened by alexa-kelley-vim 32
  • Error: Unable to find slug: slack-contact

    Error: Unable to find slug: slack-contact

    SO, my old checkout is working, I did a pull from master this morning and it's broken:

    The old order that I was using was:

    • Create priority
    • Create Service
    • Create Document
    • Create Incident type

    today it is not creating Document, it's erroring:

    Screen Shot 2020-06-03 at 9 46 46 AM
    web_1       | INFO:     172.25.0.1:49720 - "GET /img/icons/favicon-16x16.png HTTP/1.1" 200 OK
    web_1       | INFO:     172.25.0.1:49724 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
    web_1       | INFO:     172.25.0.1:49722 - "GET /api/v1/incident_priorities/ HTTP/1.1" 200 OK
    web_1       | INFO:     172.25.0.1:49728 - "GET /api/v1/incident_types/?itemsPerPage=50&sortBy[]=name&descending[]=false HTTP/1.1" 500 Internal Server Error
    web_1       | ERROR:    Exception in ASGI application
    web_1       | Traceback (most recent call last):
    web_1       |   File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi
    web_1       |     result = await app(self.scope, self.receive, self.send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
    web_1       |     return await self.app(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
    web_1       |     await self.middleware_stack(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
    web_1       |     raise exc from None
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
    web_1       |     await self.app(scope, receive, _send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
    web_1       |     await response(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 197, in __call__
    web_1       |     async for chunk in self.body_iterator:
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
    web_1       |     task.result()
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
    web_1       |     await self.app(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__
    web_1       |     raise exc from None
    web_1       |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__
    web_1       |     await self.app(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
    web_1       |     await response(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 197, in __call__
    web_1       |     async for chunk in self.body_iterator:
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
    web_1       |     task.result()
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
    web_1       |     await self.app(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
    web_1       |     await response(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 197, in __call__
    web_1       |     async for chunk in self.body_iterator:
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
    web_1       |     task.result()
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
    web_1       |     await self.app(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
    web_1       |     raise exc from None
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
    web_1       |     await self.app(scope, receive, sender)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
    web_1       |     await route.handle(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle
    web_1       |     await self.app(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 146, in __call__
    web_1       |     await super().__call__(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
    web_1       |     await self.middleware_stack(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
    web_1       |     raise exc from None
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
    web_1       |     await self.app(scope, receive, _send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
    web_1       |     raise exc from None
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
    web_1       |     await self.app(scope, receive, sender)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
    web_1       |     await route.handle(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle
    web_1       |     await self.app(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app
    web_1       |     response = await func(request)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 204, in app
    web_1       |     response_data = await serialize_response(
    web_1       |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 126, in serialize_response
    web_1       |     raise ValidationError(errors, field.type_)
    web_1       | pydantic.error_wrappers.ValidationError: 4 validation errors for IncidentTypePagination
    web_1       | response -> items -> 0 -> template_document -> weblink
    web_1       |   none is not an allowed value (type=type_error.none.not_allowed)
    web_1       | response -> items -> 0 -> template_document -> name
    web_1       |   none is not an allowed value (type=type_error.none.not_allowed)
    web_1       | response -> items -> 1 -> template_document -> weblink
    web_1       |   none is not an allowed value (type=type_error.none.not_allowed)
    web_1       | response -> items -> 1 -> template_document -> name
    web_1       |   none is not an allowed value (type=type_error.none.not_allowed)
    web_1       | INFO:     172.25.0.1:49720 - "GET /api/v1/documents/?q=&page=1&itemsPerPage=10&sortBy[]=name&descending[]=false HTTP/1.1" 500 Internal Server Error
    web_1       | ERROR:    Exception in ASGI application
    web_1       | Traceback (most recent call last):
    web_1       |   File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi
    web_1       |     result = await app(self.scope, self.receive, self.send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
    web_1       |     return await self.app(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
    web_1       |     await self.middleware_stack(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
    web_1       |     raise exc from None
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
    web_1       |     await self.app(scope, receive, _send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
    web_1       |     await response(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 197, in __call__
    web_1       |     async for chunk in self.body_iterator:
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
    web_1       |     task.result()
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
    web_1       |     await self.app(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__
    web_1       |     raise exc from None
    web_1       |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__
    web_1       |     await self.app(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
    web_1       |     await response(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 197, in __call__
    web_1       |     async for chunk in self.body_iterator:
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
    web_1       |     task.result()
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
    web_1       |     await self.app(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
    web_1       |     await response(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 197, in __call__
    web_1       |     async for chunk in self.body_iterator:
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
    web_1       |     task.result()
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
    web_1       |     await self.app(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
    web_1       |     raise exc from None
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
    web_1       |     await self.app(scope, receive, sender)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
    web_1       |     await route.handle(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle
    web_1       |     await self.app(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 146, in __call__
    web_1       |     await super().__call__(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
    web_1       |     await self.middleware_stack(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
    web_1       |     raise exc from None
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
    web_1       |     await self.app(scope, receive, _send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
    web_1       |     raise exc from None
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
    web_1       |     await self.app(scope, receive, sender)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
    web_1       |     await route.handle(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle
    web_1       |     await self.app(scope, receive, send)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app
    web_1       |     response = await func(request)
    web_1       |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 204, in app
    web_1       |     response_data = await serialize_response(
    web_1       |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 126, in serialize_response
    web_1       |     raise ValidationError(errors, field.type_)
    web_1       | pydantic.error_wrappers.ValidationError: 4 validation errors for DocumentPagination
    web_1       | response -> items -> 4 -> weblink
    web_1       |   none is not an allowed value (type=type_error.none.not_allowed)
    web_1       | response -> items -> 4 -> name
    web_1       |   none is not an allowed value (type=type_error.none.not_allowed)
    web_1       | response -> items -> 5 -> weblink
    web_1       |   none is not an allowed value (type=type_error.none.not_allowed)
    web_1       | response -> items -> 5 -> name
    web_1       |   none is not an allowed value (type=type_error.none.not_allowed)
    web_1       | INFO:     172.25.0.1:49722 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
    web_1       | INFO:     172.25.0.1:49722 - "GET /service-worker.js HTTP/1.1" 304 Not Modified
    web_1       | INFO:     172.25.0.1:49722 - "GET /precache-manifest.0e22feb0b50332dfd9fe9adf70d545f9.js HTTP/1.1" 304 Not Modified
    
    opened by tomarv2 28
  • Redirect unauthed access to the app to login page

    Redirect unauthed access to the app to login page

    Is your feature request related to a problem? Please describe. Right now when I access the home page without logging in first. It stays stuck loading the dashboard like in the screenshot below: image

    Describe the solution you'd like If the user is not logged in redirect the user to the login page in case of the basic-authentication flow

    Describe alternatives you've considered Not sure if there's an alternative.

    bug 
    opened by sfc-gh-pkommini 27
  • db_sesssion is None, Using BasicAuth and only a subset of GSuite Plugins

    db_sesssion is None, Using BasicAuth and only a subset of GSuite Plugins

    Describe the bug Towards #686 I've made all the changes to use the service account without any delegation to do all the GSuite API calls. However, I found a bug while creating an incident. This is the state of what plugins are enabled, since without Domain-Wide Delegation we can't get gmail and calendar plugins to work, I've disabled them. image

    DEBUG:Updated the external ticket DT-40.:/usr/local/lib/python3.8/site-packages/dispatch/incident/flows.py:update_external_incident_ticket:167
    DEBUG:Incident created notifications sent.:/usr/local/lib/python3.8/site-packages/dispatch/incident/messaging.py:send_incident_created_notifications:270
    INFO:Dispatch Core App: Incident notifications sent:/usr/local/lib/python3.8/site-packages/dispatch/event/service.py:log:154
    DEBUG:Recommendation: Documents: [] Individuals: [] Teams: [] Services: []:/usr/local/lib/python3.8/site-packages/dispatch/route/service.py:create_recommendation:128
    ERROR:'NoneType' object has no attribute 'query':/usr/local/lib/python3.8/site-packages/dispatch/incident/flows.py:incident_create_flow:716
    Traceback (most recent call last):
      File "/usr/local/lib/python3.8/site-packages/dispatch/incident/flows.py", line 702, in incident_create_flow
        send_incident_participant_announcement_message(
      File "/usr/local/lib/python3.8/site-packages/dispatch/incident/messaging.py", line 391, in send_incident_participant_announcement_message
        participant_info = contact_plugin.instance.get(participant_email)
      File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_core/plugin.py", line 214, in get
        individual_service.get_by_email(db_session=db_session, email=email),
      File "/usr/local/lib/python3.8/site-packages/dispatch/individual/service.py", line 32, in get_by_email
        db_session.query(IndividualContact).filter(IndividualContact.email == email).one_or_none()
    AttributeError: 'NoneType' object has no attribute 'query'
    

    Looking closely at the function below:

    class DispatchContactPlugin(ContactPlugin):
        title = "Dispatch Plugin - Contact plugin"
        slug = "dispatch-contact"
        description = "Uses dispatch itself to resolve incident participants."
        version = dispatch_plugin.__version__
    
        author = "Netflix"
        author_url = "https://github.com/netflix/dispatch.git"
    
        def get(self, email, db_session=None):
            print(f"db_session is: {db_session}")
            return getattr(
                individual_service.get_by_email(db_session=db_session, email=email),
                "__dict__",
                {"email": email, "fullname": email},
            )
    

    I found that db_session if not passed is set to None in this call:

      File "/usr/local/lib/python3.8/site-packages/dispatch/incident/messaging.py", line 391, in send_incident_participant_announcement_message
        participant_info = contact_plugin.instance.get(participant_email)
    

    My question is:

    Does this warrant the change for this line of code from:

             participant_info = contact_plugin.instance.get(participant_email)
    

    to

            participant_info = contact_plugin.instance.get(participant_email, db_session)
    

    to pass the db_session as needed by the get() method, because the log suggests it's passed as none or am I missing something?

    bug Stale 
    opened by sfc-gh-pkommini 23
  • Improve documentation about PKCE

    Improve documentation about PKCE

    Hi, we are trying to adopt the tool, and we are struggling trying to configure PKCE with google auth, PKCE it's kind of new, we may not be fully getting it. But is it possible that you guys can help us configure that, so that we can contribute to the docs?

    The issue now, is that without an auth provider, the app is not usable. We also detected that may be an inconsistency between the docs and the code with this env var

    I also asked on a separate issue, and I tried reading the docs, but is still not clear, and I think this may be the case for the majority of the users.

    Thanks

    opened by gargrag 23
  • Issues with Basic Auth

    Issues with Basic Auth

    I'm trying to get basic auth set up and I have a few issues. I'm not using the dispatch-docker project as I'm trying to deploy to kubernetes.

    1. I've set DISPATCH_AUTHENTICATION_PROVIDER_SLUG=dispatch-auth-provider-basic, I was running into issues with the Vue app not redirecting to /login until I realized I had to set VUE_APP_DISPATCH_AUTHENTICATION_PROVIDER_SLUG at container build time, as well. Even with this, /incidents/report fails to get Type and Priority because the JWT token is not sent to the API, even though it is present in local storage. It seems the Authorization header isn't being set correctly or in all places?

    When visiting /incidents/report with a valid token in local storage:

    INFO:     172.16.7.67:58766 - "GET /api/v1/incident_priorities/?sortBy[]=view_order&descending[]=false HTTP/1.1" 500 Internal Server Error
    ERROR:    Exception in ASGI application
    Traceback (most recent call last):
      File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi
        result = await app(self.scope, self.receive, self.send)
      File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
        return await self.app(scope, receive, send)
      File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
        await self.middleware_stack(scope, receive, send)
      File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
        raise exc from None
      File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
        await self.app(scope, receive, _send)
      File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
        await response(scope, receive, send)
      File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 197, in __call__
        async for chunk in self.body_iterator:
      File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
        task.result()
      File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
        await self.app(scope, receive, send)
      File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__
        raise exc from None
      File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__
        await self.app(scope, receive, send)
      File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
        await response(scope, receive, send)
      File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 197, in __call__
        async for chunk in self.body_iterator:
      File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
        task.result()
      File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
        await self.app(scope, receive, send)
      File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
        await response(scope, receive, send)
      File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 197, in __call__
        async for chunk in self.body_iterator:
      File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
        task.result()
      File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
        await self.app(scope, receive, send)
      File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
        raise exc from None
      File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
        await self.app(scope, receive, sender)
      File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
        await route.handle(scope, receive, send)
      File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle
        await self.app(scope, receive, send)
      File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 146, in __call__
        await super().__call__(scope, receive, send)
      File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
        await self.middleware_stack(scope, receive, send)
      File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
        raise exc from None
      File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
        await self.app(scope, receive, _send)
      File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
        raise exc from None
      File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
        await self.app(scope, receive, sender)
      File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
        await route.handle(scope, receive, send)
      File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle
        await self.app(scope, receive, send)
      File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app
        response = await func(request)
      File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 186, in app
        solved_result = await solve_dependencies(
      File "/usr/local/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 520, in solve_dependencies
        solved = await run_in_threadpool(call, **sub_values)
      File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 34, in run_in_threadpool
        return await loop.run_in_executor(None, func, *args)
      File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
        result = self.fn(*self.args, **self.kwargs)
      File "/usr/local/lib/python3.8/site-packages/dispatch/auth/service.py", line 82, in get_current_user
        return get_or_create(db_session=db_session, user_in=UserRegister(email=user_email))
      File "pydantic/main.py", line 338, in pydantic.main.BaseModel.__init__
    pydantic.error_wrappers.ValidationError: 1 validation error for UserRegister
    email
      none is not an allowed value (type=type_error.none.not_allowed)
    
    1. visiting /incidents/report for the first time always redirects to /login

    2. /login redirects to the dashboard on successful login instead of back to the report page, which would confuse users who are just there to report issues.

    3. Is there a way to separate users who are able to access the dashboard vs users who are able to report incidents?

    bug 
    opened by bsundsrud 20
  • enhancement/case-participants-roles-and-permissions

    enhancement/case-participants-roles-and-permissions

    Initial skeleton for case participants. This PR adds participants (currently reporter and observer) to the case model and allows users to add observers on the front-end. Additionally, this adds the participants tab to the case edit sheet to remain consistent between incident and case front-end.

    Observer Role

    • Can view cases
    • Receives case created notifications (when implemented)
    • ...
    enhancement 
    opened by wssheldon 0
  • Checks for auth token on app refresh

    Checks for auth token on app refresh

    Hi, All!

    I noticed that, at least, in case of basic auth, the token stored in the storage is not checked for. Therefore, upon refresh user needs to login again.

    I suggest some potential change that fixes this. I'm a newcomer to dispatch, so I expect I will learn something new soon :)

    Look forward to your feedback!

    Cheers, Victor

    bug 
    opened by vindex10 2
  • Bugfix/incident-endpoint-performance

    Bugfix/incident-endpoint-performance

    They query performance for /incidents is quite poor. Via nested pedantic relationships we are loading a cascading set of attributes we don't need. This PR introduced the idea of "minimal" models that try to not load any unnecessary sub-models. This along with modifying some relationships' lazy loading to use subqueries provided a 10x reduction in API response time (loading 500 incidents).

    There are likely similar improvements to be back for cases and other endpoints. Should the need arise. I've removed several "nested" models that were similar to "minimal" but never actually used.

    enhancement 
    opened by kevgliss 0
  • Enhancement/slack bolt

    Enhancement/slack bolt

    This PR refactors the current slack functionality to use the bolt and blockkit libraries.

    @mvilanova, this isn't perfect and still needs some more testing. But I would appreciate if you took a look and maybe did some testing if you had some cycles available.

    I've been mostly using socket mode as it's a bit easier to add commands in my dev environment.

    enhancement 
    opened by kevgliss 1
  • postgres role doesnt exist

    postgres role doesnt exist

    I have noticed in the new release, after the dispatch-build , when its asking to load sample data, I have give yes, there I could see this role error, does it effect anything image

    & in the older release while initializing db, I saw this error dispatch-20220801- alembic.util.exc.CommandError: Can't locate revision identified by 'eb348d46afd0'

    triaged 
    opened by manireddyk 2
Releases(v20221207)
  • v20221207(Dec 7, 2022)

    Hi Dispatch users!

    This is the first release of the month of December and last one of 2022. This release includes new features to speed up the process of creating and setting up projects, support for Github codespaces, and enhancements and bug fixes through the application.

    Thanks for your continuous support, and happy holidays and best wishes for 2023!

    Breaking Changes:

    • With this release, we have migrated all frontend envvars to use the VITE build system. Due to this, all previous envvars prefixed with VUE_ should be migrated to a VITE_ prefix.

    Enhancements:

    • Adds support for creating default configuration settings for projects on project creation (#2729) by @mvilanova
    • Returns incident types ordered by name and severities and priorities ordered by viewing order (#2750) by @mvilanova
    • Improves to incident edit permissions (#2747) by @mvilanova
    • Changes participant welcome message language to make it inclusive of all types of incidents (#2744, #2748) by @mvilanova
    • Improves Slack direct message language to incident commander (#2743) by @mvilanova
    • Upgrades Python base and development requirements (#2740, #2739) by @mvilanova
    • Updates list of Slack commands that require a role to be run (#2738) by @mvilanova
    • Adds support for GitHub codespaces (#2686, #2697) by @kevgliss

    Bug Fixes:

    • Checks if incident participant is a task assignee not owner before allowing them to leave the incident conversation (#2737) by @mvilanova
    • Forces a page refresh for non basic auth providers (#2733) by @kevgliss
    • Replaces localhost with 127.0.0.1 in Vite config to resolve connection issue with Node and Vite (#2731) by @mvilanova
    • Removes PWA and its manifest (#2728, #2736) by @kevgliss
    • Fixes issue where calls to the /settings endpoint fails due to being called before SSO / PKCE libraries are initialized. (#2723, #2724, #2725) by @kevgliss
    • Fixes an issue with the core dispatch ticket plugin (#2712) by @kevgliss
    • Updates commander or reporter on incident update only if needed (#2703) by @mvilanova
    • Removes references to severity for incident report in Slack (#2695, #2698, #2699) by @kevgliss
    • Fixes data export feature (#2688) by @mvilanova
    Source code(tar.gz)
    Source code(zip)
  • v20221110(Nov 10, 2022)

    Hi Dispatch users!

    We've been busy working on Dispatch since the last release in September and this release comes with a ton of new useful features, improvements, and bug fixes across the app. Here are some that are worth highlighting:

    • Allowing to define and set incident severities to represent the measured impact resulting from an incident.
    • Allowing to assign a new participant role called Observer to improve accuracy of incident cost calculation. Incident participants that get resolved via engagement filters and added to the incident on incident creation or modification will be assigned this role. Time spent on this role won't be counted against incident cost. Individuals with this role will get the role converted to Participant if they send 10 or more messages to the incident channel.
    • Allowing to view signal instances associated with a case.
    • Ability to report cases via intake form at https://dispatch.example.net/default/cases/report.
    • Allowing to configure client settings via an API call.

    Give it a try and let us know what you think. Thanks to all community members for your continuous help and support!

    Enhancements:

    • Shortens task notifications text and converts notifications to ephemeral to reduce noise in incident channels (#2679) by @mvilanova
    • Forces the user to specify the incident project (#2673) by @kevgliss
    • Don't attempt to sync triggers automatically on database upgrade (#2666) by @kevgliss
    • Allows to configure client settings via an API call (#2664) by @kevgliss
    • Adds a settings filter for project settings (#2659) by @kevgliss
    • Disables Run Workflow option if incident is closed or case is escalated or closed (#2655) by @mvilanova
    • Renames moderate severity to medium severity (#2654) by @mvilanova
    • Moves signal definitions to its own settings section (#2653) by @mvilanova
    • Allows to view signal instances associated with a case (#2643) by @kevgliss
    • Uses vite to build the frontend (#2637) by @kevgliss
    • Adds section for commander paged in the incident report receipt card (#2636) by @mvilanova
    • Announces when participants are assigned the observer role in the incident channel (#2634) by @mvilanova
    • Improves participant role's activity (#2633) by @mvilanova
    • Enhancements to signal deduplication (#2631) by @kevgliss
    • Adds support for a new incident observer participant role (#2625) by @mvilanova
    • Pre-fills mapped incident type in case type in escalate case form (#2619) by @mvilanova
    • Disables escalate option and button when case is escalated or closed (#2618) by @mvilanova
    • Reorganizes UI Panel (#2609) by @mvilanova
    • Adds support for incident severity (#2608) by @mvilanova
    • Allows for tasks to be specifically excluded (useful for scheduling signals) (#2589) by @kevgliss
    • Adds support for visibility in SearchFilter (#2587) by @jneelamekam
    • Shortens total response hours widget label (#2565) by @mvilanova
    • Hides escalate option and button if case is already escalated or closed (#2564) by @mvilanova
    • Deprecates relationship between task and ticket (#2563) by @mvilanova
    • Enhances case management workflows (#2550) by @kevgliss
    • Allows to load more than five incident types (#2548) by @mvilanova
    • Shows related cases in the incident details tab (#2546) by @mvilanova
    • Allows to load more tag types (#2545) by @mvilanova
    • Improves logging configuration (#2544) by @mvilanova
    • Enhances the case escalation modal (#2541) by @kevgliss
    • Enable case types in one project to be mapped to incident types in any project (#2540) by @mvilanova
    • Adds case reporting support (#2536) by @kevgliss

    Bug Fixes:

    • Fixes validation that allowed multiple FAQs to be defined (#2681) by @kevgliss
    • Adds correct resource type when FAQs are created (#2680) by @kevgliss
    • Adds a case cascade to signal instances to allow for the deletion of cases (#2678) by @kevgliss
    • Updates the node version included in the docker file (#2677) by @kevgliss
    • Ensures we only show enabled incident types (#2670) by @kevgliss
    • Removed resource weblink resource validation as web link is not necessarily a URL (#2669) by @kevgliss
    • Active cases and incidents respect project filter query argument (#2668) by @kevgliss
    • Allow for 100% sampling rate (#2667) by @kevgliss
    • Ensures that filtering is only enabled for project settings subMenu's and not others (#2665) by @kevgliss
    • Adds missing incident severity to daily incidents report (#2663) by @mvilanova
    • Sorted tasks by creation date (#2658) by @jneelamekam
    • Closes db sessions when we're done with them to prevent having idle sessions (#2650) by @kevgliss
    • Check incident visibility before allowing individuals to join or subscribe to an incident (#2649) by @mvilanova
    • Always ensure there is a fingerprint for each signal (#2641, #2642) by @kevgliss
    • Fixing import and database revision branches (#2640) by @kevgliss
    • Sorted PD Schedule names (#2635) by @jneelamekam
    • Vue sentry fix (#2632) by @kevgliss
    • Disables dropping search triggers and functions (#2613) by @mvilanova
    • Fixes null values in case reporting form and allows for url updating and copying URL to clipboard (#2576) by @kevgliss
    • Sets the triage_at time when case is escalated via UI modal (#2568) by @mvilanova
    • Uses the 'simple' dictionary to provide better search consistency (#2559) by @kevgliss

    Documentation:

    • Adds small descriptions of what Cases are (#2578) by @caioaao
    • Fixes to Slack config (#2574) by @caioaao
    • Adds hint to using CLI to install plugins (#2569) by @caioaao
    Source code(tar.gz)
    Source code(zip)
  • v20220915(Sep 15, 2022)

    Hi Dispatch users!

    This is the first release of the month of September. This release includes lots of improvements and bug fixes and initial support for creating and managing cases. For cases, we're only creating a ticket, group, storage, and document if their respective plugins are enabled. Cases have different statuses than incidents, and when moved to an escalated status, an incident will be created and mapped to the case if the case's type is mapped to an incident type. Give it a try and let us know what you think. Thanks to all community members for your continuous help and support!

    Features:

    Enhancements:

    • Improves incidents dashboard (#2517) by @mvilanova
    • Renames and reorders columns in the Feedback table (#2511) by @mvilanova
    • Adds header-based auth plugin (#2494) by @filippog
    • Truncates incident description and resolution when they're too long (#2458) by @mvilanova
    • Always upper log_level before logging config (#2440) by @filippog
    • Re-organizes categories in the project settings panel (#2402) by @mvilanova
    • Reverts to using logger for logging incident cost updates to reduce number of events in the incident timeline (#2393) by @mvilanova
    • Disables other empty swaggers for container apps (#2521) by @kevgliss

    Bug Fixes:

    • UI table layouts (#2501) by @kevgliss
    • Adds missing Vue template for project in the feedback table (#2505) by @mvilanova
    • Allows setting breadcrumbs to utilize the whole width before collapsing (#2506) by @kevgliss
    • Checks if commander has a relationship to an oncall service before attempting to page (#2493) by @mvilanova
    • Uses a different Jira issue template for incidents opened as closed (#2473) by @mvilanova
    • Sets response model to None for all delete endpoints to address breaking changes in FastAPI v0.80.0 (#2472) by @mvilanova
    • Sets a default resolution if not provided on case or incident creation (#2469) by @mvilanova
    • Fixes issue during the creation of incident collaboration documents (#2455) by @mvilanova
    • Fixes doc creation issue if template is None (#2443) by @3c-un-str
    • Wrap gmail.send in try/except due to tenacity.RetryError (#2430) by @3c-un-str
    • Do not process events generated by Slackbot (#2421) by @mvilanova
    • Adds protections to prevent hitting char limits in SaaS integrations (#2420) by @mvilanova
    • slack_menu empty tag list fix; uvloop support. (#2419) by @3c-un-str
    • Copy over incident_costs, terms & duplicates before updating incident from Slack (#2410) by @3c-un-str

    Documentation:

    • Adds documentation for case and updates other documents (#2525, #2526, #2527) by @mvilanova
    Source code(tar.gz)
    Source code(zip)
  • v20220801(Aug 1, 2022)

    Hi Dispatch users!

    This is the first release of the month of August. This release includes improvements and bug fixes in the Web UI, backend, and documentation. Thanks to all community members for your continuous help and support!

    Enhancements:

    • Response cost scheduler and calculation enhancements (#2381) by @mvilanova
    • Improves the new/ edit project UI component (#2380) by @mvilanova
    • Improves incident priority docstrings and error messages (#2367) by @mvilanova
    • Adds noqa to evergreen scheduled job import (#2345) by @mvilanova
    • Improves debugging messages in term scheduled job (#2339) by @mvilanova
    • Removes undefined and unused feature label (#2333) by @mvilanova
    • Adds tests label to enforce labels github workflow (#2332) by @mvilanova
    • Moves tag description after name and adds URI to tag table (#2330) by @mvilanova

    Bug Fixes:

    • Increases incident task sync loopback to 10 minutes (#2368) by @mvilanova
    • Fixes bugs impacting filtering users by organization and getting users' organization role (#2336) by @mvilanova
    • Fixes bug preventing the creation of new incident priorities if a color is specified (#2391) by @mvilanova

    Tests:

    • Disables schemathesis tests until we have time to fix them (#2331) by @mvilanova

    Documentation:

    • Fixes typos in document paths and adds documentation for tag and tag type (#2329) by @mvilanova
    Source code(tar.gz)
    Source code(zip)
  • v20220706(Jul 6, 2022)

    Hi Dispatch users!

    This is the first release of the month of July. In this release, we fixed and improved evergreen reminders, added support for fetching and applying users' default projects for filtering purposes when custom authentication providers are used, squashed other bugs, and improved our documentation. Thanks again to all community members for your help!

    Enhancements:

    • Load user settings for filtering purposes regardless of the auth provider used (#2226, #2316, #2316, #2317,#2324,#2318) by @mvilanova
    • Logs a warning if ticket plugin is not enabled on ticket creation (#2291) by @mvilanova

    Bug Fixes:

    • Flips the order in which we delete triggers and their associated functions (#2304) by @mvilanova
    • Fixes and improves evergreen reminders (#2303) by @mvilanova
    • Always return all incidents to ensure cost for all incidents is calculated (#2255) by @mvilanova

    Documentation:

    • Updates incident type documentation (#2292) by @mvilanova
    • Fixes broken documentation TOC (#2278) by @mvilanova
    Source code(tar.gz)
    Source code(zip)
  • v20220607(Jun 7, 2022)

    Hi Dispatch users!

    This is the first release of the month of June. This release is packed with bug fixes (thanks to all the community users who reported them!), language improvements in the incident intake form and the ability for the app to apply users' default projects to all data filters across the app when basic authentication is used.

    Enhancements:

    • Improves intake form language (#2228) by @mvilanova
    • Uses users' default projects for incident filtering purposes (#2210) by @mvilanova
    • Requires Python 3.9 or greater and updates its requirements (#2250, #2251, #2207) by @mvilanova

    Bug Fixes:

    • Always return all incidents when querying the database (#2255) by @mvilanova
    • Prevents overwriting the participant's oncall service when different roles are mapped to different oncall services and a participant has multiple roles (#2254) by @mvilanova
    • Fixes organization banners (#2248) by @mvilanova
    • Fixes an issue causing organization name to not being correctly extracted from request parameters (#2247) by @mvilanova
    • Fixes an issue impacting the ability to create new projects (#2246) by @mvilanova
    • Fixes ability to change user's role (#2242) by @mvilanova
    • Reverts to using hybrid property for incident total cost calculation (#2233) by @mvilanova
    • Populates contact information in daily feedback report emails (#2225) by @mvilanova
    • Saves document template description in the database on document creation (#2224) by @mvilanova
    • Fixes resource foreign keys in incident table (#2221) by @mvilanova
    • Makes model_cls param optional (#2215) by @mvilanova
    • Fixes badspec exception (#2214) by @mvilanova
    Source code(tar.gz)
    Source code(zip)
  • v20220504(May 4, 2022)

    Hi Dispatch users!

    This is a small release with some enhancements and bug fixes.

    Happy responding!

    Enhancements:

    • Do not interact with conversations if they are archived (#2188) by @mvilanova
    • Only update the cost of active and stable incidents (#2182) by @mvilanova

    Bug Fixes:

    • Checks if participant.individual exists before accessing it (#2187) by @mvilanova
    • Only use markdown for new incident participant message when participant weblink exists (#2174) by @mvilanova
    Source code(tar.gz)
    Source code(zip)
  • v20220428(Apr 28, 2022)

    Hi Dispatch users!

    This release is mostly about enhancing and fixing bugs in the Web UI. You can now set custom colors to incident priorities and click on and see more information about tags in the Web UI. List of enhancements, bug fixes, and documentation improvements can be found below.

    Enhancements:

    • Allows to set custom colors to incident priorities for dashboarding purposes (#2151, #2157) by @mvilanova
    • Updates executive report template text (#2149) by @mvilanova
    • Uses the simple search dictionary for incident type search (#2121) by @mvilanova
    • Hovering over a tag name shows its description and clicking on it opens its URI (#2107) by @mvilanova

    Bug Fixes:

    • Dedupes resolved incident roles emails (#2173) by @mvilanova
    • Adds required keyword-only argument to incident_create_flow call (#2170) by @mvilanova

    Documentation:

    • Updates installation document (#2168) by @mvilanova
    • Updates Slack documentation (#2109, #2113, #2114) by @mvilanova
    • Updates the incident templates doc (#2108) by @mvilanova
    Source code(tar.gz)
    Source code(zip)
  • v20220322(Mar 22, 2022)

    Hi Dispatch users!

    This is the second release of the month of March. This release is mostly about enhancing and fixing bugs in the Web UI. It also includes ground work to allow Dispatch members to set default settings that will later be used for filtering across the UI such as default projects. List of enhancements and bug fixes below.

    Enhancements:

    • Adds a protection for when we send the feedback direct message to all participants. (#2090) by @mvilanova
    • Moves owner permission check for user update to function logic. (#2089) by @mvilanova
    • Adds support for multi year charts and turns off animations to help performance. (#2087) by @kevgliss
    • Adds support for setting default projects in member settings. (#2083) by @mvilanova
    • Allows the primary navigation bar to be minimized. (#2074) by @kevgliss
    • Changes default time range to current month plus full previous month. (#2072) by @mvilanova
    • Enhances the data source UI. (#2071) by @kevgliss
    • Return projects and incident types sorted by name desc. (#2061) by @mvilanova
    • Adds resolution to incident close review notification. (#2058) by @mvilanova
    • Improves title of dashboard filter dialogs. (#2053) by @mvilanova

    Bug Fixes:

    • Uses the simple search dictionary for fulltext search. (#2093) by @kevgliss
    • Fixes a few issues with the incident dashboard drilldown table. (#2088) by @kevgliss
    • Fixes a typo such that aggregate correctly gets reset. (#2086) by @kevgliss
    • Fixes issue with comboboxes not displaying multiple items with the same name. (#2084) by @kevgliss
    • Makes default time range timezone aware. (#2075) by @mvilanova
    • Bugfix/data status (#2073) by @kevgliss
    • Making source required for query creation. (#2068) by @kevgliss
    • Fixing selects, making them searchable. (#2067) by @kevgliss
    • Fixing map to filter. (#2066) by @kevgliss
    • Fixes incident forecast and makes sure url params are respected in dashboard. (#2062) by @kevgliss
    • Fixes issue with incident task creation. (#2060) by @mvilanova
    • Fixes bug in task dashboard (#2054) by @kevgliss
    Source code(tar.gz)
    Source code(zip)
  • v20220310(Mar 10, 2022)

    Hi Dispatch users!

    This is the first release of the month of March. This release includes changes to improve data filtering reliability, the ability to capture and export incident resolution, and support for storing and keeping track of metadata about data sources and queries among other improvements and bug fixes.

    Enhancements:

    • Adds support for data source metadata repository (#2000) by @kevgliss
    • Allows for capturing and exporting incident resolution (#1992) by @mvilanova
    • Adds incident closed at time to incidents table (#2048) by @kevgliss
    • Adds apply filter button to all filtering dialogs (#2041, #2053, #2046) by @mvilanova and @kevgliss

    Bug Fixes:

    • Improves data filtering reliability (#2040, #2052) by @mvilanova
    • Fixes incident forecasting (#2049) by @kevgliss
    • Disables ad-hoc tag creation (e.g. combobox) (#2047) by @kevgliss
    • Fixes task status filtering and adds the ability for model to be specified during table option parsing (#2045) by @kevgliss
    • Fixes indentation when checking if commander needs to be paged on incident creation (#2014) by @mvilanova
    • Fixing an issue with spacy library change (#2009) by @kevgliss
    Source code(tar.gz)
    Source code(zip)
  • v20220214(Feb 14, 2022)

    Hi Dispatch users!

    This is the first release of the month of February. This release includes changes to improve timeline logging for different events, adds two new bar charts for incident commander and reporter location to the dashboard, and addresses a pesky race condition on incident update among other improvements and bug fixes.

    Enhancements:

    • Creates timeline event when incident document is opened or marked as read only (#1981) by @mvilanova
    • Improves logging for ticket status changes and assign role flow (#1975) by @mvilanova
    • Creates a timeline event when the ticket is updated (#1967) by @mvilanova
    • Update our estimate of yearly business hours. (#1962) by @forestmonster
    • Adds bar charts for incident commanders and reporters location to the dashboard (#1961) by @mvilanova
    • Updates the NPM modules version (#1919) by @mvilanova
    • Adds IPython package to development requirements (#1968) by @mvilanova

    Bug Fixes:

    • Addresses a race condition on incident update (#1976, #1980, #1982, #1988) by @mvilanova
    • Do not reactivate incident participant if incident status is closed (#1974) by @mvilanova
    • Bumps tomli package version to resolve a conflict (#1973) by @mvilanova
    • Fixes the organization update test (#1972) by @mvilanova
    • Fixes incident pydantic models and hybrid properties (#1963) by @mvilanova
    • Reverts default value for business work hours in year back to 2080 (#1956) by @mvilanova
    • Initializes data properties to avoid typerror exceptions in report submission card (#1944) by @mvilanova
    • Shows a forbidden message on resource edit when user role permissions are not sufficient (#1936) by @mvilanova
    • Disables the name field when editing an organization (#1935) by @mvilanova
    • Returns HTTP 409 if an organization exists on organization create (#1925) by @mvilanova
    • Check if data exists before accessing it in report received card (#1920) by @mvilanova
    Source code(tar.gz)
    Source code(zip)
  • v20220119(Jan 19, 2022)

    This is the first release of 2022, which includes some enhancements and bug fixes. You can find more details below:

    Enhancements:

    • Allows to define database engine pool size and max overflow values (#1899, #1900) by @mvilanova
    • Updates pinned version for scipy package (#1849) by @mvilanova
    • Removes commander and liaison service columns from incident type table (#1830) by @mvilanova
    • Makes the monaco editor load lazily reduces bundle size by 3x (#1825) by @kevgliss

    Bug Fixes:

    • Reverts to IncidentRead in IncidentPagination Pydantic model (#1907) by @mvilanova
    • Replaces localhost with 127.0.0.1 in devServer vue.config.js (#1906) by @mvilanova
    • Skips plugin create instance test until we have a fix (#1866) by @mvilanova
    • Fix spelling error on feedback button (#1862) by @forestmonster
    • Fixes schemathesis tests (#1847) by @mvilanova
    • Don't send update notifications on closed incidents. (#1846) by @kevgliss
    • Fixes typo in subscribe to incident messaging (#1845) by @mvilanova
    • Fixes an issue were flow breaks when no group plugin exists (#1838) by @kevgliss
    • Fixes a bug were settings couldn't be filled on plugin creation (#1837) by @kevgliss
    • Makes project owner optional (#1836) by @kevgliss
    • Removes duplicated Pydantic fields (#1831) by @mvilanova
    • Removes status code check (#1824) by @kevgliss
    • Fixes issue with the incident type dashboard not rendering (#1821, #1823) by @kevgliss
    • Fixes an issue with missing reported at (#1817) by @kevgliss
    • Fixes an issue with marking storage readonly when there is none (#1816) by @kevgliss
    • Adds some activity for old incidents (#1815) by @kevgliss

    Tests:

    • Skips plugin create instance test until we have a fix (#1866) by @mvilanova
    Source code(tar.gz)
    Source code(zip)
  • v20211116(Nov 16, 2021)

    The first release of November! This release contains quite a few fixes and some helpful enhancements, including move more settings from the configuration file to the UI.

    Enhancements:

    • Excludes fields not required for dashboards (#1814) by @kevgliss
    • Removes some google drive specific options to the plugin instance (#1794) by @kevgliss
    • Adds a subscribe button to incident notifications (#1793) by @kevgliss
    • Adds UI elements for project settings (#1792) by @kevgliss
    • Adds a participant message counter which is then used for more accurate cost calculations (#1783) by @kevgliss
    • Adds the ability to mark tags types as mutually exclusive (#1782) by @kevgliss
    • Adds ability to mark incidents readonly on incident close (#1780) by @kevgliss
    • Moves more settings to projects and deprecates unneeded settings (#1773) by @kevgliss
    • Makes written feedback required to ensure it can be actioned (#1772) by @mvilanova
    • Removes some google drive specific options to the plugin instance (#1769) by @kevgliss
    • Adds generic workflow plugin that calls a API endpoint to trigger a workflow (#1764) by @jtorvald
    • Moves unneeded arrow dep (#1762) by @kevgliss
    • Allowing for multiple tags to be set <key>:<value>,<key1>:<value1> (#1749) by @kevgliss
    • Improves logging in workflow scheduled jobs when plugin is not enabled (#1742) by @mvilanova

    Bug Fixes:

    • Allows for plugin secrets to be updated (#1811) by @kevgliss
    • Fixes our ability to disabling downloading of incident document (#1808) by @kevgliss
    • Fixes the subscribe to incident ui button (#1807) by @kevgliss
    • Fixes issues with slack tagging and socket mode (#1806) by @kevgliss
    • Fixing bug with incident cost calculation (#1804) by @kevgliss
    • Fixes issue creating organizations (#1791) by @kevgliss
    • Making socket mode optional in UI (#1779) by @kevgliss
    • Throws a better error if no workflows are available (#1768) by @kevgliss
    • Adds project information to documents (#1760) by @kevgliss
    • Updating package-lock.json (#1746) by @kevgliss
    • Improves get or create user function to avoid db integrity errors (#1743) by @mvilanova
    • Changes weblink default to empty string (#1741) by @mvilanova
    • Fixes bug where plugin enablement did not take project into consideration (#1738) by @kevgliss

    Documentation:

    • First user should be owner not admin (#1781) by @kevgliss
    Source code(tar.gz)
    Source code(zip)
  • v20211015(Oct 15, 2021)

    This is the first release of October!

    This release migrates configuration settings for plugins from the .env file to the Web UI. It also includes a long list of other improvements and bug fixes. List of merged changes can be found below:

    Enhancements:

    • Improves help documentation for Slack app user id (#1727) by @mvilanova
    • Improves incident review direct message sent on incident close (#1698) by @mvilanova
    • Updates example configuration .env file (#1697) by @mvilanova
    • Replaces incident cost type select with combobox (#1679) by @mvilanova
    • Supports windows file path & env vars for CLI serve command (#1638) by @axellaurelut
    • Adds Python 3.9 to setup.py (#1629) by @anukaal
    • Moves plugin configuration from .env file to Web UI (#1619) by @kevgliss

    Bug Fixes:

    • Adds resolved liaison and scribe roles to incident resources (#1726) by @mvilanova
    • Moves paging the commander to the incident creation flow (#1718) by @mvilanova
    • Adds missing config kwarg to workflow modal handler and action functions (#1717, #1663) by @mvilanova, @kevgliss
    • Adds missing service_id param to opsgenie plugin code (#1716) by @mvilanova
    • Fixes issue when switching orgs with spaces in their names (#1711) by @mvilanova
    • Saves app theme in localStorage (#1708) by @jtorvald
    • Fixes commander resolution on incident creation (#1702) by @mvilanova
    • Fixes database revision (#1696) by @mvilanova
    • Combines date and time pickers in details tab (#1695) by @kevgliss
    • Fixes issue with missing values during migration (#1689) by @kevgliss
    • Fixing missing config parameter in Slack menu (#1686) by @kevgliss
    • Ensure search expression is not null (#1685) by @kevgliss
    • Do not send tactical report reminder on incident update if status has not changed (#1684) by @mvilanova
    • Fixes workflow tests (#1678) by @kevgliss
    • Respects commander when passed during incident creation (#1677) by @kevgliss
    • Fixes issue with relying on decorator to provide slack config (#1676) by @kevgliss
    • Fixes several issues with monitor (#1675, #1667, #1666, #1665) by @kevgliss
    • Re-adds plugin combobox (#1662) by @kevgliss
    • Adjusts incident task lookback (#1661) by @kevgliss
    • Fixes issue with decorator stackoverflows (#1660) by @kevgliss
    • Fixes issues with Jira configuration and plugin (#1658, #1657) by @kevgliss
    • Fixes organization admin and manager permissions (#1648) by @mvilanova
    • Allows all roles except member to see restricted incidents (#1645) by @mvilanova
    • Fixes incident date filtering (#1644) by @mvilanova
    • Fixes incident type plugin metadata UI (#1643) by @kevgliss
    • Fixes issue with forecast filter (#1642) by @kevgliss
    • Fixes template creation within incident types (#1640) by @kevgliss
    • Fixes table name for incident_role_incident_priority in db migration (#1639) by @mnuck-fp
    • Fixes build errors induced by move to slim base image (#1628) by @mnuck-fp
    • Fixes incident tag creation (#1618) by @kevgliss
    • Fixes an issue with service id confusion and tagging incident creation (#1617) by @kevgliss

    Documentation:

    • Updates description for incident visibility (#1656) by @mvilanova
    Source code(tar.gz)
    Source code(zip)
  • v20210913(Sep 13, 2021)

    This is the first release of September!

    Two new features to highlight:

    This release adds the ability to specify evergreen notifications for services and notifications. Evergreen notifications are email reminders (typically once per quarter) that remind resource owners to keep their resources current. We now support evergreen notifications for Incident Templates, Runbooks, Services (e.g. pagerduty oncalls), and notifications (slack, email, etc.,).

    Also in this release, we introduce the idea of "incident roles". In the past, incident types would define which on-call service would be mapped to the incident commander (e.g. all vulnerability incidents would be mapped to AppSec). With incident roles, we've introduced more flexibility allowing you to define who should be assigned the incident commander role (or the scribe or the liaison roles) based on an incident's type, priority, or even tags associated with it.

    Enhancements:

    • Adds better repr for our sqlalchemy objects (#1614) by @kevgliss
    • Adds functionality to group release notes by label (#1611) by @kevgliss
    • We do not resolve incident roles and page the commander for incidents opened as closed (#1610) by @mvilanova
    • Removes tracking-only checkbox from incident reporting form (#1608) by @mvilanova
    • Adding tagging via slack message events (#1587) by @kevgliss
    • Enhancement/evergreen (#1584) by @kevgliss
    • Adds logout functionality to UI (#1580) by @kevgliss
    • Adds some UI documentation and tightens up table interface (#1575) by @kevgliss
    • Removing un-needed lens (#1553) by @kevgliss
    • Enhancement/participant role filters (#1540) by @kevgliss
    • Addresses some sticky circular imports with our pydantic models (#1535) by @kevgliss
    • Ensures that the update button is correctly aligned (#1534) by @kevgliss
    • Allow build time VUE_APP variables (#1533) by @ymatsiuk
    • Speeds up the responsiveness of cli commands (#1531) by @kevgliss
    • Adding dependency labels (#1527) by @kevgliss

    Bug Fixes:

    • Ensures new incident roles match all priorities (#1616) by @kevgliss
    • Fixes issue when setting the incident cost in the ticket (#1613) by @mvilanova
    • Fixes an issue where incident tags could not be updated. (#1612) by @kevgliss
    • Making primary properties optional (#1609) by @kevgliss
    • Fixing an issue were multiple transactions could happen in the same session (#1606) by @kevgliss
    • Fixes bug in how tactical reports are created via the UI. (#1604) by @kevgliss
    • Allowing the default incident type and priorities to be used (#1599) by @kevgliss
    • Fixing issue where FAQ wouldn't populate on pre-filled projects (#1596) by @kevgliss
    • Fixing issue creating new roles (#1583) by @kevgliss
    • Fixes an issue where an users password would be reset after a role change. (#1579) by @kevgliss
    • Uses correct enum when setting resource type for executive report documents (#1568) by @mvilanova
    • Fixes issue with trigger function on organization creation (#1567) by @mvilanova
    • Fixes OrganizationSlug regex (#1565) by @mvilanova
    • Renames label doc to documentation (#1562) by @mvilanova
    • Fixes issue with global search (#1558) by @kevgliss
    • Fixes issue where 'stable_at' wasn't being set from the UI. (#1552) by @kevgliss
    • Ensuring that commands issued from outside of incident channels specify organization (#1551) by @kevgliss
    • Fixes issue with the wrong description being saved for tasks. (#1546) by @kevgliss
    • Installs the plugins before running scheduled tasks (#1544) by @mvilanova
    • Makes id in ProjectRead optional (#1543) by @mvilanova
    • Revert "Queries Project API if project parameter is included in URL" (#1542) by @mvilanova
    • Queries Project API if project parameter is included in URL (#1541) by @mvilanova
    • Fixes issue with submitting an incident with a visibility (#1537) by @kevgliss
    • Fixes issues with the way that the plugin instance combo box was being used (#1532) by @kevgliss
    • Bugfix/sample data columns (#1530) by @kevgliss
    • Fixes an issue with term filters (#1528) by @kevgliss
    • Syncing document terms was accessing the wrong attribute (#1526) by @kevgliss

    Documentation:

    • fix formatting typos (#1603) by @roor0
    • Adds help menu (#1586) by @kevgliss
    • Adds some UI documentation and tightens up table interface (#1575) by @kevgliss
    • Adds parameters command documentation (#1571) by @kevgliss
    • Update "First User" instructions in documentation (#1560) by @themullinator
    Source code(tar.gz)
    Source code(zip)
  • v20210804.1(Aug 4, 2021)

  • v20210804(Aug 4, 2021)

    This is the first release of August!

    This release is all about improvements and bug fixes. A list of merged changes can be found below:

    Enhancements:

    • Added many API tests CRUD tests and schema validations (#1516, #1506, #1503, #1503, #1501, $1497, #1495, #1490, #1482, #1480, #1477, #1476, #1475, #1473, #1472, #1471, #1468, #1467, #1466, #1464, #1463)
    • We don't attempt to notify the user in the channel if the incident is closed (#1520) by @mvilanova
    • Adds project name to daily incident report title (#1510) by @mvilanova
    • Replaces jsonable_encoder with custom dict function and removes db_session.add() from update functions (#1496) by @mvilanova
    • Adds rendered participants to incident submission form (#1483) by @kevgliss
    • Creates a new 'DispatchEnum' (#1446) by @kevgliss
    • Adds FAQ document link to incident submission form (#1448) by @kevgliss
    • Allowing tag type to be specified in notification filters (#1447) by @kevgliss
    • Fixing terms and descriptions (#1489) by @kevgliss

    Bug Fixes:

    • Fixes an issue with task syncing (#1514) by @kevgliss
    • Takes project into account when fetching and creating individuals (#1507) by @mvilanova
    • Fixes an issue where a hash char would stop the encoding of a CSV (#1459) by @kevgliss
    • Unprocessable entity on any API request due to insufficient parameters (#1509) by @stefanm8
    • Fixes issue with setting a custom filter date (#1481) by @kevgliss
    • Fixes feedback table and inconsistent incident filtering (#1458) by @kevgliss
    • Fixing issue where template documents were disappearing (#1451) by @kevgliss
    • Makes sure we capture the whole day, regardless of the local time (#1450) by @kevgliss

    Documentation:

    • Docs/template run books (#1518) by @kevgliss
    • Adding updated example data (#1493) by @kevgliss
    • Improve docstring comments (#1453) by @mattsta
    Source code(tar.gz)
    Source code(zip)
  • v20210714(Jul 15, 2021)

    This is the first release of the month of July!

    This release is all about improvements and bug fixes. List of merged changes can be found below:

    Improvements:

    • Do not send messages to the participant or channel if the incident is closed (#1437) by @mvilanova
    • Allows tag sync plugins to create tag types dynamically (#1432) by @kevgliss
    • Ensures incident task assignees are up to date (#1420) by @mvilanova
    • Do not create a timeline event if the incident status has not changed (#1418) by @mvilanova
    • Forces exact username matching when searching users in Jira (#1415) by @mvilanova
    • Removes deprecated notify param (#1414) by @mvilanova
    • Improves participant management related to tasks (#1405, #1425) by @mvilanova
    • Improves dashboard detail (#1395) by @kevgliss
    • Makes organization and role required to update a user's role (#1383) by @mvilanova
    • Silences events from non-incident channels (#1378) by @kevgliss
    • Only re-resolve teams and individuals when the incident status is active (#1389) by @mvilanova
    • Allow admins to see all incidents (#1361) by @kevgliss
    • Allowing reporter to be specified and respecting service enablement (#1373) by @kevgliss
    • Removing organization from settings breadcrumbs (#1343) by @kevgliss
    • Adding default slug (#1344) by @kevgliss
    • Creates an empty document if no template is available. (#1335) by @kevgliss
    • Ensures that settings links contain current query params (#1337) by @kevgliss
    • Adding better PagerDuty message (#1330) by @kevgliss
    • Adding timeslice (#1304) by @kevgliss

    Bug Fixes:

    • Fixes bug in task notification function (#1438) by @mvilanova
    • Fixes FAQ and conversation enum references (#1434) by @kevgliss
    • Fixes task source documents (#1433) by @kevgliss
    • Fixes Slack buttons for resolving or re-opening tasks (#1431) by @kevgliss
    • Fixes incident document creation (#1430) by @kevgliss
    • Fixes document tasks (#1429) by @kevgliss
    • Fixes document import (#1428) by @kevgliss
    • Fixes TaskStatus import (#1419) by @mvilanova
    • Replaces deprecated Binary symbol with LargeBinary (#1404) by @mvilanova
    • Fixes issues with creating the incident reporter (#1393, #1392, #1391) by @kevgliss
    • Fixes params for list my tasks (#1390) by @kevgliss
    • Re-adds slack_client to send_ephemeral_message call (#1388) by @mvilanova
    • Fixes issue with the restricted incidents filter (#1384) by @mvilanova
    • Multiple fixes (#1382) by @kevgliss
    • Do not throw an error if table does not exist when trying to drop it (#1381) by @mvilanova
    • Fixes issue fetching default incident type (#1380) by @kevgliss
    • Fixes issue with old block actions (#1379) by @kevgliss
    • Fixes initial triggers (#1377) by @kevgliss
    • Fixes bug with incident notifications (#1374) by @kevgliss
    • Fixes tracking sheet (#1372) by @kevgliss
    • Fixes plugin instance run (#1363) by @kevgliss
    • Fixes task creation (#1362) by @kevgliss
    • Fixes issue with workflow plugin instance (#1359) by @kevgliss
    • Fixes an issue with workflows not referencing plugin instances (#1358) by @kevgliss
    • Fixes issue with SSO user creation (#1357, #1352) by @kevgliss
    • Fixing misc issues (#1346) by @kevgliss
    • Fixing issue with how block actions are handled with multiple organizations (#1342) by @kevgliss
    • Fixes tag sync issue (#1341) by @kevgliss
    • Fixes issue with the tag recommender (#1340) by @kevgliss
    • Fixes some scheduled tasks (#1339) by @kevgliss
    • Fixes an issue with the handling of slack events. (#1338) by @kevgliss
    • Fixes an issue with session pooling (#1336) by @kevgliss
    • Allowing slack plugin to understand multiple organizations (#1332) by @kevgliss
    • Fixes organization roles (#1329) by @kevgliss
    • Adding exception logging (#1326) by @kevgliss
    • Add switch between access_token and id_token (#1323) by @ymatsiuk
    • Fixes issues with organizations (#1318, #1317, #1316) by @kevgliss
    • Fixes a command issue and adds clarification (#1298) by @dilbwagsingh
    • Sets the access token correctly for PKCE login flow. (#1296) by @kevgliss
    • Fixes add participant timeline event description not showing role (#1289) by @mvilanova
    • Fixes issue causing daily incident feedback report to not be sent (#1288) by @mvilanova
    • Don't show tag project if project is specified (#1287) by @kevgliss
    • Adds missing optional id in TagCreate Pydantic model (#1282) by @mvilanova

    Documentation:

    • Adds links to Dispatch public talks (#1351) by @mvilanova
    • Fixing PKCE docs (#1305) by @kevgliss
    • Adds back in server and user documentation (#1279) by @kevgliss
    Source code(tar.gz)
    Source code(zip)
  • v20210603(Jun 3, 2021)

    This is the first release of June!

    Features:

    • Adds the ability to set a projects label color (#1151)
    • Adds the ability to filter incidents by their associated tag types (via associated tags) (#1177, #1182)
    • Adds the ability to filter incident table and incident export by reported at date window (#1265)

    Improvements:

    • Makes CSV export of incident data more reliable (correctly escaping incident descriptions) (#1152)
    • Adds settings breadcrumbs to make it easier to switch between projects (#1153)
    • Refactors slack update incident dialog to a modal and adds the ability to specify incident tags (#1175)
    • Improves participant management during the incident/participant lifecycle (#1179)
    • Removes deprecated plugin enabled kwarg (#1186)
    • Alters when new tasks are created, we no longer automatically create new incident tasks if the incident is closed (#1199)
    • Refactored github actions (#1221) Thanks @vj-codes !
    • Improves how the /dispatch-list-incidents command handles projects (#1225)
    • Allows project roles to be assigned via the CLI (#1243)
    • Don't attempt to send feedback to archived channels (#1244)
    • Adds a constraint ensuring that tags must have a tag type associated (#1255)

    Bug Fixes:

    • Fixed an issue with a migration where only some engagement filters where created (#1164)
    • Fixed an issue where you couldn't both search and filter incidents at the same time (#1178)
    • Fixed an issue with documentation creation in the UI that would clear associated filters (#1188)
    • Fixed an issue with how checkboxes were displayed in the incident priority UI (#1187)
    • Sets service_id if a participant is reactivated (#1216)
    • Fixed an issue where multiple extraneous participant roles were being created (#1222)
    • Fixed an issue where participant engagement can be accidentally overridden (#1227)
    • Fixed an issue there incident type visibility was not available to be updated via the Dispatch UI (#1254)
    • Fixed an issue where incident visibility would become unset when modified by /dispatch-update-incident command.
    • Fixed an issue with the dispatch plugin list command (#1266)

    Documentation:

    • Fixes link to plugin documentation (#1184, #1184)
    Source code(tar.gz)
    Source code(zip)
  • v20210506(May 6, 2021)

    This is the first release of may and it's a big one!

    With this release, we are now able to offer individual teams their own space to run their incidents. Per-project configuration of incident types, incident priorities, tags, notifications, plugins, etc, allows for multiple teams to use Dispatch in their own way.

    This is a big change that requires extensive database schema manipulation and data migration. As always, before upgrading. backup your existing data!

    Features:

    • Adds organizations/projects for incident resources (#990, #1010, #1011, #1019, #1023, #1024, #1028, #1035, #1036, #1040, #1047, #1050)
    • Adds the ability to select FAIR Form of Loss category for incident types (#979)
    • Adds a helpful direct message to the new incident commander (#1046)
    • Adds the ability to scope tags by tag type while filtering (e.g. "applications/" will list all tags with tag-type of "applications") (#1067)
    • Adds the ability to bulk delete incidents via web UI (#1069)
    • Adds the ability to filter incidents by their tags (#1106)

    Improvements:

    • Consolidates restricted visibility-based filtering (#995)
    • Moved from ace to monaco code editor (#1012)
    • Makes company field optional for individual and team in Web UI (#1064)
    • Unified web UI selects/combobox to include "load more" option (#1062, #1076)
    • Creating a new search filter will automatically add it to the focused notification (#1066)
    • Adds default column to incident priority table (#1090)
    • Adds more response messages to slack modals and commands (#1132)
    • Converts engagement filters to search filters (#1070)
    • Updates individual contact info if it exists (#1129)
    • Lots and lots of dependency updates

    Bug Fixes:

    • Fixes bug where the incident role was not being displayed correctly when changed via the Web UI (#1002)
    • Fixes missing validation prop that prevented new individuals from being created in the UI (#1032)
    • Fixes issue for incident reporter being incorrectly reported via API (#1055)
    • Fixes issue where reporter/commander could not be changed if there was no incident conversation (#1054)

    Documentation:

    • Reworked a large amount of the documentation (#1088)

    Security

    • Fixes URL sanitization to prevent XSS (#1126)
    Source code(tar.gz)
    Source code(zip)
  • v20210319(Mar 19, 2021)

    This is the first release of March. The highlights of this release are a new flexible forecasting that allows you to forecast incidents based on incident type, incident priority or tag, and the ability to define and add new cost types/ forms of losses other than the default, computed response cost to incidents. Major changes in this release can be found below.

    Features:

    • Adds support for non-operational costs (#928, #947, #949, #952, #963, #964)
    • Adds support for suggesting tags for a given incident based on existing tags (#934)

    Improvements:

    • Adds protections for restricted incident types restricted (#921)
    • Ensures the mjml is installed correctly on the core image (#923)
    • Ensures re-resolving services doesn't result in multiple engagements (#924)
    • Silencing warnings until they are fixed upstream (#927)
    • Updating configuration documentation RE: MJML_PATH (#929). Thanks @AlexaKelley!
    • Adds column for liaison service in incident type table (#938)
    • Allows for more flexible forecasting (#941)
    • Forcing PostgreSQL v12 in docker-compose file (#942)
    • Do not send incident report reminders if incident status hasn't changed (#948)
    • Improves text and formatting of information review reminder (#950)
    • Slack documentation improvements (#966). Thanks @klarrio-dlamb!
    • Allows for individuals to have unique external IDs associated with them (#968)
    • Allowing external id in nested views (#969)

    Bug Fixes:

    • Fixes API query param names in multiple view modules (#922)
    • Fixes URL for example env (#931). Thanks @Cull-Methi!
    • Fixes text in daily report context section (#933) *Various minor spelling corrections (#936). Thanks @homebysix!
    • Disables nested validation observers when creating new or editing existing incident types (#939)
    • Lots of dashboard fixes (#943)
    • Check incident status before sending messages to conversation (#951)
    • Adds missing incident deletion cascades (#965)
    • Fixing issue with filtering forecast based on tags (#970)

    Security:

    • Ensure that an individual contact can't be hijacked (#926)
    Source code(tar.gz)
    Source code(zip)
  • v20210224(Feb 24, 2021)

    This is the third release of February.

    Bug Fixes:

    • Missing parameter for dispatch-core contact plugin (#886)
    • Checks for the existence of a documented plugin before displaying document loading bars in the UI (#887)
    • Allows for all incident types to be view in incident type select dropdown (#895)
    • Fixed a saved search schema issue (#897)
    • Fixed an issue with socket mode events (#899)
    • Sending tactical reports to tactical groups (instead of notification groups) (#900)
    • Fixed issue with user role modification via the UI (#906)
    • Fixes issue where incident new/edit window was displayed for summary tables (#907)
    • Fixed an issue - showing up in google docs task ids (#911, #915, #917)
    • Removed renounced roles from participant view in UI (#913)
    • Fixed issue with commander/reporting not displaying in incident detail view in the UI (#914)

    Improvements:

    • Frontend sentry configuration improvements (#880, #881)
    • Adds incident commander team name to conversation topic (#883)
    • Removes updating external tickets from cost job (noisy) (#889)
    • Allow special characters to be used in Postgres passwords (#898)
    • Jira plugin now supports cloud and on-prem hosting (#901)
    • Adds CLI command to uninstall plugins (#904)
    • Adds description and reporter to welcome message, and list resources message (#908)
    • Aligned user table action buttons in the UI (#909)

    Documentation:

    • Improvements to large sections of the documentation, fixing images, and improving grammar. (#905)
    Source code(tar.gz)
    Source code(zip)
  • v20210212(Feb 12, 2021)

    This is the second release of February.

    Special thanks to @sfc-gh-pkommini, @rilutham, and @dk0r for various issue reporting and discussions.

    Bug Fixes:

    • Fixes issue with incident details constantly re-rendering (#845)
    • Fixing issue with block actions (#847)
    • Removing old table reference (#848)
    • Check if incident exists before sending feedback to user via Slack (#849)
    • Adds missing key value pair for feedback button (#850)
    • Pinning spacy to avoid breaking changes (#851)
    • Guards against bad path data (#853)
    • Fixing the way Slack events are handled (#854)
    • Allowing for channel event items (#855)
    • Fixes issue with Slack channel reactions (#856)
    • Fixing an issue with updating user roles (#858)
    • Fixing an issue with incident priority update permission (#862)
    • Re-adds logic to send executive report to notifications group (#872)

    Improvements:

    • Improves tracking only and new document fields language (#846)
    • Removes visibility open check before sending incident created and updated notifications (#852)
    • Updating example data and making some config items optional (#857)
    • Accessing enum value attribute (#860)
    • Makes email notifications more compact (#868)

    Features:

    • Adds support for incidents daily report notification via email plugin (#859)
    • Adds support for incident daily reports based on notification filters (#865, #869)
    Source code(tar.gz)
    Source code(zip)
  • v20210210(Feb 10, 2021)

    This is the first release of February.

    Special thanks to @sfc-gh-pkommini and @rilutham for various issue reporting and discussions!

    Bug Fixes:

    • Updates and fixes core jira plugins (#711) Thanks @sfc-gh-pkommini!
    • Fixes task table loading on error (#774)
    • Fixes issue where tags were not filterable in the dashboard (#775)
    • Fixes issue where with timeline slack modal (#813)
    • Restricts sensitive configuration items to admins (#810)
    • Fixes direct linking of incidents (#803)
    • Fixes login redirect issue when using basic authentication (#791)
    • Fixes issue where tasks from sensitive issues could be viewed (#790)
    • Fixes issue where node binary was not available within the image (#835)

    Improvements:

    • Centralizes and improves permissioning system (#811, #822, #821)
    • Sets a default provider for Dispatch UI (#809)
    • Improves the date formating in email notifications (#798)
    • Incident creation hardening (#785)
    • Added additional color to incident type graph color palette (#781)
    • Assignment name alignment (#840)
    • Adds password reset CLI command (#826)
    • Un-slackifies daily summary (#819)

    Features:

    • Slack socket mode (#805, #799, #795)
    • Incident notifications (#834, #830, #829, #828, #825, #824, #802, #786, #777)
    • Saved search filters (#841, #837, #836, #832, #818, #801, #787)
    • Adds tactical and executive report creation to Dispatch UI (#839, #838, #823, #820)

    Documentation

    • Fixes broken images (#804)
    Source code(tar.gz)
    Source code(zip)
  • v20210112(Jan 12, 2021)

    This is the first release of January and of 2021!

    Bug Fixes:

    • Fixes potentially unsafe HTML URL links (#717)
    • Fixed an issue where incident export would have issue exporting null values (#723)
    • Fixes issue with some selects attempting client side filtering in Dispatch UI (#729)
    • Don't attempt to re-add participants if their task has been resolved (#731)
    • Fixes an issue with displaying multiple error messages in Dispatch UI (#762)
    • Only reactivate incident when status goes from closed to active (#765)

    Improvements:

    • Improved on-call plugin related warnings (#713)
    • New Dispatch UI color scheme based of the hawkins design language (#715)
    • Aligns our use of incident command and incident reporter to rely on "participant" object instead of "individual" objects (#730)
    • Restrict incident slack commands from some participants (#732)
    • Refactor/convert HTML emails to MJML templates (#735, #750, #756, #760)
    • Standardised filter button text (#752)

    Features:

    • Adds dark mode to Dispatch UI (#720)
    • Adds treemap chart for incident tags (#722)
    • Allows incidents to be deleted. Note: this only applies to the Dispatch DB and not to external resources (#727, #748)
    • Adds task CSV export (#733)
    • Adds timeline CSV export (#734)
    • Adds a modify user role command to the Dispatch CLI (#737)
    • Adds "tracking only" checkbox to incident report form (#761)
    Source code(tar.gz)
    Source code(zip)
  • v20201207(Dec 7, 2020)

    This is the first (and only) release of the month of December. Major changes include:

    Bug Fixes:

    • Fixes an issue in pagerduty plugin, when faced with a page without an incident name (#690)
    • Fixes an issue where route context was not optional (#695)
    • Fixes an issue where the oncall summary was calling the oncall plugin incorrectly (#697)
    • Fixes an issue with the external syncing of task data (#700)
    • Fixes an issue while calculating report reminders (#701)
    • Fixes an issue with searching while sorting and receiving inconsistent results (#701)
    • Fixes an issue displaying incident tags (#705)

    Improvements:

    • Adds support for cc'ing in email comms (#687)
    • Adds support for cc'ing the incident response team in daily feedback digests (#688)
    • Tweaked response message when running the /dispatch-engage-oncall command (#691, #692, #704)
    • Condensed navbar in the Dispatch UI (#694)
    • Adds a description column to the service table UI (#699)

    Features:

    • Adds support to build edit incidents (#689)
    • Adds incident export wizard (to csv) (#698, #703 )

    Documentation:

    • Added workflow slack command documentation (#693)
    • Added additional participant engagement documentation (#696)
    Source code(tar.gz)
    Source code(zip)
  • v20201119(Nov 19, 2020)

    This is the second release of Dispatch in the month of November. Major changes include:

    Security:

    • Fixes an issue where a non-admin user may be able to filter/search for restricted incidents. (#659)

    Bug Fixes:

    • Fixes issue where updating a task status in the Dispatch UI would not update the external task status (#663)
    • Avoid the creation of duplicate db_session (#664) Thanks @Liamvdv !

    Improvements:

    • Harden the incident creation flow against misbehaving/misconfigured plugins (#662)
    • Modifying the language sent to incident commanders on incident close to close any outstanding incident tasks (#669)
    • Adds incident visibility to the incident creation receipt (#671)
    • Improved default sorting for feedback table (#675)

    Features:

    • Adds an "evergreen" email notification to documents, allowing users to remind themselves to review runbooks. (#660)
    • Adds the ability to automatically map service to the liaison role for a given incident type. (#661)

    Documentation:

    • Fixed various documentation typos (#665, #667) Thanks @roandudel !
    • Added better release documentation (#679)
    Source code(tar.gz)
    Source code(zip)
  • v20201106(Nov 6, 2020)

    This is the first release of Dispatch in the month of November. Major changes include:

    Security:

    • Fixes issue where regular users can join restricted incidents (#649)
    • Fixes issue where a user can register an account as admin (#650)
    • Filters restricted incidents for non-admins (#651)

    Bug Fixes:

    • Fixes error message in update_user() function in auth views module (#648)
    • Adding better checking for non-existent tab data (#652)
    • Adds an error message when the incident can't be reported (#653)
    • Ensures the stable flow runs for incidents opened as stable (#654, #656)
    • Fixes filtering on several columns (#655)

    Improvements:

    • Makes tag type description optional (#647)
    • Adds incident title to feedback Slack direct message (#657)

    Documentation:

    • Added production deployment documents (#658)
    Source code(tar.gz)
    Source code(zip)
  • v20201027(Oct 27, 2020)

    This is the third Oct release of Dispatch. Major changes include:

    Security:

    • Fixes issue with possible XSS (#644)
    • Fixes issue where regular users can assign themselves admin privileges (#644)
    • Fixes issue where a regular user could update a restricted incident to open (#646)

    Features:

    • Incident review, asks commander to verify incident data (#631)
    • Adds support for capturing feedback from participants (#634, #638)

    Bug Fixes:

    • Fixes issue with non incident commands running in non incident channels (#618)
    • Sets default contact information when oncall_plugin is disabled (#618)
    • Allows incidents to be correctly re-opened (#623)
    • Ensures that incident type documents are actually optional (#642)

    Improvements:

    • Changes error to warning for duplicate Google groups (#620)
    • Made incident cost calculation more robust (#626)
    • Handle channel not found error in Slack (#628)
    • Incident table more resilient, fixes navigation drawer highlight (#630)
    • Improves formatting for some slack messages (#632)
    Source code(tar.gz)
    Source code(zip)
  • v20201013(Oct 13, 2020)

    This is the second Oct release of Dispatch. Major changes include:

    Features:

    • Adds external workflows, allows plugin authors to kick off and monitor external workflows via the Dispatch UI and Dispatch slack bot (#583)
    • Adds support for tag types (#604)

    Bug Fixes:

    • Fixes various issues when starting Dispatch with an "empty" database (no plugins, no configuration) (#597)
    • Allow participant-group plugins to be optional (#606)
    • Allow document templates to be optional (#599)
    • Fixed dependency issue with h11 (again) (#589)
    • Fixed slack conversation ignoring channel type (#560)

    Improvements:

    • Allow incidents to be created in 'Closed' state (skipping resource creation). (#602)
    • Migrates pagerduty plugin to a supported library (pdpyras). (#603)
    • Documentation improvements around configuration (#600)
    • PKCE documentation improvements and compatibility improvements (#609, #617) (Thanks @patcable !)
    Source code(tar.gz)
    Source code(zip)
Owner
Netflix, Inc.
Netflix Open Source Platform
Netflix, Inc.
signal-cli-rest-api is a wrapper around signal-cli and allows you to interact with it through http requests

signal-cli-rest-api signal-cli-rest-api is a wrapper around signal-cli and allows you to interact with it through http requests. Features register/ver

Sebastian Noel Lübke 31 Dec 9, 2022
Backend, modern REST API for obtaining match and odds data crawled from multiple sites. Using FastAPI, MongoDB as database, Motor as async MongoDB client, Scrapy as crawler and Docker.

Introduction Apiestas is a project composed of a backend powered by the awesome framework FastAPI and a crawler powered by Scrapy. This project has fo

Fran Lozano 54 Dec 13, 2022
Minimal example utilizing fastapi and celery with RabbitMQ for task queue, Redis for celery backend and flower for monitoring the celery tasks.

FastAPI with Celery Minimal example utilizing FastAPI and Celery with RabbitMQ for task queue, Redis for Celery backend and flower for monitoring the

Grega Vrbančič 371 Jan 1, 2023
API & Webapp to answer questions about COVID-19. Using NLP (Question Answering) and trusted data sources.

This open source project serves two purposes. Collection and evaluation of a Question Answering dataset to improve existing QA/search methods - COVID-

deepset 329 Nov 10, 2022
Example app using FastAPI and JWT

FastAPI-Auth Example app using FastAPI and JWT virtualenv -p python3 venv source venv/bin/activate pip3 install -r requirements.txt mv config.yaml.exa

Sander 28 Oct 25, 2022
Web Inventory tool, takes screenshots of webpages using Pyppeteer (headless Chrome/Chromium) and provides some extra bells & whistles to make life easier.

WitnessMe WitnessMe is primarily a Web Inventory tool inspired by Eyewitness, its also written to be extensible allowing you to create custom function

byt3bl33d3r 648 Jan 5, 2023
Backend Skeleton using FastAPI and Sqlalchemy ORM

Backend API Skeleton Based on @tiangolo's full stack postgres template, with some things added, some things removed, and some things changed. This is

David Montague 18 Oct 31, 2022
FastAPI Admin Dashboard based on FastAPI and Tortoise ORM.

FastAPI ADMIN 中文文档 Introduction FastAPI-Admin is a admin dashboard based on fastapi and tortoise-orm. FastAPI-Admin provide crud feature out-of-the-bo

long2ice 1.6k Dec 31, 2022
A simple docker-compose app for orchestrating a fastapi application, a celery queue with rabbitmq(broker) and redis(backend)

fastapi - celery - rabbitmq - redis -> Docker A simple docker-compose app for orchestrating a fastapi application, a celery queue with rabbitmq(broker

Kartheekasasanka Kaipa 83 Dec 19, 2022
The template for building scalable web APIs based on FastAPI, Tortoise ORM and other.

FastAPI and Tortoise ORM. Powerful but simple template for web APIs w/ FastAPI (as web framework) and Tortoise-ORM (for working via database without h

prostomarkeloff 95 Jan 8, 2023
Ready-to-use and customizable users management for FastAPI

FastAPI Users Ready-to-use and customizable users management for FastAPI Documentation: https://frankie567.github.io/fastapi-users/ Source Code: https

François Voron 2.4k Jan 1, 2023
Analytics service that is part of iter8. Robust analytics and control to unleash cloud-native continuous experimentation.

iter8-analytics iter8 enables statistically robust continuous experimentation of microservices in your CI/CD pipelines. For in-depth information about

null 16 Oct 14, 2021
ASGI middleware for authentication, rate limiting, and building CRUD endpoints.

Piccolo API Utilities for easily exposing Piccolo models as REST endpoints in ASGI apps, such as Starlette and FastAPI. Includes a bunch of useful ASG

null 81 Dec 9, 2022
TODO aplication made with Python's FastAPI framework and Hexagonal Architecture

FastAPI Todolist Description Todolist aplication made with Python's FastAPI framework and Hexagonal Architecture. This is a test repository for the pu

Giovanni Armane 91 Dec 31, 2022
A rate limiter for Starlette and FastAPI

SlowApi A rate limiting library for Starlette and FastAPI adapted from flask-limiter. Note: this is alpha quality code still, the API may change, and

Laurent Savaete 565 Jan 2, 2023
A Python pickling decompiler and static analyzer

Fickling Fickling is a decompiler, static analyzer, and bytecode rewriter for Python pickle object serializations. Pickled Python objects are in fact

Trail of Bits 162 Dec 13, 2022
Install multiple versions of r2 and its plugins via Pip on any system!

r2env This repository contains the tool available via pip to install and manage multiple versions of radare2 and its plugins. r2-tools doesn't conflic

radare org 18 Oct 11, 2022
Deploy an inference API on AWS (EC2) using FastAPI Docker and Github Actions

Deploy an inference API on AWS (EC2) using FastAPI Docker and Github Actions To learn more about this project: medium blog post The goal of this proje

Ahmed BESBES 60 Dec 17, 2022
REST API with FastAPI and SQLite3.

REST API with FastAPI and SQLite3

Luis Quiñones Requelme 2 Mar 14, 2022