From d1b327e00999b1ccaf396515f0fa17bdfa9a6dae Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 8 Jul 2026 08:38:42 +0000 Subject: [PATCH] Update SDK to version v3.110.0 - Generated from OpenAPI spec version v3.110.0 - Auto-generated by GitHub Actions --- .sdk-version | 2 +- README.md | 8 + apis/AnalysesCoreApi.ts | 36 ++- apis/FunctionsCoreApi.ts | 252 ++++++++++++++++++- docs/AnalysesCoreApi.md | 16 +- docs/FunctionsCoreApi.md | 139 +++++++++- models/ArchiveContentEntry.ts | 58 +++++ models/BatchBinaryMatchResult.ts | 10 + models/ImportedFunctionCallerEntry.ts | 59 +++++ models/ImportedFunctionDetailOutputBody.ts | 113 +++++++++ models/ImportedFunctionEntry.ts | 102 ++++++++ models/ListArchiveContentsOutputBody.ts | 79 ++++++ models/ListImportedFunctionsOutputBody.ts | 46 ++++ models/ObjectSerializer.ts | 24 +- models/StartMatchingForAnalysisInputBody.ts | 10 + models/StartMatchingForFunctionsInputBody.ts | 10 + models/StartMatchingOutputBody.ts | 10 + models/TriggerDynamicExecutionInputBody.ts | 30 +++ models/all.ts | 6 + package.json | 2 +- types/ObjectParamAPI.ts | 157 ++++++++++-- types/ObservableAPI.ts | 136 ++++++++-- types/PromiseAPI.ts | 112 +++++++-- 23 files changed, 1321 insertions(+), 96 deletions(-) create mode 100644 models/ArchiveContentEntry.ts create mode 100644 models/ImportedFunctionCallerEntry.ts create mode 100644 models/ImportedFunctionDetailOutputBody.ts create mode 100644 models/ImportedFunctionEntry.ts create mode 100644 models/ListArchiveContentsOutputBody.ts create mode 100644 models/ListImportedFunctionsOutputBody.ts diff --git a/.sdk-version b/.sdk-version index 74fbdf9..498b115 100644 --- a/.sdk-version +++ b/.sdk-version @@ -1 +1 @@ -v3.107.0 +v3.110.0 diff --git a/README.md b/README.md index 7d7a07a..e103125 100644 --- a/README.md +++ b/README.md @@ -175,7 +175,9 @@ Class | Method | HTTP request | Description *FunctionsCoreApi* | [**getFunctionsCalleesCallers**](docs/FunctionsCoreApi.md#getFunctionsCalleesCallers) | **GET** /v3/functions/callees-callers | Get callees and callers for many functions *FunctionsCoreApi* | [**getFunctionsMatches**](docs/FunctionsCoreApi.md#getFunctionsMatches) | **GET** /v3/functions/matches | Get function-matching results for an explicit set of functions *FunctionsCoreApi* | [**getFunctionsMatchingStatus**](docs/FunctionsCoreApi.md#getFunctionsMatchingStatus) | **GET** /v3/functions/matches/status | Get function-matching status for an explicit set of functions +*FunctionsCoreApi* | [**getImportedFunction**](docs/FunctionsCoreApi.md#getImportedFunction) | **GET** /v3/analyses/{analysis_id}/imported-functions/{imported_function_id} | Get an imported function with its callers *FunctionsCoreApi* | [**listAnalysisFunctions**](docs/FunctionsCoreApi.md#listAnalysisFunctions) | **GET** /v3/analyses/{analysis_id}/functions | List functions in an analysis +*FunctionsCoreApi* | [**listImportedFunctions**](docs/FunctionsCoreApi.md#listImportedFunctions) | **GET** /v3/analyses/{analysis_id}/imported-functions | List imported functions in an analysis *FunctionsCoreApi* | [**startFunctionsMatching**](docs/FunctionsCoreApi.md#startFunctionsMatching) | **POST** /v3/functions/matches | Start function matching for an explicit set of functions *FunctionsDataTypesApi* | [**batchUpdateFunctionDataTypes**](docs/FunctionsDataTypesApi.md#batchUpdateFunctionDataTypes) | **PUT** /v3/analyses/{analysis_id}/functions/data-types | Batch update function data types *FunctionsDataTypesApi* | [**generateFunctionDataTypesForAnalysis**](docs/FunctionsDataTypesApi.md#generateFunctionDataTypesForAnalysis) | **POST** /v2/analyses/{analysis_id}/functions/data_types | Generate Function Data Types @@ -257,6 +259,7 @@ Class | Method | HTTP request | Description - [AppApiRestV2FunctionsResponsesFunction](AppApiRestV2FunctionsResponsesFunction.md) - [AppApiRestV2FunctionsTypesFunction](AppApiRestV2FunctionsTypesFunction.md) - [AppApiRestV2InfoTypesCapability](AppApiRestV2InfoTypesCapability.md) + - [ArchiveContentEntry](ArchiveContentEntry.md) - [Argument](Argument.md) - [Artifact](Artifact.md) - [AttemptFailedEvent](AttemptFailedEvent.md) @@ -519,6 +522,9 @@ Class | Method | HTTP request | Description - [ISA](ISA.md) - [IconModel](IconModel.md) - [ImportModel](ImportModel.md) + - [ImportedFunctionCallerEntry](ImportedFunctionCallerEntry.md) + - [ImportedFunctionDetailOutputBody](ImportedFunctionDetailOutputBody.md) + - [ImportedFunctionEntry](ImportedFunctionEntry.md) - [InlineComment](InlineComment.md) - [InsertAnalysisLogRequest](InsertAnalysisLogRequest.md) - [InviteUserInputBody](InviteUserInputBody.md) @@ -526,11 +532,13 @@ Class | Method | HTTP request | Description - [ListAnalysisFunctionsDataTypesOutputBody](ListAnalysisFunctionsDataTypesOutputBody.md) - [ListAnalysisFunctionsOutputBody](ListAnalysisFunctionsOutputBody.md) - [ListAnalysisStringsOutputBody](ListAnalysisStringsOutputBody.md) + - [ListArchiveContentsOutputBody](ListArchiveContentsOutputBody.md) - [ListCollectionResults](ListCollectionResults.md) - [ListCollectionsOutputBody](ListCollectionsOutputBody.md) - [ListExampleAnalysesOutputBody](ListExampleAnalysesOutputBody.md) - [ListFunctionStringsOutputBody](ListFunctionStringsOutputBody.md) - [ListFunctionsDataTypesOutputBody](ListFunctionsDataTypesOutputBody.md) + - [ListImportedFunctionsOutputBody](ListImportedFunctionsOutputBody.md) - [ListTeamsOutputBody](ListTeamsOutputBody.md) - [ListUsersOutputBody](ListUsersOutputBody.md) - [LocationOutputBody](LocationOutputBody.md) diff --git a/apis/AnalysesCoreApi.ts b/apis/AnalysesCoreApi.ts index 3c569e6..5aa05c6 100644 --- a/apis/AnalysesCoreApi.ts +++ b/apis/AnalysesCoreApi.ts @@ -396,11 +396,12 @@ export class AnalysesCoreApiRequestFactory extends BaseAPIRequestFactory { } /** - * Returns the matches blob when the matching workflow has completed. While the workflow is in progress this endpoint returns the current status with no matches; use /matches/status to poll progress. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied + * Returns the matches blob when the matching workflow has completed. While the workflow is in progress this endpoint returns the current status with no matches; use /matches/status to poll progress. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Get function-matching results for an analysis * @param analysisId Analysis ID + * @param matchId Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. */ - public async getAnalysisFunctionMatches(analysisId: number, _options?: Configuration): Promise { + public async getAnalysisFunctionMatches(analysisId: number, matchId?: string, _options?: Configuration): Promise { let _config = _options || this.configuration; // verify required parameter 'analysisId' is not null or undefined @@ -409,6 +410,7 @@ export class AnalysesCoreApiRequestFactory extends BaseAPIRequestFactory { } + // Path Params const localVarPath = '/v3/analyses/{analysis_id}/functions/matches' .replace('{' + 'analysis_id' + '}', encodeURIComponent(String(analysisId))); @@ -417,6 +419,11 @@ export class AnalysesCoreApiRequestFactory extends BaseAPIRequestFactory { const requestContext = _config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") + // Query Params + if (matchId !== undefined) { + requestContext.setQueryParam("match_id", ObjectSerializer.serialize(matchId, "string", "")); + } + let authMethod: SecurityAuthentication | undefined; // Apply auth methods @@ -439,11 +446,12 @@ export class AnalysesCoreApiRequestFactory extends BaseAPIRequestFactory { } /** - * Returns the matching workflow\'s current status. Does not include the matches blob — use GET /matches for that. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied + * Returns the matching workflow\'s current status. Does not include the matches blob — use GET /matches for that. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Get function-matching status for an analysis * @param analysisId Analysis ID + * @param matchId Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. */ - public async getAnalysisFunctionMatchingStatus(analysisId: number, _options?: Configuration): Promise { + public async getAnalysisFunctionMatchingStatus(analysisId: number, matchId?: string, _options?: Configuration): Promise { let _config = _options || this.configuration; // verify required parameter 'analysisId' is not null or undefined @@ -452,6 +460,7 @@ export class AnalysesCoreApiRequestFactory extends BaseAPIRequestFactory { } + // Path Params const localVarPath = '/v3/analyses/{analysis_id}/functions/matches/status' .replace('{' + 'analysis_id' + '}', encodeURIComponent(String(analysisId))); @@ -460,6 +469,11 @@ export class AnalysesCoreApiRequestFactory extends BaseAPIRequestFactory { const requestContext = _config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") + // Query Params + if (matchId !== undefined) { + requestContext.setQueryParam("match_id", ObjectSerializer.serialize(matchId, "string", "")); + } + let authMethod: SecurityAuthentication | undefined; // Apply auth methods @@ -1855,6 +1869,13 @@ export class AnalysesCoreApiResponseProcessor { ) as GetMatchesOutputBody; return new HttpInfo(response.httpStatusCode, response.headers, response.body, body); } + if (isCodeInRange("400", response.httpStatusCode)) { + const body: APIError = ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "APIError", "" + ) as APIError; + throw new ApiException(response.httpStatusCode, "Bad Request", body, response.headers); + } if (isCodeInRange("403", response.httpStatusCode)) { const body: APIError = ObjectSerializer.deserialize( ObjectSerializer.parse(await response.body.text(), contentType), @@ -1912,6 +1933,13 @@ export class AnalysesCoreApiResponseProcessor { ) as GetMatchesStatusOutputBody; return new HttpInfo(response.httpStatusCode, response.headers, response.body, body); } + if (isCodeInRange("400", response.httpStatusCode)) { + const body: APIError = ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "APIError", "" + ) as APIError; + throw new ApiException(response.httpStatusCode, "Bad Request", body, response.headers); + } if (isCodeInRange("403", response.httpStatusCode)) { const body: APIError = ObjectSerializer.deserialize( ObjectSerializer.parse(await response.body.text(), contentType), diff --git a/apis/FunctionsCoreApi.ts b/apis/FunctionsCoreApi.ts index aec4e43..c98c5dc 100644 --- a/apis/FunctionsCoreApi.ts +++ b/apis/FunctionsCoreApi.ts @@ -32,8 +32,10 @@ import { FunctionMatchingRequest } from '../models/FunctionMatchingRequest'; import { FunctionMatchingResponse } from '../models/FunctionMatchingResponse'; import { GetMatchesOutputBody } from '../models/GetMatchesOutputBody'; import { GetMatchesStatusOutputBody } from '../models/GetMatchesStatusOutputBody'; +import { ImportedFunctionDetailOutputBody } from '../models/ImportedFunctionDetailOutputBody'; import { ListAnalysisFunctionsOutputBody } from '../models/ListAnalysisFunctionsOutputBody'; import { ListFunctionStringsOutputBody } from '../models/ListFunctionStringsOutputBody'; +import { ListImportedFunctionsOutputBody } from '../models/ListImportedFunctionsOutputBody'; import { StartMatchingForFunctionsInputBody } from '../models/StartMatchingForFunctionsInputBody'; import { StartMatchingOutputBody } from '../models/StartMatchingOutputBody'; @@ -1210,15 +1212,12 @@ export class FunctionsCoreApiRequestFactory extends BaseAPIRequestFactory { /** * Returns the matches blob when the matching workflow has completed. While the workflow is in progress this endpoint returns the current status with no matches; use /matches/status to poll progress. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Get function-matching results for an explicit set of functions - * @param functionIds Source function IDs whose matches to fetch. + * @param matchId Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. + * @param functionIds Source function IDs whose matches to fetch. Required unless match_id is supplied. */ - public async getFunctionsMatches(functionIds: Array, _options?: Configuration): Promise { + public async getFunctionsMatches(matchId?: string, functionIds?: Array, _options?: Configuration): Promise { let _config = _options || this.configuration; - // verify required parameter 'functionIds' is not null or undefined - if (functionIds === null || functionIds === undefined) { - throw new RequiredError("FunctionsCoreApi", "getFunctionsMatches", "functionIds"); - } // Path Params @@ -1228,6 +1227,11 @@ export class FunctionsCoreApiRequestFactory extends BaseAPIRequestFactory { const requestContext = _config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") + // Query Params + if (matchId !== undefined) { + requestContext.setQueryParam("match_id", ObjectSerializer.serialize(matchId, "string", "")); + } + // Query Params if (functionIds !== undefined) { requestContext.setQueryParam("function_ids", ObjectSerializer.serialize(functionIds, "Array", "int64")); @@ -1257,15 +1261,12 @@ export class FunctionsCoreApiRequestFactory extends BaseAPIRequestFactory { /** * Returns the matching workflow\'s current status for the supplied function IDs. Does not include the matches blob — use GET /matches for that. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Get function-matching status for an explicit set of functions - * @param functionIds Source function IDs whose matches to fetch. + * @param matchId Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. + * @param functionIds Source function IDs whose matches to fetch. Required unless match_id is supplied. */ - public async getFunctionsMatchingStatus(functionIds: Array, _options?: Configuration): Promise { + public async getFunctionsMatchingStatus(matchId?: string, functionIds?: Array, _options?: Configuration): Promise { let _config = _options || this.configuration; - // verify required parameter 'functionIds' is not null or undefined - if (functionIds === null || functionIds === undefined) { - throw new RequiredError("FunctionsCoreApi", "getFunctionsMatchingStatus", "functionIds"); - } // Path Params @@ -1275,6 +1276,11 @@ export class FunctionsCoreApiRequestFactory extends BaseAPIRequestFactory { const requestContext = _config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") + // Query Params + if (matchId !== undefined) { + requestContext.setQueryParam("match_id", ObjectSerializer.serialize(matchId, "string", "")); + } + // Query Params if (functionIds !== undefined) { requestContext.setQueryParam("function_ids", ObjectSerializer.serialize(functionIds, "Array", "int64")); @@ -1301,6 +1307,57 @@ export class FunctionsCoreApiRequestFactory extends BaseAPIRequestFactory { return requestContext; } + /** + * Returns a single imported symbol plus the internal functions that call it, resolved via the import\'s PLT/stub addresses within the binary. Answers \"which functions call `free`?\" for binary navigation. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found + * Get an imported function with its callers + * @param analysisId Analysis ID + * @param importedFunctionId Imported function ID + */ + public async getImportedFunction(analysisId: number, importedFunctionId: number, _options?: Configuration): Promise { + let _config = _options || this.configuration; + + // verify required parameter 'analysisId' is not null or undefined + if (analysisId === null || analysisId === undefined) { + throw new RequiredError("FunctionsCoreApi", "getImportedFunction", "analysisId"); + } + + + // verify required parameter 'importedFunctionId' is not null or undefined + if (importedFunctionId === null || importedFunctionId === undefined) { + throw new RequiredError("FunctionsCoreApi", "getImportedFunction", "importedFunctionId"); + } + + + // Path Params + const localVarPath = '/v3/analyses/{analysis_id}/imported-functions/{imported_function_id}' + .replace('{' + 'analysis_id' + '}', encodeURIComponent(String(analysisId))) + .replace('{' + 'imported_function_id' + '}', encodeURIComponent(String(importedFunctionId))); + + // Make Request Context + const requestContext = _config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") + + + let authMethod: SecurityAuthentication | undefined; + // Apply auth methods + authMethod = _config.authMethods["APIKey"] + if (authMethod?.applySecurityAuthentication) { + await authMethod?.applySecurityAuthentication(requestContext); + } + // Apply auth methods + authMethod = _config.authMethods["bearerAuth"] + if (authMethod?.applySecurityAuthentication) { + await authMethod?.applySecurityAuthentication(requestContext); + } + + const defaultAuth: SecurityAuthentication | undefined = _config?.authMethods?.default + if (defaultAuth?.applySecurityAuthentication) { + await defaultAuth?.applySecurityAuthentication(requestContext); + } + + return requestContext; + } + /** * Returns a paginated list of functions belonging to the analysis. `total_count` is the full population size, ignoring pagination. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found * List functions in an analysis @@ -1358,6 +1415,63 @@ export class FunctionsCoreApiRequestFactory extends BaseAPIRequestFactory { return requestContext; } + /** + * Returns a paginated list of external/imported symbols (e.g. libc\'s `free`) linked by the analysis\'s binary. These are display-only: they carry no embeddings, cannot be renamed, and never participate in match/diff. `total_count` is the full population size, ignoring pagination. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found + * List imported functions in an analysis + * @param analysisId Analysis ID + * @param offset Pagination offset. Defaults to 0. + * @param limit Page size. Defaults to 100. + */ + public async listImportedFunctions(analysisId: number, offset?: number, limit?: number, _options?: Configuration): Promise { + let _config = _options || this.configuration; + + // verify required parameter 'analysisId' is not null or undefined + if (analysisId === null || analysisId === undefined) { + throw new RequiredError("FunctionsCoreApi", "listImportedFunctions", "analysisId"); + } + + + + + // Path Params + const localVarPath = '/v3/analyses/{analysis_id}/imported-functions' + .replace('{' + 'analysis_id' + '}', encodeURIComponent(String(analysisId))); + + // Make Request Context + const requestContext = _config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") + + // Query Params + if (offset !== undefined) { + requestContext.setQueryParam("offset", ObjectSerializer.serialize(offset, "number", "int64")); + } + + // Query Params + if (limit !== undefined) { + requestContext.setQueryParam("limit", ObjectSerializer.serialize(limit, "number", "int64")); + } + + + let authMethod: SecurityAuthentication | undefined; + // Apply auth methods + authMethod = _config.authMethods["APIKey"] + if (authMethod?.applySecurityAuthentication) { + await authMethod?.applySecurityAuthentication(requestContext); + } + // Apply auth methods + authMethod = _config.authMethods["bearerAuth"] + if (authMethod?.applySecurityAuthentication) { + await authMethod?.applySecurityAuthentication(requestContext); + } + + const defaultAuth: SecurityAuthentication | undefined = _config?.authMethods?.default + if (defaultAuth?.applySecurityAuthentication) { + await defaultAuth?.applySecurityAuthentication(requestContext); + } + + return requestContext; + } + /** * Dispatches the function-matching workflow against the provided function IDs. Returns immediately. Poll the status endpoint for progress; fetch results from the matches endpoint when status=COMPLETED. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Start function matching for an explicit set of functions @@ -2531,6 +2645,63 @@ export class FunctionsCoreApiResponseProcessor { throw new ApiException(response.httpStatusCode, "Unknown API Status Code!", await response.getBodyAsAny(), response.headers); } + /** + * Unwraps the actual response sent by the server from the response context and deserializes the response content + * to the expected objects + * + * @params response Response returned by the server for a request to getImportedFunction + * @throws ApiException if the response code was not in [200, 299] + */ + public async getImportedFunctionWithHttpInfo(response: ResponseContext): Promise> { + const contentType = ObjectSerializer.normalizeMediaType(response.headers["content-type"]); + if (isCodeInRange("200", response.httpStatusCode)) { + const body: ImportedFunctionDetailOutputBody = ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "ImportedFunctionDetailOutputBody", "" + ) as ImportedFunctionDetailOutputBody; + return new HttpInfo(response.httpStatusCode, response.headers, response.body, body); + } + if (isCodeInRange("403", response.httpStatusCode)) { + const body: APIError = ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "APIError", "" + ) as APIError; + throw new ApiException(response.httpStatusCode, "Forbidden", body, response.headers); + } + if (isCodeInRange("404", response.httpStatusCode)) { + const body: APIError = ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "APIError", "" + ) as APIError; + throw new ApiException(response.httpStatusCode, "Not Found", body, response.headers); + } + if (isCodeInRange("422", response.httpStatusCode)) { + const body: APIError = ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "APIError", "" + ) as APIError; + throw new ApiException(response.httpStatusCode, "Unprocessable Entity", body, response.headers); + } + if (isCodeInRange("500", response.httpStatusCode)) { + const body: APIError = ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "APIError", "" + ) as APIError; + throw new ApiException(response.httpStatusCode, "Internal Server Error", body, response.headers); + } + + // Work around for missing responses in specification, e.g. for petstore.yaml + if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { + const body: ImportedFunctionDetailOutputBody = ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "ImportedFunctionDetailOutputBody", "" + ) as ImportedFunctionDetailOutputBody; + return new HttpInfo(response.httpStatusCode, response.headers, response.body, body); + } + + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!", await response.getBodyAsAny(), response.headers); + } + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -2588,6 +2759,63 @@ export class FunctionsCoreApiResponseProcessor { throw new ApiException(response.httpStatusCode, "Unknown API Status Code!", await response.getBodyAsAny(), response.headers); } + /** + * Unwraps the actual response sent by the server from the response context and deserializes the response content + * to the expected objects + * + * @params response Response returned by the server for a request to listImportedFunctions + * @throws ApiException if the response code was not in [200, 299] + */ + public async listImportedFunctionsWithHttpInfo(response: ResponseContext): Promise> { + const contentType = ObjectSerializer.normalizeMediaType(response.headers["content-type"]); + if (isCodeInRange("200", response.httpStatusCode)) { + const body: ListImportedFunctionsOutputBody = ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "ListImportedFunctionsOutputBody", "" + ) as ListImportedFunctionsOutputBody; + return new HttpInfo(response.httpStatusCode, response.headers, response.body, body); + } + if (isCodeInRange("403", response.httpStatusCode)) { + const body: APIError = ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "APIError", "" + ) as APIError; + throw new ApiException(response.httpStatusCode, "Forbidden", body, response.headers); + } + if (isCodeInRange("404", response.httpStatusCode)) { + const body: APIError = ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "APIError", "" + ) as APIError; + throw new ApiException(response.httpStatusCode, "Not Found", body, response.headers); + } + if (isCodeInRange("422", response.httpStatusCode)) { + const body: APIError = ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "APIError", "" + ) as APIError; + throw new ApiException(response.httpStatusCode, "Unprocessable Entity", body, response.headers); + } + if (isCodeInRange("500", response.httpStatusCode)) { + const body: APIError = ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "APIError", "" + ) as APIError; + throw new ApiException(response.httpStatusCode, "Internal Server Error", body, response.headers); + } + + // Work around for missing responses in specification, e.g. for petstore.yaml + if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { + const body: ListImportedFunctionsOutputBody = ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "ListImportedFunctionsOutputBody", "" + ) as ListImportedFunctionsOutputBody; + return new HttpInfo(response.httpStatusCode, response.headers, response.body, body); + } + + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!", await response.getBodyAsAny(), response.headers); + } + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects diff --git a/docs/AnalysesCoreApi.md b/docs/AnalysesCoreApi.md index cce990b..63fc619 100644 --- a/docs/AnalysesCoreApi.md +++ b/docs/AnalysesCoreApi.md @@ -484,7 +484,7 @@ Name | Type | Description | Notes # **getAnalysisFunctionMatches** > GetMatchesOutputBody getAnalysisFunctionMatches() -Returns the matches blob when the matching workflow has completed. While the workflow is in progress this endpoint returns the current status with no matches; use /matches/status to poll progress. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied +Returns the matches blob when the matching workflow has completed. While the workflow is in progress this endpoint returns the current status with no matches; use /matches/status to poll progress. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request ### Example @@ -499,6 +499,8 @@ const apiInstance = new AnalysesCoreApi(configuration); const request: AnalysesCoreApiGetAnalysisFunctionMatchesRequest = { // Analysis ID analysisId: 1, + // Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. (optional) + matchId: "match_id_example", }; const data = await apiInstance.getAnalysisFunctionMatches(request); @@ -511,6 +513,7 @@ console.log('API called successfully. Returned data:', data); Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **analysisId** | [**number**] | Analysis ID | defaults to undefined + **matchId** | [**string**] | Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. | (optional) defaults to undefined ### Return type @@ -531,6 +534,7 @@ Name | Type | Description | Notes | Status code | Description | Response headers | |-------------|-------------|------------------| **200** | OK | - | +**400** | Bad Request | - | **403** | Forbidden | - | **404** | Not Found | - | **422** | Unprocessable Entity | - | @@ -541,7 +545,7 @@ Name | Type | Description | Notes # **getAnalysisFunctionMatchingStatus** > GetMatchesStatusOutputBody getAnalysisFunctionMatchingStatus() -Returns the matching workflow\'s current status. Does not include the matches blob — use GET /matches for that. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied +Returns the matching workflow\'s current status. Does not include the matches blob — use GET /matches for that. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request ### Example @@ -556,6 +560,8 @@ const apiInstance = new AnalysesCoreApi(configuration); const request: AnalysesCoreApiGetAnalysisFunctionMatchingStatusRequest = { // Analysis ID analysisId: 1, + // Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. (optional) + matchId: "match_id_example", }; const data = await apiInstance.getAnalysisFunctionMatchingStatus(request); @@ -568,6 +574,7 @@ console.log('API called successfully. Returned data:', data); Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **analysisId** | [**number**] | Analysis ID | defaults to undefined + **matchId** | [**string**] | Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. | (optional) defaults to undefined ### Return type @@ -588,6 +595,7 @@ Name | Type | Description | Notes | Status code | Description | Response headers | |-------------|-------------|------------------| **200** | OK | - | +**400** | Bad Request | - | **403** | Forbidden | - | **404** | Not Found | - | **422** | Unprocessable Entity | - | @@ -1226,7 +1234,9 @@ const request: AnalysesCoreApiStartAnalysisFunctionMatchingRequest = { // Analysis ID analysisId: 1, - startMatchingForAnalysisInputBody: , + startMatchingForAnalysisInputBody: + key: null, + , }; const data = await apiInstance.startAnalysisFunctionMatching(request); diff --git a/docs/FunctionsCoreApi.md b/docs/FunctionsCoreApi.md index 51cd2bf..30a4cbe 100644 --- a/docs/FunctionsCoreApi.md +++ b/docs/FunctionsCoreApi.md @@ -28,7 +28,9 @@ Method | HTTP request | Description [**getFunctionsCalleesCallers**](FunctionsCoreApi.md#getFunctionsCalleesCallers) | **GET** /v3/functions/callees-callers | Get callees and callers for many functions [**getFunctionsMatches**](FunctionsCoreApi.md#getFunctionsMatches) | **GET** /v3/functions/matches | Get function-matching results for an explicit set of functions [**getFunctionsMatchingStatus**](FunctionsCoreApi.md#getFunctionsMatchingStatus) | **GET** /v3/functions/matches/status | Get function-matching status for an explicit set of functions +[**getImportedFunction**](FunctionsCoreApi.md#getImportedFunction) | **GET** /v3/analyses/{analysis_id}/imported-functions/{imported_function_id} | Get an imported function with its callers [**listAnalysisFunctions**](FunctionsCoreApi.md#listAnalysisFunctions) | **GET** /v3/analyses/{analysis_id}/functions | List functions in an analysis +[**listImportedFunctions**](FunctionsCoreApi.md#listImportedFunctions) | **GET** /v3/analyses/{analysis_id}/imported-functions | List imported functions in an analysis [**startFunctionsMatching**](FunctionsCoreApi.md#startFunctionsMatching) | **POST** /v3/functions/matches | Start function matching for an explicit set of functions @@ -1359,7 +1361,9 @@ const configuration = createConfiguration(); const apiInstance = new FunctionsCoreApi(configuration); const request: FunctionsCoreApiGetFunctionsMatchesRequest = { - // Source function IDs whose matches to fetch. + // Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. (optional) + matchId: "match_id_example", + // Source function IDs whose matches to fetch. Required unless match_id is supplied. (optional) functionIds: [ 1, ], @@ -1374,7 +1378,8 @@ console.log('API called successfully. Returned data:', data); Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **functionIds** | **Array<number>** | Source function IDs whose matches to fetch. | defaults to undefined + **matchId** | [**string**] | Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. | (optional) defaults to undefined + **functionIds** | **Array<number>** | Source function IDs whose matches to fetch. Required unless match_id is supplied. | (optional) defaults to undefined ### Return type @@ -1419,7 +1424,9 @@ const configuration = createConfiguration(); const apiInstance = new FunctionsCoreApi(configuration); const request: FunctionsCoreApiGetFunctionsMatchingStatusRequest = { - // Source function IDs whose matches to fetch. + // Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. (optional) + matchId: "match_id_example", + // Source function IDs whose matches to fetch. Required unless match_id is supplied. (optional) functionIds: [ 1, ], @@ -1434,7 +1441,8 @@ console.log('API called successfully. Returned data:', data); Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **functionIds** | **Array<number>** | Source function IDs whose matches to fetch. | defaults to undefined + **matchId** | [**string**] | Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. | (optional) defaults to undefined + **functionIds** | **Array<number>** | Source function IDs whose matches to fetch. Required unless match_id is supplied. | (optional) defaults to undefined ### Return type @@ -1463,6 +1471,66 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) +# **getImportedFunction** +> ImportedFunctionDetailOutputBody getImportedFunction() + +Returns a single imported symbol plus the internal functions that call it, resolved via the import\'s PLT/stub addresses within the binary. Answers \"which functions call `free`?\" for binary navigation. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found + +### Example + + +```typescript +import { createConfiguration, FunctionsCoreApi } from '@revengai/sdk'; +import type { FunctionsCoreApiGetImportedFunctionRequest } from '@revengai/sdk'; + +const configuration = createConfiguration(); +const apiInstance = new FunctionsCoreApi(configuration); + +const request: FunctionsCoreApiGetImportedFunctionRequest = { + // Analysis ID + analysisId: 1, + // Imported function ID + importedFunctionId: 1, +}; + +const data = await apiInstance.getImportedFunction(request); +console.log('API called successfully. Returned data:', data); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **analysisId** | [**number**] | Analysis ID | defaults to undefined + **importedFunctionId** | [**number**] | Imported function ID | defaults to undefined + + +### Return type + +**ImportedFunctionDetailOutputBody** + +### Authorization + +[APIKey](README.md#APIKey), [bearerAuth](README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | OK | - | +**403** | Forbidden | - | +**404** | Not Found | - | +**422** | Unprocessable Entity | - | +**500** | Internal Server Error | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + # **listAnalysisFunctions** > ListAnalysisFunctionsOutputBody listAnalysisFunctions() @@ -1515,6 +1583,69 @@ Name | Type | Description | Notes - **Accept**: application/json +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | OK | - | +**403** | Forbidden | - | +**404** | Not Found | - | +**422** | Unprocessable Entity | - | +**500** | Internal Server Error | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **listImportedFunctions** +> ListImportedFunctionsOutputBody listImportedFunctions() + +Returns a paginated list of external/imported symbols (e.g. libc\'s `free`) linked by the analysis\'s binary. These are display-only: they carry no embeddings, cannot be renamed, and never participate in match/diff. `total_count` is the full population size, ignoring pagination. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found + +### Example + + +```typescript +import { createConfiguration, FunctionsCoreApi } from '@revengai/sdk'; +import type { FunctionsCoreApiListImportedFunctionsRequest } from '@revengai/sdk'; + +const configuration = createConfiguration(); +const apiInstance = new FunctionsCoreApi(configuration); + +const request: FunctionsCoreApiListImportedFunctionsRequest = { + // Analysis ID + analysisId: 1, + // Pagination offset. Defaults to 0. (optional) + offset: 0, + // Page size. Defaults to 100. (optional) + limit: 1, +}; + +const data = await apiInstance.listImportedFunctions(request); +console.log('API called successfully. Returned data:', data); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **analysisId** | [**number**] | Analysis ID | defaults to undefined + **offset** | [**number**] | Pagination offset. Defaults to 0. | (optional) defaults to undefined + **limit** | [**number**] | Page size. Defaults to 100. | (optional) defaults to undefined + + +### Return type + +**ListImportedFunctionsOutputBody** + +### Authorization + +[APIKey](README.md#APIKey), [bearerAuth](README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + ### HTTP response details | Status code | Description | Response headers | |-------------|-------------|------------------| diff --git a/models/ArchiveContentEntry.ts b/models/ArchiveContentEntry.ts new file mode 100644 index 0000000..c342408 --- /dev/null +++ b/models/ArchiveContentEntry.ts @@ -0,0 +1,58 @@ +/** + * RevEng.AI API + * RevEng.AI is an AI-powered binary analysis platform for reverse engineering and malware analysis. It provides similarity search across executable binaries and functions, AI-driven decompilation, dynamic execution analysis, firmware unpacking, and integration with external threat intelligence sources like VirusTotal. + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { HttpFile } from '../http/http'; + +export class ArchiveContentEntry { + /** + * Whether this entry is password-protected + */ + 'encrypted': boolean; + /** + * Path relative to the archive root + */ + 'path': string; + /** + * Uncompressed size in bytes + */ + 'size': number; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "encrypted", + "baseName": "encrypted", + "type": "boolean", + "format": "" + }, + { + "name": "path", + "baseName": "path", + "type": "string", + "format": "" + }, + { + "name": "size", + "baseName": "size", + "type": "number", + "format": "int64" + } ]; + + static getAttributeTypeMap() { + return ArchiveContentEntry.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/models/BatchBinaryMatchResult.ts b/models/BatchBinaryMatchResult.ts index ec2020d..911304c 100644 --- a/models/BatchBinaryMatchResult.ts +++ b/models/BatchBinaryMatchResult.ts @@ -21,6 +21,10 @@ export class BatchBinaryMatchResult { */ 'errorMessage'?: string; /** + * Opaque token for this binary\'s matching run. Present on dispatch and when statuses were fetched by token. + */ + 'matchId'?: string; + /** * Number of source functions that received at least one candidate match. Only meaningful when status=COMPLETED. */ 'matchedFunctionCount': number; @@ -46,6 +50,12 @@ export class BatchBinaryMatchResult { "type": "string", "format": "" }, + { + "name": "matchId", + "baseName": "match_id", + "type": "string", + "format": "" + }, { "name": "matchedFunctionCount", "baseName": "matched_function_count", diff --git a/models/ImportedFunctionCallerEntry.ts b/models/ImportedFunctionCallerEntry.ts new file mode 100644 index 0000000..fba5ef2 --- /dev/null +++ b/models/ImportedFunctionCallerEntry.ts @@ -0,0 +1,59 @@ +/** + * RevEng.AI API + * RevEng.AI is an AI-powered binary analysis platform for reverse engineering and malware analysis. It provides similarity search across executable binaries and functions, AI-driven decompilation, dynamic execution analysis, firmware unpacking, and integration with external threat intelligence sources like VirusTotal. + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { HttpFile } from '../http/http'; + +export class ImportedFunctionCallerEntry { + 'functionId': number; + 'functionName': string; + 'functionVaddr': number; + /** + * The PLT/stub address this caller targets. + */ + 'stubVaddr': number; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "functionId", + "baseName": "function_id", + "type": "number", + "format": "int64" + }, + { + "name": "functionName", + "baseName": "function_name", + "type": "string", + "format": "" + }, + { + "name": "functionVaddr", + "baseName": "function_vaddr", + "type": "number", + "format": "int64" + }, + { + "name": "stubVaddr", + "baseName": "stub_vaddr", + "type": "number", + "format": "int64" + } ]; + + static getAttributeTypeMap() { + return ImportedFunctionCallerEntry.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/models/ImportedFunctionDetailOutputBody.ts b/models/ImportedFunctionDetailOutputBody.ts new file mode 100644 index 0000000..435f773 --- /dev/null +++ b/models/ImportedFunctionDetailOutputBody.ts @@ -0,0 +1,113 @@ +/** + * RevEng.AI API + * RevEng.AI is an AI-powered binary analysis platform for reverse engineering and malware analysis. It provides similarity search across executable binaries and functions, AI-driven decompilation, dynamic execution analysis, firmware unpacking, and integration with external threat intelligence sources like VirusTotal. + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { ImportedFunctionCallerEntry } from '../models/ImportedFunctionCallerEntry'; +import { HttpFile } from '../http/http'; + +export class ImportedFunctionDetailOutputBody { + /** + * Internal functions that call this import, resolved via its PLT/stub addresses. + */ + 'callers': Array | null; + 'importedFunctionId': number; + /** + * False for imported data symbols. + */ + 'isFunction': boolean; + /** + * Library the symbol is imported from. \'\' for unattributed imports. + */ + 'libraryName': string; + /** + * Versioned symbol tag, when the loader records one. + */ + 'libraryVersion'?: string; + 'name': string; + /** + * Pre-demangling / pre-aliasing name, when it differs from name. + */ + 'originalName'?: string; + /** + * PLT/stub addresses that resolve external call edges (function_call_edges.callee_vaddr) to this import. Use these to link a caller\'s external callee to this import. + */ + 'stubVaddrs': Array | null; + /** + * Virtual address of the import, when known. + */ + 'vaddr'?: number; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "callers", + "baseName": "callers", + "type": "Array", + "format": "" + }, + { + "name": "importedFunctionId", + "baseName": "imported_function_id", + "type": "number", + "format": "int64" + }, + { + "name": "isFunction", + "baseName": "is_function", + "type": "boolean", + "format": "" + }, + { + "name": "libraryName", + "baseName": "library_name", + "type": "string", + "format": "" + }, + { + "name": "libraryVersion", + "baseName": "library_version", + "type": "string", + "format": "" + }, + { + "name": "name", + "baseName": "name", + "type": "string", + "format": "" + }, + { + "name": "originalName", + "baseName": "original_name", + "type": "string", + "format": "" + }, + { + "name": "stubVaddrs", + "baseName": "stub_vaddrs", + "type": "Array", + "format": "int64" + }, + { + "name": "vaddr", + "baseName": "vaddr", + "type": "number", + "format": "int64" + } ]; + + static getAttributeTypeMap() { + return ImportedFunctionDetailOutputBody.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/models/ImportedFunctionEntry.ts b/models/ImportedFunctionEntry.ts new file mode 100644 index 0000000..8b6ae24 --- /dev/null +++ b/models/ImportedFunctionEntry.ts @@ -0,0 +1,102 @@ +/** + * RevEng.AI API + * RevEng.AI is an AI-powered binary analysis platform for reverse engineering and malware analysis. It provides similarity search across executable binaries and functions, AI-driven decompilation, dynamic execution analysis, firmware unpacking, and integration with external threat intelligence sources like VirusTotal. + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { HttpFile } from '../http/http'; + +export class ImportedFunctionEntry { + 'importedFunctionId': number; + /** + * False for imported data symbols. + */ + 'isFunction': boolean; + /** + * Library the symbol is imported from. \'\' for unattributed imports. + */ + 'libraryName': string; + /** + * Versioned symbol tag, when the loader records one. + */ + 'libraryVersion'?: string; + 'name': string; + /** + * Pre-demangling / pre-aliasing name, when it differs from name. + */ + 'originalName'?: string; + /** + * PLT/stub addresses that resolve external call edges (function_call_edges.callee_vaddr) to this import. Use these to link a caller\'s external callee to this import. + */ + 'stubVaddrs': Array | null; + /** + * Virtual address of the import, when known. + */ + 'vaddr'?: number; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "importedFunctionId", + "baseName": "imported_function_id", + "type": "number", + "format": "int64" + }, + { + "name": "isFunction", + "baseName": "is_function", + "type": "boolean", + "format": "" + }, + { + "name": "libraryName", + "baseName": "library_name", + "type": "string", + "format": "" + }, + { + "name": "libraryVersion", + "baseName": "library_version", + "type": "string", + "format": "" + }, + { + "name": "name", + "baseName": "name", + "type": "string", + "format": "" + }, + { + "name": "originalName", + "baseName": "original_name", + "type": "string", + "format": "" + }, + { + "name": "stubVaddrs", + "baseName": "stub_vaddrs", + "type": "Array", + "format": "int64" + }, + { + "name": "vaddr", + "baseName": "vaddr", + "type": "number", + "format": "int64" + } ]; + + static getAttributeTypeMap() { + return ImportedFunctionEntry.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/models/ListArchiveContentsOutputBody.ts b/models/ListArchiveContentsOutputBody.ts new file mode 100644 index 0000000..04817d2 --- /dev/null +++ b/models/ListArchiveContentsOutputBody.ts @@ -0,0 +1,79 @@ +/** + * RevEng.AI API + * RevEng.AI is an AI-powered binary analysis platform for reverse engineering and malware analysis. It provides similarity search across executable binaries and functions, AI-driven decompilation, dynamic execution analysis, firmware unpacking, and integration with external threat intelligence sources like VirusTotal. + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { ArchiveContentEntry } from '../models/ArchiveContentEntry'; +import { HttpFile } from '../http/http'; + +export class ListArchiveContentsOutputBody { + /** + * Files inside the archive, with paths relative to the archive root + */ + 'entries': Array | null; + /** + * Whether a further page of entries follows this one. + */ + 'hasNext': boolean; + /** + * Page number of this response (1-indexed). + */ + 'page': number; + /** + * Number of entries per page. + */ + 'pageSize': number; + /** + * Total number of file entries in the archive, ignoring pagination. + */ + 'totalCount': number; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "entries", + "baseName": "entries", + "type": "Array", + "format": "" + }, + { + "name": "hasNext", + "baseName": "has_next", + "type": "boolean", + "format": "" + }, + { + "name": "page", + "baseName": "page", + "type": "number", + "format": "int64" + }, + { + "name": "pageSize", + "baseName": "page_size", + "type": "number", + "format": "int64" + }, + { + "name": "totalCount", + "baseName": "total_count", + "type": "number", + "format": "int64" + } ]; + + static getAttributeTypeMap() { + return ListArchiveContentsOutputBody.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/models/ListImportedFunctionsOutputBody.ts b/models/ListImportedFunctionsOutputBody.ts new file mode 100644 index 0000000..b19ac1c --- /dev/null +++ b/models/ListImportedFunctionsOutputBody.ts @@ -0,0 +1,46 @@ +/** + * RevEng.AI API + * RevEng.AI is an AI-powered binary analysis platform for reverse engineering and malware analysis. It provides similarity search across executable binaries and functions, AI-driven decompilation, dynamic execution analysis, firmware unpacking, and integration with external threat intelligence sources like VirusTotal. + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { ImportedFunctionEntry } from '../models/ImportedFunctionEntry'; +import { HttpFile } from '../http/http'; + +export class ListImportedFunctionsOutputBody { + 'importedFunctions': Array | null; + /** + * Total imported functions for the binary, ignoring pagination. + */ + 'totalCount': number; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: {[index: string]: string} | undefined = undefined; + + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "importedFunctions", + "baseName": "imported_functions", + "type": "Array", + "format": "" + }, + { + "name": "totalCount", + "baseName": "total_count", + "type": "number", + "format": "int64" + } ]; + + static getAttributeTypeMap() { + return ListImportedFunctionsOutputBody.attributeTypeMap; + } + + public constructor() { + } +} diff --git a/models/ObjectSerializer.ts b/models/ObjectSerializer.ts index d0842fa..bca0300 100644 --- a/models/ObjectSerializer.ts +++ b/models/ObjectSerializer.ts @@ -47,6 +47,7 @@ export * from '../models/AppApiRestV2CollectionsEnumsOrderBy'; export * from '../models/AppApiRestV2FunctionsResponsesFunction'; export * from '../models/AppApiRestV2FunctionsTypesFunction'; export * from '../models/AppApiRestV2InfoTypesCapability'; +export * from '../models/ArchiveContentEntry'; export * from '../models/Argument'; export * from '../models/Artifact'; export * from '../models/AttemptFailedEvent'; @@ -309,6 +310,9 @@ export * from '../models/IOC'; export * from '../models/ISA'; export * from '../models/IconModel'; export * from '../models/ImportModel'; +export * from '../models/ImportedFunctionCallerEntry'; +export * from '../models/ImportedFunctionDetailOutputBody'; +export * from '../models/ImportedFunctionEntry'; export * from '../models/InlineComment'; export * from '../models/InsertAnalysisLogRequest'; export * from '../models/InviteUserInputBody'; @@ -316,11 +320,13 @@ export * from '../models/IssuerAllowedDomain'; export * from '../models/ListAnalysisFunctionsDataTypesOutputBody'; export * from '../models/ListAnalysisFunctionsOutputBody'; export * from '../models/ListAnalysisStringsOutputBody'; +export * from '../models/ListArchiveContentsOutputBody'; export * from '../models/ListCollectionResults'; export * from '../models/ListCollectionsOutputBody'; export * from '../models/ListExampleAnalysesOutputBody'; export * from '../models/ListFunctionStringsOutputBody'; export * from '../models/ListFunctionsDataTypesOutputBody'; +export * from '../models/ListImportedFunctionsOutputBody'; export * from '../models/ListTeamsOutputBody'; export * from '../models/ListUsersOutputBody'; export * from '../models/LocationOutputBody'; @@ -548,6 +554,7 @@ import { AppApiRestV2CollectionsEnumsOrderBy } from '../models/AppApiRestV2Colle import { AppApiRestV2FunctionsResponsesFunction } from '../models/AppApiRestV2FunctionsResponsesFunction'; import { AppApiRestV2FunctionsTypesFunction } from '../models/AppApiRestV2FunctionsTypesFunction'; import { AppApiRestV2InfoTypesCapability } from '../models/AppApiRestV2InfoTypesCapability'; +import { ArchiveContentEntry } from '../models/ArchiveContentEntry'; import { Argument } from '../models/Argument'; import { Artifact , ArtifactReasonEnum } from '../models/Artifact'; import { AttemptFailedEvent } from '../models/AttemptFailedEvent'; @@ -621,7 +628,7 @@ import { BaseResponseUploadResponse } from '../models/BaseResponseUploadResponse import { BaseResponseVulnerabilities } from '../models/BaseResponseVulnerabilities'; import { BaseResponseXrefResponse } from '../models/BaseResponseXrefResponse'; import { Basic } from '../models/Basic'; -import { BatchBinaryMatchResult , BatchBinaryMatchResultStatusEnum } from '../models/BatchBinaryMatchResult'; +import { BatchBinaryMatchResult , BatchBinaryMatchResultStatusEnum } from '../models/BatchBinaryMatchResult'; import { BatchMatchingOutputBody , BatchMatchingOutputBodyStatusEnum } from '../models/BatchMatchingOutputBody'; import { BatchRenameInputBody } from '../models/BatchRenameInputBody'; import { BatchRenameItem } from '../models/BatchRenameItem'; @@ -810,6 +817,9 @@ import { IOC, IOCTypeEnum } from '../models/IOC'; import { ISA } from '../models/ISA'; import { IconModel } from '../models/IconModel'; import { ImportModel } from '../models/ImportModel'; +import { ImportedFunctionCallerEntry } from '../models/ImportedFunctionCallerEntry'; +import { ImportedFunctionDetailOutputBody } from '../models/ImportedFunctionDetailOutputBody'; +import { ImportedFunctionEntry } from '../models/ImportedFunctionEntry'; import { InlineComment } from '../models/InlineComment'; import { InsertAnalysisLogRequest } from '../models/InsertAnalysisLogRequest'; import { InviteUserInputBody } from '../models/InviteUserInputBody'; @@ -817,11 +827,13 @@ import { IssuerAllowedDomain } from '../models/IssuerAllowedDomain'; import { ListAnalysisFunctionsDataTypesOutputBody } from '../models/ListAnalysisFunctionsDataTypesOutputBody'; import { ListAnalysisFunctionsOutputBody } from '../models/ListAnalysisFunctionsOutputBody'; import { ListAnalysisStringsOutputBody } from '../models/ListAnalysisStringsOutputBody'; +import { ListArchiveContentsOutputBody } from '../models/ListArchiveContentsOutputBody'; import { ListCollectionResults } from '../models/ListCollectionResults'; import { ListCollectionsOutputBody } from '../models/ListCollectionsOutputBody'; import { ListExampleAnalysesOutputBody } from '../models/ListExampleAnalysesOutputBody'; import { ListFunctionStringsOutputBody } from '../models/ListFunctionStringsOutputBody'; import { ListFunctionsDataTypesOutputBody } from '../models/ListFunctionsDataTypesOutputBody'; +import { ListImportedFunctionsOutputBody } from '../models/ListImportedFunctionsOutputBody'; import { ListTeamsOutputBody } from '../models/ListTeamsOutputBody'; import { ListUsersOutputBody } from '../models/ListUsersOutputBody'; import { LocationOutputBody , LocationOutputBodyCurrencyEnum } from '../models/LocationOutputBody'; @@ -930,7 +942,7 @@ import { StackVariable } from '../models/StackVariable'; import { StartBatchMatchingInputBody } from '../models/StartBatchMatchingInputBody'; import { StartMatchingForAnalysisInputBody } from '../models/StartMatchingForAnalysisInputBody'; import { StartMatchingForFunctionsInputBody } from '../models/StartMatchingForFunctionsInputBody'; -import { StartMatchingOutputBody , StartMatchingOutputBodyStatusEnum } from '../models/StartMatchingOutputBody'; +import { StartMatchingOutputBody , StartMatchingOutputBodyStatusEnum } from '../models/StartMatchingOutputBody'; import { StartupInfo } from '../models/StartupInfo'; import { StatusInput } from '../models/StatusInput'; import { StatusOutput } from '../models/StatusOutput'; @@ -961,7 +973,7 @@ import { TokenResponse } from '../models/TokenResponse'; import { TokenisedData , TokenisedDataStatusEnum } from '../models/TokenisedData'; import { TriageFunctionResponse , TriageFunctionResponseCapabilitiesEnum } from '../models/TriageFunctionResponse'; import { TriageReportResponse } from '../models/TriageReportResponse'; -import { TriggerDynamicExecutionInputBody , TriggerDynamicExecutionInputBodyStartMethodEnum , TriggerDynamicExecutionInputBodyTimeoutEnum } from '../models/TriggerDynamicExecutionInputBody'; +import { TriggerDynamicExecutionInputBody , TriggerDynamicExecutionInputBodyStartMethodEnum , TriggerDynamicExecutionInputBodyTimeoutEnum } from '../models/TriggerDynamicExecutionInputBody'; import { Ttp } from '../models/Ttp'; import { TypeDefinition } from '../models/TypeDefinition'; import { UpdateDataTypesInputBody } from '../models/UpdateDataTypesInputBody'; @@ -1151,6 +1163,7 @@ let typeMap: {[index: string]: any} = { "AppApiRestV2FunctionsResponsesFunction": AppApiRestV2FunctionsResponsesFunction, "AppApiRestV2FunctionsTypesFunction": AppApiRestV2FunctionsTypesFunction, "AppApiRestV2InfoTypesCapability": AppApiRestV2InfoTypesCapability, + "ArchiveContentEntry": ArchiveContentEntry, "Argument": Argument, "Artifact": Artifact, "AttemptFailedEvent": AttemptFailedEvent, @@ -1405,6 +1418,9 @@ let typeMap: {[index: string]: any} = { "IOC": IOC, "IconModel": IconModel, "ImportModel": ImportModel, + "ImportedFunctionCallerEntry": ImportedFunctionCallerEntry, + "ImportedFunctionDetailOutputBody": ImportedFunctionDetailOutputBody, + "ImportedFunctionEntry": ImportedFunctionEntry, "InlineComment": InlineComment, "InsertAnalysisLogRequest": InsertAnalysisLogRequest, "InviteUserInputBody": InviteUserInputBody, @@ -1412,11 +1428,13 @@ let typeMap: {[index: string]: any} = { "ListAnalysisFunctionsDataTypesOutputBody": ListAnalysisFunctionsDataTypesOutputBody, "ListAnalysisFunctionsOutputBody": ListAnalysisFunctionsOutputBody, "ListAnalysisStringsOutputBody": ListAnalysisStringsOutputBody, + "ListArchiveContentsOutputBody": ListArchiveContentsOutputBody, "ListCollectionResults": ListCollectionResults, "ListCollectionsOutputBody": ListCollectionsOutputBody, "ListExampleAnalysesOutputBody": ListExampleAnalysesOutputBody, "ListFunctionStringsOutputBody": ListFunctionStringsOutputBody, "ListFunctionsDataTypesOutputBody": ListFunctionsDataTypesOutputBody, + "ListImportedFunctionsOutputBody": ListImportedFunctionsOutputBody, "ListTeamsOutputBody": ListTeamsOutputBody, "ListUsersOutputBody": ListUsersOutputBody, "LocationOutputBody": LocationOutputBody, diff --git a/models/StartMatchingForAnalysisInputBody.ts b/models/StartMatchingForAnalysisInputBody.ts index ba2ae63..976dc90 100644 --- a/models/StartMatchingForAnalysisInputBody.ts +++ b/models/StartMatchingForAnalysisInputBody.ts @@ -22,6 +22,10 @@ export class StartMatchingForAnalysisInputBody { */ 'minSimilarity'?: number; /** + * By default a completed matching run for the same request is reused (response status=COMPLETED, no new run). Set true to force a fresh run. + */ + 'noCache'?: boolean; + /** * Max matches returned per source function. Defaults to 1. */ 'resultsPerFunction'?: number; @@ -43,6 +47,12 @@ export class StartMatchingForAnalysisInputBody { "type": "number", "format": "double" }, + { + "name": "noCache", + "baseName": "no_cache", + "type": "boolean", + "format": "" + }, { "name": "resultsPerFunction", "baseName": "results_per_function", diff --git a/models/StartMatchingForFunctionsInputBody.ts b/models/StartMatchingForFunctionsInputBody.ts index 7301dcc..e15e198 100644 --- a/models/StartMatchingForFunctionsInputBody.ts +++ b/models/StartMatchingForFunctionsInputBody.ts @@ -26,6 +26,10 @@ export class StartMatchingForFunctionsInputBody { */ 'minSimilarity'?: number; /** + * By default a completed matching run for the same request is reused (response status=COMPLETED, no new run). Set true to force a fresh run. + */ + 'noCache'?: boolean; + /** * Max matches returned per source function. Defaults to 1. */ 'resultsPerFunction'?: number; @@ -57,6 +61,12 @@ export class StartMatchingForFunctionsInputBody { "type": "number", "format": "double" }, + { + "name": "noCache", + "baseName": "no_cache", + "type": "boolean", + "format": "" + }, { "name": "resultsPerFunction", "baseName": "results_per_function", diff --git a/models/StartMatchingOutputBody.ts b/models/StartMatchingOutputBody.ts index 277c2e6..f773d26 100644 --- a/models/StartMatchingOutputBody.ts +++ b/models/StartMatchingOutputBody.ts @@ -13,6 +13,10 @@ import { ProgressMessage } from '../models/ProgressMessage'; import { HttpFile } from '../http/http'; export class StartMatchingOutputBody { + /** + * Opaque token for this matching run. Pass it to the GET/status endpoints\' match_id query parameter to fetch this exact run. + */ + 'matchId': string; /** * Log messages emitted during execution */ @@ -39,6 +43,12 @@ export class StartMatchingOutputBody { static readonly mapping: {[index: string]: string} | undefined = undefined; static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "matchId", + "baseName": "match_id", + "type": "string", + "format": "" + }, { "name": "messages", "baseName": "messages", diff --git a/models/TriggerDynamicExecutionInputBody.ts b/models/TriggerDynamicExecutionInputBody.ts index b090835..3e192e3 100644 --- a/models/TriggerDynamicExecutionInputBody.ts +++ b/models/TriggerDynamicExecutionInputBody.ts @@ -12,6 +12,18 @@ import { HttpFile } from '../http/http'; export class TriggerDynamicExecutionInputBody { + /** + * Relative path of the entry inside the archive to execute + */ + 'archiveEntryPath'?: string; + /** + * Password for an encrypted archive + */ + 'archivePassword'?: string; + /** + * SHA-256 of the archive object to send to the sandbox instead of the analysed binary + */ + 'archiveSha256Hash'?: string; /** * Command-line arguments passed to the sample when the sandbox launches it */ @@ -30,6 +42,24 @@ export class TriggerDynamicExecutionInputBody { static readonly mapping: {[index: string]: string} | undefined = undefined; static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ + { + "name": "archiveEntryPath", + "baseName": "archive_entry_path", + "type": "string", + "format": "" + }, + { + "name": "archivePassword", + "baseName": "archive_password", + "type": "string", + "format": "" + }, + { + "name": "archiveSha256Hash", + "baseName": "archive_sha_256_hash", + "type": "string", + "format": "" + }, { "name": "commandLineArgs", "baseName": "command_line_args", diff --git a/models/all.ts b/models/all.ts index 946dffd..f94f95d 100644 --- a/models/all.ts +++ b/models/all.ts @@ -47,6 +47,7 @@ export * from '../models/AppApiRestV2CollectionsEnumsOrderBy' export * from '../models/AppApiRestV2FunctionsResponsesFunction' export * from '../models/AppApiRestV2FunctionsTypesFunction' export * from '../models/AppApiRestV2InfoTypesCapability' +export * from '../models/ArchiveContentEntry' export * from '../models/Argument' export * from '../models/Artifact' export * from '../models/AttemptFailedEvent' @@ -309,6 +310,9 @@ export * from '../models/IOC' export * from '../models/ISA' export * from '../models/IconModel' export * from '../models/ImportModel' +export * from '../models/ImportedFunctionCallerEntry' +export * from '../models/ImportedFunctionDetailOutputBody' +export * from '../models/ImportedFunctionEntry' export * from '../models/InlineComment' export * from '../models/InsertAnalysisLogRequest' export * from '../models/InviteUserInputBody' @@ -316,11 +320,13 @@ export * from '../models/IssuerAllowedDomain' export * from '../models/ListAnalysisFunctionsDataTypesOutputBody' export * from '../models/ListAnalysisFunctionsOutputBody' export * from '../models/ListAnalysisStringsOutputBody' +export * from '../models/ListArchiveContentsOutputBody' export * from '../models/ListCollectionResults' export * from '../models/ListCollectionsOutputBody' export * from '../models/ListExampleAnalysesOutputBody' export * from '../models/ListFunctionStringsOutputBody' export * from '../models/ListFunctionsDataTypesOutputBody' +export * from '../models/ListImportedFunctionsOutputBody' export * from '../models/ListTeamsOutputBody' export * from '../models/ListUsersOutputBody' export * from '../models/LocationOutputBody' diff --git a/package.json b/package.json index aea632d..8d81ee7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@revengai/sdk", - "version": "v3.107.0", + "version": "v3.110.0", "description": "TypeScript SDK for the RevEng.AI API", "author": "RevEng.AI", "repository": { diff --git a/types/ObjectParamAPI.ts b/types/ObjectParamAPI.ts index ce51168..ad79d33 100644 --- a/types/ObjectParamAPI.ts +++ b/types/ObjectParamAPI.ts @@ -51,6 +51,7 @@ import { AppApiRestV2CollectionsEnumsOrderBy } from '../models/AppApiRestV2Colle import { AppApiRestV2FunctionsResponsesFunction } from '../models/AppApiRestV2FunctionsResponsesFunction'; import { AppApiRestV2FunctionsTypesFunction } from '../models/AppApiRestV2FunctionsTypesFunction'; import { AppApiRestV2InfoTypesCapability } from '../models/AppApiRestV2InfoTypesCapability'; +import { ArchiveContentEntry } from '../models/ArchiveContentEntry'; import { Argument } from '../models/Argument'; import { Artifact } from '../models/Artifact'; import { AttemptFailedEvent } from '../models/AttemptFailedEvent'; @@ -313,6 +314,9 @@ import { IOC } from '../models/IOC'; import { ISA } from '../models/ISA'; import { IconModel } from '../models/IconModel'; import { ImportModel } from '../models/ImportModel'; +import { ImportedFunctionCallerEntry } from '../models/ImportedFunctionCallerEntry'; +import { ImportedFunctionDetailOutputBody } from '../models/ImportedFunctionDetailOutputBody'; +import { ImportedFunctionEntry } from '../models/ImportedFunctionEntry'; import { InlineComment } from '../models/InlineComment'; import { InsertAnalysisLogRequest } from '../models/InsertAnalysisLogRequest'; import { InviteUserInputBody } from '../models/InviteUserInputBody'; @@ -320,11 +324,13 @@ import { IssuerAllowedDomain } from '../models/IssuerAllowedDomain'; import { ListAnalysisFunctionsDataTypesOutputBody } from '../models/ListAnalysisFunctionsDataTypesOutputBody'; import { ListAnalysisFunctionsOutputBody } from '../models/ListAnalysisFunctionsOutputBody'; import { ListAnalysisStringsOutputBody } from '../models/ListAnalysisStringsOutputBody'; +import { ListArchiveContentsOutputBody } from '../models/ListArchiveContentsOutputBody'; import { ListCollectionResults } from '../models/ListCollectionResults'; import { ListCollectionsOutputBody } from '../models/ListCollectionsOutputBody'; import { ListExampleAnalysesOutputBody } from '../models/ListExampleAnalysesOutputBody'; import { ListFunctionStringsOutputBody } from '../models/ListFunctionStringsOutputBody'; import { ListFunctionsDataTypesOutputBody } from '../models/ListFunctionsDataTypesOutputBody'; +import { ListImportedFunctionsOutputBody } from '../models/ListImportedFunctionsOutputBody'; import { ListTeamsOutputBody } from '../models/ListTeamsOutputBody'; import { ListUsersOutputBody } from '../models/ListUsersOutputBody'; import { LocationOutputBody } from '../models/LocationOutputBody'; @@ -1075,6 +1081,13 @@ export interface AnalysesCoreApiGetAnalysisFunctionMatchesRequest { * @memberof AnalysesCoreApigetAnalysisFunctionMatches */ analysisId: number + /** + * Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. + * Defaults to: undefined + * @type string + * @memberof AnalysesCoreApigetAnalysisFunctionMatches + */ + matchId?: string } export interface AnalysesCoreApiGetAnalysisFunctionMatchingStatusRequest { @@ -1086,6 +1099,13 @@ export interface AnalysesCoreApiGetAnalysisFunctionMatchingStatusRequest { * @memberof AnalysesCoreApigetAnalysisFunctionMatchingStatus */ analysisId: number + /** + * Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. + * Defaults to: undefined + * @type string + * @memberof AnalysesCoreApigetAnalysisFunctionMatchingStatus + */ + matchId?: string } export interface AnalysesCoreApiGetAnalysisLogsRequest { @@ -1571,39 +1591,39 @@ export class ObjectAnalysesCoreApi { } /** - * Returns the matches blob when the matching workflow has completed. While the workflow is in progress this endpoint returns the current status with no matches; use /matches/status to poll progress. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied + * Returns the matches blob when the matching workflow has completed. While the workflow is in progress this endpoint returns the current status with no matches; use /matches/status to poll progress. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Get function-matching results for an analysis * @param param the request object */ public getAnalysisFunctionMatchesWithHttpInfo(param: AnalysesCoreApiGetAnalysisFunctionMatchesRequest, options?: ConfigurationOptions): Promise> { - return this.api.getAnalysisFunctionMatchesWithHttpInfo(param.analysisId, options).toPromise(); + return this.api.getAnalysisFunctionMatchesWithHttpInfo(param.analysisId, param.matchId, options).toPromise(); } /** - * Returns the matches blob when the matching workflow has completed. While the workflow is in progress this endpoint returns the current status with no matches; use /matches/status to poll progress. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied + * Returns the matches blob when the matching workflow has completed. While the workflow is in progress this endpoint returns the current status with no matches; use /matches/status to poll progress. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Get function-matching results for an analysis * @param param the request object */ public getAnalysisFunctionMatches(param: AnalysesCoreApiGetAnalysisFunctionMatchesRequest, options?: ConfigurationOptions): Promise { - return this.api.getAnalysisFunctionMatches(param.analysisId, options).toPromise(); + return this.api.getAnalysisFunctionMatches(param.analysisId, param.matchId, options).toPromise(); } /** - * Returns the matching workflow\'s current status. Does not include the matches blob — use GET /matches for that. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied + * Returns the matching workflow\'s current status. Does not include the matches blob — use GET /matches for that. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Get function-matching status for an analysis * @param param the request object */ public getAnalysisFunctionMatchingStatusWithHttpInfo(param: AnalysesCoreApiGetAnalysisFunctionMatchingStatusRequest, options?: ConfigurationOptions): Promise> { - return this.api.getAnalysisFunctionMatchingStatusWithHttpInfo(param.analysisId, options).toPromise(); + return this.api.getAnalysisFunctionMatchingStatusWithHttpInfo(param.analysisId, param.matchId, options).toPromise(); } /** - * Returns the matching workflow\'s current status. Does not include the matches blob — use GET /matches for that. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied + * Returns the matching workflow\'s current status. Does not include the matches blob — use GET /matches for that. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Get function-matching status for an analysis * @param param the request object */ public getAnalysisFunctionMatchingStatus(param: AnalysesCoreApiGetAnalysisFunctionMatchingStatusRequest, options?: ConfigurationOptions): Promise { - return this.api.getAnalysisFunctionMatchingStatus(param.analysisId, options).toPromise(); + return this.api.getAnalysisFunctionMatchingStatus(param.analysisId, param.matchId, options).toPromise(); } /** @@ -4434,22 +4454,55 @@ export interface FunctionsCoreApiGetFunctionsCalleesCallersRequest { export interface FunctionsCoreApiGetFunctionsMatchesRequest { /** - * Source function IDs whose matches to fetch. + * Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. + * Defaults to: undefined + * @type string + * @memberof FunctionsCoreApigetFunctionsMatches + */ + matchId?: string + /** + * Source function IDs whose matches to fetch. Required unless match_id is supplied. * Defaults to: undefined * @type Array<number> * @memberof FunctionsCoreApigetFunctionsMatches */ - functionIds: Array + functionIds?: Array } export interface FunctionsCoreApiGetFunctionsMatchingStatusRequest { /** - * Source function IDs whose matches to fetch. + * Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. + * Defaults to: undefined + * @type string + * @memberof FunctionsCoreApigetFunctionsMatchingStatus + */ + matchId?: string + /** + * Source function IDs whose matches to fetch. Required unless match_id is supplied. * Defaults to: undefined * @type Array<number> * @memberof FunctionsCoreApigetFunctionsMatchingStatus */ - functionIds: Array + functionIds?: Array +} + +export interface FunctionsCoreApiGetImportedFunctionRequest { + /** + * Analysis ID + * Minimum: 1 + * Defaults to: undefined + * @type number + * @memberof FunctionsCoreApigetImportedFunction + */ + analysisId: number + /** + * Imported function ID + * Minimum: 1 + * Defaults to: undefined + * @type number + * @memberof FunctionsCoreApigetImportedFunction + */ + importedFunctionId: number } export interface FunctionsCoreApiListAnalysisFunctionsRequest { @@ -4480,6 +4533,34 @@ export interface FunctionsCoreApiListAnalysisFunctionsRequest { limit?: number } +export interface FunctionsCoreApiListImportedFunctionsRequest { + /** + * Analysis ID + * Minimum: 1 + * Defaults to: undefined + * @type number + * @memberof FunctionsCoreApilistImportedFunctions + */ + analysisId: number + /** + * Pagination offset. Defaults to 0. + * Minimum: 0 + * Defaults to: undefined + * @type number + * @memberof FunctionsCoreApilistImportedFunctions + */ + offset?: number + /** + * Page size. Defaults to 100. + * Minimum: 1 + * Maximum: 500 + * Defaults to: undefined + * @type number + * @memberof FunctionsCoreApilistImportedFunctions + */ + limit?: number +} + export interface FunctionsCoreApiStartFunctionsMatchingRequest { /** * @@ -4889,8 +4970,8 @@ export class ObjectFunctionsCoreApi { * Get function-matching results for an explicit set of functions * @param param the request object */ - public getFunctionsMatchesWithHttpInfo(param: FunctionsCoreApiGetFunctionsMatchesRequest, options?: ConfigurationOptions): Promise> { - return this.api.getFunctionsMatchesWithHttpInfo(param.functionIds, options).toPromise(); + public getFunctionsMatchesWithHttpInfo(param: FunctionsCoreApiGetFunctionsMatchesRequest = {}, options?: ConfigurationOptions): Promise> { + return this.api.getFunctionsMatchesWithHttpInfo(param.matchId, param.functionIds, options).toPromise(); } /** @@ -4898,8 +4979,8 @@ export class ObjectFunctionsCoreApi { * Get function-matching results for an explicit set of functions * @param param the request object */ - public getFunctionsMatches(param: FunctionsCoreApiGetFunctionsMatchesRequest, options?: ConfigurationOptions): Promise { - return this.api.getFunctionsMatches(param.functionIds, options).toPromise(); + public getFunctionsMatches(param: FunctionsCoreApiGetFunctionsMatchesRequest = {}, options?: ConfigurationOptions): Promise { + return this.api.getFunctionsMatches(param.matchId, param.functionIds, options).toPromise(); } /** @@ -4907,8 +4988,8 @@ export class ObjectFunctionsCoreApi { * Get function-matching status for an explicit set of functions * @param param the request object */ - public getFunctionsMatchingStatusWithHttpInfo(param: FunctionsCoreApiGetFunctionsMatchingStatusRequest, options?: ConfigurationOptions): Promise> { - return this.api.getFunctionsMatchingStatusWithHttpInfo(param.functionIds, options).toPromise(); + public getFunctionsMatchingStatusWithHttpInfo(param: FunctionsCoreApiGetFunctionsMatchingStatusRequest = {}, options?: ConfigurationOptions): Promise> { + return this.api.getFunctionsMatchingStatusWithHttpInfo(param.matchId, param.functionIds, options).toPromise(); } /** @@ -4916,8 +4997,26 @@ export class ObjectFunctionsCoreApi { * Get function-matching status for an explicit set of functions * @param param the request object */ - public getFunctionsMatchingStatus(param: FunctionsCoreApiGetFunctionsMatchingStatusRequest, options?: ConfigurationOptions): Promise { - return this.api.getFunctionsMatchingStatus(param.functionIds, options).toPromise(); + public getFunctionsMatchingStatus(param: FunctionsCoreApiGetFunctionsMatchingStatusRequest = {}, options?: ConfigurationOptions): Promise { + return this.api.getFunctionsMatchingStatus(param.matchId, param.functionIds, options).toPromise(); + } + + /** + * Returns a single imported symbol plus the internal functions that call it, resolved via the import\'s PLT/stub addresses within the binary. Answers \"which functions call `free`?\" for binary navigation. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found + * Get an imported function with its callers + * @param param the request object + */ + public getImportedFunctionWithHttpInfo(param: FunctionsCoreApiGetImportedFunctionRequest, options?: ConfigurationOptions): Promise> { + return this.api.getImportedFunctionWithHttpInfo(param.analysisId, param.importedFunctionId, options).toPromise(); + } + + /** + * Returns a single imported symbol plus the internal functions that call it, resolved via the import\'s PLT/stub addresses within the binary. Answers \"which functions call `free`?\" for binary navigation. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found + * Get an imported function with its callers + * @param param the request object + */ + public getImportedFunction(param: FunctionsCoreApiGetImportedFunctionRequest, options?: ConfigurationOptions): Promise { + return this.api.getImportedFunction(param.analysisId, param.importedFunctionId, options).toPromise(); } /** @@ -4938,6 +5037,24 @@ export class ObjectFunctionsCoreApi { return this.api.listAnalysisFunctions(param.analysisId, param.offset, param.limit, options).toPromise(); } + /** + * Returns a paginated list of external/imported symbols (e.g. libc\'s `free`) linked by the analysis\'s binary. These are display-only: they carry no embeddings, cannot be renamed, and never participate in match/diff. `total_count` is the full population size, ignoring pagination. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found + * List imported functions in an analysis + * @param param the request object + */ + public listImportedFunctionsWithHttpInfo(param: FunctionsCoreApiListImportedFunctionsRequest, options?: ConfigurationOptions): Promise> { + return this.api.listImportedFunctionsWithHttpInfo(param.analysisId, param.offset, param.limit, options).toPromise(); + } + + /** + * Returns a paginated list of external/imported symbols (e.g. libc\'s `free`) linked by the analysis\'s binary. These are display-only: they carry no embeddings, cannot be renamed, and never participate in match/diff. `total_count` is the full population size, ignoring pagination. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found + * List imported functions in an analysis + * @param param the request object + */ + public listImportedFunctions(param: FunctionsCoreApiListImportedFunctionsRequest, options?: ConfigurationOptions): Promise { + return this.api.listImportedFunctions(param.analysisId, param.offset, param.limit, options).toPromise(); + } + /** * Dispatches the function-matching workflow against the provided function IDs. Returns immediately. Poll the status endpoint for progress; fetch results from the matches endpoint when status=COMPLETED. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Start function matching for an explicit set of functions diff --git a/types/ObservableAPI.ts b/types/ObservableAPI.ts index 9904fa6..1a39baa 100644 --- a/types/ObservableAPI.ts +++ b/types/ObservableAPI.ts @@ -52,6 +52,7 @@ import { AppApiRestV2CollectionsEnumsOrderBy } from '../models/AppApiRestV2Colle import { AppApiRestV2FunctionsResponsesFunction } from '../models/AppApiRestV2FunctionsResponsesFunction'; import { AppApiRestV2FunctionsTypesFunction } from '../models/AppApiRestV2FunctionsTypesFunction'; import { AppApiRestV2InfoTypesCapability } from '../models/AppApiRestV2InfoTypesCapability'; +import { ArchiveContentEntry } from '../models/ArchiveContentEntry'; import { Argument } from '../models/Argument'; import { Artifact } from '../models/Artifact'; import { AttemptFailedEvent } from '../models/AttemptFailedEvent'; @@ -314,6 +315,9 @@ import { IOC } from '../models/IOC'; import { ISA } from '../models/ISA'; import { IconModel } from '../models/IconModel'; import { ImportModel } from '../models/ImportModel'; +import { ImportedFunctionCallerEntry } from '../models/ImportedFunctionCallerEntry'; +import { ImportedFunctionDetailOutputBody } from '../models/ImportedFunctionDetailOutputBody'; +import { ImportedFunctionEntry } from '../models/ImportedFunctionEntry'; import { InlineComment } from '../models/InlineComment'; import { InsertAnalysisLogRequest } from '../models/InsertAnalysisLogRequest'; import { InviteUserInputBody } from '../models/InviteUserInputBody'; @@ -321,11 +325,13 @@ import { IssuerAllowedDomain } from '../models/IssuerAllowedDomain'; import { ListAnalysisFunctionsDataTypesOutputBody } from '../models/ListAnalysisFunctionsDataTypesOutputBody'; import { ListAnalysisFunctionsOutputBody } from '../models/ListAnalysisFunctionsOutputBody'; import { ListAnalysisStringsOutputBody } from '../models/ListAnalysisStringsOutputBody'; +import { ListArchiveContentsOutputBody } from '../models/ListArchiveContentsOutputBody'; import { ListCollectionResults } from '../models/ListCollectionResults'; import { ListCollectionsOutputBody } from '../models/ListCollectionsOutputBody'; import { ListExampleAnalysesOutputBody } from '../models/ListExampleAnalysesOutputBody'; import { ListFunctionStringsOutputBody } from '../models/ListFunctionStringsOutputBody'; import { ListFunctionsDataTypesOutputBody } from '../models/ListFunctionsDataTypesOutputBody'; +import { ListImportedFunctionsOutputBody } from '../models/ListImportedFunctionsOutputBody'; import { ListTeamsOutputBody } from '../models/ListTeamsOutputBody'; import { ListUsersOutputBody } from '../models/ListUsersOutputBody'; import { LocationOutputBody } from '../models/LocationOutputBody'; @@ -1321,14 +1327,15 @@ export class ObservableAnalysesCoreApi { } /** - * Returns the matches blob when the matching workflow has completed. While the workflow is in progress this endpoint returns the current status with no matches; use /matches/status to poll progress. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied + * Returns the matches blob when the matching workflow has completed. While the workflow is in progress this endpoint returns the current status with no matches; use /matches/status to poll progress. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Get function-matching results for an analysis * @param analysisId Analysis ID + * @param [matchId] Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. */ - public getAnalysisFunctionMatchesWithHttpInfo(analysisId: number, _options?: ConfigurationOptions): Observable> { + public getAnalysisFunctionMatchesWithHttpInfo(analysisId: number, matchId?: string, _options?: ConfigurationOptions): Observable> { const _config = mergeConfiguration(this.configuration, _options); - const requestContextPromise = this.requestFactory.getAnalysisFunctionMatches(analysisId, _config); + const requestContextPromise = this.requestFactory.getAnalysisFunctionMatches(analysisId, matchId, _config); // build promise chain let middlewarePreObservable = from(requestContextPromise); for (const middleware of _config.middleware) { @@ -1346,23 +1353,25 @@ export class ObservableAnalysesCoreApi { } /** - * Returns the matches blob when the matching workflow has completed. While the workflow is in progress this endpoint returns the current status with no matches; use /matches/status to poll progress. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied + * Returns the matches blob when the matching workflow has completed. While the workflow is in progress this endpoint returns the current status with no matches; use /matches/status to poll progress. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Get function-matching results for an analysis * @param analysisId Analysis ID + * @param [matchId] Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. */ - public getAnalysisFunctionMatches(analysisId: number, _options?: ConfigurationOptions): Observable { - return this.getAnalysisFunctionMatchesWithHttpInfo(analysisId, _options).pipe(map((apiResponse: HttpInfo) => apiResponse.data)); + public getAnalysisFunctionMatches(analysisId: number, matchId?: string, _options?: ConfigurationOptions): Observable { + return this.getAnalysisFunctionMatchesWithHttpInfo(analysisId, matchId, _options).pipe(map((apiResponse: HttpInfo) => apiResponse.data)); } /** - * Returns the matching workflow\'s current status. Does not include the matches blob — use GET /matches for that. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied + * Returns the matching workflow\'s current status. Does not include the matches blob — use GET /matches for that. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Get function-matching status for an analysis * @param analysisId Analysis ID + * @param [matchId] Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. */ - public getAnalysisFunctionMatchingStatusWithHttpInfo(analysisId: number, _options?: ConfigurationOptions): Observable> { + public getAnalysisFunctionMatchingStatusWithHttpInfo(analysisId: number, matchId?: string, _options?: ConfigurationOptions): Observable> { const _config = mergeConfiguration(this.configuration, _options); - const requestContextPromise = this.requestFactory.getAnalysisFunctionMatchingStatus(analysisId, _config); + const requestContextPromise = this.requestFactory.getAnalysisFunctionMatchingStatus(analysisId, matchId, _config); // build promise chain let middlewarePreObservable = from(requestContextPromise); for (const middleware of _config.middleware) { @@ -1380,12 +1389,13 @@ export class ObservableAnalysesCoreApi { } /** - * Returns the matching workflow\'s current status. Does not include the matches blob — use GET /matches for that. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied + * Returns the matching workflow\'s current status. Does not include the matches blob — use GET /matches for that. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Get function-matching status for an analysis * @param analysisId Analysis ID + * @param [matchId] Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. */ - public getAnalysisFunctionMatchingStatus(analysisId: number, _options?: ConfigurationOptions): Observable { - return this.getAnalysisFunctionMatchingStatusWithHttpInfo(analysisId, _options).pipe(map((apiResponse: HttpInfo) => apiResponse.data)); + public getAnalysisFunctionMatchingStatus(analysisId: number, matchId?: string, _options?: ConfigurationOptions): Observable { + return this.getAnalysisFunctionMatchingStatusWithHttpInfo(analysisId, matchId, _options).pipe(map((apiResponse: HttpInfo) => apiResponse.data)); } /** @@ -5177,12 +5187,13 @@ export class ObservableFunctionsCoreApi { /** * Returns the matches blob when the matching workflow has completed. While the workflow is in progress this endpoint returns the current status with no matches; use /matches/status to poll progress. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Get function-matching results for an explicit set of functions - * @param functionIds Source function IDs whose matches to fetch. + * @param [matchId] Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. + * @param [functionIds] Source function IDs whose matches to fetch. Required unless match_id is supplied. */ - public getFunctionsMatchesWithHttpInfo(functionIds: Array, _options?: ConfigurationOptions): Observable> { + public getFunctionsMatchesWithHttpInfo(matchId?: string, functionIds?: Array, _options?: ConfigurationOptions): Observable> { const _config = mergeConfiguration(this.configuration, _options); - const requestContextPromise = this.requestFactory.getFunctionsMatches(functionIds, _config); + const requestContextPromise = this.requestFactory.getFunctionsMatches(matchId, functionIds, _config); // build promise chain let middlewarePreObservable = from(requestContextPromise); for (const middleware of _config.middleware) { @@ -5202,21 +5213,23 @@ export class ObservableFunctionsCoreApi { /** * Returns the matches blob when the matching workflow has completed. While the workflow is in progress this endpoint returns the current status with no matches; use /matches/status to poll progress. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Get function-matching results for an explicit set of functions - * @param functionIds Source function IDs whose matches to fetch. + * @param [matchId] Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. + * @param [functionIds] Source function IDs whose matches to fetch. Required unless match_id is supplied. */ - public getFunctionsMatches(functionIds: Array, _options?: ConfigurationOptions): Observable { - return this.getFunctionsMatchesWithHttpInfo(functionIds, _options).pipe(map((apiResponse: HttpInfo) => apiResponse.data)); + public getFunctionsMatches(matchId?: string, functionIds?: Array, _options?: ConfigurationOptions): Observable { + return this.getFunctionsMatchesWithHttpInfo(matchId, functionIds, _options).pipe(map((apiResponse: HttpInfo) => apiResponse.data)); } /** * Returns the matching workflow\'s current status for the supplied function IDs. Does not include the matches blob — use GET /matches for that. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Get function-matching status for an explicit set of functions - * @param functionIds Source function IDs whose matches to fetch. + * @param [matchId] Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. + * @param [functionIds] Source function IDs whose matches to fetch. Required unless match_id is supplied. */ - public getFunctionsMatchingStatusWithHttpInfo(functionIds: Array, _options?: ConfigurationOptions): Observable> { + public getFunctionsMatchingStatusWithHttpInfo(matchId?: string, functionIds?: Array, _options?: ConfigurationOptions): Observable> { const _config = mergeConfiguration(this.configuration, _options); - const requestContextPromise = this.requestFactory.getFunctionsMatchingStatus(functionIds, _config); + const requestContextPromise = this.requestFactory.getFunctionsMatchingStatus(matchId, functionIds, _config); // build promise chain let middlewarePreObservable = from(requestContextPromise); for (const middleware of _config.middleware) { @@ -5236,10 +5249,47 @@ export class ObservableFunctionsCoreApi { /** * Returns the matching workflow\'s current status for the supplied function IDs. Does not include the matches blob — use GET /matches for that. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Get function-matching status for an explicit set of functions - * @param functionIds Source function IDs whose matches to fetch. + * @param [matchId] Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. + * @param [functionIds] Source function IDs whose matches to fetch. Required unless match_id is supplied. + */ + public getFunctionsMatchingStatus(matchId?: string, functionIds?: Array, _options?: ConfigurationOptions): Observable { + return this.getFunctionsMatchingStatusWithHttpInfo(matchId, functionIds, _options).pipe(map((apiResponse: HttpInfo) => apiResponse.data)); + } + + /** + * Returns a single imported symbol plus the internal functions that call it, resolved via the import\'s PLT/stub addresses within the binary. Answers \"which functions call `free`?\" for binary navigation. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found + * Get an imported function with its callers + * @param analysisId Analysis ID + * @param importedFunctionId Imported function ID + */ + public getImportedFunctionWithHttpInfo(analysisId: number, importedFunctionId: number, _options?: ConfigurationOptions): Observable> { + const _config = mergeConfiguration(this.configuration, _options); + + const requestContextPromise = this.requestFactory.getImportedFunction(analysisId, importedFunctionId, _config); + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (const middleware of _config.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } + + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => _config.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (const middleware of _config.middleware.reverse()) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getImportedFunctionWithHttpInfo(rsp))); + })); + } + + /** + * Returns a single imported symbol plus the internal functions that call it, resolved via the import\'s PLT/stub addresses within the binary. Answers \"which functions call `free`?\" for binary navigation. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found + * Get an imported function with its callers + * @param analysisId Analysis ID + * @param importedFunctionId Imported function ID */ - public getFunctionsMatchingStatus(functionIds: Array, _options?: ConfigurationOptions): Observable { - return this.getFunctionsMatchingStatusWithHttpInfo(functionIds, _options).pipe(map((apiResponse: HttpInfo) => apiResponse.data)); + public getImportedFunction(analysisId: number, importedFunctionId: number, _options?: ConfigurationOptions): Observable { + return this.getImportedFunctionWithHttpInfo(analysisId, importedFunctionId, _options).pipe(map((apiResponse: HttpInfo) => apiResponse.data)); } /** @@ -5280,6 +5330,44 @@ export class ObservableFunctionsCoreApi { return this.listAnalysisFunctionsWithHttpInfo(analysisId, offset, limit, _options).pipe(map((apiResponse: HttpInfo) => apiResponse.data)); } + /** + * Returns a paginated list of external/imported symbols (e.g. libc\'s `free`) linked by the analysis\'s binary. These are display-only: they carry no embeddings, cannot be renamed, and never participate in match/diff. `total_count` is the full population size, ignoring pagination. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found + * List imported functions in an analysis + * @param analysisId Analysis ID + * @param [offset] Pagination offset. Defaults to 0. + * @param [limit] Page size. Defaults to 100. + */ + public listImportedFunctionsWithHttpInfo(analysisId: number, offset?: number, limit?: number, _options?: ConfigurationOptions): Observable> { + const _config = mergeConfiguration(this.configuration, _options); + + const requestContextPromise = this.requestFactory.listImportedFunctions(analysisId, offset, limit, _config); + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (const middleware of _config.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } + + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => _config.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (const middleware of _config.middleware.reverse()) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.listImportedFunctionsWithHttpInfo(rsp))); + })); + } + + /** + * Returns a paginated list of external/imported symbols (e.g. libc\'s `free`) linked by the analysis\'s binary. These are display-only: they carry no embeddings, cannot be renamed, and never participate in match/diff. `total_count` is the full population size, ignoring pagination. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found + * List imported functions in an analysis + * @param analysisId Analysis ID + * @param [offset] Pagination offset. Defaults to 0. + * @param [limit] Page size. Defaults to 100. + */ + public listImportedFunctions(analysisId: number, offset?: number, limit?: number, _options?: ConfigurationOptions): Observable { + return this.listImportedFunctionsWithHttpInfo(analysisId, offset, limit, _options).pipe(map((apiResponse: HttpInfo) => apiResponse.data)); + } + /** * Dispatches the function-matching workflow against the provided function IDs. Returns immediately. Poll the status endpoint for progress; fetch results from the matches endpoint when status=COMPLETED. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Start function matching for an explicit set of functions diff --git a/types/PromiseAPI.ts b/types/PromiseAPI.ts index 0d722dc..ef04a3d 100644 --- a/types/PromiseAPI.ts +++ b/types/PromiseAPI.ts @@ -51,6 +51,7 @@ import { AppApiRestV2CollectionsEnumsOrderBy } from '../models/AppApiRestV2Colle import { AppApiRestV2FunctionsResponsesFunction } from '../models/AppApiRestV2FunctionsResponsesFunction'; import { AppApiRestV2FunctionsTypesFunction } from '../models/AppApiRestV2FunctionsTypesFunction'; import { AppApiRestV2InfoTypesCapability } from '../models/AppApiRestV2InfoTypesCapability'; +import { ArchiveContentEntry } from '../models/ArchiveContentEntry'; import { Argument } from '../models/Argument'; import { Artifact } from '../models/Artifact'; import { AttemptFailedEvent } from '../models/AttemptFailedEvent'; @@ -313,6 +314,9 @@ import { IOC } from '../models/IOC'; import { ISA } from '../models/ISA'; import { IconModel } from '../models/IconModel'; import { ImportModel } from '../models/ImportModel'; +import { ImportedFunctionCallerEntry } from '../models/ImportedFunctionCallerEntry'; +import { ImportedFunctionDetailOutputBody } from '../models/ImportedFunctionDetailOutputBody'; +import { ImportedFunctionEntry } from '../models/ImportedFunctionEntry'; import { InlineComment } from '../models/InlineComment'; import { InsertAnalysisLogRequest } from '../models/InsertAnalysisLogRequest'; import { InviteUserInputBody } from '../models/InviteUserInputBody'; @@ -320,11 +324,13 @@ import { IssuerAllowedDomain } from '../models/IssuerAllowedDomain'; import { ListAnalysisFunctionsDataTypesOutputBody } from '../models/ListAnalysisFunctionsDataTypesOutputBody'; import { ListAnalysisFunctionsOutputBody } from '../models/ListAnalysisFunctionsOutputBody'; import { ListAnalysisStringsOutputBody } from '../models/ListAnalysisStringsOutputBody'; +import { ListArchiveContentsOutputBody } from '../models/ListArchiveContentsOutputBody'; import { ListCollectionResults } from '../models/ListCollectionResults'; import { ListCollectionsOutputBody } from '../models/ListCollectionsOutputBody'; import { ListExampleAnalysesOutputBody } from '../models/ListExampleAnalysesOutputBody'; import { ListFunctionStringsOutputBody } from '../models/ListFunctionStringsOutputBody'; import { ListFunctionsDataTypesOutputBody } from '../models/ListFunctionsDataTypesOutputBody'; +import { ListImportedFunctionsOutputBody } from '../models/ListImportedFunctionsOutputBody'; import { ListTeamsOutputBody } from '../models/ListTeamsOutputBody'; import { ListUsersOutputBody } from '../models/ListUsersOutputBody'; import { LocationOutputBody } from '../models/LocationOutputBody'; @@ -1056,46 +1062,50 @@ export class PromiseAnalysesCoreApi { } /** - * Returns the matches blob when the matching workflow has completed. While the workflow is in progress this endpoint returns the current status with no matches; use /matches/status to poll progress. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied + * Returns the matches blob when the matching workflow has completed. While the workflow is in progress this endpoint returns the current status with no matches; use /matches/status to poll progress. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Get function-matching results for an analysis * @param analysisId Analysis ID + * @param [matchId] Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. */ - public getAnalysisFunctionMatchesWithHttpInfo(analysisId: number, _options?: PromiseConfigurationOptions): Promise> { + public getAnalysisFunctionMatchesWithHttpInfo(analysisId: number, matchId?: string, _options?: PromiseConfigurationOptions): Promise> { const observableOptions = wrapOptions(_options); - const result = this.api.getAnalysisFunctionMatchesWithHttpInfo(analysisId, observableOptions); + const result = this.api.getAnalysisFunctionMatchesWithHttpInfo(analysisId, matchId, observableOptions); return result.toPromise(); } /** - * Returns the matches blob when the matching workflow has completed. While the workflow is in progress this endpoint returns the current status with no matches; use /matches/status to poll progress. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied + * Returns the matches blob when the matching workflow has completed. While the workflow is in progress this endpoint returns the current status with no matches; use /matches/status to poll progress. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Get function-matching results for an analysis * @param analysisId Analysis ID + * @param [matchId] Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. */ - public getAnalysisFunctionMatches(analysisId: number, _options?: PromiseConfigurationOptions): Promise { + public getAnalysisFunctionMatches(analysisId: number, matchId?: string, _options?: PromiseConfigurationOptions): Promise { const observableOptions = wrapOptions(_options); - const result = this.api.getAnalysisFunctionMatches(analysisId, observableOptions); + const result = this.api.getAnalysisFunctionMatches(analysisId, matchId, observableOptions); return result.toPromise(); } /** - * Returns the matching workflow\'s current status. Does not include the matches blob — use GET /matches for that. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied + * Returns the matching workflow\'s current status. Does not include the matches blob — use GET /matches for that. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Get function-matching status for an analysis * @param analysisId Analysis ID + * @param [matchId] Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. */ - public getAnalysisFunctionMatchingStatusWithHttpInfo(analysisId: number, _options?: PromiseConfigurationOptions): Promise> { + public getAnalysisFunctionMatchingStatusWithHttpInfo(analysisId: number, matchId?: string, _options?: PromiseConfigurationOptions): Promise> { const observableOptions = wrapOptions(_options); - const result = this.api.getAnalysisFunctionMatchingStatusWithHttpInfo(analysisId, observableOptions); + const result = this.api.getAnalysisFunctionMatchingStatusWithHttpInfo(analysisId, matchId, observableOptions); return result.toPromise(); } /** - * Returns the matching workflow\'s current status. Does not include the matches blob — use GET /matches for that. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied + * Returns the matching workflow\'s current status. Does not include the matches blob — use GET /matches for that. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Get function-matching status for an analysis * @param analysisId Analysis ID + * @param [matchId] Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. */ - public getAnalysisFunctionMatchingStatus(analysisId: number, _options?: PromiseConfigurationOptions): Promise { + public getAnalysisFunctionMatchingStatus(analysisId: number, matchId?: string, _options?: PromiseConfigurationOptions): Promise { const observableOptions = wrapOptions(_options); - const result = this.api.getAnalysisFunctionMatchingStatus(analysisId, observableOptions); + const result = this.api.getAnalysisFunctionMatchingStatus(analysisId, matchId, observableOptions); return result.toPromise(); } @@ -3675,44 +3685,72 @@ export class PromiseFunctionsCoreApi { /** * Returns the matches blob when the matching workflow has completed. While the workflow is in progress this endpoint returns the current status with no matches; use /matches/status to poll progress. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Get function-matching results for an explicit set of functions - * @param functionIds Source function IDs whose matches to fetch. + * @param [matchId] Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. + * @param [functionIds] Source function IDs whose matches to fetch. Required unless match_id is supplied. */ - public getFunctionsMatchesWithHttpInfo(functionIds: Array, _options?: PromiseConfigurationOptions): Promise> { + public getFunctionsMatchesWithHttpInfo(matchId?: string, functionIds?: Array, _options?: PromiseConfigurationOptions): Promise> { const observableOptions = wrapOptions(_options); - const result = this.api.getFunctionsMatchesWithHttpInfo(functionIds, observableOptions); + const result = this.api.getFunctionsMatchesWithHttpInfo(matchId, functionIds, observableOptions); return result.toPromise(); } /** * Returns the matches blob when the matching workflow has completed. While the workflow is in progress this endpoint returns the current status with no matches; use /matches/status to poll progress. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Get function-matching results for an explicit set of functions - * @param functionIds Source function IDs whose matches to fetch. + * @param [matchId] Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. + * @param [functionIds] Source function IDs whose matches to fetch. Required unless match_id is supplied. */ - public getFunctionsMatches(functionIds: Array, _options?: PromiseConfigurationOptions): Promise { + public getFunctionsMatches(matchId?: string, functionIds?: Array, _options?: PromiseConfigurationOptions): Promise { const observableOptions = wrapOptions(_options); - const result = this.api.getFunctionsMatches(functionIds, observableOptions); + const result = this.api.getFunctionsMatches(matchId, functionIds, observableOptions); return result.toPromise(); } /** * Returns the matching workflow\'s current status for the supplied function IDs. Does not include the matches blob — use GET /matches for that. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Get function-matching status for an explicit set of functions - * @param functionIds Source function IDs whose matches to fetch. + * @param [matchId] Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. + * @param [functionIds] Source function IDs whose matches to fetch. Required unless match_id is supplied. */ - public getFunctionsMatchingStatusWithHttpInfo(functionIds: Array, _options?: PromiseConfigurationOptions): Promise> { + public getFunctionsMatchingStatusWithHttpInfo(matchId?: string, functionIds?: Array, _options?: PromiseConfigurationOptions): Promise> { const observableOptions = wrapOptions(_options); - const result = this.api.getFunctionsMatchingStatusWithHttpInfo(functionIds, observableOptions); + const result = this.api.getFunctionsMatchingStatusWithHttpInfo(matchId, functionIds, observableOptions); return result.toPromise(); } /** * Returns the matching workflow\'s current status for the supplied function IDs. Does not include the matches blob — use GET /matches for that. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Get function-matching status for an explicit set of functions - * @param functionIds Source function IDs whose matches to fetch. + * @param [matchId] Opaque token from a start-matching response. When supplied, returns that specific run instead of the latest. + * @param [functionIds] Source function IDs whose matches to fetch. Required unless match_id is supplied. + */ + public getFunctionsMatchingStatus(matchId?: string, functionIds?: Array, _options?: PromiseConfigurationOptions): Promise { + const observableOptions = wrapOptions(_options); + const result = this.api.getFunctionsMatchingStatus(matchId, functionIds, observableOptions); + return result.toPromise(); + } + + /** + * Returns a single imported symbol plus the internal functions that call it, resolved via the import\'s PLT/stub addresses within the binary. Answers \"which functions call `free`?\" for binary navigation. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found + * Get an imported function with its callers + * @param analysisId Analysis ID + * @param importedFunctionId Imported function ID */ - public getFunctionsMatchingStatus(functionIds: Array, _options?: PromiseConfigurationOptions): Promise { + public getImportedFunctionWithHttpInfo(analysisId: number, importedFunctionId: number, _options?: PromiseConfigurationOptions): Promise> { const observableOptions = wrapOptions(_options); - const result = this.api.getFunctionsMatchingStatus(functionIds, observableOptions); + const result = this.api.getImportedFunctionWithHttpInfo(analysisId, importedFunctionId, observableOptions); + return result.toPromise(); + } + + /** + * Returns a single imported symbol plus the internal functions that call it, resolved via the import\'s PLT/stub addresses within the binary. Answers \"which functions call `free`?\" for binary navigation. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found + * Get an imported function with its callers + * @param analysisId Analysis ID + * @param importedFunctionId Imported function ID + */ + public getImportedFunction(analysisId: number, importedFunctionId: number, _options?: PromiseConfigurationOptions): Promise { + const observableOptions = wrapOptions(_options); + const result = this.api.getImportedFunction(analysisId, importedFunctionId, observableOptions); return result.toPromise(); } @@ -3742,6 +3780,32 @@ export class PromiseFunctionsCoreApi { return result.toPromise(); } + /** + * Returns a paginated list of external/imported symbols (e.g. libc\'s `free`) linked by the analysis\'s binary. These are display-only: they carry no embeddings, cannot be renamed, and never participate in match/diff. `total_count` is the full population size, ignoring pagination. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found + * List imported functions in an analysis + * @param analysisId Analysis ID + * @param [offset] Pagination offset. Defaults to 0. + * @param [limit] Page size. Defaults to 100. + */ + public listImportedFunctionsWithHttpInfo(analysisId: number, offset?: number, limit?: number, _options?: PromiseConfigurationOptions): Promise> { + const observableOptions = wrapOptions(_options); + const result = this.api.listImportedFunctionsWithHttpInfo(analysisId, offset, limit, observableOptions); + return result.toPromise(); + } + + /** + * Returns a paginated list of external/imported symbols (e.g. libc\'s `free`) linked by the analysis\'s binary. These are display-only: they carry no embeddings, cannot be renamed, and never participate in match/diff. `total_count` is the full population size, ignoring pagination. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found + * List imported functions in an analysis + * @param analysisId Analysis ID + * @param [offset] Pagination offset. Defaults to 0. + * @param [limit] Page size. Defaults to 100. + */ + public listImportedFunctions(analysisId: number, offset?: number, limit?: number, _options?: PromiseConfigurationOptions): Promise { + const observableOptions = wrapOptions(_options); + const result = this.api.listImportedFunctions(analysisId, offset, limit, observableOptions); + return result.toPromise(); + } + /** * Dispatches the function-matching workflow against the provided function IDs. Returns immediately. Poll the status endpoint for progress; fetch results from the matches endpoint when status=COMPLETED. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request * Start function matching for an explicit set of functions