Project Workflow
Onboard a project from private source code and drive it through remediation: create a project → list projects until the scan is "Ready for review" → fetch the Gold Plan → apply the Gold Plan.
Add a configuration with a name and description. These APIs apply to the SCM types github, bitbucket, gitlab, and git. The returned configurationId is used to add the project (repository) in the next call.
Short-lived access token from the login or renew-access-token endpoint.
Private IntegrationThis is a github private integration using an access tokenSCM personal access token.
<personal access token>SCM type.
githubPossible values: Configuration saved successfully.
POST /integrations/scm/api/v1/github/configuration/save HTTP/1.1
Host: scm-service.v2.prod.veedna.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 166
{
"name": "Private Integration",
"description": "This is a github private integration using an access token",
"accessToken": "<personal access token>",
"connector": "github"
}Configuration saved successfully.
{
"status": {
"type": "SUCCESS",
"message": "Configuration saved successfully",
"code": 201
},
"data": {
"createdBy": "6cbd0a18-ad84-4ce6-9f35-27e1349b9e75",
"createdAt": "2025-03-20 12:35:01",
"updatedAt": "2025-03-20 12:35:01",
"configurationId": 2058695,
"tenantId": "<tenant_id>",
"companyId": "<company_id>",
"userRoles": "default-roles-idp,offline_access,uma_authorization,Tenant_Admin",
"configurationName": "Private Integration",
"configurationDescription": "This is a github private integration using an access token",
"connectorId": "GITHUB",
"secretKeyName": "<secret key>"
}
}Add a project (repository) using the configurationId from the configuration/save call. Supply either a branch (set branch: true with branchName) or a tag (set branch: false with tagName) per repository entry.
Short-lived access token from the login or renew-access-token endpoint.
githubPossible values: 2058694Repositories saved successfully.
POST /integrations/scm/api/v1/github/configuration/repository HTTP/1.1
Host: scm-service.v2.prod.veedna.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 281
{
"connector": "github",
"configurationId": 2058694,
"repositoryDtoList": [
{
"repositoryName": "<repo-name>",
"repositoryUri": "<repo-url>",
"private": true,
"projectName": "<project_name>",
"projectVersion": "<project_version>",
"branchName": "<branch_name>",
"branch": true,
"tagName": "<tag_name>"
}
]
}Repositories saved successfully.
{
"status": {
"type": "SUCCESS",
"message": "Configuration saved successfully",
"code": 201
},
"data": {
"createdBy": "6cbd0a18-ad84-4ce6-9f35-27e1349b9e75",
"createdAt": "2025-03-20 12:35:01",
"updatedAt": "2025-03-20 12:35:01",
"configurationId": 2058695,
"tenantId": "<tenant_id>",
"companyId": "<company_id>",
"userRoles": "default-roles-idp,offline_access,uma_authorization,Tenant_Admin",
"configurationName": "Private Integration",
"configurationDescription": "This is a github private integration using an access token",
"connectorId": "GITHUB",
"secretKeyName": "<secret key>",
"scmRepositoryEntities": [
{
"createdAt": "2025-03-20 12:39:14",
"updatedAt": "2025-03-20 12:39:14",
"repositoryId": 2058699,
"repository_name": "<repo_name>",
"repository_uri": "<repo_url>",
"branch_name": "<branch_name>",
"is_private": true,
"project_name": "<project_name>",
"project_version": "<project_version>"
}
],
"scmPublicRepositoryEntities": [
{}
]
}
}List projects for the authenticated tenant. Match the project name and version you onboarded, and keep polling until "jobStatus": "Ready for review" appears for that project/version. The sbomId returned here is required as the sbom_id input when fetching and applying the Gold Plan.
Short-lived access token from the login or renew-access-token endpoint.
0Example: 02000Example: 2000120Access token, also sent here in addition to the Authorization header.
Project list.
17002000GET /scim/api/v2/projects/ HTTP/1.1
Host: scim-service.v2.prod.veedna.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
Project list.
{
"results": {
"projects": [
{
"projectName": "<project_name>",
"projectVersion": "main",
"orgName": "<org_name>",
"projectStatus": "Successful",
"generationType": "GITHUB",
"sbomJobs": [
{
"projectId": 4780694,
"name": "<project_name>",
"version": "main",
"jobId": 4780695,
"sbomId": "<sbom_id>",
"tenantId": "vdna_QyJ4rym5blQhtJrH",
"uniqueOrgId": "vdna_QyJ4rym5blQhtJrH",
"sbomType": "pkg",
"crawlerType": "veeUI",
"jobStatus": "Ready for review",
"jobMessage": "Successfully transformed the data and persisted into opensearch",
"projectGroup": null,
"userEmail": "<user_email>",
"orgName": "<org_name>",
"generationMethod": "SCM",
"generationType": "GITHUB",
"created_by": "b4b32539-5703-4a24-86c5-3061eca3e0bb",
"modified_by": "b4b32539-5703-4a24-86c5-3061eca3e0bb",
"created_date": "2025-02-24T19:04:26.162+00:00",
"modified_date": "2025-02-24T20:44:42.743+00:00"
}
]
}
]
},
"total_count": 17,
"current_page": 0,
"total_pages": 0,
"page_size": 2000
}Issue an /explain call to the GPT (Lineaje AI) service. This single endpoint drives both fetching and applying the Gold Plan, distinguished by the request body (see the request examples):
Fetch (Step 3). Send query: "Recommend a fix plan" with the sbom_id and options. The first response returns a guid and "Request is Queued". Poll the same endpoint with that guid (about every 20 seconds; it can take several minutes) until the plan is ready. The ready response contains meta_data.plan_details (with current_purl, suggested_purl, and a plan_type of curated, rebuild, or premium), overall_status, and — when include_artifacts/include_pr_history are true — artifacts and pr_history.
Apply (Step 4). Send query: "Apply fix left plan" with the sbom_id and a metadata.components array containing only the components to include in the PR (for example, exclude premium candidates). There is no need to wait for the response; the task runs AI agents and creates a PR after several minutes. Call the fetch step again later to read the new pr_history.
Short-lived access token from the login or renew-access-token endpoint.
"Recommend a fix plan" to fetch/poll; "Apply fix left plan" to apply.
Recommend a fix plan<SBOM-ID>Include the guid returned by the first fetch call to poll for the result.
fea930da-2e1e-11ef-993f-0a58a9feac02Queued, not-ready, or completed response. While queued or polling, answer/meta_data are null and message reflects status. When the plan is ready, meta_data is populated.
0fea930da-2e1e-11ef-993f-0a58a9feac02Request is QueuedfalsePOST /api/v1/explain HTTP/1.1
Host: lineaje-gpt-service.v2.prod.veedna.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 119
{
"query": "Recommend a fix plan",
"sbom_id": "<SBOM-ID>",
"options": {
"include_artifacts": false,
"include_pr_history": false
}
}Queued, not-ready, or completed response. While queued or polling, answer/meta_data are null and message reflects status. When the plan is ready, meta_data is populated.
{
"response_time": 0,
"answer": null,
"guid": "fea930da-2e1e-11ef-993f-0a58a9feac02",
"message": "Request is Queued",
"error": false
}Last updated