Xeonr Developer Docs
API SpecificationFunctions

Create function

POST
/xeonr.functions.v1.FunctionService/CreateFunction

Creates a function and assigns its hostname. The kind is required and immutable, and the new function is scaffolded with a working hello-world so that "created" and "deployable" are the same state.

Authorization

BearerAuth
AuthorizationBearer <token>

A team API token, created by a team owner and presented as Authorization: Bearer fnt_…. The secret is shown once at creation and stored only as a hash.

In: header

Header Parameters

Connect-Protocol-Version*number

Define the version of the Connect protocol

Value in1
Connect-Timeout-Ms?number

Define the timeout, in ms

Request Body

application/json

displayName?string

display_name is what a human calls this function.

kind?string

kind is required: a build never has to guess, and a wrong guess would otherwise surface as a build failure rather than as a question.

Value in"KIND_UNSPECIFIED" | "KIND_NODE" | "KIND_GO" | "KIND_STATIC"
ownerTeam?string

owner_team is the owning Xeonr team's URN. Required; a token always uses its own team.

build?

BuildConfig is the author's declared intent. Every field is optional, and each applies to only some kinds.

scaling?

ScalingSpec is passed through to the platform. Ignored for static functions, which have nothing to scale. An unset field means the platform's default.

env?
[key: string]?never

Response Body

application/json

application/json

curl -X POST "https://functions.xeonr.io/xeonr.functions.v1.FunctionService/CreateFunction" \  -H "Connect-Protocol-Version: 1" \  -H "Content-Type: application/json" \  -d '{}'
{
  "function": {
    "functionId": "string",
    "name": "string",
    "displayName": "string",
    "ownerTeam": "string",
    "kind": "KIND_UNSPECIFIED",
    "build": {
      "packages": [
        "string"
      ],
      "entrypoint": [
        "string"
      ],
      "port": 0,
      "staticDir": "string",
      "mainPackage": "string"
    },
    "scaling": {
      "minInstances": 0,
      "maxInstances": 0,
      "concurrency": 0,
      "idleTimeoutSec": 0,
      "activationTimeoutSec": 0
    },
    "env": {
      "property1": "string",
      "property2": "string"
    },
    "secretKeys": [
      "string"
    ],
    "git": {
      "provider": "GIT_PROVIDER_UNSPECIFIED",
      "repo": "string",
      "branch": "string",
      "subdirectory": "string",
      "webhookUrl": "string",
      "credentialsSet": true,
      "authMode": "AUTH_MODE_UNSPECIFIED",
      "installationId": 0,
      "credentialExpiresAtUnix": 0
    },
    "activeVersionId": "string",
    "filesReadOnly": true,
    "createdAtUnix": 0,
    "updatedAtUnix": 0,
    "activeVersion": {
      "versionId": "string",
      "functionId": "string",
      "state": "VERSION_STATE_UNSPECIFIED",
      "snapshotId": "string",
      "environmentId": "string",
      "appId": "string",
      "staticRoot": "string",
      "gitCommit": "string",
      "gitRef": "string",
      "failureMessage": "string",
      "createdAtUnix": 0
    },
    "latestVersion": {
      "versionId": "string",
      "functionId": "string",
      "state": "VERSION_STATE_UNSPECIFIED",
      "snapshotId": "string",
      "environmentId": "string",
      "appId": "string",
      "staticRoot": "string",
      "gitCommit": "string",
      "gitRef": "string",
      "failureMessage": "string",
      "createdAtUnix": 0
    }
  }
}
{
  "code": "not_found",
  "message": "string",
  "details": [
    {
      "type": "string",
      "value": "string",
      "debug": {}
    }
  ]
}