Skip to Content
SeyloDocs

Connect a GitHub repository to a service

POST
/api/v1/github.connectRepo

Sets a service's source to a GitHub repository and branch read through the App, after checking the installation can read it. With deployOnPush, pushes to the branch deploy the service. rootDir is the folder to build.

Needs services.update on the service (a grant on its project covers it). Available to MCP clients and the assistant.

Authorization

cookieseylo_session<token>

Request Body

application/json
  1. body
serviceId*string

Panel-issued id.

Match^[a-z0-9]{16}$
installationId*string

Panel-issued id.

Match^[a-z0-9]{16}$
repo*string
Match^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$
branch*string
Match^[^\s~^:?*\[\\]+$
Length1 <= length <= 250
rootDir?string
Match^(?!/)(?!.*(^|/)\.\.(/|$)).*$
Lengthlength <= 300
deployOnPush*boolean

Response Body

Success.

application/json
  1. response
id*string

Panel-issued id.

Match^[a-z0-9]{16}$
projectId*string

Panel-issued id.

Match^[a-z0-9]{16}$
name*string

DNS-safe; the service's host name on the project network. Unique in its project.

Match^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
Length1 <= length <= 40
kind*||||||||

Compose members have kind app and a parentId naming their stack.

parentId*|null
status*string|string|string|string|string|string|string|string|string|string
source*
address*string|null
placements*array<>
cpuPercent*|null
memoryBytes*|null
memoryLimitBytes*|null
liveDeployment*|null
lastDeployedAt*|null
protected*boolean
templateSlug*string|null
createdAt*string
Formatdate-time
updatedAt*string
Formatdate-time
stopped*boolean
generation*integer
Range1 <= value
sourceConfig*|||||
build*
container*
ports*array<>
healthCheck*|null
crashPolicy*
restartDelaySeconds*integer
Range0 <= value
resources*
deploy*
cron*|null
stickySessions*boolean
entryNodeId*|null
notes*string
members*array<>
volumes*array<>
Example Request
curl -X POST 'https://example.com/api/v1/github.connectRepo' \  -H 'Content-Type: application/json' \  -d '{  "serviceId": "string",  "installationId": "string",  "repo": "string",  "branch": "string",  "deployOnPush": true}'
Example Response
{  "id": "string",  "projectId": "string",  "name": "string",  "kind": "app",  "parentId": "string",  "status": "idle",  "source": {    "type": "github",    "label": "string",    "branch": "string",    "builder": "railpack"  },  "address": "string",  "placements": [    {      "nodeId": "string",      "nodeName": "string",      "replicas": 1    }  ],  "cpuPercent": 0,  "memoryBytes": 0,  "memoryLimitBytes": 0,  "liveDeployment": {    "id": "string",    "label": "string",    "createdAt": "2019-08-24T14:15:22Z"  },  "lastDeployedAt": "2019-08-24T14:15:22Z",  "protected": true,  "templateSlug": "string",  "createdAt": "2019-08-24T14:15:22Z",  "updatedAt": "2019-08-24T14:15:22Z",  "stopped": true,  "generation": 1,  "sourceConfig": {    "type": "github",    "installationId": "string",    "repo": "string",    "branch": "string",    "deployOnPush": true  },  "build": {    "builder": "railpack",    "contextPath": "string",    "dockerfilePath": "string",    "inlineDockerfile": "string",    "targetStage": "string",    "buildNodeId": "string",    "startCommand": "string",    "installCommand": "string",    "buildCommand": "string"  },  "container": {    "command": [      "string"    ],    "entrypoint": [      "string"    ],    "workingDir": "string",    "user": "string",    "stopSignal": "string",    "stopGraceSeconds": 1  },  "ports": [    {      "containerPort": 1,      "protocol": "tcp"    }  ],  "healthCheck": {    "probe": {      "type": "tcp",      "port": 1    },    "intervalSeconds": 1,    "timeoutSeconds": 1,    "startPeriodSeconds": 0,    "failureThreshold": 1  },  "crashPolicy": {    "restart": true,    "stopAfterCrashes": 0  },  "restartDelaySeconds": 0,  "resources": {    "memoryLimitBytes": 6291456,    "memoryReservationBytes": 0,    "cpuWeight": 1,    "pidsLimit": 16  },  "deploy": {    "mode": "rolling",    "healthTimeoutSeconds": 10  },  "cron": {    "schedule": "stringstr",    "timeZone": "string",    "command": [      "string"    ],    "timeoutSeconds": 1,    "concurrency": "forbid"  },  "stickySessions": true,  "entryNodeId": "string",  "notes": "string",  "members": [    {      "id": "string",      "name": "string",      "status": "idle"    }  ],  "volumes": [    {      "id": "string",      "name": "string",      "mountPath": "string",      "kind": "volume",      "readOnly": true,      "sharedWith": [        {          "id": "string",          "name": "string"        }      ]    }  ]}