usepa / cam-api-portal Goto Github PK
View Code? Open in Web Editor NEWApi for data collected to run programs designed to reduce air pollution from power plants
License: MIT License
Api for data collected to run programs designed to reduce air pollution from power plants
License: MIT License
As a user
I want to see an FAQ before I use the "contact us" option
So that I can get my question quickly answered
Given a generic resource page React component
When FAQ content is provided to the component
Then a new FAQ resource page is rendered
Given an FAQ resource page
When a user visits the resources/help subpage
Then a card with a title and description of the FAQ page should appear
See the wireframe for reference
Verify that the FAQ page is rendered and linkable from the resources/help subpage
n/a
n/a
Research task
Build/bundle
Testing
Security
Accesibility
Outcome:
onepager
As a general user I want to know which APIs are available to me on the first page to avoid missing anything and to discover more data
The create-create-app scripts generate multiple files that we need to place in one html document for the Drupal environment.
As a user visiting the API docs
I want to see all the available APIs available with short descriptions
So that I can quickly find what I'm looking for and go straight to the docs
Given a user visits the API docs subpage
When the page loads
Then there should be a short description or instructions at the top and a set of cards below that hold the titles, descriptions, and links to APIs
Given no changes to the content
When the page is resized
Then the cards should dynamically adjust to the size by moving to the next row or expanding to the row above
Given a user is on their mobile device
When the page is loaded
Then the cards should all be in one column fitting within the width of the screen
See the wireframes for reference
Verify the cards are visible in a mobile and desktop view. Verify the cards can be clicked to visit the appropriate pages. Verify the navigation via the subheader works and users can get back to the homepage or navigate elsewhere
n/a
n/a
As an academic researcher I want to access additional information about CAMD data and CAMD programs
Link to data resources page?
Site navigation bar on the left for CAMD web area?
Link to site map?
Fix the unit test in the skeleton project and test the create-react-app scripts for running unit tests
Some content in data and apps team channel
Maybe create channel in CAMD suite development Team
As a user visiting the CAM API Portal
I want to see a description of what the CAM API is and the available resources
So that I can find the information I'm interested in and discover more information
Given a user visits the homepage
When the page loads
Then they should see a subheader with navigation dropdowns, a system updates banner, a button to request an API key, a description of the CAM API and the tools it supports, a what's new box, and a set of cards linking to the docs and help & resources
See the wireframe for reference. This page should be composed of the other react components that have been created and at most the unique content should be the description and configuration of each component (e.g. injecting the content for the cards for API docs subpages and Help & resources subpages).
Verify each component is displayed and loads appropriately. Verify that the page resizes appropriately for mobile and desktop sizes. Verify the components contain the appropriate information and link to the correct places.
n/a
n/a
As a developer
I want a high fidelity wireframe with production text (home page) and layout (all pages) to use as reference when creating React components
So that I can create production ready components for use
Given low fidelity wireframes (mobile and desktop)
When content is finalized
Then we should have high fidelity wireframes (mobile and desktop) for the layout and content in Invision to use as reference
Want the layout and content. The finer details are not as important.
See the low fidelity wireframe in invision. The content in this original wireframe, particularly the card content, has gone through review.
n/a
As a CAM API user
I want to see all the available options and pages I can visit in a subheader
So that I can quickly navigate to the content I want
Given that a user has visited the CAM API portal home page
When they are at the top of the page
Then they should see a subheader with options to reach the API documentation, help/support, and register for an API key
Utilize the reusable component created by CVP for the re-engineering
Test that the subheader is visible at the top of the page and is not sticky as you scroll to the bottom. It should only be visible at the top.
Assume to be on the home page of the portal
N/A
Contact github admins to enable at the repository level
As an academic researcher I want to see supplemental information for each endpoint to understand what these data represent to decide which is best for my analysis
As a user
I want resources for the CAM API
So that I can better understand and utilize the APIs
Given a resource (e.g. FAQ, API Guide, Release Notes, etc)
When a user visits the page
Then A title, description, and information are displayed
Given a resource page
When a user visits the page
Then a unique URL for that page should be displayed in the address bar and should be linkable
See wireframe for reference. The component should accept any React components as the body. The component should have props for the title, description and body content.
Verify the component can be used with any resource type and content.
n/a
Generic resource content with varying React components (e.g. accordions, cards, buttons, etc)
As a regular user of these data, I want to see release information to understand what has changed
Can you do this with swagger pages?
Maybe pulling in semantic release info from GitHub?
As a developer I want to see an example of data that may be returned from each endpoint
As a developer and maintainer
I want to ensure that the application is secure and protected against common threats
So that sensitive systems can be protected
Given a dynamic javascript web app
When content changes on a single page
Then the OWASP ZAP scan should be able to scan the changes
Potentially achievable with Structural Parameters or via plugins like this article mentions: https://blog.xaviermaso.com/2018/10/01/Scanning-modern-web-applications-with-OWASP-ZAP.html
Verify OWASP ZAP scan can scan all the pages within the web app and all the forms
n/a
Create some obvious issues OWASP ZAP can pick up and place them in places that are rendered in dynamic content
As a user (developer)
I want to see the swagger page for an API with a description and additional info
So that I can use endpoints in my own work/project
Given any CAM API
When a user visits an API subpage
Then a description and any potential additional information should display at the top with the embedded swagger page below
Given a generic API subpage component
When a developer is creating the API docs subpage
Then they should be able to dynamically create as many API subpages as there are APIs
See the wireframes for reference. This component should be generic enough to create any number of subpages without significant effort to create new pages.
Verify the page loads appropriately with the swagger component and responds to mobile and desktop sizes
n/a
Given any OpenAPI spec and description text, this component should be able to render the page given props.
As a general user I want to sign up for an API key without having to navigate to a separate page to quickly access data
As a developer
I want to be able to fill out a form to sign up for an API key
So that I can request an API Key
Given a user clicks on any "request API key" button
When the modal displays
Then the GSA form should be displayed asking for the details required for the signup
link to GSA page for API key signup
Verify that the form works is able to submit and won't if fields are not filled
A first name, last name, and email to test with
Split into separate issues based on identified components.
As a DAHS vendor I want to understand the process for obtaining a CDX token to access ECMPS APIs
As an advanced user I want to submit a question that's not answered to learn more about the data
Create research spike first
Previous wireframe: https://www.figma.com/proto/pYenfFzGn6iIl4lnA1nXbs/CAM-API-Product-Designs?node-id=276%3A1185&scaling=min-zoom&page-id=276%3A939&starting-point-node-id=276%3A1185
Example from VA: https://developer.va.gov/explore/authorization?api=claims
Outcome:
Basic wireframe in either Adobe XD or another free tool
Start with mobile first design
1 mobile wireframe
1 desktop 1024p
As a user I want to see a short description of all the data available to discover more data
Research what the look and feel and navigation may be. Use the existing wireframe and the VA developer page as reference.
VA Example: https://developer.va.gov/explore/authorization?api=claims
Existing wireframe:
https://www.figma.com/proto/pYenfFzGn6iIl4lnA1nXbs/CAM-API-Product-Designs?node-id=276%3A1185&scaling=min-zoom&page-id=276%3A939&starting-point-node-id=276%3A1185
Outcome:
As a user
I want to quickly see important system updates
So that I can plan accordingly
Given a system update (e.g. offline for maintenance)
When a user visits the homepage
Then they should see a banner displaying the system update
Given no system updates
When a user visits the homepage
Then they should not see the banner
Given a user scrolls down the page
When they go beyond the length that the subheader is visible
Then the banner should also go out of view with the subheader
See the invision wireframes for reference
Verify the banner displays appropriately under the subheader in mobile and desktop view. It should stay with the subheader and not move with the page.
n/a
Simulated system update message
As a user
I want to see release notes for each API
So that I can update my application with any changes
Given a set of APIs
When a user visits the Release Notes subpage
Then a set of cards for each API should appear that link to the respective release notes
Given a generic react component for a page with cards
When supplied a list of API release notes
Then a page with cards containing titles and descriptions of those release notes should appear and should link to the release notes page
See the wireframe for reference
Verify that all APIs have a release notes card. Verify that the cards render appropriately in mobile and desktop. Verify the cards are clickable and go to the appropriate place
n/a
A set of real or test API release notes
https://github.com/swagger-api/swagger-ui
There's more information about accessibility in this issue: swagger-api/swagger-ui#7350
As a general user I want clear instructions on how to access the APIs to access the data without obstacles
View the following link to download the report.
RunnerID:1627682188
As a visitor to the docs
I want to easily see the available api endpoints and resources in a mobile friendly way
So that I can quickly navigate to what I want to see
Given a resource that needs to be displayed
When the page loads
Then a card with a header and simple descriptive text will appear in a grid, that when clicked, takes you to the appropriate page
Given a generic card
When the card is clicked
Then the respective page is loaded
Given a generic card
When links to subpages are added to the description
Then those links should be clickable and redirect to those subpages
Given a generic card
When supplied a React component
Render the component on the card
See the wireframe on invision
Verify that the card contains a header and a body that is reusable and clickable
Assume the page the card describes is exists
n/a
Create a GitHub action to perform a basic scan
As a team member, I want to know the google analytics to know visitor traffic to the cam API portal
Check how this is impacted by a single page web app
Maybe look into Google Tag Manager or whatever else is used for react apps.
As a DAHS vendor I want to know which endpoints are relevant to ECMPS to quickly find what I need
Sent email to CAMD web master. Waiting on response.
Add to Actions pipeline
https://www.adrianbolonio.com/en/accessibility-github-actions/
As a user
I want to easily contact someone for help/questions related to the CAM API portal
So that I can successfully use the CAM APIs
Given a user clicks on a contact us button
When the page loads
Then they can either fill out a form or contact someone directly
Given a user fills out a form
When that form is submitted
Then this form sends an email to a shared mailbox that potentially creates a ticket
Investigate what options are available and discuss what is necessary for the CAP API Portal
Verify that whatever action a user takes to contact us, we are notified and can respond
Assume the user clicks the button/link
Test account/email info to put into a form etc
As a user
I want to see a list of resources available for the CAM API
So that I can better understand the data, APIs, and how I can use them
Given a list of resources
When a user visits the resources/help page
Then the list of resources should be displayed as cards with descriptions and links
Given a resource card
When a user clicks on the card
Then the user should be taken to the subpage with that resource or linked to the external resource
Given a set of resource cards
When a user resizes the page
Then the cards should adjust to fit on the page
See wireframe for reference
Verify all the cards link to the appropriate resource. Verify the cards adjust when screen is resized.
n/a
A set of test resource pages
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.