Skip to main content

Resources & Definitions

Team member

Team Member is an entity represented by an object containing a team member name and their Slack ID:

  {
"name": "Walter Goggins",
"slackID": "12345"
}

Roster

A Roster object is the collection of Team Members. The id of the Team Member is their index in the Roster array.

{
"members": [
{
"name": "Walter Goggins", // id = 0
"slackID": "12345"
},
{
"name": "Aimee Lou Wood", // id = 1
"slackID": "67890"
},
{
"name": "Paker Posey", // id = 2
"slackID": "98765"
}
]
}

Duty Object

A Duty Object is used under the hood as a handy way to fetch and update current and next leads.

It contains the Roster indices (ids) of the current and the next lead:

  { 
"current": 0,
"next": 1
}

Duty Objects come from Duty Files that are stored and read from the AWS S3 bucket and exist separately for each event.

Events

Since you are reading docs for this API, you are probably familiar with what Scrum and Scrum ceremonies are. If that is not the case, here is a good place to read about standups (or daily scrums), sprint retrospectives and the scrum framework in general.

Supported events

The 2 event types currently supported are: a standup (or daily standup or daily scrum) and a retro (or sprint retrospective).

Event cadence

This API design assumes the following cadence of events:

  • standups happen every day of the week. A Team Member on duty will run standups for one whole week, then the duty is passed on to the next Team Member on the Roster.
  • retros happen once a week every other week. A Team Member on duty will run a single retro, then the duty is passed on to the next Team Member on the Roster.

Current VS Next Lead

Current lead is the Team Member that leads the current week's standups or the upcoming retrospective. Next lead is the Team Member that comes after them in the Roster.

Posting messages to Slack channels

How Rosie works with Slack webhooks

Roster Rosie can post messages to Slack, however she is only a part of the setup: calling the Message Slack endpoint triggers a custom Slack webhook, which does the rest of the work.

The request body Rosie sends to Slack looks like a Duty Object with Slack IDs of the members on duty:

{
"current": 12345,
"next": 67890,
}

The channel to post messages to, message text and formatting are configured on the Slack side. More information on using Slack webhooks to send messages is available in the Slack Developer docs

Configuring webhooks

Roster Rosie was built with a single purpose and a team in mind, so the Slack channel is not configurable at the moment.

However, Slack config comes from the ENV object (as SLACK_WEBHOOK_URL for standups and RETRO_SLACK_WEBHOOK_URL for retros), so if you would like to use the app with your own webhooks, you can configure those variables in your ENV object locally or during deployment via your hosting site.