Configure webhook

SEI supports custom CI/CD integrations through webhooks. Use this for CI/CD tools that don't have a dedicated SEI integration, such as Jenkins and GitHub Actions.

Configure the webhook API call according to the following webhook specifications.

Webhook specification

  • Method: POST

  • Base URL: https://api.levelops.io/v1/custom-cicd (Relative to the environment that you are using)

  • Header: Requires Bearer token key authorization. The content type is application/json

  • Body: Contains a data object with request_type and payload.

Post CI/CD data to SEI

POST https://api.levelops.io/v1/custom-cicd

Headers

NameTypeDescription

Authorization*

Bearer <BEARER_TOKEN>'

Content-Type*

application/json

Request Body

NameTypeDescription

Data*

"{"pipeline":"Node.js CI","user_id":"SCMTrigger","repo_url":"https://api.github.com/users/rajpropelo","start_time":1679467494000,"result":"success","duration":77000,"build_number":4487150517,"instance_guid":"89d2491c-764a-4f77-93d9-18e8e372b795","instance_name":"Jenkins Instance","instance_url":"https://jenkins.dev.levelops.io/","job_run":{"stages":[{"displayName":"Build_Stage","displayDescription":"Build_Stage","result":"succeeded","state":"completed","durationInMillis":5000,"steps":[{"displayName":"BUILD_STEP","displayDescription":"BUILD_STEP","result":"succeeded","state":"completed","durationInMillis":5000}]}]},"job_full_name":"Node.js CI--readme updated","qualified_name":"Node.js CI--readme updated","branch_name":"master","module_name":null,"scm_commit_ids":["64be72b2c1f7d2a33082f98a40a848880fcdcd5e"],"job_run_params":[{"type":"StringParameterValue","name":"version","value":1},{"type":"StringParameterValue","name":"revision","value":1}],"ci":true,"cd":false,"artifacts":[{"input":false,"output":true,"type":"container","location":"http://generated/image/location","name":"image1","qualifier":"1"}],"trigger_chain":[{"id":"SCMTrigger","type":"SCMTriggerCause"}]}"

Here is an example of a request:

curl --location 'https://api.levelops.io/v1/custom-cicd' \
--header 'sec-ch-ua: "Chromium";v="112", "Google Chrome";v="112", "Not:A-Brand";v="99"' \
--header 'Accept: application/json, text/plain, */*' \
--header 'Referer: https://app.propelo.ai/' \
--header 'sec-ch-ua-mobile: ?0' \
--header 'Authorization: Bearer <BEARER_TOKEN>' \
--header 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36' \
--header 'sec-ch-ua-platform: "macOS"' \
--header 'Content-Type: application/json' \
--header 'Cookie: <COOKIE>' \
--data '{
    "job_name": "pipelines-testing-nish",
    "jenkins_instance_guid": "c9a73c1b-7590-4ac6-a82f-c53a469686b7",
    "jenkins_instance_name": "azure-integration-4403",
    "job_full_name": "Agile_proj/pipelines-javascript-docker",
    "job_normalized_full_name": "Agile_proj/pipelines-javascript-docker",
    "result": "FAILED",
    "user_id": "UNKNOWN",
    "repo_url": "https://dev.azure.com/vinayanayak/Agile_proj/_git/pipelines-javascript-docker",
    "start_time": 1684912520000,
    "duration": 5,
    "build_number": 7871,
    "jenkins_instance_url": "https://dev.azure.com",
    "branch_name": "main"
    "project_name": "Project" 
}

Please note that the API endpoint URL mentioned in the webhook specifications is relative to the environment you are using. You will need to replace it with the actual URL that are specific to your environment.

Payload fields

Payload is an object with required and optional fields.

Required Fields

FieldData TypeDescription

pipeline

string

The name of the CI/CD job.

job_full_name

string

A human-readable identifier for the job, often the same as the pipeline name.

qualified_name

string

A qualified name for the job, typically the same as the pipeline name.

instance_name

string

The identifier for the CI/CD instance (not the UUID).

instance_guid

string

UUID (Universally Unique Identifier) for the CI/CD instance. To generate a UUID for the integration you can use the API https://api.levelops.io/v1/custom-cicd

start_time

integer

Job start time in epoch milliseconds.

duration

integer

Job duration in milliseconds.

result

string

The result of the job, either SUCCESS or FAILURE

Optional Fields

FieldData TypeDescription

user_id

string

job_run_params

array

An array of parameters associated with the job run.

scm_commit_ids

array of strings

An array of commit ids related to the deployment

repo_url

string

The URL of the repository related to the job.

build_number

integer

The build number associated with the job.

instance_url

string

URL of the CI/CD instance.

job_run

object

Information about the job run, including stages, steps, and their results.

module_name

string

The name of the module related to the job

ci and cd

boolean

One is true and the other is false, depending on whether this is for a CI job or a CD job.

artifacts

array of objects

An array of information about the job run, including input, output, type, location, name, qualifier, hash, and metadata.

trigger_chain

array of objects

Information about the chain of triggers.

branch_name

string

The name of the branch related to the job.

project_name

string

The name of the project related to the job.

execution_id

string

Unique identifier for the specific job execution

cfr_status

boolean

Status of the CFR stage

themes

List<String>

List of the theme names

Here is an example payload:

{
    "instance_guid": "666ba79b-3f3d-4236-ac04-4686ce526705",
    "job_full_name": "Pipeline-2",
    "execution_id": "UNIQUE_EXECUTION_ID",
    "pipeline": "Pipeline-2",
    "project_name": "Project-A",
    "user_id": "NISHITH",
    "repo_url": "https://api.github.com/users/nishith.patel",
    "start_time": 1711603545000,
    "result": "success",
    "duration": 780000,
    "instance_name": "Jenkins-1",
    "instance_url": "http://localhost:8800",
    "job_run": null,
    "qualified_name": "Pipeline-2",
    "branch_name": "master",
    "module_name": null,
    "scm_commit_ids": [
        "64be72b2c1f7d2a33082f98a40a848880fcdcd5e"
    ],
    "job_run_params": [
        {
            "type": "StringParameterValue",
            "name": "version",
            "value": 1
        },
        {
            "type": "StringParameterValue",
            "name": "revision",
            "value": 1
        }
    ],
    "ci": true,
    "cd": false,
    "artifacts": [
        {
            "input": false,
            "output": true,
            "type": "container",
            "location": "http://generated/image/location",
            "name": "image1",
            "qualifier": "1"
        }
    ],
    "trigger_chain": [
        {
            "id": "SCMTrigger",
            "type": "SCMTriggerCause"
        }
    ],
    "cfr_status": true
    "themes":["themex","themey","themex/themey"]
    
}

Last updated