Challenge Overview
Welcome to the Config Proxy application
The goal of this application is to proxy Jira API calls from a calling client. These calls surface a discrete set of endpoints and call using a specific service account.
In addition to proxying these specific calls we want to create an endpoint on our proxy that fetches a specific ticket and then makes a subsequent API call based upon the data in that ticket, returning that payload back to the calling client.
Requirement:
- node.js only
- Validate a calling user's credentials for all inbound calls. This can be done by first calling to the "myself" endpoint at /rest/api/2/myself
- Restrict calling user's capabilities to a discrete, configurable set of Jira endpoints
- Create an endpoint called /api/getConfig that
- Retrieves a Jira ticket with the following criteria:
- Type: Configuration
- Status: Open
- Name: App Config
- parses JSON in the description field
- Calls the screens tabs endpoint for tabs at /rest/api/2/screens/{screenId}/tabs for each screen Id found in the ticket payload
- Iterates through the tabs and calls the screens tabs endpoint for fields at /rest/api/2/screens/{screenId}/tabs/{tabId}/fields
- Returns an aggregate payload of the screens with their tabs & fields to the calling user
- Errors from any step in the process should be returned to the user as HTTP 500 level responses
- Retrieves a Jira ticket with the following criteria:
- No UI is required
- Unit tests are required for this application
Configuration ticket payload:
{
"configuration":
{
"screenId": "10105",
"issueType":"1"
}
}
Final Submission Guidelines
SETUP:
- Request access to the Gitlab repo group here by posting on the forums or email lazybaer.
- Once added to the team, fork the repository and work off this branch.
- Test user accounts and a test Jira endpoint can be found here
SUBMISSION:
- Upload documentation for how to run your submission
- Upload all your source code as a zip
- Add lazybaer as members of your forked repository
- Provide a video overview of your submission
- Winner will be requried to submit a merge request on gitlab against the branch specified