GetProjects

This method can be used for the following functionality: Get details for all projects this user has access to. with optional filter. This method can be used with optional filter.

Parameters

The following URL, Headers and Parameters are required for requests to this API endpoint. Where a parameter is optional, it will be indicated. Otherwise treat all parameters as mandatory.

Headers

GET /api/ss/projects HTTP/1.1
Host: demo.attackforge.com
X-SSAPI-KEY: APIKey
Content-Type: application/json
Connection: close

Query

skip (integer) (optional)

Number of records to skip. Default is 0 (do not skip any records).

Example:

GET /api/ss/projects?skip=10 HTTP/1.1

limit (integer) (optional)

Number of records to limit to. Default limit is 500. Max limit is 500.

Example:

GET /api/ss/projects?limit=100 HTTP/1.1

name (string) (optional)

Name of the project.

Example:

GET /api/ss/projects?name=Test Project HTTP/1.1

code (string) (optional)

Project code.

Example:

GET /api/ss/projects?code=Project123 HTTP/1.1

status (string) (optional)

Status of the project. Must be one of the following: Waiting-to-Start, Testing, Completed, On-Hold

Example:

GET /api/ss/projects?status=Testing HTTP/1.1

startDate (string) (optional)

Start date to query projects from. Must be UTC string e.g. 2021-06-03T23:15:33.008Z.

Example:

GET /api/ss/projects?startDate=2021-06-03T00:00:00.000Z HTTP/1.1

endDate (string) (optional)

End date to query projects to. Must be UTC string e.g. 2021-06-03T23:15:33.008Z.

Example:

GET /api/ss/projects?endDate=2021-06-03T00:00:00.000Z HTTP/1.1

asset_name (string) (optional)

Limit results to projects with scope that has these asset(s). Partial match search. Case insensitive by default.

Example 1 - One asset:

GET /api/ss/projects?asset_name=attackforge.com HTTP/1.1

Example 2 - Multiple assets:

GET /api/ss/projects?asset_name=attackforge.com&asset_name=api.attackforge.com HTTP/1.1

Example 3 - Case sensitive:

GET /api/ss/projects?asset_name=attackforge.com&assets_match_case=true HTTP/1.1

Example 4 - Exact match:

GET /api/ss/projects?asset_name=^attackforge.com$ HTTP/1.1

q (string) (optional)

Provides options to query a custom selection of projects.

Please visit the following link for more details on how to use this filter: https://support.attackforge.com/attackforge-enterprise/modules/self-service-restful-api/advanced-query-filter

Example

The following example is a cURL request to get all projects with status 'Testing' which have a test window between 1st January 2020 to 1st February 2020.

Request

Include API Token instead of stars in 'X-SSAPI-KEY: ***************************************' parameter.

curl -X GET 'https://demo.attackforge.com/api/ss/projects?startDate=2021-06-03T00:00:00.000Z&endDate=2021-06-04T00:00:00.000Z&status=Testing' -H 'Host: demo.attackforge.com' -H 'X-SSAPI-KEY: ***************************************' -H 'Content-Type: application/json' -H 'Connection: close'

Response

Response contains an array of project objects.

{
  "count": 999,
  "projects": [
    {
      "project_id": "...",
      "project_name": "...",
      "project_code": "...",
      "project_organization_code": "...",
      "project_vulnerability_code": "..."
      "project_groups": [
        {
          "id": "...",
          "name": "..." 
        }
      ],
      "project_status": "...",
      "project_extended_status": "...",
      "project_testing_progress": "100%",
      "project_on_hold": "...",
      "project_start_date": "...",
      "project_end_date": "...",
      "project_scope": [
        "..."
      ],
      "project_scope_details": [
        {
          "id": "...",
          "name": "...",
          "asset_id": "..."
        }
      ],
      "project_scoring": "...",
      "project_team_notifications": [
        "..."
      ],
      "project_admin_notifications": [
        "..."
      ],
      "project_start_stop_testing_email": "...",
      "project_start_stop_testing_email_additional_recipients": [
        "..."
      ],
      "project_new_vulnerability_email_type": "...",
      "project_new_vulnerability_email": "...",
      "project_new_vulnerability_email_additional_recipients": [
        "..."
      ],
      "project_forced_emails": [
        "..."
      ],
      "project_executive_summary": "...",
      "project_reporting_custom_fields": [
        { 
          "key": "...",
          "value": "...",
          "type": "Tag/Field"
        }
      ],
      "project_attack_chains": [
        {
          "total": 999
        }
      ],
      "project_team": [
        {
          "id": "...",
          "user_id": "...", 
          "first_name": "...", 
          "last_name": "...", 
          "access_level": "...", 
          "role": "...", 
          "email_notifications": [
            "..."
          ], 
          "last_modified": "..."
        }
      ],
      "project_hold_history": [
        {
          "status": "...", 
          "reason": "...", 
          "created": "..."
        }
      ],
      "project_retests_requested": 999,
      "project_retests_completed": 999,
      "project_retesting_history: [
        {
          "retesting_round": 1,
          "retesting_round_status": "...",
          "retesting_custom_round_name": "...",
          "retesting_custom_status_name": "...",
          "retesting_round_actioned_by": {
            "user_id": "...",
            "user_first_name": "...",
            "user_last_name": "..."
          },
          "retesting_round_vulnerabilities": [
            {
              "vulnerability_id": "...",
              "vulnerability_alternate_id": "...",
              "vulnerability_title": "...",
            }
          ],
          "created": "..."
        }
      ],
      "project_streams": [
        {
          "id": "...",
          "name": "...",
          "stream_portfolios": [
            {
              "id": "...",
              "name": "...",
            }
          ]
        }
      ],
      "project_total_assets": 999,
      "project_total_testcases": 999,
      "project_not_tested_testcases": 999,
      "project_in_progress_testcases": 999,
      "project_tested_testcases": 999,
      "project_not_applicable_testcases": 999,
      "project_total_vulnerabilities": 999,
      "project_open_vulnerabilities": 999,
      "project_closed_vulnerabilities": 999,
      "project_retest_vulnerabilities": 999,
      "project_critical_vulnerabilities": 999,
      "project_critical_open_vulnerabilities": 999,
      "project_critical_ready_for_retest_vulnerabilities": 999,
      "project_critical_closed_vulnerabilities": 999,
      "project_high_vulnerabilities": 999,
      "project_high_open_vulnerabilities": 999,
      "project_high_ready_for_retest_vulnerabilities": 999,
      "project_high_closed_vulnerabilities": 999,
      "project_medium_vulnerabilities": 999,
      "project_medium_open_vulnerabilities": 999,
      "project_medium_ready_for_retest_vulnerabilities": 999,
      "project_medium_closed_vulnerabilities": 999,
      "project_low_vulnerabilities": 999,
      "project_low_open_vulnerabilities": 999,
      "project_low_ready_for_retest_vulnerabilities": 999,
      "project_low_closed_vulnerabilities": 999,
      "project_info_vulnerabilities": 999,
      "project_info_open_vulnerabilities": 999,
      "project_info_ready_for_retest_vulnerabilities": 999,
      "project_info_closed_vulnerabilities": 999,
      "project_zeroday_vulnerabilities": 999,
      "project_easily_exploitable_vulnerabilities": 999,
      "project_cwe_top_25_vulnerabilities": 999,
      "project_owasp_top_10_vulnerabilities": 999,
      "project_pending_vulnerabilities": 999,
      "project_testsuites": [
        {
          "id": "...",
          "name": "..."
        }
      ],
      "project_created": "...",
      "project_last_modified": "...",
      "project_custom_fields": [
        {
          "key": "...", 
          "value": "...", 
          "type": "Tag/Field"
        }
      ],
      "project_features": {
        "attack_chains": {
          "access": {
            "project_access_level": "...",
            "roles": [
              "..."
            ]
          },
          "enabled": true
        },
        "reporting": {
          "access": {
            "project_access_level": "...",
            "roles": [
              "..."
            ]
          },
          "enabled": true
        },
        "retesting": {
          "access": {
            "project_access_level": "...",
            "roles": [
              "..."
            ]
          },
          "enabled": true
        },
        "testcases": {
          "access": {
            "project_access_level": "...",
            "roles": [
              "..."
            ]
          }
        }
      },
      "project_pages": {
        "summary": {
          "access": {
            "edit_project_access_levels": [
              "..."
            ],
            "edit_roles": [
              "..."
            ],
            "upload_project_access_levels": [
              "..."
            ],
            "upload_roles": [
              "..."
            ],
            "view_project_access_levels": [
              "..."
            ],
            "view_roles": [
              "..."
            ]
          },
          "enabled": true,
          "custom_fields": [
            {
              "key": "...",
              "value": "...",
              "type": "Tag/Field"
            }
          ]
        }
      }
    }
  ]
}

Last updated

Check YouTube for more tutorials: https://youtube.com/@attackforge