Apps
Introduction
Apps is the term that we use for containers of requirements (user stories). Other tools commonly refer to this as a project.
Available Commands
GET /apps
GET /apps/{app_id}
GET /apps/{app_id}/requirements
GET /apps/{app_id}/suggested_tests
GET /apps/{app_id}/glossary
GET /apps/{app_id}/trace
POST /apps/{app_id}/requirements
App (singular)
POST /app/
PUT /app{app_id}
List Apps
GET https://api.scopemaster.com/v1/apps
Returns a list of the first 100 apps for which the user (who created the API key) has access. Each app includes meta information under the stats object.
Get an App
GET https://api.scopemaster.com/api/v1/apps/{app_id}
e.g.
GET https://api.scopemaster.com/api/v1/apps/AP976797889
Returns the app excluding the requirements (user stories)
Example response:
{ "id": "AP72f6ed657b", "lang": "en", "title": "Example web shopping cart 6", "description": "This is just an example that you can learn with. .", "owner_id": "1", "org_id": "OR30c8746905", "created_utc": "1572969724", "updated_utc": "1573230864", "access_level": "OWNER", "external_project_id":"jira-or-azure-devops-project-id", "url": "https://api.scopemaster.com/v1/apps/AP72f6ed657b", "requirements_url": "https://api.scopemaster.com/v1/apps/AP72f6ed657b/requirements", "stats":{ "test_count": 132, "test_scenario_count": 44, "cfp_total_estimate": 74, "requirements_count": 12, "cfp_total_extrapolated": 81, "rtype_nfrs_count": 0, "rtype_functionals_count": 12, "rtype_tasks_count": 0, "rtype_constraints_count": 0, "version": "1.8.1", "q_ambiguous_count": 1, "q_missing_count": 38, "q_duplicate_count": 3, "q_total_defect_count": 43, "q_complex_count": 1, "q_score": 56.15833333333333, "q_sized_stories": 11 } }, "permissions": [ { "permission": "OWNER", "first_name": "Jim", "last_name": "Smith", "email": "[email protected]", "user_id": "1343", "org_id": "OR19bc102f90" } ] }
Glossary Arrays (Updated)
GET /apps/{app_id}/glossary
Note this endpoint output has been rationalised and simplified. Scroll to the bottom to see the previous output.
This will append the glossary (data dictionary) arrays of :
Users
- Suggested users (ScopeMaster guesses)
- Confirmed users (Your confirmed glossary entries)
Objects
- Detected functional objects (functional intent detected for this object)
- Confirmed objects (Your confirmed/glossary entries)
/** Updated output **/ "users": [ { "name": "user", "occurrence_count": 176, "confirmed": false }, { "name": "client", "occurrence_count": 15, "confirmed": true, "glossary": { "id": "GL759ae8b662", "word": "client", "definition": "customer", "created_utc": "1665744488", "udpated_utc": "0", "user_id": "1" } }, { "name": "operator", "occurrence_count": 67, "confirmed": false } ], "objects": [ { "name": "enterprise edition", "occurrence_count": 1, "occurrences": [ "RQ9ec8efb768" ], "confirmed": false }, { "name": "entity", "occurrence_count": 3, "occurrences": [ "RQdef929dda4", "RQ833a53cd82", "RQ011d0ec261" ], "confirmed": true, "glossary": { "id": "GL2a2d6df4cd", "word": "entity", "definition": "a reusable thing", "created_utc": "1665738952", "updated_utc": "1665740397", "user_id": "1", "json": "{\"attributes\":[{\"name\":\"name\",\"datatype\":\"String\"}]}" } }, ],
The Stats Sub object
Each app has a stats sub object that contains summary information about the results of the ScopeMaster analysis for all the requirements in the app.
Field Name | Description |
version |
The analysis engine version number. This affects the rules for determining functional intent (and therefore size) of each story. This is different from the API version. |
requirements_count |
The total number of requirements (of all types) in the app |
test_count | The number of suggested individual test checks. |
test_scenario_count |
The number of suggested test scenarios (both positive and negative test scenarios) |
rtype_functionals_count |
The number of requirements marked as functional (default). Currently only these requirements are analysed and sized. |
rtype_nfrs_count |
The number of requirements marked as NFR Non functional requirement |
rtype_tasks_count |
The number of requirements marked as a task |
rtype_constraints_count |
The number of requirements marked as a project constraint |
q_sized_stories |
The number of requirements for which functional intent (and therefore size) was detected. |
q_ambiguous_count |
The number of requirements for which no functional intent was detected. i.e. q_sized_stories + q_ambiguous_count = rtype_functionals_count |
q_missing_count |
Suggested number of missing stories based on the CRUD analysis across all the functional requirements. |
q_duplicate_count |
Suggested number of duplicate stories based on the CRUD analysis across all the functional requirements. |
q_complex_count |
Suggested number of stories that may be too complicated or too large. |
q_total_defect_count |
Total number of suggested possible defects in the requirements. |
q_score |
ScopeMaster's combined weighted score out of 100 for the overall quality of the requirements based on the other q_ values. |
Get Requirements
GET https://api.scopemaster.com/api/v1/apps/{app_id}/requirements
Returns an array of requirements for the given app_id
Example:
[ { "app_id": "AP36220daad2", "id": "RQfcfade02e0", "title": "Add my search term to the search box. ", "ref": "MG-342", "body": "Add my search term to the search box. Press go to start the search. Display a list of searched products, really fast. Only show products that are in inventory. Create this page in javascript so that it displays very fast. Verify that this can be don", "notes": null, "external_id": "MG-342", "created_utc": "1573059235", "updated_utc": "0", "cfp": 0, "analysis":[], "links_from": [ { "id": "91", "link_type": "RELATES", "link_from": "RQ76508350cf", "link_to": "RQ9932f1ecc4", "label": "menu click" } ], "links_to": [], "tags": [ { "tag_id": "TGee69b34767", "label": "discuss with customer" }, { "tag_id": "TGd00ec1abc9", "label": "sprint 1" } ], }, { "app_id": "AP36220daad2", "id": "RQ7a3b4af019", "title": "As a [site] editor I can save information", "ref": "MG-101", "body": "As a [site] editor I can save information in a trainers-only section [so that only trainers see it.]", "notes": null, "external_id": "MG-101", "created_utc": "1573059298", "updated_utc": "0", "cfp": 0, "analysis":[] } ]
POST App
POST https://api.scopemaster.com/api/v1/app/
Creates an app (aka project) container. Returns the json object containing the attributes of the created app. title and description are the only required fields, all others are optional. Default language is "en", other allowable values are it, es, pt, fr. Once a language has been set, it may not be changed. Fields beginning "external_" can be used for synchronisation with an external repository.
{ "title": "Example web shopping cart 6", "description": "This is just an example that you can learn with. .", "lang":"en", "external_project_id":"jira-or-azure-devops-project-id", 'external_endpoint'=>'https://dev.azure.com/mycompany/', 'external_api_token_name'=>'a name of a token', 'external_api_token_value'=>'the_token_value' }
response will be:
"app":{ "id": "APxyz123", "title": "Example web shopping cart 6", "description": "This is just an example that you can learn with. .", "lang":"en", "external_project_id":"jira-or-azure-devops-project-id", "external_endpoint"=>"https://dev.azure.com/mycompany/", "external_api_token_name"=>"a name of a token", "external_api_token_value"=>"the_token_value", "org_id":"OR30c8746905" }
PUT App
PUT https://api.scopemaster.com/api/v1/app/{app_id}
Returns the json object containing the updated attributes of a created project container (aka app)
title and description and the four external_xxx are the only fields that may be changed.
{ "title": "Example web shopping cart 6", "description": "This is just an example that you can learn with. .", "lang":"en", "external_project_id":"jira-or-azure-devops-project-id", 'external_endpoint'=>'https://dev.azure.com/mycompany/', 'external_api_token_name'=>'a name of a token', 'external_api_token_value'=>'the_token_value' }