Requirements Analyser API (/++requirements_analyser)
The Requirements Analyser service processes unstructured English text and extracts structured requirement-engineering artefacts
Endpoint:
POST /++requirements_analyser
1. Purpose
The Requirements Analyser service processes unstructured English text and extracts structured requirement-engineering artefacts such as:
-
Actors
-
Requirements
-
Constraints
-
Goals
-
Vision statements
-
User stories
-
Use cases
-
Scenarios
-
States
The output is returned as table-ready JSON, designed to be rendered directly into UI tables.
2. Authentication & Access
Subscription Required
Access is protected by a subscription check:
If the subscription is invalid, the service will reject the request.
Possible Subscription Failure Response
{
"error": "Subscription expired or invalid"
}
With an appropriate HTTP status code (e.g. 401 or 403).
3. HTTP Method & Headers
Method
POST
Required Header
Content-Type: application/json
Accept: application/json
4. Request Payload
4.1 JSON Schema
{
"text": "string",
"outputs": ["actors", "requirements"],
"keywords": {
"requirements": ["shall", "must"],
"constraints": ["must not"]
}
}
4.2 Request Fields
| Field | Type | Required | Description |
|---|---|---|---|
text |
string | ✅ | The input text to analyse |
outputs |
array of strings | ✅ | Which tables to generate |
keywords |
object | ❌ | Optional keyword overrides |
4.3 Supported outputs Values
The following output types are supported:
| Output Key | Description |
|---|---|
actors |
Identified actors/roles |
requirements |
Requirement statements |
constraints |
Constraints & limitations |
goals |
Business or system goals |
vision |
Vision or long-term intent |
user_stories |
Agile user stories |
use_cases |
Use case statements |
scenarios |
Conditional scenarios |
states |
States or statuses |
❗ Any unsupported output will cause the request to fail.
4.4 Keyword Override (Optional)
If no custom keywords are provided, default keywords are used.
Example default (requirements):
["shall", "must", "should", "needs to", "has to", "expected to"]
You may override keywords per category:
{
"keywords": {
"requirements": ["shall", "must"],
"constraints": ["encrypted", "gdpr"]
}
}
If a keyword list is empty or invalid, the service falls back to defaults.
5. Processing Logic (Important for Users)
NLP Engine
-
Uses spaCy
en_core_web_sm -
Language: English only
Actor Extraction Logic
Actors are extracted when:
-
A token is a noun or proper noun
-
AND its dependency role is:
-
nsubj(nominal subject) -
nsubjpass(passive subject)
-
Actors are lemmatised and lower-cased.
Keyword-Based Extraction Logic
For all other outputs:
-
Text is split into sentences
-
A sentence is included if any keyword appears as a substring
-
Matching is case-insensitive
-
No semantic scoring or ML classification is applied
6. Response Format
6.1 Success Response
HTTP Status: 200 OK
{
"tables": {
"actors": { ... },
"requirements": { ... }
}
}
6.2 Table Object Structure
Each table follows the same structure:
{
"id": "requirements",
"title": "Requirements",
"description": "Extracted requirements from text",
"columns": ["ID", "Text"],
"rows": [
["R-1", "The system shall allow users to log in."]
]
}
6.3 Actors Table Example
{
"id": "actors",
"title": "Actors",
"description": "Identified roles and actors",
"columns": ["ID", "Actor"],
"rows": [
["A-1", "user"],
["A-2", "system"]
]
}
6.4 ID Format
| Type | Format |
|---|---|
| Actors | A-1, A-2, ... |
| Requirements | R-1, R-2, ... |
| Constraints | C-1, C-2, ... |
| Goals | G-1, ... |
| Vision | V-1, ... |
| User Stories | U-1, ... |
| Use Cases | U-1, ... |
| Scenarios | S-1, ... |
| States | S-1, ... |
(IDs are sequential per table.)
7. Error Handling
7.1 Validation Errors
HTTP Status: 400 Bad Request
{
"error": "Field 'text' is mandatory"
}
Possible validation errors:
-
Invalid JSON payload
-
Missing or empty
text -
Missing or empty
outputs -
Unsupported output types
7.2 Server Errors
HTTP Status: 500 Internal Server Error
{
"error": "Internal server error"
}
All internal exceptions are logged server-side.
8. Usage Example (cURL)
curl -X POST https://example.com/Plone/++requirements_analyser \
-H "Content-Type: application/json" \
-d '{
"text": "The system shall allow users to reset passwords.",
"outputs": ["actors", "requirements"]
}'
9. Intended Consumers
-
Web frontends rendering editable tables
-
Requirements management tools
-
Educational platforms
-
CSV / Excel export pipelines
-
AI-assisted authoring tools
10. Known Limitations
-
English language only
-
Keyword-based (not semantic classification)
-
spaCy model loaded per request
-
No confidence scoring
-
No sentence deduplication across categories
11. Versioning
| Version | Notes |
|---|---|
| 1.0 | Initial external API |
12. Summary
✔ Subscription-protected
✔ Predictable table output
✔ UI-friendly structure
✔ Safe keyword fallback
✔ No side effects (read-only)
