Software Factory

Requirements

GET
/v2/external-api/requirements

Return requirements documents in the API key project scope, optionally filtered by document type or title.

Authorization

ApiKeyAuth
X-API-Key<token>

External API key header (format: sofa-ext-). Authorization: Bearer is also accepted.

In: header

Query Parameters

document_type?|

Optional document type filter.

title?|

Optional case-insensitive title filter.

page?Page
Range1 <= value
Default1
page_size?Page Size
Range1 <= value <= 100
Default20

Response Body

application/json

application/json

curl -X GET "https://example.com/v2/external-api/requirements"
{  "items": [    {      "object": "requirements_document",      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",      "title": "string",      "document_type": "FEATURE",      "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef",      "children": [        {          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",          "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",          "title": "string"        }      ],      "feature_id": "ba6c7b2c-38fc-4a78-a187-51c7bbbd5c50",      "overview_tree_node_id": "066c80be-b235-4735-a14b-d7b32a2546fb",      "updated_at": "2019-08-24T14:15:22Z"    }  ],  "total": 0,  "page": 0,  "page_size": 0,  "total_pages": 0}
POST
/v2/external-api/requirements

Create a FEATURE or OVERVIEW requirements document.

Authorization

ApiKeyAuth
X-API-Key<token>

External API key header (format: sofa-ext-). Authorization: Bearer is also accepted.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Create a requirements document.

Response Body

application/json

application/json

curl -X POST "https://example.com/v2/external-api/requirements" \  -H "Content-Type: application/json" \  -d '{    "title": "string",    "document_type": "FEATURE"  }'
{  "data": {    "object": "requirements_document",    "connectedContext": [      {        "resourceType": "artifact",        "resourceId": "026d60bb-63a8-407e-bf67-01dcfc6022e6"      }    ],    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",    "version_id": "9e94c502-ca41-4342-a7f7-af96b444512c",    "version_number": 0,    "title": "string",    "markdown_content": "string",    "updated_at": "2019-08-24T14:15:22Z",    "document_type": "FEATURE",    "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef",    "children": [      {        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",        "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",        "title": "string"      }    ],    "feature_id": "ba6c7b2c-38fc-4a78-a187-51c7bbbd5c50",    "overview_tree_node_id": "066c80be-b235-4735-a14b-d7b32a2546fb"  }}
POST
/v2/external-api/requirements/search

Regex search requirements document titles and markdown content.

Authorization

ApiKeyAuth
X-API-Key<token>

External API key header (format: sofa-ext-). Authorization: Bearer is also accepted.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Requirements search request.

Response Body

application/json

application/json

curl -X POST "https://example.com/v2/external-api/requirements/search" \  -H "Content-Type: application/json" \  -d '{    "query": "string"  }'
{  "items": [    {      "object": "requirements_document",      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",      "title": "string",      "document_type": "FEATURE",      "matches": [        {          "line_number": 0,          "line": "string",          "before_context": [            "string"          ],          "after_context": [            "string"          ]        }      ]    }  ]}
GET
/v2/external-api/requirements/{requirements_document_id}

Return the latest requirements document content for one scoped document.

Authorization

ApiKeyAuth
X-API-Key<token>

External API key header (format: sofa-ext-). Authorization: Bearer is also accepted.

In: header

Path Parameters

requirements_document_id*Requirements Document Id
Formatuuid

Query Parameters

start_line?|null
end_line?|null

Response Body

application/json

application/json

curl -X GET "https://example.com/v2/external-api/requirements/497f6eca-6276-4993-bfeb-53cbbbba6f08"
{  "data": {    "object": "requirements_document",    "connectedContext": [      {        "resourceType": "artifact",        "resourceId": "026d60bb-63a8-407e-bf67-01dcfc6022e6"      }    ],    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",    "version_id": "9e94c502-ca41-4342-a7f7-af96b444512c",    "version_number": 0,    "title": "string",    "markdown_content": "string",    "updated_at": "2019-08-24T14:15:22Z",    "document_type": "FEATURE",    "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef",    "children": [      {        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",        "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",        "title": "string"      }    ],    "feature_id": "ba6c7b2c-38fc-4a78-a187-51c7bbbd5c50",    "overview_tree_node_id": "066c80be-b235-4735-a14b-d7b32a2546fb"  }}
PATCH
/v2/external-api/requirements/{requirements_document_id}

Persist complete markdown content for a requirements document in the API key project scope. Markdown is converted server-side to ProseMirror; invalid markdown returns a 400 error.

Authorization

ApiKeyAuth
X-API-Key<token>

External API key header (format: sofa-ext-). Authorization: Bearer is also accepted.

In: header

Path Parameters

requirements_document_id*Requirements Document Id
Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Update requirements markdown content.

Response Body

application/json

application/json

curl -X PATCH "https://example.com/v2/external-api/requirements/497f6eca-6276-4993-bfeb-53cbbbba6f08" \  -H "Content-Type: application/json" \  -d '{    "markdown_content": "string"  }'
{  "data": {    "object": "requirements_document",    "connectedContext": [      {        "resourceType": "artifact",        "resourceId": "026d60bb-63a8-407e-bf67-01dcfc6022e6"      }    ],    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",    "version_id": "9e94c502-ca41-4342-a7f7-af96b444512c",    "version_number": 0,    "title": "string",    "markdown_content": "string",    "updated_at": "2019-08-24T14:15:22Z",    "document_type": "FEATURE",    "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef",    "children": [      {        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",        "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",        "title": "string"      }    ],    "feature_id": "ba6c7b2c-38fc-4a78-a187-51c7bbbd5c50",    "overview_tree_node_id": "066c80be-b235-4735-a14b-d7b32a2546fb"  }}
DELETE
/v2/external-api/requirements/{requirements_document_id}

Authorization

ApiKeyAuth
X-API-Key<token>

External API key header (format: sofa-ext-). Authorization: Bearer is also accepted.

In: header

Path Parameters

requirements_document_id*Requirements Document Id
Formatuuid

Response Body

application/json

curl -X DELETE "https://example.com/v2/external-api/requirements/497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
PATCH
/v2/external-api/requirements/{requirements_document_id}/rename

Authorization

ApiKeyAuth
X-API-Key<token>

External API key header (format: sofa-ext-). Authorization: Bearer is also accepted.

In: header

Path Parameters

requirements_document_id*Requirements Document Id
Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Rename a requirements document.

Response Body

application/json

application/json

curl -X PATCH "https://example.com/v2/external-api/requirements/497f6eca-6276-4993-bfeb-53cbbbba6f08/rename" \  -H "Content-Type: application/json" \  -d '{    "title": "string"  }'
{  "data": {    "object": "requirements_document",    "connectedContext": [      {        "resourceType": "artifact",        "resourceId": "026d60bb-63a8-407e-bf67-01dcfc6022e6"      }    ],    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",    "version_id": "9e94c502-ca41-4342-a7f7-af96b444512c",    "version_number": 0,    "title": "string",    "markdown_content": "string",    "updated_at": "2019-08-24T14:15:22Z",    "document_type": "FEATURE",    "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef",    "children": [      {        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",        "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",        "title": "string"      }    ],    "feature_id": "ba6c7b2c-38fc-4a78-a187-51c7bbbd5c50",    "overview_tree_node_id": "066c80be-b235-4735-a14b-d7b32a2546fb"  }}
PUT
/v2/external-api/requirements/{requirements_document_id}/move

Authorization

ApiKeyAuth
X-API-Key<token>

External API key header (format: sofa-ext-). Authorization: Bearer is also accepted.

In: header

Path Parameters

requirements_document_id*Requirements Document Id
Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Move a requirements document in its same typed tree.

Response Body

application/json

application/json

curl -X PUT "https://example.com/v2/external-api/requirements/497f6eca-6276-4993-bfeb-53cbbbba6f08/move" \  -H "Content-Type: application/json" \  -d '{}'
{  "data": {    "object": "requirements_document",    "connectedContext": [      {        "resourceType": "artifact",        "resourceId": "026d60bb-63a8-407e-bf67-01dcfc6022e6"      }    ],    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",    "version_id": "9e94c502-ca41-4342-a7f7-af96b444512c",    "version_number": 0,    "title": "string",    "markdown_content": "string",    "updated_at": "2019-08-24T14:15:22Z",    "document_type": "FEATURE",    "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef",    "children": [      {        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",        "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",        "title": "string"      }    ],    "feature_id": "ba6c7b2c-38fc-4a78-a187-51c7bbbd5c50",    "overview_tree_node_id": "066c80be-b235-4735-a14b-d7b32a2546fb"  }}
POST
/v2/external-api/requirements/{requirements_document_id}/apply_suggestion

Apply an oldText/newText suggestion to the current requirements document through the collaborative editor, creating tracked insertion/deletion marks.

Authorization

ApiKeyAuth
X-API-Key<token>

External API key header (format: sofa-ext-). Authorization: Bearer is also accepted.

In: header

Path Parameters

requirements_document_id*Requirements Document Id
Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Tracked suggestion apply request.

Response Body

application/json

application/json

curl -X POST "https://example.com/v2/external-api/requirements/497f6eca-6276-4993-bfeb-53cbbbba6f08/apply_suggestion" \  -H "Content-Type: application/json" \  -d '{    "new_text": "string"  }'
{  "data": {    "status": "string",    "change_ids": [      "string"    ]  }}
GET
/v2/external-api/requirements/{requirements_document_id}/versions

Return version history for one requirements document in the scoped project.

Authorization

ApiKeyAuth
X-API-Key<token>

External API key header (format: sofa-ext-). Authorization: Bearer is also accepted.

In: header

Path Parameters

requirements_document_id*Requirements Document Id
Formatuuid

Response Body

application/json

application/json

curl -X GET "https://example.com/v2/external-api/requirements/497f6eca-6276-4993-bfeb-53cbbbba6f08/versions"
{  "items": [    {      "object": "version",      "version_id": "9e94c502-ca41-4342-a7f7-af96b444512c",      "version_number": 0,      "created_at": "2019-08-24T14:15:22Z",      "attribution": {        "origin_type": "user",        "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",        "user_email": "string",        "user_first_name": "string",        "user_last_name": "string",        "origin_name": "string"      },      "version_name": "string"    }  ],  "total_count": 0}
GET
/v2/external-api/requirements/{requirements_document_id}/versions/{version_id}

Return one specific requirements document version in the scoped project.

Authorization

ApiKeyAuth
X-API-Key<token>

External API key header (format: sofa-ext-). Authorization: Bearer is also accepted.

In: header

Path Parameters

requirements_document_id*Requirements Document Id
Formatuuid
version_id*Version Id
Formatuuid

Response Body

application/json

application/json

curl -X GET "https://example.com/v2/external-api/requirements/497f6eca-6276-4993-bfeb-53cbbbba6f08/versions/497f6eca-6276-4993-bfeb-53cbbbba6f08"
{  "data": {    "object": "requirements_document",    "connectedContext": [      {        "resourceType": "artifact",        "resourceId": "026d60bb-63a8-407e-bf67-01dcfc6022e6"      }    ],    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",    "version_id": "9e94c502-ca41-4342-a7f7-af96b444512c",    "version_number": 0,    "title": "string",    "markdown_content": "string",    "updated_at": "2019-08-24T14:15:22Z",    "document_type": "FEATURE",    "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef",    "children": [      {        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",        "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",        "title": "string"      }    ],    "feature_id": "ba6c7b2c-38fc-4a78-a187-51c7bbbd5c50",    "overview_tree_node_id": "066c80be-b235-4735-a14b-d7b32a2546fb"  }}
GET
/v2/external-api/requirements/{requirements_document_id}/comments

Return simplified thread-first comments for one requirements document.

Authorization

ApiKeyAuth
X-API-Key<token>

External API key header (format: sofa-ext-). Authorization: Bearer is also accepted.

In: header

Path Parameters

requirements_document_id*Requirements Document Id
Formatuuid

Response Body

application/json

application/json

curl -X GET "https://example.com/v2/external-api/requirements/497f6eca-6276-4993-bfeb-53cbbbba6f08/comments"
{  "items": [    {      "object": "document_comment_thread",      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "thread_id": "1de43264-67cb-48af-89f9-e865c375bb84",      "messages": [        {          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",          "message": "string",          "created_at": "2019-08-24T14:15:22Z",          "created_by_name": "string"        }      ],      "is_resolved": true,      "is_flagged": true    }  ]}
POST
/v2/external-api/requirements/{requirements_document_id}/comments

Create a new comment thread on one requirements document.

Authorization

ApiKeyAuth
X-API-Key<token>

External API key header (format: sofa-ext-). Authorization: Bearer is also accepted.

In: header

Path Parameters

requirements_document_id*Requirements Document Id
Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Simplified external API comment create request.

Response Body

application/json

application/json

curl -X POST "https://example.com/v2/external-api/requirements/497f6eca-6276-4993-bfeb-53cbbbba6f08/comments" \  -H "Content-Type: application/json" \  -d '{    "message": "string"  }'
{  "data": {    "object": "document_comment_thread",    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "thread_id": "1de43264-67cb-48af-89f9-e865c375bb84",    "messages": [      {        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",        "message": "string",        "created_at": "2019-08-24T14:15:22Z",        "created_by_name": "string"      }    ],    "is_resolved": true,    "is_flagged": true  }}
GET
/v2/external-api/requirements/{requirements_document_id}/comments/{thread_id}

Authorization

ApiKeyAuth
X-API-Key<token>

External API key header (format: sofa-ext-). Authorization: Bearer is also accepted.

In: header

Path Parameters

requirements_document_id*Requirements Document Id
Formatuuid
thread_id*Thread Id
Formatuuid

Response Body

application/json

application/json

curl -X GET "https://example.com/v2/external-api/requirements/497f6eca-6276-4993-bfeb-53cbbbba6f08/comments/497f6eca-6276-4993-bfeb-53cbbbba6f08"
{  "data": {    "object": "document_comment_thread",    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "thread_id": "1de43264-67cb-48af-89f9-e865c375bb84",    "messages": [      {        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",        "message": "string",        "created_at": "2019-08-24T14:15:22Z",        "created_by_name": "string"      }    ],    "is_resolved": true,    "is_flagged": true  }}