Skip to main content

Merge branches

This allows you to merge branches programmatically. It requires you to call three separate APIs. This is needed if using merge queues in Github.

Merge Request​

POST /api/baselines/branches/merge?SourceBranch=string&TargetBranch=string&OnlyCheck=true

Parameters​

NameTypeInDescription
SourceBranchstringquery or bodyCurrent Branch name -> company_name/repository/featurebranch
TargetBranchstringquery or bodyParent Branch Name -> company_name/repository/masterbranch
OnlyCheckboolquery or bodySetting to "true" will only check for conflicts and not actually merge

Response​

This API will respond with 202 and a location.

The location in the response will be a status API URL you can check to monitor the merge operation.

cURL Example​

curl -H "X-Eyes-Api-Key: <your-merge-api-key>" -X POST "https://eyes.applitools.com/api/baselines/branches/merge?SourceBranch=PRBranch&TargetBranch=main&OnlyCheck=false"

Task Status Request​

GET /api/tasks/{jobId}/status

Parameters​

NameTypeInDescription
jobIdstringbodyThe job id for the merge operation.

Response​

This API will respond with a 200 while the operation is happening and a 201 when the operation is complete. It will give you a URL for the results API in the location when complete.

cURL Example​

curl -H "X-Eyes-Api-Key: <your-api-key>" -X GET "https://eyes.applitools.com/api/tasks/<job-id>/status"

Task Result Request​

GET /api/tasks/{jobId}/result

Parameters​

NameTypeInDescription
jobIdstringbodyThe job id for the merge operation.

Response​

This API will respond with a 200 when the merge operation has completed and will give details in json about the merge in the body. The body will tell you if the merge completed successfully and if there are conflicts preventing merge.

A 204 will be returned if you call the API after the Merge API was called but before the operation started. Calling the status API until you get a 201 status code will prevent this.

A 404 will be returned if the branch does not exist.

Response Example​

{"merged":true,"conflicts":0,"context":"","changes":[{"source":{"id":"k~!d547403d-c739-44fb-a401-dfa25a992518~!0313092b-7166-4269-9d3f-07e86f9e98ad~!df78dd22-5af1-45f7-ae91-2d035b3f5c81~!mIWFc3nuwIhZV9VRn50SmfbJxAlgP5inQIuCy47DChc_~!","state":"a582a0de-404c-45f1-91c1-7520de012d63","rev":"00000251759088751702","updateInfo":{"by":"example.user@example.com","at":"2019-09-15T14:47:29.5129873+00:00","session":{"batchId":"00000251833741975598","id":"00000251833741974740"}},"secretToken":"","scenarioId":"df78dd22-5af1-45f7-ae91-2d035b3f5c81","scenarioName":"#29805","appId":"0313092b-7166-4269-9d3f-07e86f9e98ad","baselineModelId":"mIWFc3nuwIhZV9VRn50SmfbJxAlgP5inQIuCy47DChc_.d547403d-c739-44fb-a401-dfa25a992518","baselineEnvId":"Mac OS X 10.14$Chrome$800$600","baselineEnv":{"os":"Mac OS X 10.14","hostingApp":"Chrome","displaySize":{"width":800,"height":600}},"appName":"MyAppName","baselineBranchName":"MyNewBranch123456","isNew":false},"target":{"id":"k~!~!0313092b-7166-4269-9d3f-07e86f9e98ad~!df78dd22-5af1-45f7-ae91-2d035b3f5c81~!mIWFc3nuwIhZV9VRn50SmfbJxAlgP5inQIuCy47DChc_~!","state":"a582a0de-404c-45f1-91c1-7520de012d63","rev":"00000251759107706056","updateInfo":{"by":"example.user@example.com","at":"2019-09-15T14:47:29.5129873+00:00","session":{"batchId":"00000251833741975598","id":"00000251833741974740"}},"secretToken":"","scenarioId":"df78dd22-5af1-45f7-ae91-2d035b3f5c81","scenarioName":"#29805","appId":"0313092b-7166-4269-9d3f-07e86f9e98ad","baselineModelId":"mIWFc3nuwIhZV9VRn50SmfbJxAlgP5inQIuCy47DChc_.","baselineEnvId":"Mac OS X 10.14$Chrome$800$600","baselineEnv":{"os":"Mac OS X 10.14","hostingApp":"Chrome","displaySize":{"width":800,"height":600}},"appName":"MyAppName","baselineBranchName":"default","isNew":false},"isConflicting":false}]}

cURL Example​

curl -H "X-Eyes-Api-Key: <your-api-key>" -X GET "https://eyes.applitools.com/api/tasks/<job-id>/result"