Create a commit from a diff - Spacefast Docs
Create a commit from a diff
Save a unified diff as one Git commit in a hosted repository. Send expectedHeadSha to reject stale writes. A commit does not confirm deployment.
Endpoint
POST /v1/spaces/{spaceId}/source/commits/diff
Authorization
Authorization Bearer token · header required
Authorization: Bearer <token>
with an API key (sfa_ prefix), an OAuth access token, a session token, or a Space machine credential (sfm_ prefix).
or
Authorization OAuth2 access token · header required
OAuth 2.0 with Spacefast scopes. People use the authorization code flow; machines use client credentials.
Scopes: spaces:write
Path parameters
spaceIdstring required
Request body
required application/json
author object
Git author. Omit it to use the registered profile of the authenticated user or machine credential creator. Attribution does not change permissions.
Properties
namestring required (min length 1)emailstringrequired (must match email format regex) baseBranchstring (min length 1)commitMessagestring required (min length 1)
committer object
Properties
namestring required (min length 1)emailstringrequired (must match email format regex) connectionTypestring required (Allowed:connected,hosted)diffstring required (min length 1, max length 4194304)ephemeralbooleanephemeralBasebooleanexpectedHeadShastring (min length 1)targetBranchstring required (min length 1)
Responses
201 Response
Properties
$schemastringdataobject required
Properties of data
repositoryConnectionobject requiredidstring requiredspaceIdstring requiredproviderstring required (Allowed:github,gitlab,bitbucket,generic)connectionTypestring required (Allowed:connected,hosted)repositoryIdstring | any requiredinstallationIdstring | any required (default: null)cloneUrlConfiguredboolean required (default: false)upstreamUrlConfiguredboolean required (default: false)repositoryNamestring requiredrepositoryFullNamestring requireddefaultBranchstring requiredproductionBranchstring requiredcredentialConfiguredboolean requiredautoDeployProductionboolean requiredautoDeployPreviewsboolean requiredbuildSettingsobject requiredrootDirectorystring | any required (default: null)installDirectorystring | any required (default: null)installCommandstring | any required (default: null)buildCommandstring | any required (default: null)outputDirectorystring | any required (default: null)ignoredBuildCommandstring | any required (default: null)frameworkPresetstring | any required (default: null)platformPresetstring | any required (default: null)allowUnsupportedPlatformFeaturesboolean required (default: false)timeoutSecondsinteger required (min 60, max 7200, default: 900)
syncStatusstring required (Allowed:idle,syncing,ready,failed)providerAccessStatusstring required (Allowed:active,suspended,revoked,reauthorization_required, default: "active")providerAccessErrorstring | any required (default: null)lastSyncedAtstring| any required lastSyncErrorstring | any requiredsyncRunIdstring | any requiredconnectedUserIdstring | any requiredcreatedAtstringrequired updatedAtstringrequired
repositoryIdstring requiredcommitShastring requiredtreeShastring requiredtargetBranchstring requiredpackBytesinteger required (min 0, max 9007199254740991)blobCountinteger required (min 0, max 9007199254740991)refUpdateobject requiredbranchstring requiredoldShastring requirednewShastring required
Error Response
Properties
$schemastringtypestring requiredtitlestring requiredstatusinteger required (min -9007199254740991, max 9007199254740991)detailstring requiredcodestring requiredpointerstringdetailsobjectsuggestionsstring[]nextstring[]requestIdstring required
Example Requests
cURL
curl -X POST "https://api.spacefast.com/v1/spaces/string/source/commits/diff" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"author": {
"name": "string",
"email": "user@example.com"
},
"baseBranch": "string",
"commitMessage": "string",
"committer": {
"name": "string",
"email": "user@example.com"
},
"connectionType": "connected",
"diff": "string",
"ephemeral": true,
"ephemeralBase": true,
"expectedHeadSha": "string",
"targetBranch": "string"
}'
JavaScript
const response = await fetch("https://api.spacefast.com/v1/spaces/string/source/commits/diff", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_TOKEN",
"Content-Type": "application/json"
},
body: "{\n \"author\": {\n \"name\": \"string\",\n \"email\": \"user@example.com\"\n },\n \"baseBranch\": \"string\",\n \"commitMessage\": \"string\",\n \"committer\": {\n \"name\": \"string\",\n \"email\": \"user@example.com\"\n },\n \"connectionType\": \"connected\",\n \"diff\": \"string\",\n \"ephemeral\": true,\n \"ephemeralBase\": true,\n \"expectedHeadSha\": \"string\",\n \"targetBranch\": \"string\"\n}";
});
Python
import requests
response = requests.post(
"https://api.spacefast.com/v1/spaces/string/source/commits/diff",
headers={
"Authorization": "Bearer YOUR_TOKEN",
"Content-Type": "application/json"
},
data="{\n \"author\": {\n \"name\": \"string\",\n \"email\": \"user@example.com\"\n },\n \"baseBranch\": \"string\",\n \"commitMessage\": \"string\",\n \"committer\": {\n \"name\": \"string\",\n \"email\": \"user@example.com\"\n },\n \"connectionType\": \"connected\",\n \"diff\": \"string\",\n \"ephemeral\": true,\n \"ephemeralBase\": true,\n \"expectedHeadSha\": \"string\",\n \"targetBranch\": \"string\"\n}",
)
Example Response
201 Response
{
"$schema": "http://example.com",
"data": {
"repositoryConnection": {
"id": "string",
"spaceId": "string",
"provider": "github",
"connectionType": "connected",
"repositoryId": "string",
"installationId": null,
"cloneUrlConfigured": false,
"upstreamUrlConfigured": false,
"repositoryName": "string",
"repositoryFullName": "string",
"defaultBranch": "string",
"productionBranch": "string",
"credentialConfigured": true,
"autoDeployProduction": true,
"autoDeployPreviews": true,
"buildSettings": {
"rootDirectory": null,
"installDirectory": null,
"installCommand": null,
"buildCommand": null,
"outputDirectory": null,
"ignoredBuildCommand": null,
"frameworkPreset": null,
"platformPreset": null,
"allowUnsupportedPlatformFeatures": false,
"timeoutSeconds": 900
},
"syncStatus": "idle",
"providerAccessStatus": "active",
"providerAccessError": null,
"lastSyncedAt": "2019-08-24T14:15:22Z",
"lastSyncError": "string",
"syncRunId": "string",
"connectedUserId": "string",
"createdAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z"
},
"repositoryId": "string",
"commitSha": "string",
"treeSha": "string",
"targetBranch": "string",
"packBytes": 9007199254740991,
"blobCount": 9007199254740991,
"refUpdate": {
"branch": "string",
"oldSha": "string",
"newSha": "string"
}
}
}
Error Response
{
"$schema": "http://example.com",
"type": "string",
"title": "string",
"status": -9007199254740991,
"detail": "string",
"code": "string",
"pointer": "string",
"details": {
"property1": null,
"property2": null
},
"suggestions": [
"string"
],
"next": [
"string"
],
"requestId": "string"
}