Guides (1.0)

Download OpenAPI specification:

Get Started

This guide will walk you through a basic tutorial to retrieve the vulnerabilities that you either received as an enterprise or submitted as a hacker.

Read on to learn more about:

Using Basic Authentication to access Yogosha API

Yogosha API uses the Basic HTTP Authentication for authentication and authorization.

How to create your API keys

To get your API key, you must create an app by following the steps below:

  1. In your personal Settings, go the API Keys page.
  2. Click on the New API Key button.
  3. Choose a relevant name for your application.
  4. Choose the scopes you need for your application from the available scopes.
  5. Click on the Save button.
  6. Your API keys (access_token) should be displayed. Copy and safely store them as they will be displayed only once. You'll need these when making future API calls.

Removal of API keys

If your API keys get compromised, they can be revoked anytime.

Get a valid access token

Before being able to make your first API call, you must encode in base64 your username and your access token in this format: username:access_token

echo -n "username:access_token" | base64
dXNlcm5hbWU6YWNjZXNzX3Rva2Vu

Make your first API call

Finally, you can use the string encoded in base64 (username:access_token) to make authenticated API calls by setting it as "Basic" token in the Authorization header :

curl --request GET \
  --url https://api.yogosha.com/api/reports \
  --header 'authorization: Basic ENCODED_ACCESS_TOKEN'
method: get
url: 'https://api.yogosha.com/api/reports'
headers:
  Authorization: Basic YOUR_ACCESS_TOKEN

Errors

Overview

The Yogosha REST API use the standard HTTP status code.

In case of error, response may contained a body with more information on the error to help you. The response will contain 2 fields, an explicit message and a error code. Example:

    {
      "code": 100,
      "message": "Invalid sorting parameter - The name of the property and the order must be separated by a dot (i.e. \"createdAt.desc\")."
    }

Find a full list of possible codes below.

List of possible codes

Validation

  • 10 - Unknown Resource ID

    The resource with given ID could not be found. It happens when using the id of resource in a payload and that ID doesn't exist.

Sorting

  • 100 - Invalid Sorting Parameter

    The name of the property and the order must be separated by a dot (i.e. "createdAt.desc").

  • 101 - Invalid Sorting Order

    Order value must be either asc or desc.

  • 102 - Invalid Sorting Property

    The requested property is not available on the endpoint.

Pagination

  • 110 - Invalid Page Number

    Pagination starts at page 1. The page parameters must be greater than or equal to 1.

  • 111 - Max Item Per Page

    A paginated response can include up to 100 items.

Embeddables

  • 120 - Invalid Requested Embeddable

    The requested embeddable "%s" is not available.

Pagination

The Yogosha REST API uses pagination to improve performance. Pagination is enforced for operations that could return a large collection of items. When you make a request to a paginated resource, the response wraps the returned array of values in a JSON object with paging metadata. For example:

{
  "data": [],
  "pagination": {
    "total": 2,
    "totalPages": 1,
    "perPage": 20,
    "page": 1
  }
}
  • data will contain the resources
  • pagination.total contain number of resources in the data set
  • pagination.totalPages contain number of page in the data set
  • pagination.perPage contain number of resources per page
  • pagination.page contain index of current page

Embeddable

The Yogosha REST API uses resource embeddable, which means that some parts of a resource are not returned unless specified in the request. This simplifies responses and minimizes network traffic.

To embed part of a resource in a request, use the embed query parameter and specify the object(s) to be embeded. If you need to embed multiple objects, use a comma-separated list.

For example, the following request will add program object information and additional content on the report with id 1OI6J5xY5kMDbwD3PWA9OD:

GET /api/reports/1OI6J5xY5kMDbwD3PWA9OD?embed=program,content

For now the api doesn't support nested object with embed function.

Sorting

Some operations support sorting the elements of a response by a field. Check the documentation for the operation to confirm whether sorting of a response is supported and which fields can be used. When sorting is used, direction of sort must be given, ther is not default. Example:

  • ?sortBy=title.asc will sort the result by title using ascendant direction
  • ?sortBy=title.desc will sort the result by title using descendant direction

API supports sorting on multiple fields in the same request, using coma separated list. Be aware direction must be declared for each field. Example:

  • ?sortBy=type.asc,createdAt.desc will sort the result by type using ascendant direction and createdAt using descendant direction

Assets

Manage and retrieve information about the digital assets monitored within your attack surface. This includes domains, IPs, services, and other exposed resources.

List assets

Retrieve a paginated list of assets.

Authorizations

Hunter Organization
❌ No ✅ Yes
Authorizations:
OAuth2
query Parameters
embed
string
Value: "organization"

Comma-separated additional content

organization
string

Filter by organization

type
string
Enum: "api" "cms" "customer-area" "e-commerce" "infrastructure" "ip-range" "app-android" "app-ios" "marketplace" "saas" "showcase-website" "other"

Filter by type of asset. Separate multiple values by a comma.

environment
string
Enum: "development" "staging" "production"

Filter by environment of asset. Separate multiple values by a comma.

criticality
string
Enum: "low" "medium" "high" "critical"

Filter by criticality. Separate multiple values by a comma.

status
string
Enum: "active" "inactive" "never_active"

Filter by status. Separate multiple values by a comma.

sortBy
string
Enum: "type" "title" "criticality" "environment" "state" "status" "reportCount" "updatedAt"

Sort the list of assets. Separate multiple values by a comma.

search
string

Search assets by title.

page
integer >= 1
Example: page=1

The requested page of a paginated collection (starting from page 1).

perPage
integer [ 1 .. 100 ]
Example: perPage=25

The maximum number of items per page (up to 100).

vulnerabilitySeverityLevels
string
Enum: "critical" "high" "medium" "low"

Filter by asset criticality.

Responses

Response Schema: application/json
required
object (Pagination)

Pagination details for paginated resources.

required
Array of objects (Asset)

Response samples

Content type
application/json
{
  • "pagination": {
    },
  • "data": [
    ]
}

Create an asset

Create a new asset.

Authorizations:
OAuth2
Request Body schema: application/json
title
required
string
type
required
string (AssetType)
Enum: "api" "ip-range" "app-android" "app-ios" "other" "webapp" "server" "domain-controller" "database" "iot"

The type of an asset.

addresses
required
Array of strings <uri> non-empty unique [ items <uri > ]
description
required
string
environment
required
string (AssetEnvironment)
Enum: "production" "staging" "development"

Environment of an asset.

criticality
required
string (AssetCriticality)
Enum: "low" "medium" "high" "critical"

Criticality of an asset.

organization
required
string <uuid> (Id)

A unique identifier.

monitoringAddresses
Array of strings <uri> >= 0 items unique [ items <uri > ]

A list of addresses that can be monitored during programs.

monitoringEnabled
boolean

Enable monitoring of current asset. The feature must be enabled

Responses

Response Schema: application/json
id
required
string <uuid> (Id)

A unique identifier.

status
string
Enum: "active" "inactive" "never_active"
title
required
string
addresses
required
Array of strings <uri> unique [ items <uri > ]

It can either be IP addresses or URLs.

description
required
string
environment
required
string (AssetEnvironment)
Enum: "production" "staging" "development"

Environment of an asset.

criticality
required
string (AssetCriticality)
Enum: "low" "medium" "high" "critical"

Criticality of an asset.

state
required
string
Enum: "active" "inactive"
type
required
string (AssetType)
Enum: "api" "ip-range" "app-android" "app-ios" "other" "webapp" "server" "domain-controller" "database" "iot"

The type of an asset.

reportCount
integer >= 0
parsedDescription
required
string

The description of the Asset. It has been escaped and can be safely displayed.

updatedAt
string <date-time>
programCount
integer >= 0
object (OrganizationLite)

An organization is a workspace.

monitoringAddresses
Array of strings <uri> unique [ items <uri > ]

A list of addresses that can be monitored when programs are active on an asset.

Array of objects (AssetWatcher) [ items ]

Request samples

Content type
application/json
{
  • "title": "Lorem Ipsum Dolor Sit Asset",
  • "type": "api",
  • "addresses": [],
  • "description": "Lorem ipsum dolor sit amet.",
  • "environment": "production",
  • "criticality": "critical",
  • "organization": "d7b037eb-fad0-484f-b911-96a155072474",
  • "monitoringAddresses": []
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "status": "active",
  • "title": "Public API",
  • "addresses": [],
  • "description": "###Lorem ipsum dolor sit amet",
  • "environment": "production",
  • "criticality": "critical",
  • "state": "active",
  • "type": "api",
  • "reportCount": 0,
  • "parsedDescription": "<h2>Lorem ipsum dolor sit amet</h2>",
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "programCount": 0,
  • "organization": {
    },
  • "monitoringAddresses": [],
  • "watchers": [
    ]
}

Update an asset

Update the information of an asset.

Authorizations:
OAuth2
path Parameters
id
required
string

ID of an asset -

Request Body schema: application/json
title
required
string
type
required
string (AssetType)
Enum: "api" "ip-range" "app-android" "app-ios" "other" "webapp" "server" "domain-controller" "database" "iot"

The type of an asset.

addresses
required
Array of strings <uri> non-empty unique [ items <uri > ]
description
required
string
environment
required
string (AssetEnvironment)
Enum: "production" "staging" "development"

Environment of an asset.

criticality
required
string (AssetCriticality)
Enum: "low" "medium" "high" "critical"

Criticality of an asset.

monitoringAddresses
Array of strings <uri> >= 0 items unique [ items <uri > ]

A list of addresses to monitored during programs.

monitoringEnabled
boolean

Enable monitoring of current asset. The feature must be enabled

Responses

Request samples

Content type
application/json
{
  • "title": "Lorem Ipsum Dolor Sit Asset",
  • "type": "api",
  • "addresses": [],
  • "description": "Lorem ipsum dolor sit amet.",
  • "environment": "production",
  • "criticality": "critical",
  • "monitoringAddresses": []
}

Delete an asset

Delete an existing asset. An asset can be deleted only if no activity has been registered (such as a launched bug bounty program).

Authorizations:
OAuth2
path Parameters
id
required
string

ID of an asset

Responses

Test Accounts

Create and manage test accounts used for security assessments, validations, and attack surface verifications.

Get test accounts

This endpoint allows to list all test accounts for an asset whose id is in the query string.

Authorizations:
OAuth2
query Parameters
asset
string

Asset ID encoded for which we get the test accounts.

assignees
string

List Researchers ID seperated by comma

sortBy
string
Enum: "createdAt.asc" "createdAt.desc" "updatedAt.asc" "updatedAt.desc"

Sort test accounts. Separate multiple values by a comma.

Responses

Response Schema: application/json
required
object (Pagination)

Pagination details for paginated resources.

required
Array of objects (Test Account)

Response samples

Content type
application/json
{
  • "pagination": {
    },
  • "data": [
    ]
}

Create a test account

Create a new test account.

Authorizations:
OAuth2
Request Body schema: application/json
assetId
required
string <uuid> (Id)

A unique identifier.

content
required
string
mode
string
Enum: "individual" "shared"

Test account mode

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "content": "[email protected]:password",
  • "createdAt": "2023-05-12T18:22:09+00:00",
  • "updatedAt": "2023-05-12T18:22:09+00:00",
  • "assignees": {
    },
  • "mode": "individual"
}

Update assignations

Update a test account assginees

Authorizations:
OAuth2
path Parameters
id
required
string

Test Account ID

Request Body schema: application/json
assignees
Array of strings <uuid> [ items <uuid > ]

Responses

Response Schema: application/json
id
required
string <uuid> (Id)

A unique identifier.

content
required
string
createdAt
required
string <date-time>
updatedAt
required
string <date-time>
object (BasicUser)

A basic user , only id, username and avatar

mode
string
Enum: "individual" "shared"

Test account mode

Request samples

Content type
application/json
{
  • "assignees": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "content": "[email protected]:password",
  • "createdAt": "2023-05-12T18:22:09+00:00",
  • "updatedAt": "2023-05-12T18:22:09+00:00",
  • "assignees": {
    },
  • "mode": "individual"
}

Unassign the researcher from all the asset test accounts

Unassign the researcher from all the asset test accounts

Authorizations

Hunter Organization
❌ No ✅ Yes
Authorizations:
OAuth2
path Parameters
id
required
string

Asset ID

researcher-id
required
string

Researcher ID

Responses

Update a test account

Update a test account

Authorizations:
OAuth2
path Parameters
id
required
string

Test Account ID

Request Body schema: application/json
content
required
string

Responses

Response Schema: application/json
id
required
string <uuid> (Id)

A unique identifier.

content
required
string
createdAt
required
string <date-time>
updatedAt
required
string <date-time>
object (BasicUser)

A basic user , only id, username and avatar

mode
string
Enum: "individual" "shared"

Test account mode

Request samples

Content type
application/json
{
  • "content": "string"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "content": "[email protected]:password",
  • "createdAt": "2023-05-12T18:22:09+00:00",
  • "updatedAt": "2023-05-12T18:22:09+00:00",
  • "assignees": {
    },
  • "mode": "individual"
}

Delete a test account

Delete a test Account

Authorizations:
OAuth2
path Parameters
id
required
string

Test Account ID

Responses

Programs

Programs

List programs

Retrieve a paginated list of programs.

Authorizations:
OAuth2
query Parameters
embed
string
Enum: "content" "audiences" "versions"

Embed addtional content. Separate multiple values by a comma.

organization
string

Filter by organization. Separate multiple values by a comma.

asset
string

Filter by asset. Separate multiple values by a comma.

state
string
Enum: "draft" "review" "offline" "online" "archived"

Filter by the state of a program. Separate multiple values by a comma.

nextVersion.state
string
Enum: "draft" "review" "validated" "published"

Filter by the state of next version of a program. Separate multiple values by a comma.

search
string

Search programs by name and name of their asset.

sortBy
string
Enum: "createdAt.asc" "createdAt.desc" "updatedAt.asc" "updatedAt.desc" "startedAt.asc" "startedAt.desc" "submittedAt.asc" "submittedAt.desc" "name.asc" "name.desc" "asset.asc" "asset.desc"

Sort programs. Separate multiple values by a comma.

page
integer >= 1
Example: page=1

The requested page of a paginated collection (starting from page 1).

perPage
integer [ 1 .. 100 ]
Example: perPage=25

The maximum number of items per page (up to 100).

audiences.group
string

Filter by targeted audience (ID of a group). Separate multiple values by a comma.

audiences.accessMode
string
Enum: "open" "invitation"

Filter by access mode. Separate multiple values by a comma.

type
string
Enum: "bugbounty" "vdp" "pentest"

Filter by type of a program.

monitoring.type
string
Enum: "none" "hyperion" "vpn"

Filter by type of monitoring

Responses

Response Schema: application/json
required
object (Pagination.v1)

Pagination details for paginated resources.

required
Array of objects (Program)

Response samples

Content type
application/json
{
  • "pagination": {
    },
  • "data": [
    ]
}

Get a program

Retrieve a program

Authorizations:
OAuth2
path Parameters
id
required
string

ID of a program

query Parameters
embed
string
Enum: "content" "audiences" "changeLog" "versions"

Embed additional content. Separate multiple values by a comma. ChangeLog embed is restricted to admin user. Versions is restricted to BugBounty programs.

Responses

Response Schema: application/json
id
required
string <uuid> (Id.v1)

A unique identifier.

name
required
string non-empty
required
object (Organization.v1)

An organization is a workspace.

required
object (Money.v1)
required
object (Money.v1)
required
object (Money.v1)
required
object (Money.v1)
state
required
string non-empty
Enum: "draft" "review" "online" "offline" "archived"
currentVersion
integer
object
tags
required
Array of strings
Items Enum: "cvd" "axa" "pentest" "hack_for_values" "internal_audit"
required
object
hasTerms
required
boolean
hidden
required
boolean
rewardEnabled
required
boolean
rewardMandatory
required
boolean
vpnRequired
required
boolean

Whether or not the vpn is required for this program. The vpn is required when the monitoring is enabled (either vpn or hyperion).

createdAt
required
string <date-time> non-empty
updatedAt
required
string <date-time> non-empty
submittedAt
required
string <date-time> non-empty
approvedAt
string <date-time>
object or null
deniedAt
string <date-time>
startedAt
string <date-time>
putOnlineAt
string <date-time>
putOfflineAt
string <date-time>
hasFeatureAudience
boolean
hasFeatureChangeLog
required
boolean
hasFeatureDescription
boolean
hasFeatureExecutiveSummary
boolean
hasFeatureMonitoring
required
boolean
hasFeatureOutOfScopeTargets
required
boolean
hasFeatureResearcherCollaboration
required
boolean
hasFeatureResearcherNotification
required
boolean
hasFeatureRewardPolicy
required
boolean
hasFeatureSecurityChecklist
required
boolean
hasFeatureTargets
boolean
hasFeatureTerms
required
boolean
hasFeatureTestAccounts
required
boolean
hasFeatureVersioning
required
boolean
archivedAt
required
string or null <date-time>
languages
required
Array of strings

Language encoded on 2 chars

required
object (ProgramAsset)
collaboration
required
boolean
scope
Array of strings <uri> [ items <uri > ]
required
object

Rules of the program.

required
Array of objects (Audience of a Program)

List of groups of researchers that can access the program.

required
object (ProgramMonitoring)

Structure depending on its type property.

type
required
string
Enum: "bugbounty" "vdp" "pentest"
Array of objects (ProgramVersion)

list of versions available on this program (only available for BugBounty)

outOfScopes
Array of strings or null
object or null
object or null
missionPaymentEnabled
boolean
Array of objects or null (ProgramWatcher)

list all watchers of the program

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "name": "string",
  • "organization": {
    },
  • "lowReward": {
    },
  • "mediumReward": {
    },
  • "highReward": {
    },
  • "criticalReward": {
    },
  • "state": "draft",
  • "currentVersion": 1,
  • "nextVersion": {
    },
  • "tags": [
    ],
  • "settings": {
    },
  • "hasTerms": true,
  • "hidden": true,
  • "rewardEnabled": true,
  • "rewardMandatory": true,
  • "vpnRequired": true,
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "submittedAt": "2019-08-24T14:15:22Z",
  • "approvedAt": "2019-08-24T14:15:22Z",
  • "review": {
    },
  • "deniedAt": "2019-08-24T14:15:22Z",
  • "startedAt": "2019-08-24T14:15:22Z",
  • "putOnlineAt": "2019-08-24T14:15:22Z",
  • "putOfflineAt": "2019-08-24T14:15:22Z",
  • "hasFeatureAudience": true,
  • "hasFeatureChangeLog": true,
  • "hasFeatureDescription": true,
  • "hasFeatureExecutiveSummary": true,
  • "hasFeatureMonitoring": true,
  • "hasFeatureOutOfScopeTargets": true,
  • "hasFeatureResearcherCollaboration": true,
  • "hasFeatureResearcherNotification": true,
  • "hasFeatureRewardPolicy": true,
  • "hasFeatureSecurityChecklist": true,
  • "hasFeatureTargets": true,
  • "hasFeatureTerms": true,
  • "hasFeatureTestAccounts": true,
  • "hasFeatureVersioning": true,
  • "archivedAt": "2019-08-24T14:15:22Z",
  • "languages": [
    ],
  • "asset": {
    },
  • "collaboration": true,
  • "scope": [],
  • "content": {
    },
  • "audiences": [
    ],
  • "monitoring": {},
  • "type": "bugbounty",
  • "versions": [
    ],
  • "outOfScopes": [
    ],
  • "securityChecklistTemplate": {
    },
  • "securityChecklist": {
    },
  • "missionPaymentEnabled": true,
  • "watchers": []
}

Get sets of test accounts

List all sets of test accounts the user can use.

Authorizations

Hunter Organization
✅ Yes ❌ No
Authorizations:
OAuth2
path Parameters
id
required
string

ID of a program

Responses

Response Schema: application/json
Array
id
required
string <uuid> (Id)

A unique identifier.

content
required
string
createdAt
required
string <date-time>
updatedAt
required
string <date-time>

Response samples

Content type
application/json
[
  • {
    }
]

Reports

Access, manage, and export finalized vulnerability reports for review or sharing with stakeholders.

List reports

Retrieve a paginated list of reports.

Authorizations:
OAuth2
query Parameters
organization
string
Example: organization=123

The ID of the organization to filter.
Example: organization=1234

program
string
Example: program=5678

The ID of the program to filter.
Example: program=5678

embed
string
Enum: "author" "close" "content" "doublechecks" "feedbackToOrganization" "feedbackToResearcher" "fix" "organization" "program" "review" "reward" "vulnerability" "history" "remediation"
Example: embed=author

The ID of the program to filter.
Example: program=1234

severity
string
Enum: "low" "medium" "high" "critical"
Example: severity=critical

Filter by the severity of the reports.

status
string
Enum: "draft" "reviewing" "rewarding" "fixing" "closed" "remediation.new" "remediation.double_check_pending" "remediation.double_check_ok" "remediation.not_fixed" "review.new" "review.in_progress"
Example: status=reviewing

Filter by status of the reports.

review
string
Enum: "accepted" "duplicate" "out_of_scope" "wont_fix" "not_a_bug" "accept.to_fix" "accept.wont_fix"

Filter by review.

submittedAfter
integer <int32>
Example: submittedAfter=1704288082

Filter reports submitted after given timestamp.

submittedBefore
integer <int32>
Example: submittedBefore=1704288082

Filter reports submitted before given timestamp.

search
string

Search into the collection of reports by title, organization, program, etc.

sortBy
string
Enum: "createdAt" "reference" "severity" "status" "submittedAt" "title" "updatedAt"

Set order of sorting. Use a comma to separate multiple values.

assignee
string

Filter reports by assignee.

page
integer >= 1
Example: page=1

The requested page of a paginated collection (starting from page 1).

perPage
integer [ 1 .. 100 ]
Example: perPage=25

The maximum number of items per page (up to 100).

watched
boolean

Allows to only retrieve the reports the current user watches

asset
string <uuid>
Example: asset=Em2wRFI1FEXps0lsHw8d

The ID of the asset to filter.
Example: asset=Em2wRFI1FEXps0lsHw8d

asset.type
string
Enum: "api" "ip-range" "app-android" "app-ios" "other" "webapp" "server" "domain-controller" "database" "iot"

Filter reports by asset type.

program.type
string
Enum: "bugbounty" "cvd" "pentest"

Filter reports by program type.

vulnerability
string
Enum: "broken-access-control" "broken-authentication-and-session-management" "csrf" "injection" "insecure-deserialization" "insecure-direct-object-reference" "insufficient-logging-and-monitoring" "missing-function-level-access-control" "sensitive-data-exposure" "security-misconfiguration" "unvalidated-redirects-and-forwards" "using-components-with-know-vulnerabilities" "xss" "xxe"

Filter by the vulnerability of the reports

researcher
string

Filter reports by researcher.

blocked
boolean

Allows to only retrieve the blocked or unblocked reports

Responses

Response Schema: application/json
required
object (Pagination.v1)

Pagination details for paginated resources.

Array of objects (Report)

Response samples

Content type
application/json
{
  • "pagination": {
    },
  • "data": [
    ]
}

Get a report

Retrieve a report and its content.

Authorizations:
OAuth2
path Parameters
id
required
string

ID of a report

query Parameters
embed
string
Enum: "author" "close" "content" "doublechecks" "feedbackToOrganization" "feedbackToResearcher" "fix" "organization" "program" "review" "reward" "vulnerability" "history" "estimateReward" "exportIssue" "duplicateBy" "watchers" "remediation"
Example: embed=author

Responses

Response Schema: application/json
id
required
string <uuid> (Id.v1)

A unique identifier.

status
required
string
Enum: "draft" "reviewing" "rewarding" "fixing" "closed"
reference
required
integer

A public reference used for sharing.

createdAt
required
string <date-time>
updatedAt
required
string <date-time>
rewardMandatory
required
boolean
severity
required
string
Enum: "low" "medium" "high" "critical"
submittedAt
required
string <date-time>
title
required
string
object (Author)

Author of the report. When a user hasn't uploaded any avatar, the property avatar is null.

object (Organization.v1)

An organization is a workspace.

object (BugBountyProgram)

A Bug Bounty program.

object (Money.v1)
object (VulnerabilityCode)

Description of the vulnerability code.

object (ReportContent)

The representation of an object "content" within a report.

object (Review)
object (Reward)

A report may be rewarded.

object
object
Array of objects (Double Check Request)
object (Feedback)

Both researchers and customers can give each others feedbacks on their collaboration on a report.

object (Feedback)

Both researchers and customers can give each others feedbacks on their collaboration on a report.

Array of objects (Transition)
Array of objects (Exported Report)

List of URIs where the report was exported.

Array of objects (Duplicate Report)

List of received reports that are duplicate of this report.

object (User)

A user of Yogosha, whatever its role. When a user hasn't uploaded any avatar, the property avatar is null.

Array of objects (User)
outOfScope
boolean
object or null
Array of objects (Mediation)
rewardEnabled
required
boolean

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "status": "draft",
  • "reference": 0,
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "rewardMandatory": true,
  • "severity": "low",
  • "submittedAt": "2019-08-24T14:15:22Z",
  • "title": "string",
  • "author": {},
  • "organization": {
    },
  • "program": {
    },
  • "estimatedReward": {
    },
  • "vulnerability": {
    },
  • "content": {
    },
  • "review": {
    },
  • "reward": {
    },
  • "fix": {
    },
  • "close": {
    },
  • "doublechecks": [
    ],
  • "feedbackToResearcher": {
    },
  • "feedbackToOrganization": {
    },
  • "history": [
    ],
  • "exportIssue": [
    ],
  • "duplicateBy": [
    ],
  • "assignee": {},
  • "watchers": [],
  • "outOfScope": true,
  • "remediation": {
    },
  • "mediations": [
    ],
  • "rewardEnabled": true
}

Export a report to PDF

Export a report to a PDF.

Authorizations:
OAuth2
path Parameters
id
required
string

ID of a report

Responses

Response samples

Content type
application/pdf
No sample

Write Reports

Create and edit vulnerability reports, including detailed findings, methodology, and supporting evidence.

Create a report

Create a new report of vulnerability in a bug bounty program. The created report is in draft at first. It wil lhave to be submitted later.

Authorizations:
OAuth2
Request Body schema: application/json
title
required
string

Title of the report.

vulnerability
required
string (CodeForVulnerability)
Enum: "injection" "broken-authentication-and-session-management" "xss" "insecure-direct-object-reference" "sensitive-data-exposure" "security-misconfiguration" "missing-function-level-access-control" "csrf" "using-components-with-know-vulnerabilities" "unvalidated-redirects-and-forwards" "insufficient-logging-and-monitoring" "insecure-deserialization" "broken-access-control" "xxe"

Code of the vulnerability.

program
required
string <uuid> (Id.v1)

A unique identifier.

object

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "vulnerability": "injection",
  • "program": "9d904916-95ab-4cd6-a597-6e333dcf718f",
  • "content": {
    }
}

Response samples

Content type
application/json
No sample

Edit a report

Edit the draft of a report.

Authorizations:
OAuth2
path Parameters
id
required
string

ID of a report

Request Body schema: application/json
title
required
string

Title of the report.

vulnerability
required
string (CodeForVulnerability)
Enum: "injection" "broken-authentication-and-session-management" "xss" "insecure-direct-object-reference" "sensitive-data-exposure" "security-misconfiguration" "missing-function-level-access-control" "csrf" "using-components-with-know-vulnerabilities" "unvalidated-redirects-and-forwards" "insufficient-logging-and-monitoring" "insecure-deserialization" "broken-access-control" "xxe"

Code of the vulnerability.

required
object

Responses

Response Schema: application/json
id
required
string <uuid> (Id.v1)

A unique identifier.

status
required
string
Enum: "draft" "reviewing" "rewarding" "fixing" "closed"
reference
required
integer

A public reference used for sharing.

createdAt
required
string <date-time>
updatedAt
required
string <date-time>
rewardMandatory
required
boolean
severity
required
string
Enum: "low" "medium" "high" "critical"
submittedAt
required
string <date-time>
title
required
string
object (Author)

Author of the report. When a user hasn't uploaded any avatar, the property avatar is null.

object (Organization.v1)

An organization is a workspace.

object (BugBountyProgram)

A Bug Bounty program.

object (Money.v1)
object (VulnerabilityCode)

Description of the vulnerability code.

object (ReportContent)

The representation of an object "content" within a report.

object (Review)
object (Reward)

A report may be rewarded.

object
object
Array of objects (Double Check Request)
object (Feedback)

Both researchers and customers can give each others feedbacks on their collaboration on a report.

object (Feedback)

Both researchers and customers can give each others feedbacks on their collaboration on a report.

Array of objects (Transition)
Array of objects (Exported Report)

List of URIs where the report was exported.

Array of objects (Duplicate Report)

List of received reports that are duplicate of this report.

object (User)

A user of Yogosha, whatever its role. When a user hasn't uploaded any avatar, the property avatar is null.

Array of objects (User)
outOfScope
boolean
object or null
Array of objects (Mediation)
rewardEnabled
required
boolean

Request samples

Content type
application/json
{
  • "title": "string",
  • "vulnerability": "injection",
  • "content": {
    }
}

Response samples

Content type
application/json
No sample

Submit a report

Send a report to the owner of a bug bounty program.

Authorizations:
OAuth2
path Parameters
id
required
string

ID of a report

Request Body schema: application/json
title
required
string

Title of the report.

vulnerability
required
string (CodeForVulnerability)
Enum: "injection" "broken-authentication-and-session-management" "xss" "insecure-direct-object-reference" "sensitive-data-exposure" "security-misconfiguration" "missing-function-level-access-control" "csrf" "using-components-with-know-vulnerabilities" "unvalidated-redirects-and-forwards" "insufficient-logging-and-monitoring" "insecure-deserialization" "broken-access-control" "xxe"

Code of the vulnerability.

required
object

Responses

Response Schema: application/json
id
required
string <uuid> (Id.v1)

A unique identifier.

status
required
string
Enum: "draft" "reviewing" "rewarding" "fixing" "closed"
reference
required
integer

A public reference used for sharing.

createdAt
required
string <date-time>
updatedAt
required
string <date-time>
rewardMandatory
required
boolean
severity
required
string
Enum: "low" "medium" "high" "critical"
submittedAt
required
string <date-time>
title
required
string
object (Author)

Author of the report. When a user hasn't uploaded any avatar, the property avatar is null.

object (Organization.v1)

An organization is a workspace.

object (BugBountyProgram)

A Bug Bounty program.

object (Money.v1)
object (VulnerabilityCode)

Description of the vulnerability code.

object (ReportContent)

The representation of an object "content" within a report.

object (Review)
object (Reward)

A report may be rewarded.

object
object
Array of objects (Double Check Request)
object (Feedback)

Both researchers and customers can give each others feedbacks on their collaboration on a report.

object (Feedback)

Both researchers and customers can give each others feedbacks on their collaboration on a report.

Array of objects (Transition)
Array of objects (Exported Report)

List of URIs where the report was exported.

Array of objects (Duplicate Report)

List of received reports that are duplicate of this report.

object (User)

A user of Yogosha, whatever its role. When a user hasn't uploaded any avatar, the property avatar is null.

Array of objects (User)
outOfScope
boolean
object or null
Array of objects (Mediation)
rewardEnabled
required
boolean

Request samples

Content type
application/json
{
  • "title": "string",
  • "vulnerability": "injection",
  • "content": {
    }
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "status": "draft",
  • "reference": 0,
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "rewardMandatory": true,
  • "severity": "low",
  • "submittedAt": "2019-08-24T14:15:22Z",
  • "title": "string",
  • "author": {},
  • "organization": {
    },
  • "program": {
    },
  • "estimatedReward": {
    },
  • "vulnerability": {
    },
  • "content": {
    },
  • "review": {
    },
  • "reward": {
    },
  • "fix": {
    },
  • "close": {
    },
  • "doublechecks": [
    ],
  • "feedbackToResearcher": {
    },
  • "feedbackToOrganization": {
    },
  • "history": [
    ],
  • "exportIssue": [
    ],
  • "duplicateBy": [
    ],
  • "assignee": {},
  • "watchers": [],
  • "outOfScope": true,
  • "remediation": {
    },
  • "mediations": [
    ],
  • "rewardEnabled": true
}

Comments

Add and view comments on vulnerabilities or reports to facilitate collaboration between assessors and stakeholders.

Retrieve all comments for thread

Retrieve all comments for a thread

Authorizations:
OAuth2
path Parameters
id
required
string

Thread ID

Responses

Response Schema: application/json
Array
id
required
string <uuid> (Id.v1)

A unique identifier.

body
required
string

Markdown body.

parsedBody
required
string

HTML rendered body. Can be use safely to display.

visibility
required
string
Enum: "public" "private"

A public comment can be read by both customers and researcher. A private comment can only be read by customers or researchers.

object (User)

A user of Yogosha, whatever its role. When a user hasn't uploaded any avatar, the property avatar is null.

replies
Array of objects (Comment)
createdAt
required
string <date-time>

Response samples

Content type
application/json
[
  • {
    }
]

Create comment for thread

Create a comment or a reply for a thread

Authorizations:
OAuth2
path Parameters
id
required
string

Thread ID

Request Body schema: application/json
body
string
visibility
string
Enum: "public" "private"
parentId
string <uuid>

Responses

Response Schema: application/json
id
required
string <uuid> (Id.v1)

A unique identifier.

body
required
string

Markdown body.

parsedBody
required
string

HTML rendered body. Can be use safely to display.

visibility
required
string
Enum: "public" "private"

A public comment can be read by both customers and researcher. A private comment can only be read by customers or researchers.

object (User)

A user of Yogosha, whatever its role. When a user hasn't uploaded any avatar, the property avatar is null.

replies
Array of objects (Comment)
createdAt
required
string <date-time>

Request samples

Content type
application/json
{
  • "body": "string",
  • "visibility": "public",
  • "parentId": "70850378-7d3c-4f45-91b7-942d4dfbbd43"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "body": "string",
  • "parsedBody": "string",
  • "visibility": "public",
  • "author": {},
  • "replies": [
    ],
  • "createdAt": "2019-08-24T14:15:22Z"
}

Edit a comment

Edit a comment.

Authorizations:
OAuth2
path Parameters
id
required
string

ID of a comment

Request Body schema: application/json
body
required
string

Content of the comment in markdown.

visibility
required
string
Enum: "public" "private"

Responses

Response Schema: application/json
id
required
string <uuid> (Id.v1)

A unique identifier.

body
required
string

Markdown body.

parsedBody
required
string

HTML rendered body. Can be use safely to display.

visibility
required
string
Enum: "public" "private"

A public comment can be read by both customers and researcher. A private comment can only be read by customers or researchers.

object (User)

A user of Yogosha, whatever its role. When a user hasn't uploaded any avatar, the property avatar is null.

replies
Array of objects (Comment)
createdAt
required
string <date-time>

Request samples

Content type
application/json
{
  • "body": "### Heading 3",
  • "visibility": "public"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "body": "string",
  • "parsedBody": "string",
  • "visibility": "public",
  • "author": {},
  • "replies": [
    ],
  • "createdAt": "2019-08-24T14:15:22Z"
}

Webhooks

Yogosha provides a webhook system that will allow clients' systems to get notified directly when an event occurs.

In order to configure one or many webhooks, you need to go to the webhooks setting tab and create a new webhook configuration. Then you need to choose the event(s) to which you want to subscribe.

For each event, a specific payload will be sent. The payload definition will be details in the events section.

report.accepted Webhook

When a report is accepted for an asset that is related to a client with configured webhook.

Request Body schema: application/json
required
object
required
object

Request samples

Content type
application/json
{
  • "context": {
    },
  • "data": {
    }
}

report.closed Webhook

When a report is closed for an asset that is related to a client with configured webhook.

Request Body schema: application/json
required
object
required
object

Request samples

Content type
application/json
{
  • "context": {
    },
  • "data": {
    }
}

report.commented Webhook

When a report is commented for an asset that is related to a client with configured webhook.

Request Body schema: application/json
required
object
required
object

Request samples

Content type
application/json
{
  • "context": {
    },
  • "data": {
    }
}

report.double_check_asked Webhook

When a double-check is asked for the report for an asset that is related to a client with configured webhook.

Request Body schema: application/json
required
object
required
object

Request samples

Content type
application/json
{
  • "context": {
    },
  • "data": {
    }
}

report.double_check_invalidated Webhook

When a double check is invalidated for the report for an asset that is related to a client with configured webhook.

Request Body schema: application/json
required
object
required
object

Request samples

Content type
application/json
{
  • "context": {
    },
  • "data": {
    }
}

report.double_check_validated Webhook

When a double check is validated for the report for an asset that is related to a client with configured webhook.

Request Body schema: application/json
required
object
required
object

Request samples

Content type
application/json
{
  • "context": {
    },
  • "data": {
    }
}

report.fixed Webhook

When a report is fixed for an asset that is related to a client with configured webhook.

Request Body schema: application/json
required
object
required
object

Request samples

Content type
application/json
{
  • "context": {
    },
  • "data": {
    }
}

report.rejected Webhook

When a report is rejected for an asset that is related to a client with configured webhook.

Request Body schema: application/json
required
object
required
object

Request samples

Content type
application/json
{
  • "context": {
    },
  • "data": {
    }
}

report.rewarded Webhook

When a report is rewarded for an asset that is related to a client with configured webhook.

Request Body schema: application/json
required
object
required
object

Request samples

Content type
application/json
{
  • "context": {
    },
  • "data": {
    }
}

report.submitted Webhook

When a report is submitted for an asset that is related to a client with configured webhook.

Request Body schema: application/json
required
object
required
object

Request samples

Content type
application/json
{
  • "context": {
    },
  • "data": {
    }
}