openapi: 3.0.0
servers:
  - description: Production server
    url: https://api.probely.com
info:
  contact:
    email: support@probely.com
    name: Probely Support
    url: https://probely.com
  description: |
    Probely is a Web Vulnerability Scanning suite for Agile Teams. It provides
    continuous scanning of your Web Applications and lets you efficiently
    manage the lifecycle of the vulnerabilities found, in a sleek and
    intuitive ~~web interface~~ API.

    ## Quick-Start

    ### Authentication

    To use the API, you first need to create a token (API Key).
    To create a token, select a target from the drop-down list, go to the
    "Settings" page, and click on the "Integrations" tab.

    Write a name for the API Key. For example, if you want to use the API Key
    for travis,
    you could name it "travis". In this example, we chose "**example.com_key**"

    ![Creating API key][1]

      [1]: assets/qs/create_api_key_1.png



    The API key was created successfully:

    ![API key created][2]

      [2]: assets/qs/create_api_key_2.png


    On every request, you need to pass this token in the authorization header,
    like this:


    ```yaml
    Authorization: JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJBRlNJQlp
    3elFsMDEiLCJ1c2VybmFtZSI6IkNIZ2tkSUROdzV0NSJ9.90UwiPGS2hlvgOLktFU0LfKuatNKm
    mEP79u17VnqT9M
    ```


    **WARNING: Treat this token as a password. With this token, you have the
    power to fully manage the target.**

    In the following examples, the token will be named as *PROBELY_AUTH_TOKEN*.


    ### Scan target

    First let's view our target list:

    ```bash
    curl https://api.probely.com/targets/ \
      -X GET \
      -H "Content-Type: application/json" \
      -H "Authorization: JWT PROBELY_AUTH_TOKEN"
    ```


    From the results, we need the **target id**:

    ```json
    {
       "count":1,
       "page_total":1,
       "page":1,
       "length":10,
       "results":[
          {
             "id":"AxtkqTE0v3E-",
             "name":"test-site",
             "desc":"",
             "url":"https://test-site.example.com",
             "settings":
                "(...)"
             ,
             "stack":
                "(...)"
             ,
             "verified":true,
             "(...)": "(...)"
          }
       ]
    }
    ```


    Now we can send a request to start a scan on target id **AxtkqTE0v3E-**

    ```bash
    curl https://api.probely.com/targets/AxtkqTE0v3E-/scan_now/ \
      -X POST \
      -H "Content-Type: application/json" \
      -H "Authorization: JWT PROBELY_AUTH_TOKEN"
    ```


    And we get a response saying that the scan is scheduled: the status is **queued**, and we've got a **scan id**:

    ```json
    {
       "changed":"2017-08-01T13:37:00.843339Z",
       "started":null,
       "completed":null,
       "mediums":0,
       "changed_by":
        "(...)"
       ,
       "highs":0,
       "status":"queued",
       "id":"S6dOMPn0SnoH",
       "created_by":
        "(...)"
       ,
       "target":
        "(...)"
       ,
       "created":"2017-08-01T13:37:00.843339Z",
       "lows":0
    }
    ```


    Using the scan id **S6dOMPn0SnoH**, we can pool the scan status:

    ```bash
    curl https://api.probely.com/targets/AxtkqTE0v3E-/scans/S6dOMPn0SnoH/ \
      -X GET \
      -H "Content-Type: application/json" \
      -H "Authorization: JWT PROBELY_AUTH_TOKEN"
    ```


    And we get a response saying that the scan status is now **started**:

    ```json
    {
       "id":"S6dOMPn0SnoH",
       "changed":"2017-08-01T13:38:12.623650Z",
       "started":null,
       "completed":null,
       "mediums":0,
       "changed_by":
        "(...)"
       ,
       "highs":0,
       "status":"started",
       "created_by":
        "(...)"
       ,
       "target":
        "(...)"
       ,
       "created":"2017-08-01T13:37:00.843339Z",
       "lows":0
    }
    ```


    The possible statuses are:

    | Status | Name | Description |
    | ------ | ---- | ----------- |
    | queued | Queued | The scan is queued to start |
    | started | Started | The scan is currently running |
    | under_review | Under Review | The scan is complete but has some findings under review |
    | completed | Completed | The scan is complete |
    | completed_with_errors | Completed with errors | The scan is complete even after getting some error(s) |
    | failed | Failed | The scan failed |
    | canceled | Canceled | The scan was canceled |
    | canceling | Canceling | The scan is being canceled |


    During the scan, the keys "lows", "mediums", and "highs" will be updated
    with the findings, as they are being found.

    After we get either the status **completed** or **completed_with_errors**,
    we can view the findings.


    ### Get vulnerabilities

    Using the previous scan id **S6dOMPn0SnoH**, we can get the scan results:

    ```bash
    curl https://api.probely.com/targets/AxtkqTE0v3E-/scans/S6dOMPn0SnoH/ \
      -X GET \
      -H "Content-Type: application/json" \
      -H "Authorization: JWT PROBELY_AUTH_TOKEN"
    ```

    We get a response saying that the scan status is now **completed**, and
    that **45** vulnerabilities were found. **14** low, **11** medium and
    **20** high:

    ```json
    {
       "id":"S6dOMPn0SnoH",
       "target":
        "(...)"
       ,
       "status":"completed",
       "started":"2017-08-01T13:37:12.623650Z",
       "completed":"2017-08-01T14:17:48.559514Z",
       "lows":14,
       "mediums":11,
       "highs":20,
       "created":"2017-08-01T13:37:00.843339Z",
       "created_by":
        "(...)"
       ,
       "changed":"2017-08-01T14:17:48.559514Z",
       "changed_by":
        "(...)"
    }
    ```

    You can now view the results of this scan, or the target findings.


    Let's start with the scan results:

    ```bash
    curl https://api.probely.com/targets/AxtkqTE0v3E-/findings/?scan=S6dOMPn0SnoH&page=1 \
      -X GET \
      -H "Content-Type: application/json" \
      -H "Authorization: JWT PROBELY_AUTH_TOKEN"
    ```

    ```json
    {
       "count":45,
       "page_total":5,
       "page":1,
       "length":10,
       "results":[
          {
             "id":79,
             "target":
              "(...)"
             ,
             "scans":
              "(...)"
             ,
             "labels":
              "(...)"
             ,
             "fix":"To fix an SQL Injection in PHP, you should use Prepared Statements. Prepared Statements can be thought of as a kind of compiled template for the SQL that an application wants to run, that can be customized using variable parameters.\n\nPHP's PDO extension supports Prepared Statements, so that's probably your best option.\n\nIn the example below you can see the use of prepared statements. Variables ```$username``` and ```$hashedPassword``` come from user input.\n\n```\n$stmt = $dbg->prepare(\"SELECT id, name FROM users\n                       WHERE username=? AND password=?\");\n$stmt->bindParam(1, $username);\n$stmt->bindParam(2, $hashedPassword);\nif ($stmt->execute()) {\n\t$user = $stmt->fetch();\n\tif ($user) {\n\t\t$_SESSION['authID'] = $user['id'];\n\t\techo \"Hello \" . $user['name'];\n\t} else {\n\t\techo \"Invalid Login\";\n\t}\n}\n```  \n\nAs an added bonus, if you're executing the same query several times, then it'll be even faster than when you're not using prepared statements. This is because when using prepared statements, the query needs to be parsed (prepared) only once, but can be executed multiple times with the same or different parameters. \n",
             "requests":[
                {
                   "request":"(...)",
                   "response":"(...)"
                },
                {
                   "request":"(...)",
                   "response":"(...)"
                }
             ],
             "evidence":null,
             "extra":"",
             "definition":{
                "id":"xnV8PJVmSoLS",
                "name":"SQL Injection",
                "desc":"SQL Injections are the most common form of injections because SQL databases are very popular in dynamic web applications. This vulnerability allows an attacker to tamper existing SQL queries performed by the web application. Depending on the queries, the attacker might be able to access, modify or even destroy data from the database.\n\nSince databases are commonly used to store private data, such as authentication information, personal user data and site content, if an attacker gains access to it, the consequences are typically very severe, ranging from defacement of the web application to users data leakage or loss, or even full control of the web application or database server.",
             },
             "url":"http://test-site.example.com/login.php",
             "path":"login.php",
             "method":"post",
             "parameter":"username",
             "value":"",
             "params":{
                "username":[
                   "probely'"
                ],
                "password":[
                   "probely"
                ]
             },
             "reporter":
              "(...)"
             ,
             "assignee":null,
             "state":"notfixed",
             "severity":30,
             "last_found":"2017-08-01T14:03:56.207794Z",
             "changed":"2017-08-01T14:03:56.207794Z",
             "changed_by":
              "(...)"
             ,
             "comment":""
          },
          "(...)"
       ]
    }
    ```

    You can also view all the target findings, which will show all the findings
    that are not yet fixed. \\
    The structure is similar to the previous result.

    ```bash
    curl https://api.probely.com/targets/AxtkqTE0v3E-/findings/ \
      -X GET \
      -H "Content-Type: application/json" \
      -H "Authorization: JWT PROBELY_AUTH_TOKEN"
    ```


    ### Get vulnerability details

    You can also get details for a particular finding in a target. \\
    In this example we will get the details for the same finding as in the previous
    section:

    ```bash
    curl https://api.probely.com/targets/AxtkqTE0v3E-/findings/79/ \
      -X GET \
      -H "Content-Type: application/json" \
      -H "Authorization: JWT PROBELY_AUTH_TOKEN"
    ```


    This will result on the same information, but just for this particular finding:

    ```json
    {
       "id":79,
       "target":
        "(...)"
       ,
       "scans":
        "(...)"
       ,
       "labels":
        "(...)"
       ,
       "fix":"To fix an SQL Injection in PHP, you should use Prepared Statements. Prepared Statements can be thought of as a kind of compiled template for the SQL that an application wants to run, that can be customized using variable parameters.\n\nPHP's PDO extension supports Prepared Statements, so that's probably your best option.\n\nIn the example below you can see the use of prepared statements. Variables ```$username``` and ```$hashedPassword``` come from user input.\n\n```\n$stmt = $dbg->prepare(\"SELECT id, name FROM users\n                       WHERE username=? AND password=?\");\n$stmt->bindParam(1, $username);\n$stmt->bindParam(2, $hashedPassword);\nif ($stmt->execute()) {\n\t$user = $stmt->fetch();\n\tif ($user) {\n\t\t$_SESSION['authID'] = $user['id'];\n\t\techo \"Hello \" . $user['name'];\n\t} else {\n\t\techo \"Invalid Login\";\n\t}\n}\n```  \n\nAs an added bonus, if you're executing the same query several times, then it'll be even faster than when you're not using prepared statements. This is because when using prepared statements, the query needs to be parsed (prepared) only once, but can be executed multiple times with the same or different parameters. \n",
       "requests":[
          {
             "request":"(...)",
             "response":"(...)"
          },
          {
             "request":"(...)",
             "response":"(...)"
          }
       ],
       "evidence":null,
       "extra":"",
       "definition":{
          "id":"xnV8PJVmSoLS",
          "name":"SQL Injection",
          "desc":"SQL Injections are the most common form of injections because SQL databases are very popular in dynamic web applications. This vulnerability allows an attacker to tamper existing SQL queries performed by the web application. Depending on the queries, the attacker might be able to access, modify or even destroy data from the database.\n\nSince databases are commonly used to store private data, such as authentication information, personal user data and site content, if an attacker gains access to it, the consequences are typically very severe, ranging from defacement of the web application to users data leakage or loss, or even full control of the web application or database server.",
       },
       "url":"http://test-site.example.com/login.php",
       "path":"login.php",
       "method":"post",
       "parameter":"username",
       "value":"",
       "params":{
          "username":[
             "probely'"
          ],
          "password":[
             "probely"
          ]
       },
       "reporter":
        "(...)"
       ,
       "assignee":null,
       "state":"notfixed",
       "severity":30,
       "last_found":"2017-08-01T14:03:56.207794Z",
       "changed":"2017-08-01T14:03:56.207794Z",
       "changed_by":
        "(...)"
       ,
       "comment":""
    }
    ```

    ## Concepts

    The short version is that you run *scans* on *targets*, and *findings* are
    created for any issue that is found.
    However, there are a few more concepts that must be explained in order to
    get a complete picture of how Probely works.
    We will spend the next few sections detailing the most important concepts.


    ### Target

    A *target* defines the scope of a scan, what will and won't be included
    in the scan plan.
    This is done by filling a *target*'s *site* and *assets*.

    The entry point for the web application (and authentication) is setup
    in the *target*'s *site*.

    In modern web applications, you are probably loading resources from
    multiple domains.
    A single page app, for example, will usualy load the page from one domain
    and make AJAX requests to another.
    This is what *assets* are for: they specify what domains our scanner should
    follow and create requests for.


    ### Site
    A URL is probably not the only thing you will need to setup when scannning your application.
    Does the application have an authenticated area? Does it use basic auth?
    Does it expect a certain cookie or header?
    These parameters are all configured in the *target*'s *site*.


    We need to ensure that only allowed web applications are scanned.
    Therefore, we must verify that you have control of any site you wish to include.
    This can be done by:
      * Placing a file on a well-known location, on the site's server;
      * Creating specific DNS records.


    ### Asset

    An *asset* is very similar to a *site*. The difference is that it is a domain instead
    of a URL. Additionally, an *asset* has no login or basic auth support.
    You can still have custom cookies and headers per *asset*.

    As with the *site*, you will need to prove an *asset*'s ownership. We have added some
    rules to make your life easier, if you already have verified
    a *site* and the domains match, the validation is fast-tracked.

    ### Scans

    This is what you're here for.
    After configuring your *target*, you will want to run *scans* against it.
    You can either start a one off scan, or schedule one for later - recurring
    or not.

    During the *scan*, we will spider and run several modules to check for
    security issues, which we call *findings*.
    You can check the *findings* even before a scan ends.
    If everything goes well, the scan will complete and that is it.

    With some *findings*, our automated processes may have difficulties
    determining if it is a false positive or a legitimate issue.
    In these instances, a scan will be marked as under review, and we will
    further analyze the finding before making a decision.
    We will only show findings that, for some degree of confidence, are true
    positives.
    A finding that we are not sure of will never be displayed.

    As much as we try to prevent it, a *scan* (or a sub-module) can malfunction.
    If this happens, a *scan* is marked as:
      * "failed": the problem was irrecoverable;
      * "completed with errors": some module failed but the scan itself completed.

    During a scan, we try to determine what *frameworks* you are using
    and add this information to the *site* and *asset* objects discussed
    previously.


    ### Findings

    The last core concept is the *finding*, this is a security issue that
    we have found during our scans.
    If the same issue is found in a new scan it will not open a new finding but
    update the previous.

    A *finding* will have a lot of information about the issue.
    Namely, where it was found, URL, insertion point (e.g. cookie), parameter,
    and method.
    Evidence we gathered, and the full request and response that we used.
    Sugestions of how to go about fixing it.
    A full description of the vulnerability is also present in the
    *definition* property.
    We also assign a severity and calculate the CVSS score for each.

    Besides all this, there are also actions that you can perform on a *finding*.
    You can assign it to one user, leave comments for your team or add labels,
    and reduce or increase the severity.

    If you don't plan on fixing the *finding* and accept the risk, or you think
    we reported a false positive, you can mark the finding to reflect that.
  title: Probely Developers
  version: 1.2.0
  x-apisguru-categories:
    - monitoring
  x-logo:
    altText: Probely
    url: https://developers.probely.com/assets/logo_dark.png
  x-origin:
    - format: openapi
      url: https://developers.probely.com/openapi.yaml
      version: "3.0"
  x-providerName: probely.com
security:
  - jwtAuth: []
tags:
  - description: |
      Login users and verify token. For login we make use of [JSON web tokens](https://jwt.io/).
    name: Login
  - description: |
      In Probely, a target is what defines what is being scanned.
      Connected to a target there are two other objects: a site and a list of
      assets.

      The site is the where the scan starts and will usually be the main
      entry point for your web application.

      As things are today, a single URL is not enough to describe all of the
      resources an application uses.
      For example, a modern single page web application might load the main
      page from one domain and make AJAX requests to one or more other domains.
      This where assets come in, they are used to add extra domains that
      our scanner should follow.
    name: Targets
  - description: |
      Every target has a site object, it contains the main entry URL for scans.
      Other settings are also connected to a site like login parameters,
      basic auth, and custom headers and cookies.
    name: Site
  - description: |
      Other resources a scan required access to (e.g. the domain where an
      API is being served) should be added here.
      You can also configure custom headers and cookies for each asset.
    name: Assets
  - description: |
      Start and manage scans against the target.
      You can also produce reports and access the list of scanned endpoints.
    name: Scans
  - description: |
      You can schedule scans for the future as a one off, or on a recurring
      basis.
    name: Scheduled
  - description: |
      Findings are security issues found during scans.
      We try hard to present valid findings only. We give as much information
      as possible to help you know exactly what to do, without having to
      resort to outside resources.

      Findings come with all the data we gathered during the scan, a
      suggestion on how to fix it, and a description of the vulnerability.
    name: Findings
  - description: |
      During the scans we run fingerprinters against the target and record the
      result on the site and assets.
      You can access our list of frameworks/software here.
    name: Frameworks
  - description: |
      You can add labels to findings to help you keep track of you development.
      Use these endpoints to manage your labels.
    name: Labels
  - description: |
      In Probely findings are connected to vulnerability definitions.
      This is how we keep track what type of vulnerability it is, it also
      includes a name and description.
    name: Vulnerabilities
  - description: |
      API keys allow you to perform operations without using your regular user.
      There are two endpoints for API keys:
        * one to create keys that can only access the current scope;
        * one that allows the user to perform operations like creating targets.
    name: API Keys
  - description: |
      Use these endpoints to reset a user's password.
    name: Password Reset
  - description: Manage self and other users.
    name: Users
  - description: Account management.
    name: Account
  - description: |
      Probely has several graphs and tables that it uses to
      display statistics of the current state of a target or account.
    name: Statistics
  - description: |
      If you only require a small number of active targets at a time but don't
      want to lose their history by deleting one to add another it is now
      possible to archive targets.
      This feature is still experimental, please contact our support if you
      are interested.
    name: Archive
  - description: |
      Important events in your Probely account are recorded as events.
      An event is comprised of the resource acted on, when it occurred and
      what kind of event (ex: `target_created`).

      Besides fetching these events using their endpoints you are also able
      to receive them in real-time by registering webhooks.
      The event is sent to every registered webhook URL as JSON and an HTTP
      success status code (2XX) is expected in the response.
      In case a webhook fails it will be retried with an exponential back-off
      (maxing out at 4 hours) during 2 days, at the end of which an email is
      sent to the users informing of this failure.
      For security we suggest using an unique hard to guess identifier for the
      webhook:
      ```
      https://webhook.example.com/d69179e3b06549469817560c650be98f/
      ```
      Webhook URL's are required to be HTTPS.

      When registering a webhook according to the chosen endpoint you can
      receive any event for the account or only events for a single target.
      A target webhook will not receive `user_created`, `user_deleted` and
      `target_created` events and all events received pertain to the target
      the webhook was created for.
    name: Events
  - description: List available and installed integrations
    name: Integrations
  - description: |
      Receive slack notifications on Probely events.
    name: Slack Integration
  - description: |
      To start integrating Probely with Jira you will first need to add the
      Probely app to your Jira instance.
      Go to the marketplace, search for Probely and install the application.
      When prompted click the "Get Started" button and follow the steps described
      to connect both accounts.
      A short explanation of the sync options can be found
      [here](https://help.probely.com/integrations/jira-syncronization-settings).
    name: Jira Cloud Integration
  - description: |
      Find instructions on how to configure this integration for your Jira
      deployment [here](https://help.probely.com/integrations/how-to-integrate-probely-with-jira-server).
      A short explanation of the sync options can be found
      [here](https://help.probely.com/integrations/jira-syncronization-settings).
    name: Jira Server Integration
paths:
  /account/:
    get:
      parameters: []
      responses:
        "200":
          $ref: "#/components/responses/Account"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
      summary: Retrieve account information
      tags:
        - Account
  /auth/obtain/:
    post:
      description: |
        The received token should be used for authenticated requests by including in the Authorization header as `Authorization: JWT <token>`.
      requestBody:
        $ref: "#/components/requestBodies/Login"
      responses:
        "200":
          $ref: "#/components/responses/Token"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "500":
          $ref: "#/components/responses/InternalServerError"
      security: []
      summary: Authenticate user
      tags:
        - Login
  /auth/refresh/:
    post:
      requestBody:
        $ref: "#/components/requestBodies/Token"
      responses:
        "200":
          $ref: "#/components/responses/Token"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "500":
          $ref: "#/components/responses/InternalServerError"
      security: []
      summary: Replace token with a new one
      tags:
        - Login
  /auth/revoke/:
    post:
      requestBody:
        $ref: "#/components/requestBodies/Token"
      responses:
        "200":
          $ref: "#/components/responses/Token"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "500":
          $ref: "#/components/responses/InternalServerError"
      security: []
      summary: Revoke a token
      tags:
        - Login
  /auth/verify/:
    post:
      description: |
        Check for the validity of a user token.
      requestBody:
        $ref: "#/components/requestBodies/Token"
      responses:
        "200":
          $ref: "#/components/responses/Token"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "500":
          $ref: "#/components/responses/InternalServerError"
      security: []
      summary: Verify a token
      tags:
        - Login
  /billing/:
    get:
      parameters: []
      responses:
        "200":
          $ref: "#/components/responses/Billing"
      summary: Retrieve billing information
      tags:
        - Account
    patch:
      requestBody:
        $ref: "#/components/requestBodies/Billing"
      responses:
        "200":
          $ref: "#/components/responses/Billing"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: Partial update billing information
      tags:
        - Account
    put:
      requestBody:
        $ref: "#/components/requestBodies/Billing"
      responses:
        "200":
          $ref: "#/components/responses/Billing"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: Update billing information
      tags:
        - Account
  /billing/actions/:
    post:
      requestBody:
        $ref: "#/components/requestBodies/TargetIds"
      responses:
        "200":
          $ref: "#/components/responses/Action"
      summary: Action that should be taken to enable the selected targets
      tags:
        - Account
  /billing/estimate/:
    post:
      requestBody:
        $ref: "#/components/requestBodies/Subscription"
      responses:
        "200":
          $ref: "#/components/responses/Invoice"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: Estimate costs of updating a subscription
      tags:
        - Account
  /billing/subscribe/:
    post:
      requestBody:
        $ref: "#/components/requestBodies/Subscription"
      responses:
        "200":
          $ref: "#/components/responses/Invoice"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: Update a subscription
      tags:
        - Account
  /check/:
    post:
      requestBody:
        $ref: "#/components/requestBodies/EmailToken"
      responses:
        "200":
          $ref: "#/components/responses/SuccessMessage"
        "400":
          $ref: "#/components/responses/BadRequestErrorMessage"
      security: []
      summary: Check validity of password reset token
      tags:
        - Password Reset
  /enterprise/auth/obtain/:
    post:
      description: |
        The received token should be used for authenticated requests by including in the Authorization header as `Authorization: JWT <token>`.
      requestBody:
        $ref: "#/components/requestBodies/Login"
      responses:
        "200":
          $ref: "#/components/responses/Token"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "500":
          $ref: "#/components/responses/InternalServerError"
      security: []
      summary: Enterprise user authentication
      tags:
        - Login
  /enterprise/auth/refresh/:
    post:
      requestBody:
        $ref: "#/components/requestBodies/Token"
      responses:
        "200":
          $ref: "#/components/responses/Token"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "500":
          $ref: "#/components/responses/InternalServerError"
      security: []
      summary: Enterprise token refresh
      tags:
        - Login
  /enterprise/auth/revoke/:
    post:
      requestBody:
        $ref: "#/components/requestBodies/Token"
      responses:
        "200":
          $ref: "#/components/responses/Token"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "500":
          $ref: "#/components/responses/InternalServerError"
      security: []
      summary: Enterprise token revokation
      tags:
        - Login
  /enterprise/auth/verify/:
    post:
      description: |
        Check for the validity of a user token.
      requestBody:
        $ref: "#/components/requestBodies/Token"
      responses:
        "200":
          $ref: "#/components/responses/Token"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "500":
          $ref: "#/components/responses/InternalServerError"
      security: []
      summary: Enterprise token verification
      tags:
        - Login
  /events/:
    get:
      responses:
        "200":
          $ref: "#/components/responses/EventList"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: List account events
      tags:
        - Events
  "/events/{id}/":
    get:
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        "200":
          $ref: "#/components/responses/Event"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Retrieve account event
      tags:
        - Events
  /frameworks/:
    get:
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/pageLength"
        - $ref: "#/components/parameters/ordering"
        - $ref: "#/components/parameters/search"
      responses:
        "200":
          $ref: "#/components/responses/FrameworkList"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
      summary: List frameworks
      tags:
        - Frameworks
  "/frameworks/{id}/":
    get:
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        "200":
          $ref: "#/components/responses/Framework"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Retrieve framework
      tags:
        - Frameworks
  /integrations/:
    get:
      responses:
        "200":
          $ref: "#/components/responses/IntegrationsAccount"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: Integrations available and installed in the account
      tags:
        - Integrations
  /integrations/jira-cloud/projects/:
    get:
      responses:
        "200":
          $ref: "#/components/responses/JiraProjectList"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: List Jira Projects
      tags:
        - Jira Cloud Integration
  "/integrations/jira-cloud/projects/{project_id}/issue_types/":
    get:
      parameters:
        - $ref: "#/components/parameters/jiraProjectId"
      responses:
        "200":
          $ref: "#/components/responses/JiraIssueTypeList"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Retrieve project issue types
      tags:
        - Jira Cloud Integration
  "/integrations/jira-cloud/projects/{project_id}/issue_types/{issue_type_id}/priorities/":
    get:
      parameters:
        - $ref: "#/components/parameters/jiraProjectId"
        - $ref: "#/components/parameters/jiraIssueTypeId"
      responses:
        "200":
          $ref: "#/components/responses/JiraIssuePriorityList"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: Retrieve issue priorities
      tags:
        - Jira Cloud Integration
  "/integrations/jira-cloud/projects/{project_id}/issue_types/{issue_type_id}/status/":
    get:
      parameters:
        - $ref: "#/components/parameters/jiraProjectId"
        - $ref: "#/components/parameters/jiraIssueTypeId"
      responses:
        "200":
          $ref: "#/components/responses/JiraIssueStatusList"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Retrieve issue statuses
      tags:
        - Jira Cloud Integration
  /integrations/jira-server/projects/:
    get:
      responses:
        "200":
          $ref: "#/components/responses/JiraProjectList"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: List Jira Projects
      tags:
        - Jira Server Integration
  "/integrations/jira-server/projects/{project_id}/issue_types/":
    get:
      parameters:
        - $ref: "#/components/parameters/jiraProjectId"
      responses:
        "200":
          $ref: "#/components/responses/JiraIssueTypeList"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Retrieve project issue types
      tags:
        - Jira Server Integration
  "/integrations/jira-server/projects/{project_id}/issue_types/{issue_type_id}/priorities/":
    get:
      parameters:
        - $ref: "#/components/parameters/jiraProjectId"
        - $ref: "#/components/parameters/jiraIssueTypeId"
      responses:
        "200":
          $ref: "#/components/responses/JiraIssuePriorityList"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: Retrieve issue priorities
      tags:
        - Jira Server Integration
  "/integrations/jira-server/projects/{project_id}/issue_types/{issue_type_id}/status/":
    get:
      parameters:
        - $ref: "#/components/parameters/jiraProjectId"
        - $ref: "#/components/parameters/jiraIssueTypeId"
      responses:
        "200":
          $ref: "#/components/responses/JiraIssueStatusList"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Retrieve issue statuses
      tags:
        - Jira Server Integration
  /keys/:
    get:
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/pageLength"
        - $ref: "#/components/parameters/ordering"
        - $ref: "#/components/parameters/search"
      responses:
        "200":
          $ref: "#/components/responses/APIKeyList"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: List API keys allowed to operate on account
      tags:
        - API Keys
    post:
      requestBody:
        $ref: "#/components/requestBodies/APIKey"
      responses:
        "201":
          $ref: "#/components/responses/APIKey"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: Create account API key
      tags:
        - API Keys
  "/keys/{id}/":
    delete:
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        "204":
          $ref: "#/components/responses/NoContent"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: Delete account API key
      tags:
        - API Keys
    get:
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        "200":
          $ref: "#/components/responses/APIKey"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: Retrieve account API key
      tags:
        - API Keys
  /labels/:
    get:
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/pageLength"
        - $ref: "#/components/parameters/ordering"
        - $ref: "#/components/parameters/search"
      responses:
        "200":
          $ref: "#/components/responses/LabelList"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
      summary: List labels
      tags:
        - Labels
    post:
      requestBody:
        $ref: "#/components/requestBodies/Label"
      responses:
        "201":
          $ref: "#/components/responses/Label"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
      summary: Create label
      tags:
        - Labels
  "/labels/{id}/":
    delete:
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        "204":
          $ref: "#/components/responses/NoContent"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
      summary: Delete label
      tags:
        - Labels
    get:
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        "200":
          $ref: "#/components/responses/Label"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Retrieve framework
      tags:
        - Labels
    patch:
      parameters:
        - $ref: "#/components/parameters/id"
      requestBody:
        $ref: "#/components/requestBodies/Label"
      responses:
        "200":
          $ref: "#/components/responses/Label"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Partial update
      tags:
        - Labels
    put:
      parameters:
        - $ref: "#/components/parameters/id"
      requestBody:
        $ref: "#/components/requestBodies/Label"
      responses:
        "200":
          $ref: "#/components/responses/Label"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Update label
      tags:
        - Labels
  /plans/:
    get:
      parameters: []
      responses:
        "200":
          $ref: "#/components/responses/PlanList"
      security: []
      summary: Subscription plans
      tags:
        - Plan
  /profile/:
    get:
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/pageLength"
        - $ref: "#/components/parameters/ordering"
        - $ref: "#/components/parameters/search"
      responses:
        "200":
          $ref: "#/components/responses/User"
      summary: User data
      tags:
        - Users
  /profile/change_password/:
    post:
      description: |
        Our password policy requires a minimum password length of 10 chars with
        at least one symbol or number.
      requestBody:
        $ref: "#/components/requestBodies/PasswordChange"
      responses:
        "200":
          $ref: "#/components/responses/SuccessMessage"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
      summary: Change user password
      tags:
        - Users
  /reset/:
    post:
      requestBody:
        $ref: "#/components/requestBodies/Email"
      responses:
        "200":
          $ref: "#/components/responses/SuccessMessage"
        "400":
          $ref: "#/components/responses/BadRequestErrorMessage"
      security: []
      summary: Send reset password email
      tags:
        - Password Reset
  /setpassword/:
    post:
      requestBody:
        $ref: "#/components/requestBodies/PasswordSet"
      responses:
        "200":
          $ref: "#/components/responses/SuccessMessage"
        "400":
          $ref: "#/components/responses/BadRequestErrorMessage"
      security: []
      summary: |
        Reset password after asking for a reset (with the token sent by email).
      tags:
        - Password Reset
  /target-actions/:
    post:
      requestBody:
        $ref: "#/components/requestBodies/TargetIds"
      responses:
        "200":
          $ref: "#/components/responses/Actions"
      summary: Available actions for the selected targets
      tags:
        - Account
  /targets/:
    get:
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/pageLength"
        - $ref: "#/components/parameters/ordering"
        - $ref: "#/components/parameters/search"
      responses:
        "200":
          $ref: "#/components/responses/TargetList"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
        "500":
          $ref: "#/components/responses/InternalServerError"
      summary: List targets
      tags:
        - Targets
    post:
      requestBody:
        $ref: "#/components/requestBodies/Target"
      responses:
        "201":
          $ref: "#/components/responses/Target"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "500":
          $ref: "#/components/responses/InternalServerError"
      summary: Create target
      tags:
        - Targets
  /targets/activate/:
    post:
      requestBody:
        $ref: "#/components/requestBodies/TargetIds"
      responses:
        "200":
          $ref: "#/components/responses/TargetIds"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: Activate targets
      tags:
        - Archive
  /targets/all/average_fix_time/:
    get:
      parameters: []
      responses:
        "200":
          $ref: "#/components/responses/AverageFixTime"
      summary: Average fix time graph data (all targets)
      tags:
        - Statistics
  /targets/all/needs_attention_pie/:
    get:
      parameters: []
      responses:
        "200":
          $ref: "#/components/responses/NeedsAttentionPie"
      summary: Targets with open vulnerabilities pie chart data
      tags:
        - Statistics
  /targets/all/needs_attention_top/:
    get:
      parameters: []
      responses:
        "200":
          $ref: "#/components/responses/NeedsAttentionTop"
      summary: Targets with open vulnerabilities
      tags:
        - Statistics
  /targets/all/risk_trend/:
    get:
      parameters: []
      responses:
        "200":
          $ref: "#/components/responses/RiskTrend"
      summary: Risk trend graph data (all targets)
      tags:
        - Statistics
  /targets/all/scans/:
    get:
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/pageLength"
        - $ref: "#/components/parameters/ordering"
        - $ref: "#/components/parameters/search"
        - $ref: "#/components/parameters/scanStarted"
        - $ref: "#/components/parameters/scanStatus"
      responses:
        "200":
          $ref: "#/components/responses/ScanList"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
      summary: List scans for all targets
      tags:
        - Scans
  /targets/all/scheduledscans/expanded/:
    get:
      parameters:
        - $ref: "#/components/parameters/pageLength"
      responses:
        "200":
          $ref: "#/components/responses/ScheduledArray"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: List scheduled scans for all targets expanding recurrence
      tags:
        - Scheduled
  /targets/all/severity_trend/:
    get:
      parameters: []
      responses:
        "200":
          $ref: "#/components/responses/SeverityTrend"
      summary: Severity trend graph data (all targets)
      tags:
        - Statistics
  /targets/all/top_vulns/:
    get:
      parameters: []
      responses:
        "200":
          $ref: "#/components/responses/TopVulns"
      summary: Top 5 vulnerabilities (all targets).
      tags:
        - Statistics
  /targets/archive/:
    post:
      requestBody:
        $ref: "#/components/requestBodies/TargetIds"
      responses:
        "200":
          $ref: "#/components/responses/TargetIds"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: Archive targets
      tags:
        - Archive
  /targets/archived/:
    post:
      requestBody:
        $ref: "#/components/requestBodies/TargetIds"
      responses:
        "200":
          $ref: "#/components/responses/TargetList"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: List archived targets
      tags:
        - Archive
  "/targets/{id}/":
    delete:
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        "204":
          $ref: "#/components/responses/NoContent"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Delete target
      tags:
        - Targets
    get:
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        "200":
          $ref: "#/components/responses/Target"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
        "500":
          $ref: "#/components/responses/InternalServerError"
      summary: Retrieve target
      tags:
        - Targets
    patch:
      parameters:
        - $ref: "#/components/parameters/id"
      requestBody:
        $ref: "#/components/requestBodies/Target"
      responses:
        "200":
          $ref: "#/components/responses/Target"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Partial update target
      tags:
        - Targets
    put:
      parameters:
        - $ref: "#/components/parameters/id"
      requestBody:
        $ref: "#/components/requestBodies/Target"
      responses:
        "200":
          $ref: "#/components/responses/Target"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Update target
      tags:
        - Targets
  "/targets/{target_id}/assets/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/pageLength"
        - $ref: "#/components/parameters/ordering"
        - $ref: "#/components/parameters/search"
      responses:
        "200":
          $ref: "#/components/responses/AssetList"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: List target's assets
      tags:
        - Assets
    post:
      parameters:
        - $ref: "#/components/parameters/targetId"
      requestBody:
        $ref: "#/components/requestBodies/Asset"
      responses:
        "201":
          $ref: "#/components/responses/Asset"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Create new asset
      tags:
        - Assets
  "/targets/{target_id}/assets/{id}/":
    delete:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      responses:
        "204":
          $ref: "#/components/responses/NoContent"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Delete asset
      tags:
        - Assets
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      responses:
        "200":
          $ref: "#/components/responses/Asset"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Retrieve asset
      tags:
        - Assets
    patch:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      requestBody:
        $ref: "#/components/requestBodies/Asset"
      responses:
        "200":
          $ref: "#/components/responses/Asset"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Partial update assets
      tags:
        - Assets
    put:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      requestBody:
        $ref: "#/components/requestBodies/Asset"
      responses:
        "200":
          $ref: "#/components/responses/Asset"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Update asset
      tags:
        - Assets
  "/targets/{target_id}/assets/{id}/verify/":
    post:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      requestBody:
        $ref: "#/components/requestBodies/SiteVerify"
      responses:
        "200":
          $ref: "#/components/responses/SuccessMessage"
        "400":
          $ref: "#/components/responses/BadRequestErrorMessage"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Verify asset ownership
      tags:
        - Assets
  "/targets/{target_id}/average_fix_time/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
      responses:
        "200":
          $ref: "#/components/responses/AverageFixTime"
      summary: Average vulnerability trend graph data
      tags:
        - Statistics
  "/targets/{target_id}/events/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
      responses:
        "200":
          $ref: "#/components/responses/EventList"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: List target events
      tags:
        - Events
  "/targets/{target_id}/events/{id}/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      responses:
        "200":
          $ref: "#/components/responses/Event"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Retrieve target event
      tags:
        - Events
  "/targets/{target_id}/findings/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/scanId"
        - $ref: "#/components/parameters/findingSeverity"
        - $ref: "#/components/parameters/findingState"
        - $ref: "#/components/parameters/assignee"
        - $ref: "#/components/parameters/label"
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/pageLength"
        - $ref: "#/components/parameters/ordering"
        - $ref: "#/components/parameters/search"
      responses:
        "200":
          $ref: "#/components/responses/FindingList"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: List target findings
      tags:
        - Findings
  "/targets/{target_id}/findings/bulk/report/":
    post:
      parameters:
        - $ref: "#/components/parameters/targetId"
      requestBody:
        $ref: "#/components/requestBodies/FindingBulkIds"
      responses:
        "200":
          description: |
            Token to retrieve report.
        "400":
          $ref: "#/components/responses/BadRequestErrorMessage"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Finding report
      tags:
        - Findings
  "/targets/{target_id}/findings/bulk/retest/":
    post:
      parameters:
        - $ref: "#/components/parameters/targetId"
      requestBody:
        $ref: "#/components/requestBodies/FindingBulkRetest"
      responses:
        "200":
          description: |
            List of assessment IDs.
        "400":
          $ref: "#/components/responses/BadRequestErrorMessage"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Bulk retest findings
      tags:
        - Findings
  "/targets/{target_id}/findings/bulk/update/":
    patch:
      parameters:
        - $ref: "#/components/parameters/targetId"
      requestBody:
        $ref: "#/components/requestBodies/FindingBulkUpdate"
      responses:
        "200":
          $ref: "#/components/responses/Success"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Bulk update findings
      tags:
        - Findings
  "/targets/{target_id}/findings/report/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/findingBulkReport"
      responses:
        "200":
          $ref: "#/components/responses/Report"
        "400":
          $ref: "#/components/responses/BadRequestErrorMessage"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Retrieve finding report PDF format
      tags:
        - Findings
  "/targets/{target_id}/findings/{id}/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      responses:
        "200":
          $ref: "#/components/responses/Finding"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Retrieve finding
      tags:
        - Findings
    patch:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      requestBody:
        $ref: "#/components/requestBodies/Finding"
      responses:
        "200":
          $ref: "#/components/responses/Finding"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Partial update finding
      tags:
        - Findings
    put:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      requestBody:
        $ref: "#/components/requestBodies/Finding"
      responses:
        "200":
          $ref: "#/components/responses/Finding"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Update finding
      tags:
        - Findings
  "/targets/{target_id}/findings/{id}/integrations/jira-cloud/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      responses:
        "200":
          $ref: "#/components/responses/JiraCloudFinding"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: Retrieve Jira Cloud finding configuration
      tags:
        - Jira Cloud Integration
    patch:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      requestBody:
        $ref: "#/components/requestBodies/JiraCloudFinding"
      responses:
        "200":
          $ref: "#/components/responses/JiraCloudFinding"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Update Jira Cloud finding configuration
      tags:
        - Jira Cloud Integration
    put:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      requestBody:
        $ref: "#/components/requestBodies/JiraCloudFinding"
      responses:
        "200":
          $ref: "#/components/responses/JiraCloudFinding"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Update Jira Cloud finding configuration
      tags:
        - Jira Cloud Integration
  "/targets/{target_id}/findings/{id}/integrations/jira-server/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      responses:
        "200":
          $ref: "#/components/responses/JiraServerFinding"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: Retrieve Jira Server finding configuration
      tags:
        - Jira Server Integration
    patch:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      requestBody:
        $ref: "#/components/requestBodies/JiraServerFinding"
      responses:
        "200":
          $ref: "#/components/responses/JiraServerFinding"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Update Jira Server finding configuration
      tags:
        - Jira Server Integration
    put:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      requestBody:
        $ref: "#/components/requestBodies/JiraServerFinding"
      responses:
        "200":
          $ref: "#/components/responses/JiraServerFinding"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Update Jira Server finding configuration
      tags:
        - Jira Server Integration
  "/targets/{target_id}/findings/{id}/log/":
    get:
      description: Finding activity log.
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      responses:
        "200":
          $ref: "#/components/responses/Activity"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Finding activity log.
      tags:
        - Findings
  "/targets/{target_id}/findings/{id}/retest/":
    post:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      responses:
        "201":
          $ref: "#/components/responses/Scan"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Retest finding
      tags:
        - Findings
  "/targets/{target_id}/integrations/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
      responses:
        "200":
          $ref: "#/components/responses/IntegrationsTarget"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: Integrations available and installed for the target
      tags:
        - Integrations
  "/targets/{target_id}/integrations/jira-cloud/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
      responses:
        "200":
          $ref: "#/components/responses/JiraCloudScope"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: Retrieve Jira Cloud Target configuration
      tags:
        - Jira Cloud Integration
    patch:
      parameters:
        - $ref: "#/components/parameters/targetId"
      requestBody:
        $ref: "#/components/requestBodies/JiraCloudScope"
      responses:
        "200":
          $ref: "#/components/responses/JiraCloudScope"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Update Jira Cloud target configuration
      tags:
        - Jira Cloud Integration
    put:
      parameters:
        - $ref: "#/components/parameters/targetId"
      requestBody:
        $ref: "#/components/requestBodies/JiraCloudScope"
      responses:
        "200":
          $ref: "#/components/responses/JiraCloudScope"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Update Jira Cloud target configuration
      tags:
        - Jira Cloud Integration
  "/targets/{target_id}/integrations/jira-server/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
      responses:
        "200":
          $ref: "#/components/responses/JiraServerScope"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: Retrieve Jira Server Target configuration
      tags:
        - Jira Server Integration
    patch:
      parameters:
        - $ref: "#/components/parameters/targetId"
      requestBody:
        $ref: "#/components/requestBodies/JiraServerScope"
      responses:
        "200":
          $ref: "#/components/responses/JiraServerScope"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Update Jira Server target configuration
      tags:
        - Jira Server Integration
    put:
      parameters:
        - $ref: "#/components/parameters/targetId"
      requestBody:
        $ref: "#/components/requestBodies/JiraServerScope"
      responses:
        "200":
          $ref: "#/components/responses/JiraServerScope"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Update Jira Server target configuration
      tags:
        - Jira Server Integration
  "/targets/{target_id}/integrations/slack/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
      responses:
        "200":
          $ref: "#/components/responses/Slack"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: Retrieve slack integration data
      tags:
        - Slack Integration
    patch:
      parameters:
        - $ref: "#/components/parameters/targetId"
      requestBody:
        $ref: "#/components/requestBodies/Slack"
      responses:
        "200":
          $ref: "#/components/responses/Slack"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Update slack integration data
      tags:
        - Slack Integration
    put:
      parameters:
        - $ref: "#/components/parameters/targetId"
      requestBody:
        $ref: "#/components/requestBodies/Slack"
      responses:
        "200":
          $ref: "#/components/responses/Slack"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Update slack integration data
      tags:
        - Slack Integration
  "/targets/{target_id}/keys/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/pageLength"
        - $ref: "#/components/parameters/ordering"
        - $ref: "#/components/parameters/search"
      responses:
        "200":
          $ref: "#/components/responses/APIKeyList"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: List target specific API keys
      tags:
        - API Keys
    post:
      parameters:
        - $ref: "#/components/parameters/targetId"
      requestBody:
        $ref: "#/components/requestBodies/APIKey"
      responses:
        "201":
          $ref: "#/components/responses/APIKey"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Create target API key
      tags:
        - API Keys
  "/targets/{target_id}/keys/{id}/":
    delete:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      responses:
        "204":
          $ref: "#/components/responses/NoContent"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Delete target API key
      tags:
        - API Keys
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      responses:
        "200":
          $ref: "#/components/responses/APIKey"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Retrieve target API key
      tags:
        - API Keys
  "/targets/{target_id}/risk_trend/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
      responses:
        "200":
          $ref: "#/components/responses/RiskTrend"
      summary: Risk trend graph data
      tags:
        - Statistics
  "/targets/{target_id}/scan_now/":
    post:
      parameters:
        - $ref: "#/components/parameters/targetId"
      requestBody:
        $ref: "#/components/requestBodies/ScanOptions"
      responses:
        "200":
          $ref: "#/components/responses/Scan"
        "400":
          $ref: "#/components/responses/BadRequestErrorMessage"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Start a scan on the target
      tags:
        - Scans
  "/targets/{target_id}/scans/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/pageLength"
        - $ref: "#/components/parameters/ordering"
        - $ref: "#/components/parameters/search"
        - $ref: "#/components/parameters/scanStarted"
        - $ref: "#/components/parameters/scanStatus"
      responses:
        "200":
          $ref: "#/components/responses/ScanList"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: List scans
      tags:
        - Scans
  "/targets/{target_id}/scans/dates/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
      responses:
        "200":
          $ref: "#/components/responses/ScanDates"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Dates where scans have ocurred
      tags:
        - Scans
  "/targets/{target_id}/scans/retrieve_page/":
    get:
      description: Given a date return the page number
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/pageLength"
        - $ref: "#/components/parameters/scanDate"
      responses:
        "200":
          $ref: "#/components/responses/DatePage"
        "400":
          $ref: "#/components/responses/BadRequestErrorMessage"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Scan page
      tags:
        - Scans
  "/targets/{target_id}/scans/{id}/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      responses:
        "200":
          $ref: "#/components/responses/Scan"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Retrieve scan
      tags:
        - Scans
  "/targets/{target_id}/scans/{id}/cancel/":
    post:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      responses:
        "200":
          $ref: "#/components/responses/Scan"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Cancel running scan
      tags:
        - Scans
  "/targets/{target_id}/scans/{id}/endpoints/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      responses:
        "200":
          $ref: "#/components/responses/EndpointCSV"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Scan endpoints file
      tags:
        - Scans
  "/targets/{target_id}/scans/{id}/report/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      responses:
        "200":
          $ref: "#/components/responses/Report"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Scan report PDF, using the report type specified for the target
      tags:
        - Scans
  "/targets/{target_id}/scans/{id}/report/default/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      responses:
        "200":
          $ref: "#/components/responses/Report"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Scan report PDF, using the default report type
      tags:
        - Scans
  "/targets/{target_id}/scans/{id}/report/owasp/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      responses:
        "200":
          $ref: "#/components/responses/Report"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Scan report PDF, using the OWASP report type
      tags:
        - Scans
  "/targets/{target_id}/scans/{id}/report/pci/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      responses:
        "200":
          $ref: "#/components/responses/Report"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Scan report PDF, using the PCI report type
      tags:
        - Scans
  "/targets/{target_id}/scheduledscans/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/pageLength"
        - $ref: "#/components/parameters/ordering"
        - $ref: "#/components/parameters/search"
      responses:
        "200":
          $ref: "#/components/responses/ScheduledList"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: List scheduled scans
      tags:
        - Scheduled
    post:
      parameters:
        - $ref: "#/components/parameters/targetId"
      requestBody:
        $ref: "#/components/requestBodies/Scheduled"
      responses:
        "201":
          $ref: "#/components/responses/Scheduled"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Create new scheduled scan
      tags:
        - Scheduled
  "/targets/{target_id}/scheduledscans/expanded/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/pageLength"
      responses:
        "200":
          $ref: "#/components/responses/ScheduledArray"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: List scheduled scans expanding recurrence
      tags:
        - Scheduled
  "/targets/{target_id}/scheduledscans/{id}/":
    delete:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      responses:
        "204":
          $ref: "#/components/responses/NoContent"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: Delete
      tags:
        - Scheduled
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      responses:
        "200":
          $ref: "#/components/responses/Scheduled"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Retrieve a scheduled scan
      tags:
        - Scheduled
    patch:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      requestBody:
        $ref: "#/components/requestBodies/Scheduled"
      responses:
        "200":
          $ref: "#/components/responses/Scheduled"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Partial update
      tags:
        - Scheduled
    put:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      requestBody:
        $ref: "#/components/requestBodies/Scheduled"
      responses:
        "200":
          $ref: "#/components/responses/Scheduled"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Update a scheduled scan
      tags:
        - Scheduled
  "/targets/{target_id}/severity_trend/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
      responses:
        "200":
          $ref: "#/components/responses/SeverityTrend"
      summary: Severity trend graph data.
      tags:
        - Statistics
  "/targets/{target_id}/site/":
    get:
      deprecated: true
      parameters:
        - $ref: "#/components/parameters/targetId"
      responses:
        "200":
          $ref: "#/components/responses/Site"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Retrieve target's site
      tags:
        - Site
    patch:
      deprecated: true
      description: Note that the URL can only be set once.
      parameters:
        - $ref: "#/components/parameters/targetId"
      requestBody:
        $ref: "#/components/requestBodies/Site"
      responses:
        "200":
          $ref: "#/components/responses/Site"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Partial update target's site
      tags:
        - Site
    put:
      deprecated: true
      description: Note that the URL can only be set once.
      parameters:
        - $ref: "#/components/parameters/targetId"
      requestBody:
        $ref: "#/components/requestBodies/Site"
      responses:
        "200":
          $ref: "#/components/responses/Site"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Update target's site
      tags:
        - Site
  "/targets/{target_id}/site/verify/":
    post:
      deprecated: true
      parameters:
        - $ref: "#/components/parameters/targetId"
      requestBody:
        $ref: "#/components/requestBodies/SiteVerify"
      responses:
        "200":
          $ref: "#/components/responses/SuccessMessage"
        "400":
          $ref: "#/components/responses/BadRequestErrorMessage"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Verify site ownership
      tags:
        - Site
  "/targets/{target_id}/top_vulns/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
      responses:
        "200":
          $ref: "#/components/responses/TopVulns"
      summary: Top 5 vulnerabilities
      tags:
        - Statistics
  "/targets/{target_id}/webhooks/":
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
      responses:
        "200":
          $ref: "#/components/responses/WebhookList"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: List target webhooks
      tags:
        - Events
    post:
      parameters:
        - $ref: "#/components/parameters/targetId"
      requestBody:
        $ref: "#/components/requestBodies/Webhook"
      responses:
        "201":
          $ref: "#/components/responses/Webhook"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Create new target webhook
      tags:
        - Events
  "/targets/{target_id}/webhooks/{id}/":
    delete:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      responses:
        "204":
          $ref: "#/components/responses/NoContent"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Delete target webhook
      tags:
        - Events
    get:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      responses:
        "200":
          $ref: "#/components/responses/Webhook"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: Retrieve target webhook
      tags:
        - Events
    patch:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      requestBody:
        $ref: "#/components/requestBodies/Webhook"
      responses:
        "200":
          $ref: "#/components/responses/Webhook"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Partial update target webhook
      tags:
        - Events
    put:
      parameters:
        - $ref: "#/components/parameters/targetId"
        - $ref: "#/components/parameters/id"
      requestBody:
        $ref: "#/components/requestBodies/Webhook"
      responses:
        "200":
          $ref: "#/components/responses/Webhook"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Update target webhook
      tags:
        - Events
  /users/:
    get:
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/pageLength"
        - $ref: "#/components/parameters/ordering"
        - $ref: "#/components/parameters/search"
      responses:
        "200":
          $ref: "#/components/responses/UserList"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
      summary: List users
      tags:
        - Users
    post:
      requestBody:
        $ref: "#/components/requestBodies/User"
      responses:
        "201":
          $ref: "#/components/responses/User"
      summary: Create/Reactivate a user.
      tags:
        - Users
  "/users/{id}/":
    delete:
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        "204":
          $ref: "#/components/responses/NoContent"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Deactivate a user
      tags:
        - Users
    get:
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        "200":
          $ref: "#/components/responses/User"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Retrieve user
      tags:
        - Users
    patch:
      parameters:
        - $ref: "#/components/parameters/id"
      requestBody:
        $ref: "#/components/requestBodies/User"
      responses:
        "200":
          $ref: "#/components/responses/User"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Partial update user
      tags:
        - Users
    put:
      parameters:
        - $ref: "#/components/parameters/id"
      requestBody:
        $ref: "#/components/requestBodies/User"
      responses:
        "200":
          $ref: "#/components/responses/User"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Update user
      tags:
        - Users
  /vulnerability_definitions/:
    get:
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/pageLength"
        - $ref: "#/components/parameters/ordering"
        - $ref: "#/components/parameters/search"
      responses:
        "200":
          $ref: "#/components/responses/VulnerabilityDefinitionList"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
      summary: List vulnerability definitions
      tags:
        - Vulnerabilities
  "/vulnerability_definitions/{id}/":
    get:
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        "200":
          $ref: "#/components/responses/VulnerabilityDefinition"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
      summary: Retrieve vulnerability definition
      tags:
        - Vulnerabilities
  /webhooks/:
    get:
      responses:
        "200":
          $ref: "#/components/responses/WebhookList"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: List account webhooks
      tags:
        - Events
    post:
      requestBody:
        $ref: "#/components/requestBodies/Webhook"
      responses:
        "201":
          $ref: "#/components/responses/Webhook"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Create new account webhook
      tags:
        - Events
  "/webhooks/{id}/":
    delete:
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        "204":
          $ref: "#/components/responses/NoContent"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Delete account webhook
      tags:
        - Events
    get:
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        "200":
          $ref: "#/components/responses/Webhook"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
      summary: Retrieve account webhook
      tags:
        - Events
    patch:
      parameters:
        - $ref: "#/components/parameters/id"
      requestBody:
        $ref: "#/components/requestBodies/Webhook"
      responses:
        "200":
          $ref: "#/components/responses/Webhook"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Partial update account webhook
      tags:
        - Events
    put:
      parameters:
        - $ref: "#/components/parameters/id"
      requestBody:
        $ref: "#/components/requestBodies/Webhook"
      responses:
        "200":
          $ref: "#/components/responses/Webhook"
        "400":
          $ref: "#/components/responses/BadRequestError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ForbiddenError"
        "404":
          $ref: "#/components/responses/NotFoundError"
      summary: Update account webhook
      tags:
        - Events
components:
  parameters:
    assignee:
      description: Filter by assignee ids
      in: query
      name: assignee
      required: false
      schema:
        items:
          type: string
        type: array
    findingBulkReport:
      description: Token received from the finding report endpoint.
      in: query
      name: token
      required: true
      schema:
        type: string
    findingSeverity:
      description: Filter by finding severity
      in: query
      name: severity
      required: false
      schema:
        $ref: "#/components/schemas/findingSeverity"
    findingState:
      description: Filter by finding states
      in: query
      name: state
      required: false
      schema:
        $ref: "#/components/schemas/findingState"
    id:
      description: Object Id
      in: path
      name: id
      required: true
      schema:
        $ref: "#/components/schemas/id"
    jiraIssueTypeId:
      description: Jira issue type id
      in: path
      name: issue_type_id
      required: true
      schema:
        example: "10003"
        readOnly: true
        type: string
    jiraProjectId:
      description: Jira Project Id
      in: path
      name: project_id
      required: true
      schema:
        example: "10001"
        readOnly: true
        type: string
    label:
      description: Filter by finding labels
      in: query
      name: label
      required: false
      schema:
        items:
          type: string
        type: array
    ordering:
      description: |
        Which field to use when ordering the results, prefix with `-` to invert ordering.
      in: query
      name: ordering
      required: false
      schema:
        example: -changed
        type: string
    page:
      description: Page number within the paginated result set
      in: query
      name: page
      required: false
      schema:
        example: 1
        type: integer
    pageLength:
      description: Number of results to return per page
      in: query
      name: length
      required: false
      schema:
        default: 10
        type: integer
    scanDate:
      description: Date
      in: query
      name: date
      required: true
      schema:
        format: date
        type: string
    scanId:
      description: Filter by scan ids
      in: query
      name: scan
      required: false
      schema:
        items:
          type: string
        type: array
    scanStarted:
      description: Filter by scan start dates
      in: query
      name: started
      required: false
      schema:
        items:
          format: date
          type: string
        type: array
    scanStatus:
      description: Filter by scan statuses
      in: query
      name: status
      required: false
      schema:
        $ref: "#/components/schemas/scanStatus"
    search:
      description: Search term
      in: query
      name: search
      required: false
      schema:
        type: string
    targetId:
      description: Target id
      in: path
      name: target_id
      required: true
      schema:
        $ref: "#/components/schemas/id"
  requestBodies:
    APIKey:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/APIKey"
      required: true
    Asset:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Asset"
      required: true
    Billing:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Billing"
      required: true
    Email:
      content:
        application/json:
          schema:
            properties:
              email:
                $ref: "#/components/schemas/username"
            required:
              - email
            type: object
      required: true
    EmailToken:
      content:
        application/json:
          schema:
            properties:
              token:
                $ref: "#/components/schemas/emailToken"
            required:
              - token
            type: object
      required: true
    Finding:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/FindingUpdate"
      required: true
    FindingBulkIds:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/FindingBulkIds"
      required: true
    FindingBulkRetest:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/FindingBulkRetest"
      required: true
    FindingBulkUpdate:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/FindingBulkUpdate"
      required: true
    JiraCloudFinding:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/JiraFinding"
      required: true
    JiraCloudScope:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/JiraScope"
      required: true
    JiraServerFinding:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/JiraFinding"
      required: true
    JiraServerScope:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/JiraScope"
      required: true
    Label:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Label"
      required: true
    Login:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Login"
      required: true
    PasswordChange:
      content:
        application/json:
          schema:
            properties:
              confpassword:
                allOf:
                  - description: New user password (confirmation)
                  - $ref: "#/components/schemas/password"
              current_password:
                allOf:
                  - description: Current user password
                  - $ref: "#/components/schemas/password"
              password:
                allOf:
                  - description: New user password
                  - $ref: "#/components/schemas/password"
            required:
              - current_password
              - password
              - confpassword
            type: object
      required: true
    PasswordSet:
      content:
        application/json:
          schema:
            properties:
              confpassword:
                allOf:
                  - description: New user password (confirmation)
                  - $ref: "#/components/schemas/password"
              password:
                allOf:
                  - description: New user password
                  - $ref: "#/components/schemas/password"
              token:
                $ref: "#/components/schemas/emailToken"
            required:
              - token
              - password
              - confpassword
            type: object
      required: true
    ScanOptions:
      content:
        application/json:
          schema:
            properties:
              scan_profile:
                description: |
                  Override the target's `scan_profile`.
                enum:
                  - safe
                  - normal
                  - full
                  - lightning
                type: string
            type: object
      required: false
    Scheduled:
      content:
        application/json:
          schema:
            properties:
              date_time:
                $ref: "#/components/schemas/scanDateTime"
              recurrence:
                $ref: "#/components/schemas/recurrence"
            required:
              - date_time
            type: object
      required: true
    Site:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Site"
      required: true
    SiteVerify:
      content:
        application/json:
          schema:
            properties:
              type:
                $ref: "#/components/schemas/verificationType"
            required:
              - type
            type: object
      required: true
    Slack:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Slack"
      required: true
    Subscription:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Subscription"
      required: true
    Target:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Target"
      required: false
    TargetIds:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/targetIds"
      required: true
    Token:
      content:
        application/json:
          schema:
            properties:
              token:
                $ref: "#/components/schemas/tokenBody"
            type: object
      required: true
    User:
      content:
        application/json:
          schema:
            properties:
              email:
                $ref: "#/components/schemas/userEmail"
              is_admin:
                $ref: "#/components/schemas/userIsAdmin"
              name:
                $ref: "#/components/schemas/userName"
              title:
                $ref: "#/components/schemas/userTitle"
            required:
              - name
              - email
            type: object
      required: true
    Webhook:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Webhook"
      required: true
  responses:
    APIKey:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/APIKey"
      description: API Key object
    APIKeyList:
      content:
        application/json:
          schema:
            properties:
              count:
                $ref: "#/components/schemas/paginationCount"
              length:
                $ref: "#/components/schemas/paginationLength"
              page:
                $ref: "#/components/schemas/paginationPage"
              page_total:
                $ref: "#/components/schemas/paginationPageTotal"
              results:
                description: API key objects
                items:
                  $ref: "#/components/schemas/Key"
                type: array
            type: object
      description: API Key list
    Account:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Account"
      description: Account data
    Action:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Action"
      description: Required action to enable targets
    Actions:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Actions"
      description: Available actions for targets
    Activity:
      content:
        application/json:
          schema:
            items:
              $ref: "#/components/schemas/Activity"
            type: array
      description: Finding activity log
    Asset:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Asset"
      description: Asset object
    AssetList:
      content:
        application/json:
          schema:
            properties:
              count:
                $ref: "#/components/schemas/paginationCount"
              length:
                $ref: "#/components/schemas/paginationLength"
              page:
                $ref: "#/components/schemas/paginationPage"
              page_total:
                $ref: "#/components/schemas/paginationPageTotal"
              results:
                description: Asset objects.
                items:
                  $ref: "#/components/schemas/Asset"
                type: array
            type: object
      description: Asset list
    AverageFixTime:
      content:
        application/json:
          schema:
            properties:
              results:
                properties:
                  high:
                    description: Average fix time in seconds for high severity findings
                    example: 2
                    type: integer
                  low:
                    description: Average fix time in seconds for low severity findings
                    example: 3
                    type: integer
                  medium:
                    description: Average fix time in seconds for medium severity findings
                    example: 5
                    type: integer
                type: object
            type: object
      description: Average fix time plot data
    BadRequestError:
      content:
        application/json:
          schema:
            properties:
              <field name>:
                items:
                  description: Error message
                  type: string
                type: array
              non_field_errors:
                items:
                  description: Error message
                  type: string
                type: array
            type: object
      description: Bad Request
    BadRequestErrorMessage:
      content:
        application/json:
          schema:
            properties:
              error:
                description: Error message
                type: string
            type: object
      description: Bad Request
    Billing:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Billing"
      description: Billing information
    DatePage:
      content:
        application/json:
          schema:
            properties:
              page:
                description: Page number
                type: integer
            type: object
      description: Page number for supplied date
    EndpointCSV:
      content:
        application/csv:
          schema:
            format: binary
            type: string
      description: Endpoint list CSV file
    Event:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Event"
      description: A Probely event
    EventList:
      content:
        application/json:
          schema:
            properties:
              count:
                $ref: "#/components/schemas/paginationCount"
              length:
                $ref: "#/components/schemas/paginationLength"
              page:
                $ref: "#/components/schemas/paginationPage"
              page_total:
                $ref: "#/components/schemas/paginationPageTotal"
              results:
                description: Event objects
                items:
                  $ref: "#/components/schemas/Event"
                type: array
            type: object
      description: Event list
    Finding:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Finding"
      description: Finding object
    FindingList:
      content:
        application/json:
          schema:
            properties:
              count:
                $ref: "#/components/schemas/paginationCount"
              length:
                $ref: "#/components/schemas/paginationLength"
              page:
                $ref: "#/components/schemas/paginationPage"
              page_total:
                $ref: "#/components/schemas/paginationPageTotal"
              results:
                description: Finding objects.
                items:
                  $ref: "#/components/schemas/Finding"
                type: array
            type: object
      description: Finding list
    ForbiddenError:
      content:
        application/json:
          schema:
            properties:
              detail:
                description: Error message.
                type: string
            type: object
      description: Not allowed to perform operation
    Framework:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Framework"
      description: Framework object
    FrameworkList:
      content:
        application/json:
          schema:
            properties:
              count:
                $ref: "#/components/schemas/paginationCount"
              length:
                $ref: "#/components/schemas/paginationLength"
              page:
                $ref: "#/components/schemas/paginationPage"
              page_total:
                $ref: "#/components/schemas/paginationPageTotal"
              results:
                description: Framework objects
                items:
                  $ref: "#/components/schemas/Framework"
                type: array
            type: object
      description: Framework list
    IntegrationsAccount:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Integrations"
      description: Available and installed integrations in the account
    IntegrationsTarget:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Integrations"
      description: Available and installed integrations for the target
    InternalServerError:
      content:
        application/json:
          schema:
            example:
              detail: Internal server error.
            properties:
              detail:
                type: string
            type: object
      description: Internal server error
    Invoice:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Invoice"
      description: Charges
    JiraCloudFinding:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/JiraFinding"
      description: Jira Cloud Finding configuration
    JiraCloudScope:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/JiraScope"
      description: Jira Cloud Target configuration
    JiraIssuePriorityList:
      content:
        application/json:
          schema:
            items:
              $ref: "#/components/schemas/JiraIssuePriority"
            type: array
      description: Jira issue priorities
    JiraIssueStatusList:
      content:
        application/json:
          schema:
            items:
              $ref: "#/components/schemas/JiraIssueStatus"
            type: array
      description: Jira issue statuses
    JiraIssueTypeList:
      content:
        application/json:
          schema:
            items:
              $ref: "#/components/schemas/JiraIssueType"
            type: array
      description: Jira issue types available in project
    JiraProjectList:
      content:
        application/json:
          schema:
            items:
              $ref: "#/components/schemas/JiraProject"
            type: array
      description: Jira projects
    JiraServerFinding:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/JiraFinding"
      description: Jira Server finding configuration
    JiraServerScope:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/JiraScope"
      description: Jira Server target configuration
    Label:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Label"
      description: Label object
    LabelList:
      content:
        application/json:
          schema:
            properties:
              count:
                $ref: "#/components/schemas/paginationCount"
              length:
                $ref: "#/components/schemas/paginationLength"
              page:
                $ref: "#/components/schemas/paginationPage"
              page_total:
                $ref: "#/components/schemas/paginationPageTotal"
              results:
                description: label objects.
                items:
                  $ref: "#/components/schemas/Label"
                type: array
            type: object
      description: Label list
    NeedsAttentionPie:
      content:
        application/json:
          schema:
            properties:
              "0":
                description: |
                  These are arrays, they are being displayed as objects with numerical indexes due to limitations of the framework.
                properties:
                  "0":
                    default: needing attention
                    description: needing attention
                    type: string
                  "1":
                    description: Number of targets
                    type: integer
                  "2":
                    default: needs_atention
                    description: needs_atention
                    type: string
                type: object
              "1":
                description: |
                  These are arrays, they are being displayed as objects with numerical indexes due to limitations of the framework.
                properties:
                  "0":
                    default: no issues found
                    description: no issues found
                    type: string
                  "1":
                    description: Number of targets
                    type: integer
                  "2":
                    default: no_issues_found
                    description: no_issues_found
                    type: string
                type: object
            type: object
      description: Success
    NeedsAttentionTop:
      content:
        application/json:
          schema:
            items:
              properties:
                highs:
                  description: Number of high severity findings
                  example: 3
                  type: integer
                id:
                  description: Target id
                  example: QJxMvgPebu0e
                  type: string
                lows:
                  description: Number of low severity findings
                  example: 4
                  type: integer
                mediums:
                  description: Number of medium severity findings
                  example: 8
                  type: integer
                name:
                  description: Name
                  example: Probely
                  type: string
                url:
                  description: Target's site URL
                  example: https://probely.com
                  type: string
              type: object
            type: array
      description: Success
    NoContent:
      description: Success
    NotFoundError:
      content:
        application/json:
          schema:
            properties:
              detail:
                description: Not found.
                type: string
            type: object
      description: Not found
    PlanList:
      content:
        application/json:
          schema:
            items:
              $ref: "#/components/schemas/Plan"
            type: array
      description: Plan list
    Report:
      content:
        application/pdf:
          schema:
            format: binary
            type: string
      description: Scan report PDF
    RiskTrend:
      content:
        application/json:
          schema:
            items:
              properties:
                "0":
                  description: Date time
                  format: date-time
                  type: string
                "1":
                  description: Risk score
                  type: integer
              type: object
            type: array
      description: Risk trend plot data
    Scan:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Scan"
      description: Scan object
    ScanDates:
      content:
        application/json:
          schema:
            description: Dates for which there are scans
            example:
              - 2017-06-12
              - 2017-06-22
            items:
              format: date
              type: string
            type: array
      description: Dates for which there are scans
    ScanList:
      content:
        application/json:
          schema:
            properties:
              count:
                $ref: "#/components/schemas/paginationCount"
              length:
                $ref: "#/components/schemas/paginationLength"
              page:
                $ref: "#/components/schemas/paginationPage"
              page_total:
                $ref: "#/components/schemas/paginationPageTotal"
              results:
                description: Scan objects
                items:
                  $ref: "#/components/schemas/Scan"
                type: array
            type: object
      description: Scan list
    Scheduled:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Scheduled"
      description: Scheduled scan object
    ScheduledArray:
      content:
        application/json:
          schema:
            properties:
              results:
                description: Scheduled scan objects
                items:
                  $ref: "#/components/schemas/Scheduled"
                type: array
            type: object
      description: Next scheduled scans
    ScheduledList:
      content:
        application/json:
          schema:
            properties:
              count:
                $ref: "#/components/schemas/paginationCount"
              length:
                $ref: "#/components/schemas/paginationLength"
              page:
                $ref: "#/components/schemas/paginationPage"
              page_total:
                $ref: "#/components/schemas/paginationPageTotal"
              results:
                description: Scheduled scan objects
                items:
                  $ref: "#/components/schemas/Scheduled"
                type: array
            type: object
      description: Scheduled scan list
    SeverityTrend:
      content:
        application/json:
          schema:
            properties:
              results:
                properties:
                  high:
                    items:
                      properties:
                        "0":
                          description: Date time
                          format: date-time
                          type: string
                        "1":
                          description: Risk score
                          type: integer
                      type: object
                    type: array
                  low:
                    items:
                      properties:
                        "0":
                          description: Date time
                          format: date-time
                          type: string
                        "1":
                          description: Risk score
                          type: integer
                      type: object
                    type: array
                  medium:
                    items:
                      properties:
                        "0":
                          description: Date time
                          format: date-time
                          type: string
                        "1":
                          description: Risk score
                          type: integer
                      type: object
                    type: array
                type: object
              step:
                description: ""
                example: 86400
                format: float
                type: number
            type: object
      description: Severity trend plot data
    Site:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Site"
      description: Site object
    Slack:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Slack"
      description: Slack integration
    Success:
      description: Success
    SuccessMessage:
      content:
        application/json:
          schema:
            properties:
              message:
                description: Message
                type: string
            type: object
      description: Success
    Target:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Target"
      description: Target object
    TargetIds:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/targetIds"
      description: Target id list
    TargetList:
      content:
        application/json:
          schema:
            properties:
              length:
                $ref: "#/components/schemas/paginationLength"
              page:
                $ref: "#/components/schemas/paginationPage"
              page_total:
                $ref: "#/components/schemas/paginationPageTotal"
              pagination_count:
                $ref: "#/components/schemas/paginationCount"
              results:
                description: Target objects
                items:
                  $ref: "#/components/schemas/Target"
                type: array
            type: object
      description: List of targets
    Token:
      content:
        application/json:
          schema:
            properties:
              token:
                $ref: "#/components/schemas/token"
              ttl:
                $ref: "#/components/schemas/ttl"
            type: object
      description: Token and respective time to live
    TopVulns:
      content:
        application/json:
          schema:
            items:
              properties:
                "0":
                  description: Vulnerability name
                  type: string
                "1":
                  description: Vulnerability count
                  type: string
              type: object
            type: array
      description: Top vulnerabilities plot data
    UnauthorizedError:
      content:
        application/json:
          schema:
            example:
              detail: Authentication credentials were not provided.
            properties:
              detail:
                type: string
            type: object
      description: Access token is missing or invalid
    User:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/User"
      description: User object
    UserList:
      content:
        application/json:
          schema:
            properties:
              count:
                $ref: "#/components/schemas/paginationCount"
              length:
                $ref: "#/components/schemas/paginationLength"
              page:
                $ref: "#/components/schemas/paginationPage"
              page_total:
                $ref: "#/components/schemas/paginationPageTotal"
              results:
                description: User objects
                items:
                  $ref: "#/components/schemas/User"
                type: array
            type: object
      description: User list
    VulnerabilityDefinition:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/VulnerabilityDefinition"
      description: Vulnerability definition object
    VulnerabilityDefinitionList:
      content:
        application/json:
          schema:
            properties:
              count:
                $ref: "#/components/schemas/paginationCount"
              length:
                $ref: "#/components/schemas/paginationLength"
              page:
                $ref: "#/components/schemas/paginationPage"
              page_total:
                $ref: "#/components/schemas/paginationPageTotal"
              results:
                description: Vulnerability definition objects.
                items:
                  $ref: "#/components/schemas/VulnerabilityDefinition"
                type: array
            type: object
      description: Vulnerability defitions list
    Webhook:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Webhook"
      description: Webhooks
    WebhookList:
      content:
        application/json:
          schema:
            properties:
              count:
                $ref: "#/components/schemas/paginationCount"
              length:
                $ref: "#/components/schemas/paginationLength"
              page:
                $ref: "#/components/schemas/paginationPage"
              page_total:
                $ref: "#/components/schemas/paginationPageTotal"
              results:
                description: Webhook objects
                items:
                  $ref: "#/components/schemas/Webhook"
                type: array
            type: object
      description: Webhook list
  schemas:
    APIKey:
      description: API Key object
      properties:
        id:
          $ref: "#/components/schemas/id"
        key:
          $ref: "#/components/schemas/token"
        name:
          $ref: "#/components/schemas/name"
      type: object
    Account:
      properties:
        auto_collection:
          $ref: "#/components/schemas/accountAutoCollection"
        balance:
          $ref: "#/components/schemas/accountBalance"
        balance_currency_code:
          $ref: "#/components/schemas/currencyCode"
        free_target_quantity:
          $ref: "#/components/schemas/freeTargetQuantity"
        has_used_trial:
          $ref: "#/components/schemas/hasUsedTrial"
        heroku:
          description: Heroku accounts (for future use)
          type: boolean
        next_billing_at:
          $ref: "#/components/schemas/accountNextBillingAt"
        plan:
          $ref: "#/components/schemas/Plan"
        plan_target_quantity:
          $ref: "#/components/schemas/planTargetQuantity"
        pool_size:
          $ref: "#/components/schemas/poolSize"
        status:
          $ref: "#/components/schemas/accountStatus"
        trialEnd:
          $ref: "#/components/schemas/trialEnd"
      type: object
    Action:
      properties:
        action:
          description: |
            Action to enable targets:
            * null - no action required
            * trial - start a trial
            * plan - select a plan to subscribe
            * subscribe - add target to subscribed plan
          enum:
            - null
            - trial
            - plan
            - subscribe
          type: string
      type: object
    Actions:
      items:
        properties:
          action:
            description: |
              Actions are:
              * edit - edit target
              * delete - delete target
              * trial - start a trial with this target
              * plan - select a subscipition plan with this target
              * subscribe - add target to subscribed plan
              * unsubscribe - remove target from subscription
              * archive - archive target
              * activate - unarchive target
            enum:
              - edit
              - delete
              - trial
              - plan
              - subscribe
              - unsubscribe
              - archive
              - activate
            type: string
          label:
            description: Label or the action
            type: string
        type: object
      type: array
    Activity:
      properties:
        change:
          description: |
            Type of change:
              * created - First time the issue is found
              * comment - User left a comment in the timeline
              * found - Found again in a later scan
              * changed - One of the parameters of the finding was changed
               (e.g. severity)
          enum:
            - created
            - comment
            - found
            - changed
          type: integer
        changed:
          $ref: "#/components/schemas/changed"
        changed_by:
          $ref: "#/components/schemas/ChangedBy"
        field:
          description: Field that was changed
          type: string
        old_value:
          description: Previous value
          type: string
        value:
          description: New value
          type: string
      type: object
    Asset:
      description: Secondary domain of a target
      properties:
        changed:
          $ref: "#/components/schemas/changed"
        changed_by:
          $ref: "#/components/schemas/ChangedBy"
        cookies:
          $ref: "#/components/schemas/Cookies"
        desc:
          $ref: "#/components/schemas/desc"
        headers:
          $ref: "#/components/schemas/Headers"
        host:
          $ref: "#/components/schemas/host"
        id:
          $ref: "#/components/schemas/id"
        include:
          $ref: "#/components/schemas/include"
        name:
          $ref: "#/components/schemas/name"
        stack:
          $ref: "#/components/schemas/Stack"
        verification_date:
          $ref: "#/components/schemas/verificationDate"
        verification_last_error:
          $ref: "#/components/schemas/verificationLastError"
        verification_method:
          $ref: "#/components/schemas/verificationMethod"
        verification_token:
          $ref: "#/components/schemas/verificationToken"
        verified:
          $ref: "#/components/schemas/verified"
      type: object
    Assignee:
      description: Assigned user
      properties:
        email:
          $ref: "#/components/schemas/userEmail"
        id:
          $ref: "#/components/schemas/userId"
        name:
          $ref: "#/components/schemas/userName"
      type: object
    BasicAuth:
      description: Basic authentication credentials
      properties:
        password:
          $ref: "#/components/schemas/password"
        username:
          $ref: "#/components/schemas/basicAuthUsername"
      type: object
    Billing:
      properties:
        address:
          $ref: "#/components/schemas/address"
        city:
          $ref: "#/components/schemas/city"
        country:
          $ref: "#/components/schemas/country"
        email:
          $ref: "#/components/schemas/email"
        first_name:
          $ref: "#/components/schemas/firstName"
        last_name:
          $ref: "#/components/schemas/lastName"
        other:
          description: Extra data
          type: string
        reg_number:
          $ref: "#/components/schemas/registrationNumber"
        vat_number:
          $ref: "#/components/schemas/vat"
        zip:
          $ref: "#/components/schemas/zipCode"
      required:
        - country
        - vat_number
        - first_name
        - last_name
        - city
        - address
        - zip
        - email
      type: object
    ChangedBy:
      description: User that last modified the object
      properties:
        email:
          $ref: "#/components/schemas/userEmail"
        id:
          $ref: "#/components/schemas/userId"
        name:
          $ref: "#/components/schemas/userName"
      readOnly: true
      type: object
    Cookies:
      description: Custom cookies name/value pairs
      items:
        properties:
          name:
            description: Cookie name.
            example: cookie_1
            type: string
          value:
            description: Cookie value.
            example: cookie_value
            type: string
        type: object
      type: array
    CreatedBy:
      description: User that created the object
      properties:
        email:
          $ref: "#/components/schemas/userEmail"
        id:
          $ref: "#/components/schemas/userId"
        name:
          $ref: "#/components/schemas/userName"
      readOnly: true
      type: object
    Definition:
      properties:
        desc:
          description: Vulnerability definition description.
          type: string
        id:
          description: Vulnerability definition id.
          type: string
        name:
          description: Vulnerability definition name.
          type: string
      readOnly: true
      type: object
    Event:
      properties:
        content:
          $ref: "#/components/schemas/EventContent"
        event_type:
          $ref: "#/components/schemas/eventType"
        id:
          $ref: "#/components/schemas/id"
        object_type:
          $ref: "#/components/schemas/eventObjectType"
        ocurred_at:
          $ref: "#/components/schemas/eventOccurredAt"
        webhooks:
          $ref: "#/components/schemas/WebhookList"
      readOnly: true
      type: object
    EventContent:
      description: Event object.
      oneOf:
        - $ref: "#/components/schemas/User"
        - $ref: "#/components/schemas/Target"
        - $ref: "#/components/schemas/Scan"
        - $ref: "#/components/schemas/Finding"
      readOnly: true
      type: object
    Finding:
      properties:
        assignee:
          $ref: "#/components/schemas/Assignee"
        changed:
          $ref: "#/components/schemas/changed"
        changed_by:
          $ref: "#/components/schemas/ChangedBy"
        comment:
          description: User comment left on the finding.
          type: string
        cvss_score:
          $ref: "#/components/schemas/findingCVSSScore"
        cvss_vector:
          $ref: "#/components/schemas/findingCVSSVector"
        definition:
          $ref: "#/components/schemas/Definition"
        evidence:
          description: Evidence for the finding.
          readOnly: true
          type: string
        extra:
          description: Extra data for the finding.
          readOnly: true
          type: string
        fix:
          description: Fix sugestion for the vulnerability and framework
          readOnly: true
          type: string
        id:
          $ref: "#/components/schemas/id"
        insertion_point:
          $ref: "#/components/schemas/findingInsertionPoint"
        labels:
          description: User labels for the finding.
          items:
            type: string
          type: array
        last_found:
          description: Date time of the last time the vulnerability was found.
          example: 2018-02-19T18:58:50.906015Z
          format: date-time
          readOnly: true
          type: string
        method:
          $ref: "#/components/schemas/method"
        parameter:
          description: Vulnerable paramenter.
          readOnly: true
          type: string
        params:
          description: Request parameters
          readOnly: true
          type: string
        path:
          description: Finding path.
          readOnly: true
          type: string
        reporter:
          $ref: "#/components/schemas/Reporter"
        requests:
          $ref: "#/components/schemas/Requests"
        scans:
          description: Scan ids where this finding was present.
          items:
            type: string
          readOnly: true
          type: array
        severity:
          $ref: "#/components/schemas/findingSeverity"
        state:
          $ref: "#/components/schemas/findingState"
        target:
          $ref: "#/components/schemas/TargetSimple"
        url:
          description: Full finding URL
          readOnly: true
          type: string
        value:
          description: Value for parameter.
          readOnly: true
          type: string
      type: object
    FindingBulkIds:
      properties:
        ids:
          description: Array of finding ids
          items:
            type: string
          type: array
      required:
        - ids
      type: object
    FindingBulkRetest:
      allOf:
        - $ref: "#/components/schemas/FindingBulkIds"
        - properties:
            scan_profile:
              $ref: "#/components/schemas/scanProfile"
          type: object
    FindingBulkUpdate:
      allOf:
        - $ref: "#/components/schemas/FindingBulkIds"
        - $ref: "#/components/schemas/FindingUpdate"
    FindingUpdate:
      properties:
        assignee:
          $ref: "#/components/schemas/Assignee"
        changed:
          $ref: "#/components/schemas/changed"
        changed_by:
          $ref: "#/components/schemas/ChangedBy"
        comment:
          description: User comment left on the finding.
          type: string
        cvss_score:
          $ref: "#/components/schemas/findingCVSSScore"
        cvss_vector:
          $ref: "#/components/schemas/findingCVSSVector"
        definition:
          $ref: "#/components/schemas/Definition"
        evidence:
          description: Evidence for the finding.
          readOnly: true
          type: string
        extra:
          description: Extra data for the finding.
          readOnly: true
          type: string
        fix:
          description: Fix sugestion for the vulnerability and framework
          readOnly: true
          type: string
        id:
          $ref: "#/components/schemas/id"
        insertion_point:
          $ref: "#/components/schemas/findingInsertionPoint"
        labels:
          description: User labels for the finding.
          items:
            type: string
          type: array
        last_found:
          description: Date time of the last time the vulnerability was found.
          example: 2018-02-19T18:58:50.906015Z
          format: date-time
          readOnly: true
          type: string
        method:
          $ref: "#/components/schemas/method"
        parameter:
          description: Vulnerable paramenter.
          readOnly: true
          type: string
        params:
          description: Request parameters
          readOnly: true
          type: string
        path:
          description: Finding path.
          readOnly: true
          type: string
        reporter:
          $ref: "#/components/schemas/Reporter"
        requests:
          $ref: "#/components/schemas/Requests"
        scans:
          description: Scan ids where this finding was present.
          items:
            type: string
          readOnly: true
          type: array
        severity:
          $ref: "#/components/schemas/findingSeverity"
        state:
          $ref: "#/components/schemas/findingState"
        target:
          $ref: "#/components/schemas/TargetSimple"
        url:
          description: Full finding URL
          readOnly: true
          type: string
        value:
          description: Value for parameter.
          readOnly: true
          type: string
      type: object
    FormLogin:
      description: Form login field name, field input pairs
      items:
        properties:
          name:
            description: Field name/id
            example: username
            type: string
          value:
            description: Field input
            example: probely
            type: string
        type: object
      type: array
    Framework:
      properties:
        desc:
          description: Framework description
          type: string
        id:
          $ref: "#/components/schemas/id"
        name:
          $ref: "#/components/schemas/id"
      type: object
    Headers:
      description: Custom headers name value pairs
      items:
        properties:
          name:
            description: Header name.
            example: X-Custom-Header
            type: string
          value:
            description: Header value.
            example: XXXXX
            type: string
        type: object
      type: array
    IntegrationFields:
      properties:
        heroku:
          type: boolean
        jira_cloud:
          type: boolean
        jira_server:
          type: boolean
        slack:
          type: boolean
      type: object
    Integrations:
      description: Available and installed integrations
      properties:
        available:
          $ref: "#/components/schemas/IntegrationFields"
        installed:
          $ref: "#/components/schemas/IntegrationFields"
      type: object
    Invoice:
      properties:
        amount_due:
          description: Amount remaining to pay in cents
          type: integer
        amount_paid:
          description: Amount already paid in cents
          type: integer
        currency_code:
          $ref: "#/components/schemas/currencyCode"
        discounts:
          items:
            properties:
              amount:
                description: Discounted amount in cents
                type: integer
              description:
                description: Discount description
                type: string
            type: object
          type: array
        line_items:
          items:
            properties:
              amount:
                description: Total amount in cents
                type: integer
              description:
                description: Charge description
                type: string
              discount_amount:
                description: Discount amount in cents
                type: integer
              quantity:
                description: Units charged
                type: integer
              tax_amount:
                description: Tax amount in cents
                type: integer
              unit_amount:
                description: Price per unit in cents
                type: integer
            type: object
          type: array
        plan:
          description: Plan name
          type: string
        plan_id:
          $ref: "#/components/schemas/accountPlanId"
        sub_total:
          description: Price before taxes in cents
          type: integer
        taxes:
          items:
            properties:
              tax_amount:
                description: Amount of tax in cents
                type: integer
              tax_name:
                description: Name of applied tax
                type: string
              tax_rate:
                description: Tax rate
                format: float
                type: number
            type: object
          type: array
        total:
          description: Price after taxes in cents
          type: integer
      type: object
    JiraFinding:
      properties:
        issue_id:
          $ref: "#/components/schemas/jira_issue_id"
        selective_sync:
          $ref: "#/components/schemas/jira_selective_sync"
      type: object
    JiraIssuePriority:
      description: Jira issue priority.
      properties:
        id:
          description: Jira issue priority id
          example: "3"
          type: string
        name:
          description: Jira issue priority name
          example: Medium
          type: string
      type: object
    JiraIssueStatus:
      description: Jira issue status.
      properties:
        id:
          description: Jira issue status id
          example: "10003"
          type: string
        name:
          description: Jira issue status name
          example: Backlog
          type: string
      type: object
    JiraIssueType:
      description: Jira issue type.
      properties:
        id:
          description: Jira issue type id
          example: "10003"
          type: string
        name:
          description: Jira issue type name
          example: Story
          type: string
      type: object
    JiraProject:
      description: Jira project.
      properties:
        id:
          description: Jira project id
          example: "10001"
          type: string
        name:
          description: Jira project name
          example: Project
          type: string
      type: object
    JiraScope:
      properties:
        allow_jira:
          $ref: "#/components/schemas/jira_allow_jira"
        auto_sync:
          $ref: "#/components/schemas/jira_auto_sync"
        issue_type_id:
          $ref: "#/components/schemas/jira_issue_type_id"
        priority_mapping:
          $ref: "#/components/schemas/jira_priority_mapping"
        project_id:
          $ref: "#/components/schemas/jira_project_id"
        status_mapping:
          $ref: "#/components/schemas/jira_status_mapping"
      type: object
    Key:
      properties:
        id:
          $ref: "#/components/schemas/id"
        key:
          $ref: "#/components/schemas/token"
        name:
          $ref: "#/components/schemas/id"
      type: object
    Label:
      properties:
        id:
          $ref: "#/components/schemas/id"
        name:
          $ref: "#/components/schemas/name"
      type: object
    Login:
      properties:
        password:
          $ref: "#/components/schemas/password"
        username:
          $ref: "#/components/schemas/username"
      required:
        - username
        - password
      type: object
    Plan:
      properties:
        allowed_scan_profiles:
          $ref: "#/components/schemas/planAllowedScanProfiles"
        charge_model:
          $ref: "#/components/schemas/planChargeModel"
        currency_code:
          $ref: "#/components/schemas/currencyCode"
        description:
          $ref: "#/components/schemas/desc"
        id:
          $ref: "#/components/schemas/id"
        is_trial:
          $ref: "#/components/schemas/planIsTrial"
        name:
          $ref: "#/components/schemas/name"
        period:
          $ref: "#/components/schemas/billingPeriod"
        period_unit:
          $ref: "#/components/schemas/billingPeriodUnit"
        price:
          $ref: "#/components/schemas/price"
      type: object
    Reporter:
      description: Reporting user
      properties:
        email:
          $ref: "#/components/schemas/userEmail"
        id:
          $ref: "#/components/schemas/userId"
        name:
          $ref: "#/components/schemas/userName"
      readOnly: true
      type: object
    Requests:
      description: Request response pairs that produced the finding
      items:
        properties:
          request:
            type: string
          response:
            type: string
        type: object
      readOnly: true
      type: array
    Scan:
      properties:
        changed:
          $ref: "#/components/schemas/changed"
        changed_by:
          $ref: "#/components/schemas/ChangedBy"
        completed:
          $ref: "#/components/schemas/scanCompleted"
        crawler:
          description: Information on the status of the crawling step of the scanning process
          properties:
            error:
              description: List of possible errors from the crawler
              items:
                type: string
              type: array
            state:
              description: The current state of the crawler
              enum:
                - started
                - ended
              type: string
            status:
              description: The number of crawled URLs and total number of URLs in the queue
              properties:
                "0":
                  description: Number of crawled URLs
                  type: integer
                "1":
                  description: Total number of URLs in the queue
                  type: integer
              type: object
            warning:
              description: List of possible warnings from the crawler
              items:
                type: string
              type: array
          type: object
        created:
          $ref: "#/components/schemas/created"
        created_by:
          $ref: "#/components/schemas/CreatedBy"
        fingerprinter:
          description: Information on the status of the crawling step of the scanning process
          properties:
            count:
              description: The number of detected frameworks/software on the target
              type: integer
            error:
              description: List of possible errors from the fingerprinter
              items:
                type: string
              type: array
            state:
              description: The current state of the fingerprinter
              enum:
                - started
                - ended
              type: string
            warning:
              description: List of possible warnings from the fingerprinter
              items:
                type: string
              type: array
          type: object
        highs:
          description: Number of high severity findings in this scan
          type: integer
        id:
          $ref: "#/components/schemas/id"
        lows:
          description: Number of low severity findings in this scan
          type: integer
        mediums:
          description: Number of medium severity findings in this scan
          type: integer
        scan_profile:
          $ref: "#/components/schemas/scanProfile"
        scanner:
          description: Information on the status of the search for vulnerabilities of the scanning process
          properties:
            error:
              description: List of possible errors from the scanner
              items:
                type: string
              type: array
            state:
              description: The current state of the scanner
              enum:
                - started
                - ended
              type: string
            status:
              description: The number of scanner tasks completed and total number of tasks in the queue
              properties:
                "0":
                  description: Number of completed tasks
                  type: integer
                "1":
                  description: Total number of tasks in the queue
                  type: integer
              type: object
            warning:
              description: List of possible warnings from the scanner
              items:
                type: string
              type: array
          type: object
        started:
          $ref: "#/components/schemas/scanStarted"
        status:
          $ref: "#/components/schemas/scanStatus"
        target:
          $ref: "#/components/schemas/TargetSimple"
      type: object
    Scheduled:
      properties:
        changed:
          $ref: "#/components/schemas/changed"
        changed_by:
          $ref: "#/components/schemas/ChangedBy"
        date_time:
          $ref: "#/components/schemas/scanDateTime"
        id:
          description: Scheduled object id
          example: QJxMvgPebu0e
          type: string
        recurrence:
          $ref: "#/components/schemas/recurrence"
        target:
          $ref: "#/components/schemas/TargetSimple"
      type: object
    Site:
      description: Main resource associated with a target
      properties:
        basic_auth:
          $ref: "#/components/schemas/BasicAuth"
        changed:
          $ref: "#/components/schemas/changed"
        changed_by:
          $ref: "#/components/schemas/ChangedBy"
        cookies:
          $ref: "#/components/schemas/Cookies"
        desc:
          $ref: "#/components/schemas/desc"
        form_login:
          $ref: "#/components/schemas/FormLogin"
        form_login_check_pattern:
          $ref: "#/components/schemas/formLoginCheckPattern"
        form_login_url:
          $ref: "#/components/schemas/formLoginUrl"
        has_basic_auth:
          $ref: "#/components/schemas/hasBasicAuth"
        has_form_login:
          $ref: "#/components/schemas/hasFormLogin"
        headers:
          $ref: "#/components/schemas/Headers"
        host:
          $ref: "#/components/schemas/siteHost"
        id:
          $ref: "#/components/schemas/id"
        name:
          $ref: "#/components/schemas/name"
        stack:
          $ref: "#/components/schemas/Stack"
        url:
          $ref: "#/components/schemas/siteUrl"
        verification_date:
          $ref: "#/components/schemas/verificationDate"
        verification_last_error:
          $ref: "#/components/schemas/verificationLastError"
        verification_method:
          $ref: "#/components/schemas/verificationMethod"
        verification_token:
          $ref: "#/components/schemas/verificationToken"
        verified:
          $ref: "#/components/schemas/verified"
        whitelist:
          $ref: "#/components/schemas/Whitelist"
      type: object
    Slack:
      description: Options for slack notifications
      properties:
        notify_finding_fixed:
          default: false
          description: Notify of fixed findings.
          type: boolean
        notify_high_findings:
          default: false
          description: Notify of new high severity findings.
          type: boolean
        notify_low_findings:
          default: false
          description: Notify of new low severity findings.
          type: boolean
        notify_medium_findings:
          default: false
          description: Notify of new medium severity findings.
          type: boolean
        notify_scan_completed:
          default: false
          description: Notify of completed scans.
          type: boolean
        notify_scan_started:
          default: false
          description: Notify of started scans.
          type: boolean
        webhook_url:
          default: ""
          description: Slack notification webhook url.
          type: string
      type: object
    Stack:
      description: List of frameworks detected on this resource
      items:
        $ref: "#/components/schemas/frameworkNames"
      readOnly: true
      type: array
    Subscription:
      properties:
        coupon_ids:
          $ref: "#/components/schemas/coupons"
        plan_id:
          $ref: "#/components/schemas/accountPlanId"
        target_ids:
          $ref: "#/components/schemas/targetIds"
      type: object
    Target:
      properties:
        allowed_scan_profiles:
          description: Valid scan profiles for the target.
          items:
            properties:
              id:
                $ref: "#/components/schemas/scanProfile"
              name:
                description: Name of the scan profile.
                type: string
            type: object
          readOnly: true
          type: array
        assets:
          description: Secondary domains that should be scanned
          items:
            $ref: "#/components/schemas/Asset"
          readOnly: true
          type: array
        changed:
          $ref: "#/components/schemas/changed"
        changed_by:
          $ref: "#/components/schemas/ChangedBy"
        connected_target:
          $ref: "#/components/schemas/connectedTarget"
        enabled:
          $ref: "#/components/schemas/enabled"
        environment:
          $ref: "#/components/schemas/environment"
        id:
          $ref: "#/components/schemas/id"
        labels:
          description: |
            User labels for the scope. (This feature is currently only available for certain accounts,
            please contact our support if you are interested in using it)
          items:
            type: string
          type: array
        name:
          $ref: "#/components/schemas/name"
        report_type:
          $ref: "#/components/schemas/reportType"
        scan_profile:
          $ref: "#/components/schemas/scanProfile"
        site:
          $ref: "#/components/schemas/Site"
        type:
          $ref: "#/components/schemas/targetType"
      type: object
    TargetSimple:
      properties:
        desc:
          $ref: "#/components/schemas/desc"
        id:
          $ref: "#/components/schemas/id"
        name:
          $ref: "#/components/schemas/name"
        stack:
          $ref: "#/components/schemas/Stack"
        url:
          description: Target's site URL
          type: string
      readOnly: true
      type: object
    User:
      properties:
        changed:
          $ref: "#/components/schemas/changed"
        changed_by:
          $ref: "#/components/schemas/ChangedBy"
        email:
          $ref: "#/components/schemas/userEmail"
        id:
          $ref: "#/components/schemas/id"
        is_active:
          $ref: "#/components/schemas/userIsActive"
        is_admin:
          $ref: "#/components/schemas/userIsAdmin"
        is_billing_admin:
          $ref: "#/components/schemas/userIsBillingAdmin"
        name:
          $ref: "#/components/schemas/userName"
        title:
          $ref: "#/components/schemas/userTitle"
      type: object
    VulnerabilityDefinition:
      properties:
        changed:
          $ref: "#/components/schemas/changed"
        desc:
          $ref: "#/components/schemas/desc"
        id:
          $ref: "#/components/schemas/id"
        name:
          $ref: "#/components/schemas/name"
      readOnly: true
      type: object
    Webhook:
      properties:
        api_version:
          $ref: "#/components/schemas/webhookApiVersion"
        changed:
          $ref: "#/components/schemas/changed"
        changed_by:
          $ref: "#/components/schemas/ChangedBy"
        check_cert:
          $ref: "#/components/schemas/webhookCheckCert"
        created:
          $ref: "#/components/schemas/changed"
        created_by:
          $ref: "#/components/schemas/ChangedBy"
        id:
          $ref: "#/components/schemas/id"
        name:
          $ref: "#/components/schemas/name"
        url:
          $ref: "#/components/schemas/webhookURL"
      required:
        - url
      type: object
    WebhookList:
      items:
        $ref: "#/components/schemas/Webhook"
      type: array
    Whitelist:
      items:
        description: |
          Paths that the spider should visit that are not directly accessible
        example: /private/path/
        type: string
      type: array
    accountAutoCollection:
      description: Collection for the next billing period is autommatic/manual
      enum:
        - on
        - off
      example: on
      readOnly: true
      type: string
    accountBalance:
      description: Account balance in cents
      example: 0
      type: integer
    accountNextBillingAt:
      description: Date of next billing
      example: 2018-01-31T16:32:17.238553Z
      format: date
      readOnly: true
      type: string
    accountPlanId:
      description: Current plan id
      example: jMXUw-BE_2vd
      readOnly: true
      type: string
    accountStatus:
      description: |
        * active - active subscription, either trial or paying
        * trial_ended - trial ended and subscription was discontinued
        * canceled - subscription canceled
      enum:
        - active
        - trial_ended
        - canceled
      example: active
      readOnly: true
      type: string
    address:
      description: Address
      type: string
    basicAuthUsername:
      description: Username
      example: probely
      type: string
    billingPeriod:
      description: Number of of period unit between charges
      example: 1
      type: string
    billingPeriodUnit:
      description: Unit of billing period
      enum:
        - month
        - year
      type: string
    changed:
      description: Date time of the last change
      example: 2018-01-31T16:32:17.238553Z
      format: date-time
      readOnly: true
      type: string
    city:
      description: City
      example: Munich
      type: string
    connectedTarget:
      description: |
        Id of the connected target in a multi-environment targets.
      type: string
    country:
      description: ISO 3166 alpha-2 country code
      example: DE
      type: string
    coupons:
      description: Coupon ids
      items:
        type: string
      type: array
      writeOnly: true
    created:
      description: Date time of creation
      example: 2018-01-31T16:32:17.238553Z
      format: date-time
      readOnly: true
      type: string
    currencyCode:
      description: 3 letter currency code
      example: EUR
      type: string
    desc:
      default: ""
      description: Custom description for the resource
      example: Object description
      type: string
    email:
      description: Contact email
      type: string
    emailToken:
      description: Reset token received in the user email
      example: KJUUCY2VIVEHO5KJGVHQ====-PJZXGNKSGNQVSODFPJGQ====-GYZDKOI=-8065bfbf8a0192774f3f/
      type: string
    enabled:
      description: |
        Certain operations (e.g. changing a target's `type`) may require going through billing. Until the change is reverted or the billing is settled.
      readOnly: true
      type: boolean
    environment:
      default: testing
      description: |
        Multi-environment targets can identify environments using this property.
      enum:
        - testing
        - production
      type: string
    eventObjectType:
      description: |
        Type of object in the event content.
      enum:
        - user
        - target
        - scan
        - finding
      readOnly: true
      type: string
    eventOccurredAt:
      description: Date time of when the event occurred
      example: 2018-01-31T16:32:17.238553Z
      format: date-time
      readOnly: true
      type: string
    eventType:
      description: |
        Event type:
        - `user_created` new user added to account
        - `user_deleted` user deleted from account
        - `target_created` new target added to account
        - `target_deleted` target deleted from account
        - `target_verified` target ownership verified
        - `target_verification_failed` target ownership verification failed
        - `scan_started` scan started on target
        - `scan_canceled` scan on target canceled
        - `scan_completed` scan finished with successfuly
        - `scan_failed` scan finished unsuccessfuly
        - `finding_detected` new finding detected (not found before)
        - `finding_fixed` finding was fixed
      enum:
        - user_created
        - user_deleted
        - target_created
        - target_deleted
        - target_verified
        - target_verification_failed
        - scan_started
        - scan_canceled
        - scan_completed
        - scan_failed
        - finding_detected
        - finding_fixed
      example: scan_started
      readOnly: true
      type: string
    findingCVSSScore:
      description: CVSS score
      example: 6.5
      format: float
      readOnly: true
      type: number
    findingCVSSVector:
      description: CVSS vector
      example: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
      readOnly: true
      type: string
    findingInsertionPoint:
      description: |
        An insertion point is the place in the HTTP request where the
        malicious payload is injected to exploit the vulnerability.
          * cookie - Payload injected into the value of an HTTP cookie
          * header - Payload injected into the header of an HTTP request
          * parameter - Payload injected into the value of a query string
          parameter
          * arbitrary_url_param - Payload injected into the value of an
          arbitrarily added query string parameter
          * url_filename - Payload injected into the URL filename part
          * url_folder - Payload injected into the URL folder part
          * multipart_parameter - Payload is inserted into the value of a
          parameter attribute within a multi-part message body (such as
          the name of an uploaded file).
          * <empty> - No payload to inject.
      enum:
        - cookie
        - header
        - parameter
        - arbitrary_url_param_name
        - url_path_folder
        - ""
      readOnly: true
      type: string
    findingSeverity:
      description: |
        Severity, how serious the issue is considered:
          * 10 - low
          * 20 - medium
          * 30 - high
      enum:
        - 10
        - 20
        - 30
      type: string
    findingState:
      description: |
        Finding state:
          * notfixed - Issue can still be exploited
          * invalid - Issue determined to be a false positive
          * accepted - Issue will not be solved and the risk was accepted
          * fixed - No problem here anymore
      enum:
        - notfixed
        - invalid
        - accepted
        - fixed
      type: string
    firstName:
      description: First name
      type: string
    formLoginCheckPattern:
      default: ""
      description: Pattern to check successful authentication (not used)
      type: string
    formLoginUrl:
      default: ""
      description: URL for the form login
      example: https://app.probely.com/
      type: string
    frameworkNames:
      description: Framework/Software name.
      example: nginx
      type: string
    freeTargetQuantity:
      description: Number of free targets
      example: 3
      type: integer
    hasBasicAuth:
      default: false
      description: Use basic authentication in scan
      example: true
      type: boolean
    hasFormLogin:
      default: false
      description: Does the resource use form login
      example: true
      type: boolean
    hasUsedTrial:
      description: Has account used up it's trial
      example: true
      type: boolean
    host:
      description: Fully qualified hostname
      type: string
    id:
      description: Object id.
      example: jMXUw-BE_2vd
      readOnly: true
      type: string
    include:
      description: Use this asset in scans.
      type: boolean
    jira_allow_jira:
      description: Is this target allowed Jira integration.
      type: boolean
    jira_auto_sync:
      description: Automatically synchronise all findings to Jira issues.
      type: boolean
    jira_issue_id:
      description: Jira issue id connected to this finding
      type: string
    jira_issue_type_id:
      description: Id of the issue type to be created in Jira.
      type: string
    jira_priority_mapping:
      properties:
        "10":
          description: Id of the Jira priority that low severity findings should be mapped to.
          type: string
        "20":
          description: Id of the Jira priority that medium severity findings should be mapped to.
          type: string
        "30":
          description: Id of the Jira status that high severity findings should be mapped to.
          type: string
      type: object
    jira_project_id:
      description: Id of the Jira project where issues for this target will be created.
      type: string
    jira_selective_sync:
      description: Selective sync active for this finding.
      type: boolean
    jira_status_mapping:
      properties:
        accepted:
          description: Id of the Jira status that `accepted` findings should be mapped to.
          type: string
        fixed:
          description: Id of the Jira status that `fixed` findings should be mapped to.
          type: string
        invalid:
          description: Id of the Jira status that `invalid` findings should be mapped to.
          type: string
        notfixed:
          description: Id of the Jira status that `notfixed` findings should be mapped to.
          type: string
      type: object
    lastName:
      description: Last name
      type: string
    method:
      description: HTTP method
      enum:
        - GET
        - OPTIONS
        - POST
        - PUT
        - PATCH
        - DELETE
        - HEAD
      readOnly: true
      type: string
    name:
      default: ""
      description: Custom name for the resource
      example: Object name
      type: string
    paginationCount:
      description: Number of objects in the response.
      example: 6
      type: integer
    paginationLength:
      default: 10
      description: Number of objects per page.
      example: 10
      type: integer
    paginationPage:
      default: 1
      description: Current page.
      example: 1
      type: integer
    paginationPageTotal:
      description: Number of pages.
      example: 1
      type: integer
    password:
      example: dolphins
      type: string
    planAllowedScanProfiles:
      description: List of scan profiles allowed by the plan
      items:
        example: normal
        type: string
      type: array
    planChargeModel:
      description: |
        * per_unit - each target is paid independently
        * flat_fee - targets are paid as a pool
      enum:
        - per_unit
        - flat_fee
      example: per_unit
      readOnly: true
      type: string
    planIsTrial:
      description: Is this a trial plan
      example: false
      type: boolean
    planTargetQuantity:
      description: Number of subscribed targets
      example: 3
      type: integer
    poolSize:
      description: Maximum number of subscribed target for pool plans
      example: 5
      type: integer
    price:
      description: Price in cents
      example: 5000
      type: integer
    recurrence:
      description: |
        Scan recurrence:
          * d - daily
          * w - weekly
          * m - monthly
          * q - quarterly
          * '' - no recurrence
      enum:
        - d
        - w
        - m
        - q
        - ""
      type: string
    registrationNumber:
      description: Company registration number
      type: string
    reportType:
      description: |
        * default - default report, no extra information added
        * owasp - adds table on OWASP Top 10 most critical web application risks
        * pci - adds table on PCI requirements
      enum:
        - default
        - owasp
        - pci
      type: string
    scanCompleted:
      description: Date time of scan completion
      example: 2018-01-31T16:32:17.238553Z
      format: date-time
      readOnly: true
      type: string
    scanDateTime:
      description: Date time of next scan
      format: date-time
      type: string
    scanProfile:
      default: normal
      description: |
        * lightning - fast simple scan
        * normal - default profile
        * full - does everything the default profile does and adds boolean based
        SQL injection tests
        * safe - doesn't use any content changing methods (no POST, DELETE, etc)
        and tries fewer payloads for SQL injection tests
      enum:
        - safe
        - normal
        - full
        - lightning
      example: normal
      type: string
    scanStarted:
      description: Date time of scan start
      example: 2018-01-31T16:32:17.238553Z
      format: date-time
      readOnly: true
      type: string
    scanStatus:
      description: |
        Current scan status:
          * queued - Scan queued to start
          * started - Scan currently running
          * under_review - Scan is complete but we need to verify some findings
          * completed - Scan complete
          * completed_with_errors - Scan complete with error(s) in non essential modules
          * failed - Something went seriously wrong during the scan
          * canceled - Scan was canceled
          * canceling - Stopping scan
      enum:
        - queued
        - started
        - under_review
        - completed
        - completed_with_errors
        - failed
        - canceled
        - canceling
      type: string
    siteHost:
      default: ""
      description: Site host
      example: app.probely.com
      readOnly: true
      type: string
    siteUrl:
      default: ""
      description: |
        Site URL, it should include the path if the site is not located at the root. This URL can only be set once.
      example: https://app.probely.com
      format: URL
      type: string
    targetIds:
      items:
        $ref: "#/components/schemas/id"
      type: array
    targetType:
      default: single
      description: |
        The type of a target determines what the limitations imposed on a
        target.
        * free - Every account is allowed to have 5 free targets, these targets
        do not need to be verified but can only perform lightning
        scans.
        * single - Single environment targets need to be verified but are
        allowed to run any type of scan allowed by the plan.
        * multi - Multi environment targets are used when you want
        to scan the same application in different environments.
      enum:
        - free
        - single
        - multi
      type: string
    token:
      description: Authentication token
      example: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJKR3ZRSTkzSTJhc0oiLCJ0ZW5hbnQiOiJwcm9iZWx5IiwidXNlcm5hbWUiOiJxd2VAZGVmbnVsbC5ldSJ9.7KtUn-Oy8aevOCv2lAnDroAJojLXmm7m2A4CX5cjwAk
      readOnly: true
      type: string
    tokenBody:
      description: Authentication token
      example: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJKR3ZRSTkzSTJhc0oiLCJ0ZW5hbnQiOiJwcm9iZWx5IiwidXNlcm5hbWUiOiJxd2VAZGVmbnVsbC5ldSJ9.7KtUn-Oy8aevOCv2lAnDroAJojLXmm7m2A4CX5cjwAk
      type: string
    trialEnd:
      description: Trial termination date
      example: 2018-01-31T16:32:52.226652Z
      format: date-time
      type: string
    ttl:
      description: Token time to live in seconds
      example: 31536000
      type: integer
    userEmail:
      description: User's email (changing this resets the user's password and revokes existing tokens)
      example: example@probely.com
      type: string
    userId:
      description: User's id
      example: jMXUw-BE_2vd
      type: string
    userIsActive:
      description: Deleted users are marked as not active
      type: boolean
    userIsAdmin:
      description: Account admin
      readOnly: true
      type: boolean
    userIsBillingAdmin:
      description: Billing contact for the account
      type: boolean
    userName:
      description: User's name
      example: Henrique Cimento
      type: string
    userTitle:
      enum:
        - ceo
        - cto
        - cso
        - seceng
        - dev
        - devop
        - manager
        - other
      type: string
    username:
      example: example@probely.com
      type: string
    vat:
      description: Company VAT registration number
      type: string
    verificationDate:
      description: Verification date time
      example: 2018-01-31T16:32:52.226652Z
      format: date-time
      readOnly: true
      type: string
    verificationLastError:
      description: Reason for last verification failure.
      readOnly: true
      type: string
    verificationMethod:
      description: |
        Type of verification:
        * dns - we look or a TXT record on the host you registered containing
        `Probely=<verification_token>`
        * file - on the root of the path you registered we look for a file
        named `<verification token>` containing `Probely`.
      enum:
        - dns
        - file
      readOnly: true
      type: string
    verificationToken:
      description: Token used to verify
      example: a38351cb-ede8-4dc8-9366-80d3a7042d9a
      readOnly: true
      type: string
    verificationType:
      description: |
        Type of verification:
        * dns - we look or a TXT record on the host you registered containing
        `Probely=<verification_token>`
        * file - on the root of the path you registered we look for a file
        named `<verification token>` containing `Probely`.
      enum:
        - dns
        - file
      type: string
    verified:
      default: false
      description: Has resource ownership been verified
      readOnly: true
      type: boolean
    webhookApiVersion:
      description: API version for the webhook
      enum:
        - v1
      type: string
    webhookCheckCert:
      description: Verify webhook URL HTTPS certificate
      type: boolean
    webhookURL:
      description: URL to post events to (must be https)
      type: string
    zipCode:
      description: Address ZIP code
      type: string
  securitySchemes:
    jwtAuth:
      bearerFormat: JWT
      scheme: bearer
      type: http
