### GET /programs Source: https://intigriti-researcher-api.readme.io/reference/introduction-to-intigritis-researcher-api Retrieve a list of all programs accessible to the authenticated researcher. This endpoint is useful for getting an overview of available programs. ```APIDOC ## GET /programs ### Description Retrieve a list of all programs accessible to the authenticated researcher. This endpoint is useful for getting an overview of available programs. ### Method GET ### Endpoint /programs ### Parameters #### Query Parameters - **versionId** (string) - Required - The version identifier for the programs endpoint. ### Request Example ```json { "example": "GET /v1/programs" } ``` ### Response #### Success Response (200) - **programs** (array) - A list of program objects. - **programId** (string) - The unique identifier for the program. - **name** (string) - The name of the program. #### Response Example ```json { "example": { "programs": [ { "programId": "123e4567-e89b-12d3-a456-426614174000", "name": "Example Program A" }, { "programId": "abcdef01-2345-6789-abcd-ef0123456789", "name": "Example Program B" } ] } } ``` ``` -------------------------------- ### Get All Programs Source: https://intigriti-researcher-api.readme.io/reference/program_getprogramoverview Retrieves a list of all programs the user has access to. Supports filtering and pagination. ```APIDOC ## GET /programs ### Description This method returns all programs the user has access to in their program overview. You can filter the results using query parameters and control the number of returned programs using the `limit` parameter. ### Method GET ### Endpoint /programs ### Parameters #### Query Parameters - **confidentialityLevel** (enumeration) - Optional - The current confidentiality level of the program. Possible values: 1 (Invite only), 2 (Application), 3 (Registered), 4 (Public). - **status** (enumeration) - Optional - The current state of the program. Possible values: 3 (Open), 4 (Suspended), 5 (Closing). - **type** (enumeration) - Optional - The type of program. Possible values: 1 (Bug bounty), 2 (Hybrid). - **following** (boolean) - Optional - Indicates whether the researcher is following the program. - **limit** (integer) - Optional - The maximum number of programs to return. Default is 50. Maximum is 500. ### Request Example ```json { "example": "GET /programs?confidentialityLevel=4&status=3&limit=100" } ``` ### Response #### Success Response (200) - **programs** (array) - A list of program objects. - **id** (string) - The unique identifier for the program. - **name** (string) - The name of the program. - **slug** (string) - A URL-friendly identifier for the program. - **url** (string) - The main URL for the program. - **status** (string) - The current status of the program (e.g., 'Open', 'Suspended'). - **type** (string) - The type of program (e.g., 'Bug bounty', 'Hybrid'). - **confidentiality** (string) - The confidentiality level of the program (e.g., 'Public', 'Registered'). - **asset_count** (integer) - The number of assets associated with the program. - **vulnerability_count** (integer) - The number of vulnerabilities reported for the program. - **average_time_to_first_response** (number) - The average time in hours to the first response. - **average_time_to_resolution** (number) - The average time in hours to resolve vulnerabilities. - **average_bounty** (number) - The average bounty amount in USD. - **is_following** (boolean) - Indicates if the researcher is following the program. #### Response Example ```json { "example": { "programs": [ { "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef", "name": "Example Program", "slug": "example-program", "url": "https://example.com", "status": "Open", "type": "Bug bounty", "confidentiality": "Public", "asset_count": 15, "vulnerability_count": 120, "average_time_to_first_response": 24.5, "average_time_to_resolution": 72.0, "average_bounty": 500.0, "is_following": true } ] } } ``` ``` -------------------------------- ### GET /v1/programs/activities Source: https://intigriti-researcher-api.readme.io/reference/program_getprogramactivities Retrieves a list of program activities for programs the user has access to. By default, it returns 50 activities, but this can be customized using the 'limit' parameter. ```APIDOC ## GET /v1/programs/activities ### Description Retrieves a list of program activities for programs the user has access to. By default, it returns 50 activities, but this can be customized using the 'limit' parameter. ### Method GET ### Endpoint /v1/programs/activities ### Parameters #### Query Parameters - **createdSince** (integer) - Optional - The date and time (Unix epoch) at which the event was created. - **following** (boolean) - Optional - Indicates whether the researcher is following the program. - **limit** (integer) - Optional - The maximum number of activities to return. Defaults to 50, with a maximum of 500. - **offset** (integer) - Optional - The number of activities to skip before returning results. ### Request Example ```json { "example": "No request body for GET requests" } ``` ### Response #### Success Response (200) - **maxCount** (integer) - The total number of activities available. - **records** (array) - An array of program activity objects. - **programId** (string) - The unique identifier for the program. - **activity** (object) - Details about the activity. - **fromVersionId** (string) - The ID of the previous version. - **toVersionId** (string) - The ID of the new version. - **type** (object) - The type of activity. - **id** (integer) - The ID of the activity type. - **value** (string) - The name of the activity type. - **createdAt** (integer) - The Unix epoch timestamp when the activity was created. - **following** (boolean) - Indicates if the researcher is following this program activity. #### Response Example ```json { "maxCount": 100, "records": [ { "programId": "a1b2c3d4-e5f6-7890-1234-567890abcdef", "activity": { "fromVersionId": "00000000-0000-0000-0000-000000000000", "toVersionId": "f0e9d8c7-b6a5-4321-fedc-ba9876543210" }, "type": { "id": 1, "value": "ProgramUpdated" }, "createdAt": 1678886400, "following": true } ] } ``` ``` -------------------------------- ### GET /v1/programs Source: https://intigriti-researcher-api.readme.io/reference/program_getprogramoverview Retrieves a list of all programs accessible to the researcher. Supports filtering by status, type, and following status, as well as pagination. ```APIDOC ## GET /v1/programs ### Description Retrieves a list of all programs accessible to the researcher. Supports filtering by status, type, and following status, as well as pagination. ### Method GET ### Endpoint https://api.intigriti.com/external/researcher/v1/programs ### Parameters #### Query Parameters - **statusId** (integer) - Optional - Filters programs by their status ID. - **typeId** (integer) - Optional - Filters programs by their type ID. - **following** (boolean) - Optional - Filters programs based on whether the researcher is following them. - **limit** (integer) - Optional - The maximum number of programs to return (max 500). - **offset** (integer) - Optional - The number of programs to skip before returning results. ### Request Example ``` GET /v1/programs?limit=10&offset=0 ``` ### Response #### Success Response (200) - **maxCount** (integer) - The total number of programs available. - **records** (array) - An array of program overview objects. - **id** (string) - The unique identifier for the program. - **handle** (string) - The program's handle. - **name** (string) - The name of the program. - **following** (boolean) - Indicates if the researcher is following the program. - **minBounty** (object) - The minimum bounty offered by the program. - **value** (number) - The bounty value. - **currency** (string) - The currency of the bounty. - **maxBounty** (object) - The maximum bounty offered by the program. - **value** (number) - The bounty value. - **currency** (string) - The currency of the bounty. - **confidentialityLevel** (object) - The confidentiality level of the program. - **id** (integer) - The ID of the confidentiality level. - **value** (string) - The value of the confidentiality level. - **status** (object) - The status of the program. - **id** (integer) - The ID of the status. - **value** (string) - The value of the status. - **type** (object) - The type of the program. - **id** (integer) - The ID of the type. - **value** (string) - The value of the type. - **webLinks** (object) - Links related to the program. - **detail** (string) - A URL to the program's detail page. #### Response Example ```json { "maxCount": 100, "records": [ { "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef", "handle": "example-program", "name": "Example Bug Bounty Program", "following": true, "minBounty": { "value": 100.00, "currency": "USD" }, "maxBounty": { "value": 1000.00, "currency": "USD" }, "confidentialityLevel": { "id": 1, "value": "Public" }, "status": { "id": 1, "value": "Active" }, "type": { "id": 1, "value": "Vulnerability Disclosure Program" }, "webLinks": { "detail": "https://example.com/programs/example-program" } } ] } ``` ``` -------------------------------- ### OpenAPI Definition for Get Program Domains Source: https://intigriti-researcher-api.readme.io/reference/program_getprogramdomain This OpenAPI 3.0 definition describes the 'Get program domains' endpoint for the Intigriti Researcher API. It specifies the request parameters (programId, versionId) and the structure of the successful response, which includes a versioned list of domain view models. ```json { "x-generator": "NSwag v13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))", "openapi": "3.0.0", "info": { "title": "Intigriti researcher API v1.0", "version": "1.0" }, "servers": [ { "url": "https://api.intigriti.com/external/researcher" } ], "paths": { "/v1/programs/{programId}/domains/{versionId}": { "get": { "tags": [ "Program" ], "summary": "Get program domains", "operationId": "Program_GetProgramDomain", "parameters": [ { "name": "programId", "in": "path", "required": true, "schema": { "type": "string", "format": "guid" }, "x-position": 1 }, { "name": "versionId", "in": "path", "required": true, "schema": { "type": "string", "format": "guid" }, "x-position": 2 } ], "responses": { "200": { "description": "Returns a version of the domains of a given program.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProgramDomainsViewModel" } } } } }, "security": [ { "bearerAuth": [] } ] } } }, "components": { "schemas": { "EnumerationViewModel": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer", "format": "int32" }, "value": { "type": "string" } } }, "VersionViewModelOfListOfDomainViewModel": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "format": "guid" }, "createdAt": { "type": "integer", "format": "int64" }, "content": { "type": "array", "items": { "$ref": "#/components/schemas/DomainViewModel" } } } }, "DomainViewModel": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "format": "guid" }, "type": { "$ref": "#/components/schemas/EnumerationViewModel" }, "endpoint": { "type": "string" }, "tier": { "$ref": "#/components/schemas/EnumerationViewModel" }, "description": { "type": "string" } } }, "ProgramDomainsViewModel": { "type": "object", "additionalProperties": false, "properties": { "domains": { "$ref": "#/components/schemas/VersionViewModelOfListOfDomainViewModel" } } } } }, "x-readme": { "explorer-enabled": true, "proxy-enabled": true }, "_id": "65cc5ca2a6456b003ef01ab2" } ``` -------------------------------- ### Get Program Details Source: https://intigriti-researcher-api.readme.io/reference/program_getprogramdetail Fetches the details of a specific program. Access to program details is subject to user permissions and acceptance of program terms and conditions. ```APIDOC ## GET /programs/{programId} ### Description This method returns the details of a program if the user has access to the program. It is important to note that some programs may return a 403 Forbidden response if the terms and conditions have been updated or changed. To gain access, users must accept the latest terms and conditions through the Intigriti interface. ### Method GET ### Endpoint `/programs/{programId}` ### Parameters #### Path Parameters - **programId** (string) - Required - The unique identifier of the program. #### Query Parameters None #### Request Body None ### Request Example None ### Response #### Success Response (200) - **programDetails** (object) - An object containing the detailed information of the program. - **id** (string) - The unique identifier of the program. - **name** (string) - The name of the program. - **description** (string) - A description of the program. - **startDate** (string) - The start date of the program. - **endDate** (string) - The end date of the program. - **status** (string) - The current status of the program (e.g., 'active', 'closed'). - **takedownPolicy** (string) - The takedown policy for the program. - **vulnerabilityDisclosurePolicy** (string) - The vulnerability disclosure policy for the program. #### Error Response (403) - **message** (string) - Indicates that access is forbidden, likely due to updated terms and conditions. #### Response Example (Success) ```json { "programDetails": { "id": "123e4567-e89b-12d3-a456-426614174000", "name": "Example Bug Bounty Program", "description": "This program aims to find security vulnerabilities in our web application.", "startDate": "2023-01-01T00:00:00Z", "endDate": "2024-12-31T23:59:59Z", "status": "active", "takedownPolicy": "Please report vulnerabilities responsibly.", "vulnerabilityDisclosurePolicy": "https://example.com/vdp" } } ``` #### Response Example (Error) ```json { "message": "Access forbidden. Please accept the latest terms and conditions." } ``` ``` -------------------------------- ### GET /v1/programs/{programId}/domains/{versionId} Source: https://intigriti-researcher-api.readme.io/reference/program_getprogramdomain Retrieves a specific version of domains associated with a given program. This endpoint is useful for accessing historical domain data or specific snapshots of a program's domains. ```APIDOC ## GET /v1/programs/{programId}/domains/{versionId} ### Description Retrieves a specific version of domains associated with a given program. This endpoint is useful for accessing historical domain data or specific snapshots of a program's domains. ### Method GET ### Endpoint /v1/programs/{programId}/domains/{versionId} ### Parameters #### Path Parameters - **programId** (string) - Required - The unique identifier of the program. - **versionId** (string) - Required - The unique identifier of the domain version. ### Request Example ```json { "example": "No request body needed for GET request." } ``` ### Response #### Success Response (200) - **domains** (object) - Contains the versioned domain information. - **id** (string) - The ID of the domain version. - **createdAt** (integer) - Timestamp when the domain version was created. - **content** (array) - An array of domain objects. - **id** (string) - The unique identifier of the domain. - **type** (object) - The type of the domain (e.g., subdomain, endpoint). - **id** (integer) - The ID of the enumeration. - **value** (string) - The value of the enumeration. - **endpoint** (string) - The domain endpoint URL. - **tier** (object) - The security tier associated with the domain. - **id** (integer) - The ID of the enumeration. - **value** (string) - The value of the enumeration. - **description** (string) - A description of the domain. #### Response Example ```json { "domains": { "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef", "createdAt": 1678886400, "content": [ { "id": "f0e9d8c7-b6a5-4321-fedc-ba9876543210", "type": { "id": 1, "value": "subdomain" }, "endpoint": "api.example.com", "tier": { "id": 2, "value": "medium" }, "description": "Main API endpoint" } ] } } ``` ``` -------------------------------- ### GET /v1/programs/{programId} Source: https://intigriti-researcher-api.readme.io/reference/program_getprogramdetail Retrieves the details of a specific bug bounty program using its unique identifier. ```APIDOC ## GET /v1/programs/{programId} ### Description Retrieves the details of a specific bug bounty program. ### Method GET ### Endpoint /v1/programs/{programId} ### Parameters #### Path Parameters - **programId** (string) - Required - The unique identifier (GUID) of the program. ### Request Example ```json { "example": "No request body for GET request" } ``` ### Response #### Success Response (200) - **id** (string) - The program's unique identifier (GUID). - **handle** (string) - The program's handle. - **name** (string) - The program's name. - **following** (boolean) - Indicates if the researcher is following the program. - **confidentialityLevel** (object) - The confidentiality level of the program. - **id** (integer) - The ID of the confidentiality level. - **value** (string) - The value of the confidentiality level. - **status** (object) - The status of the program. - **id** (integer) - The ID of the status. - **value** (string) - The value of the status. - **type** (object) - The type of the program. - **id** (integer) - The ID of the program type. - **value** (string) - The value of the program type. - **domains** (object) - Information about the program's domains. - **id** (string) - The domain version ID. - **createdAt** (integer) - Timestamp of when the domain information was created. - **content** (array) - List of domain objects. - **id** (string) - The domain's unique identifier (GUID). - **type** (object) - The type of the domain. - **id** (integer) - The ID of the domain type. - **value** (string) - The value of the domain type. - **endpoint** (string) - The domain endpoint. - **tier** (object) - The tier of the domain. - **id** (integer) - The ID of the domain tier. - **value** (string) - The value of the domain tier. - **description** (string) - Description of the domain. - **rulesOfEngagement** (object) - Rules of engagement for the program (nullable). - **id** (string) - The rules of engagement version ID. - **createdAt** (integer) - Timestamp of when the rules of engagement were created. - **content** (object) - The content of the rules of engagement. - **attachments** (array) - List of attachments for the rules of engagement. - **url** (string) - URL of the attachment. - **code** (integer) - Code associated with the attachment. - **webLinks** (object) - Web links related to the program. - **detail** (string) - URL for program details. #### Response Example ```json { "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef", "handle": "example-program", "name": "Example Bug Bounty Program", "following": true, "confidentialityLevel": { "id": 1, "value": "Public" }, "status": { "id": 1, "value": "Active" }, "type": { "id": 1, "value": "Vulnerability Disclosure Program" }, "domains": { "id": "f0e9d8c7-b6a5-4321-fedc-ba9876543210", "createdAt": 1678886400, "content": [ { "id": "12345678-90ab-cdef-1234-567890abcdef", "type": { "id": 1, "value": "Subdomain" }, "endpoint": "www.example.com", "tier": { "id": 1, "value": "Tier 1" }, "description": "Main website" } ] }, "rulesOfEngagement": { "id": "87654321-0fed-cba9-8765-43210fedcba9", "createdAt": 1678886400, "content": { "version": "1.0", "text": "Please follow these rules..." }, "attachments": [ { "url": "https://example.com/rules.pdf", "code": 1 } ] }, "webLinks": { "detail": "https://intigriti.com/programs/example-program" } } ``` ``` -------------------------------- ### Get Program Rules of Engagement OpenAPI Definition Source: https://intigriti-researcher-api.readme.io/reference/program_getprogramrulesofengagement This OpenAPI 3.0.0 definition describes the endpoint for retrieving program rules of engagement. It requires `programId` and `versionId` as path parameters and returns a `ProgramRulesOfEngagementViewModel`. ```json { "x-generator": "NSwag v13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))", "openapi": "3.0.0", "info": { "title": "Intigriti researcher API v1.0", "version": "1.0" }, "servers": [ { "url": "https://api.intigriti.com/external/researcher" } ], "paths": { "/v1/programs/{programId}/rules-of-engagements/{versionId}": { "get": { "tags": [ "Program" ], "summary": "Get program rules of enagement", "operationId": "Program_GetProgramRulesOfEngagement", "parameters": [ { "name": "programId", "in": "path", "required": true, "schema": { "type": "string", "format": "guid" }, "x-position": 1 }, { "name": "versionId", "in": "path", "required": true, "schema": { "type": "string", "format": "guid" }, "x-position": 2 } ], "responses": { "200": { "description": "Returns a version of the rules of engagement of a given program.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProgramRulesOfEngagementViewModel" } } } } }, "security": [ { "bearerAuth": [] } ] } } }, "components": { "schemas": { "VersionWithAttachmentsViewModelOfRulesOfEngagementViewModel": { "allOf": [ { "$ref": "#/components/schemas/VersionViewModelOfRulesOfEngagementViewModel" }, { "type": "object", "additionalProperties": false, "properties": { "attachments": { "type": "array", "items": { "$ref": "#/components/schemas/AttachmentViewModel" } } } } ] }, "AttachmentViewModel": { "type": "object", "additionalProperties": false, "properties": { "url": { "type": "string" }, "code": { "type": "integer", "format": "int32" } } }, "VersionViewModelOfRulesOfEngagementViewModel": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "format": "guid" }, "createdAt": { "type": "integer", "format": "int64" }, "content": { "$ref": "#/components/schemas/RulesOfEngagementViewModel" } } }, "RulesOfEngagementViewModel": { "type": "object", "additionalProperties": false, "properties": { "description": { "type": "string" }, "testingRequirements": { "$ref": "#/components/schemas/TestingRequirementsViewModel" }, "safeHarbour": { "type": "boolean" } } }, "TestingRequirementsViewModel": { "type": "object", "additionalProperties": false, "properties": { "intigritiMe": { "type": "boolean" }, "automatedTooling": { "type": "integer", "format": "int32", "nullable": true }, "userAgent": { "type": "string", "nullable": true }, "requestHeader": { "type": "string", "nullable": true } } }, "ProgramRulesOfEngagementViewModel": { "type": "object", "additionalProperties": false, "properties": { "rulesOfEngagement": { "$ref": "#/components/schemas/VersionWithAttachmentsViewModelOfRulesOfEngagementViewModel" } } } } }, "x-readme": { "explorer-enabled": true, "proxy-enabled": true }, "_id": "65cc5ca2a6456b003ef01ab2" } ``` -------------------------------- ### GET /program-activities Source: https://intigriti-researcher-api.readme.io/reference/introduction-to-intigritis-researcher-api Receive a list of program events, including changes in domains and rules of engagement. This endpoint helps in staying updated with program modifications. ```APIDOC ## GET /program-activities ### Description Receive a list of program events, including changes in domains and rules of engagement. This endpoint helps in staying updated with program modifications. ### Method GET ### Endpoint /program-activities ### Parameters #### Query Parameters - **versionId** (string) - Required - The version identifier for the program activities endpoint. ### Request Example ```json { "example": "GET /v1/program-activities" } ``` ### Response #### Success Response (200) - **activities** (array) - A list of program activity objects. - **type** (string) - The type of activity (e.g., 'DOMAIN_ADDED', 'RULES_UPDATED'). - **programId** (string) - The identifier of the program affected. - **details** (object) - Specific details about the activity. #### Response Example ```json { "example": { "activities": [ { "type": "DOMAIN_ADDED", "programId": "123e4567-e89b-12d3-a456-426614174000", "details": { "newDomain": "new.example.com" } }, { "type": "RULES_UPDATED", "programId": "abcdef01-2345-6789-abcd-ef0123456789", "details": { "oldRules": ["Old rule 1"], "newRules": ["New rule 1"] } } ] } } ``` ``` -------------------------------- ### GET /v1/programs/{programId}/rules-of-engagements/{versionId} Source: https://intigriti-researcher-api.readme.io/reference/program_getprogramrulesofengagement Retrieves a specific version of the rules of engagement for a given program. This endpoint allows you to fetch detailed engagement rules, including testing requirements and safe harbor information. ```APIDOC ## GET /v1/programs/{programId}/rules-of-engagements/{versionId} ### Description Retrieves a specific version of the rules of engagement for a given program. This endpoint allows you to fetch detailed engagement rules, including testing requirements and safe harbor information. ### Method GET ### Endpoint /v1/programs/{programId}/rules-of-engagements/{versionId} ### Parameters #### Path Parameters - **programId** (string) - Required - The unique identifier of the program. - **versionId** (string) - Required - The unique identifier of the rules of engagement version. ### Request Example ```json { "example": "No request body for GET request" } ``` ### Response #### Success Response (200) - **rulesOfEngagement** (object) - Contains the rules of engagement details. - **rulesOfEngagement.id** (string) - The ID of the rules of engagement version. - **rulesOfEngagement.createdAt** (integer) - The timestamp when the rules were created. - **rulesOfEngagement.content** (object) - The content of the rules of engagement. - **rulesOfEngagement.content.description** (string) - A description of the rules. - **rulesOfEngagement.content.testingRequirements** (object) - Details on testing requirements. - **rulesOfEngagement.content.testingRequirements.intigritiMe** (boolean) - Indicates if Intigriti.me is included. - **rulesOfEngagement.content.testingRequirements.automatedTooling** (integer) - Information about automated tooling. - **rulesOfEngagement.content.testingRequirements.userAgent** (string) - User agent requirements. - **rulesOfEngagement.content.testingRequirements.requestHeader** (string) - Request header requirements. - **rulesOfEngagement.content.safeHarbour** (boolean) - Indicates if safe harbor is provided. - **rulesOfEngagement.attachments** (array) - A list of attachments related to the rules of engagement. - **rulesOfEngagement.attachments[].url** (string) - The URL of the attachment. - **rulesOfEngagement.attachments[].code** (integer) - A code associated with the attachment. #### Response Example ```json { "rulesOfEngagement": { "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef", "createdAt": 1678886400000, "content": { "description": "These are the rules of engagement for the program.", "testingRequirements": { "intigritiMe": true, "automatedTooling": 1, "userAgent": "*", "requestHeader": null }, "safeHarbour": true }, "attachments": [ { "url": "https://example.com/attachment.pdf", "code": 101 } ] } } ``` ``` -------------------------------- ### API Authentication Header Example Source: https://intigriti-researcher-api.readme.io/reference/authentication This snippet demonstrates how to include the Authorization header for API authentication. It requires a Personal Access Token (PAT) to be replaced in the placeholder. This is a common pattern for token-based authentication in HTTP requests. ```http GET /api/v1/some/endpoint HTTP/1.1 Host: api.intigriti.com Authorization: Bearer YOUR_PERSONAL_ACCESS_TOKEN ``` -------------------------------- ### GET /programs/{programId} Source: https://intigriti-researcher-api.readme.io/reference/introduction-to-intigritis-researcher-api Fetch detailed scope and rules of engagement information for a specific program. This endpoint is crucial for understanding the program's requirements for automation. ```APIDOC ## GET /programs/{programId} ### Description Fetch detailed scope and rules of engagement information for a specific program. This endpoint is crucial for understanding the program's requirements for automation. ### Method GET ### Endpoint /programs/{programId} ### Parameters #### Path Parameters - **programId** (string) - Required - The unique identifier of the program to retrieve details for. #### Query Parameters - **versionId** (string) - Required - The version identifier for the programs endpoint. ### Request Example ```json { "example": "GET /v1/programs/123e4567-e89b-12d3-a456-426614174000" } ``` ### Response #### Success Response (200) - **programDetails** (object) - An object containing the program's details. - **scope** (array) - A list of in-scope assets. - **rulesOfEngagement** (array) - A list of rules for the program. #### Response Example ```json { "example": { "programDetails": { "scope": [ "*.example.com" ], "rulesOfEngagement": [ "Do not perform DoS attacks." ] } } } ``` ``` -------------------------------- ### API Versioning Information Source: https://intigriti-researcher-api.readme.io/reference/versioning Details about the Intigriti API's versioning scheme, URL structure, and best practices for specifying the version. ```APIDOC ## API Versioning ### Description The Intigriti API uses a Major.Minor versioning scheme to manage changes and ensure backward compatibility. Breaking API changes will result in a version bump. ### Versioning Scheme - **Major.Minor**: For every breaking API change, the major or minor version is incremented. - **Breaking Changes**: Include removal or renaming of APIs/parameters, changes in API behavior, or modifications to Error Codes and Fault Contracts. ### URL Structure The API URL follows the format: `https://api.intigriti.com/external/researcher/{version}/{resource}` ### Usage - **Mandatory Version Specification**: The API version must always be specified in the URL. Failure to do so will result in an error. - **Recommendation**: It is advised to use the latest stable version available. ``` -------------------------------- ### OpenAPI Definition for Intigriti Researcher API Source: https://intigriti-researcher-api.readme.io/reference/program_getprogramdetail This JSON document provides the OpenAPI 3.0 specification for the Intigriti researcher API. It defines the API's structure, including endpoints, request/response formats, and data models. This definition is generated by NSwag and can be used to generate client libraries or documentation. ```json { "x-generator": "NSwag v13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))", "openapi": "3.0.0", "info": { "title": "Intigriti researcher API v1.0", "version": "1.0" }, "servers": [ { "url": "https://api.intigriti.com/external/researcher" } ], "paths": { "/v1/programs/{programId}": { "get": { "tags": [ "Program" ], "summary": "Get program details", "operationId": "Program_GetProgramDetail", "parameters": [ { "name": "programId", "in": "path", "required": true, "schema": { "type": "string", "format": "guid" }, "x-position": 1 } ], "responses": { "200": { "description": "Returns the details of a program.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProgramDetailViewModel" } } } } }, "security": [ { "bearerAuth": [] } ] } } }, "components": { "schemas": { "EnumerationViewModel": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer", "format": "int32" }, "value": { "type": "string" } } }, "ProgramWebLinks": { "type": "object", "additionalProperties": false, "properties": { "detail": { "type": "string" } } }, "ProgramDetailViewModel": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "format": "guid" }, "handle": { "type": "string" }, "name": { "type": "string" }, "following": { "type": "boolean" }, "confidentialityLevel": { "$ref": "#/components/schemas/EnumerationViewModel" }, "status": { "$ref": "#/components/schemas/EnumerationViewModel" }, "type": { "$ref": "#/components/schemas/EnumerationViewModel" }, "domains": { "$ref": "#/components/schemas/VersionViewModelOfListOfDomainViewModel" }, "rulesOfEngagement": { "nullable": true, "oneOf": [ { "$ref": "#/components/schemas/VersionWithAttachmentsViewModelOfRulesOfEngagementViewModel" } ] }, "webLinks": { "$ref": "#/components/schemas/ProgramWebLinks" } } }, "VersionViewModelOfListOfDomainViewModel": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "format": "guid" }, "createdAt": { "type": "integer", "format": "int64" }, "content": { "type": "array", "items": { "$ref": "#/components/schemas/DomainViewModel" } } } }, "DomainViewModel": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "format": "guid" }, "type": { "$ref": "#/components/schemas/EnumerationViewModel" }, "endpoint": { "type": "string" }, "tier": { "$ref": "#/components/schemas/EnumerationViewModel" }, "description": { "type": "string" } } }, "VersionWithAttachmentsViewModelOfRulesOfEngagementViewModel": { "allOf": [ { "$ref": "#/components/schemas/VersionViewModelOfRulesOfEngagementViewModel" }, { "type": "object", "additionalProperties": false, "properties": { "attachments": { "type": "array", "items": { "$ref": "#/components/schemas/AttachmentViewModel" } } } } ] }, "AttachmentViewModel": { "type": "object", "additionalProperties": false, "properties": { "url": { "type": "string" }, "code": { "type": "integer", "format": "int32" } } }, "VersionViewModelOfRulesOfEngagementViewModel": { "type": "object" } } } } ``` -------------------------------- ### API Error Codes Source: https://intigriti-researcher-api.readme.io/reference/errors This section details the common error codes encountered when interacting with the Intigriti Researcher API. ```APIDOC ## API Error Codes ### Description This section details the common error codes encountered when interacting with the Intigriti Researcher API. Understanding these codes will help in debugging and handling API requests more effectively. ### Error Codes | Error Code | Meaning | Description ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.