For the complete documentation index, see llms.txt. This page is also available as Markdown.

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.

Step 1a: Add private source configuration

post

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.

Authorizations
AuthorizationstringRequired

Short-lived access token from the login or renew-access-token endpoint.

Body
namestringRequiredExample: Private Integration
descriptionstringRequiredExample: This is a github private integration using an access token
accessTokenstringRequired

SCM personal access token.

Example: <personal access token>
connectorstring · enumRequired

SCM type.

Example: githubPossible values:
Responses
201

Configuration saved successfully.

application/json
post/integrations/scm/api/v1/github/configuration/save
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"
}
201

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>"
  }
}

Step 1b: Add private source project (repository)

post

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.

Authorizations
AuthorizationstringRequired

Short-lived access token from the login or renew-access-token endpoint.

Body
connectorstring · enumRequiredExample: githubPossible values:
configurationIdintegerRequiredExample: 2058694
Responses
201

Repositories saved successfully.

application/json
post/integrations/scm/api/v1/github/configuration/repository
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>"
    }
  ]
}
201

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": [
      {}
    ]
  }
}

Step 2: List projects

get

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.

Authorizations
AuthorizationstringRequired

Short-lived access token from the login or renew-access-token endpoint.

Query parameters
pageintegerOptionalDefault: 0Example: 0
sizeintegerOptionalDefault: 2000Example: 2000
projectFilterstringOptional
timestampintegerOptionalExample: 120
Header parameters
tokenstringOptional

Access token, also sent here in addition to the Authorization header.

Responses
200

Project list.

application/json
total_countintegerOptionalExample: 17
current_pageintegerOptionalExample: 0
total_pagesintegerOptionalExample: 0
page_sizeintegerOptionalExample: 2000
get/scim/api/v2/projects/
GET /scim/api/v2/projects/ HTTP/1.1
Host: scim-service.v2.prod.veedna.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

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
}

Steps 3 & 4: Fetch and apply the Gold Plan

post

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 trueartifacts 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.

Authorizations
AuthorizationstringRequired

Short-lived access token from the login or renew-access-token endpoint.

Body
querystringRequired

"Recommend a fix plan" to fetch/poll; "Apply fix left plan" to apply.

Example: Recommend a fix plan
sbom_idstringRequiredExample: <SBOM-ID>
guidstringOptional

Include the guid returned by the first fetch call to poll for the result.

Example: fea930da-2e1e-11ef-993f-0a58a9feac02
Responses
200

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.

application/json
response_timenumberOptionalExample: 0
answerstring · nullableOptional
graphqlany · nullableOptional
query_suggestionsany · nullableOptional
view_detailsany · nullableOptional
metadata_v2objectOptional
task_idsstring[]Optional
columnany · nullableOptional
view_schemaany · nullableOptional
Greetingany · nullableOptional
guidstring · nullableOptionalExample: fea930da-2e1e-11ef-993f-0a58a9feac02
messagestring · nullableOptionalExample: Request is Queued
workflow_idstring · nullableOptional
errorbooleanOptionalExample: false
post/api/v1/explain
POST /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
  }
}
200

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