at.happyproto.server.createInstance
Create an instance for the caller, and start a job that follows its provisioning. Customers only.
Details · procedure
| Kind | procedure |
|---|---|
| Authority | server.happyproto.at |
| Indexed |
Checks
Validunlimited-stringdefs.availableVersion.properties.labelNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.availableVersion.properties.versionNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.instance.properties.idNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.instance.properties.planNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.instance.properties.slugNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.instance.properties.stateNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.instance.properties.versionNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.instance.properties.versionLabelNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.input.schema.properties.idempotencyKeyNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.input.schema.properties.planNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.input.schema.properties.slugNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.output.schema.properties.jobIdNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.operation.properties.errorNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.operation.properties.idNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.operation.properties.kindNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.operation.properties.statusNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.operation.properties.stepNo maxLength, maxGraphemes or format limits this string.
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"availableVersion": {
"description": "A newer HappyView release the instance can upgrade to.",
"properties": {
"label": {
"description": "The HappyView version the release carries, e.g. 3.0.0-alpha.41, when known.",
"type": "string"
},
"releasedAt": {
"description": "When HappyProto first offered it.",
"format": "datetime",
"type": "string"
},
"version": {
"description": "The release to pass to at.happyproto.server.upgradeInstance.",
"type": "string"
}
},
"required": [
"version",
"releasedAt"
],
"type": "object"
},
"instance": {
"description": "A customer's HappyView instance. Never carries the provisioner's placement or internal fields.",
"properties": {
"availableVersion": {
"description": "A newer release, when one is on offer.",
"ref": "#availableVersion",
"type": "ref"
},
"createdAt": {
"format": "datetime",
"type": "string"
},
"id": {
"description": "A UUID.",
"type": "string"
},
"operation": {
"description": "The change in progress, if any.",
"ref": "#operation",
"type": "ref"
},
"plan": {
"description": "The plan's id.",
"type": "string"
},
"slug": {
"type": "string"
},
"state": {
"knownValues": [
"provisioning",
"running",
"stopped",
"failed",
"deleting"
],
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
},
"version": {
"description": "The HappyView release it runs.",
"type": "string"
},
"versionLabel": {
"description": "The HappyView version the release carries, e.g. 3.0.0-alpha.41, when known.",
"type": "string"
}
},
"required": [
"id",
"slug",
"url",
"plan",
"version",
"state",
"createdAt"
],
"type": "object"
},
"main": {
"description": "Create an instance for the caller, and start a job that follows its provisioning. Customers only.",
"errors": [
{
"description": "This endpoint requires an authenticated caller.",
"name": "AuthRequired"
},
{
"description": "The caller is not a HappyProto customer, or the provisioner refused them.",
"name": "Forbidden"
},
{
"description": "slug, plan or idempotencyKey is missing or malformed.",
"name": "InvalidRequest"
},
{
"description": "Passed through from the provisioner.",
"name": "NotFound"
},
{
"description": "Passed through from the provisioner: it reserves slugs by configuration as well.",
"name": "InvalidSlug"
},
{
"description": "Passed through from the provisioner.",
"name": "SlugTaken"
},
{
"description": "Passed through from the provisioner.",
"name": "NotEntitled"
},
{
"description": "Passed through from the provisioner.",
"name": "InstanceLimit"
},
{
"description": "Passed through from the provisioner.",
"name": "NoCapacity"
},
{
"description": "Passed through from the provisioner: the instance is already changing, or a request with this idempotencyKey is still running.",
"name": "OperationInProgress"
},
{
"description": "The caller's account hasn't accepted the beta terms (actor.acceptTerms), and the create carried no acceptance of its own, or one without its wording.",
"name": "TermsRequired"
},
{
"description": "The caller accepted only older beta terms than the ones in force: accept the current ones and try again.",
"name": "TermsOutdated"
},
{
"description": "The provisioner is unreachable, not configured, or answered with an error it does not explain to callers, or the job could not be started.",
"name": "Upstream"
}
],
"input": {
"encoding": "application/json",
"schema": {
"properties": {
"idempotencyKey": {
"description": "A UUID the client generates once per intended change and resends on every retry of it, so a retry gets the original reply instead of acting twice.",
"type": "string"
},
"plan": {
"description": "The plan's id, from at.happyproto.server.listPlans.",
"type": "string"
},
"slug": {
"description": "The instance's subdomain: 3 to 32 of a-z, 0-9 and -, starting with a letter.",
"type": "string"
},
"terms": {
"description": "An acceptance of the beta terms made with this create, as dashboards from before sign-in acceptance send. Optional: the caller's account accepts them once with actor.acceptTerms, and the provisioner refuses a create unless one or the other covers the terms in force (TermsRequired, TermsOutdated), staff included.",
"ref": "#termsAcceptance",
"type": "ref"
}
},
"required": [
"slug",
"plan",
"idempotencyKey"
],
"type": "object"
}
},
"output": {
"encoding": "application/json",
"schema": {
"properties": {
"instance": {
"ref": "#instance",
"type": "ref"
},
"jobId": {
"description": "The background job following the change. Poll it with at.happyproto.server.getJob.",
"type": "string"
}
},
"required": [
"instance",
"jobId"
],
"type": "object"
}
},
"type": "procedure"
},
"operation": {
"properties": {
"error": {
"description": "The provisioner's error code, when it failed.",
"type": "string"
},
"id": {
"type": "string"
},
"kind": {
"knownValues": [
"create",
"update",
"upgrade",
"stop",
"start",
"destroy"
],
"type": "string"
},
"status": {
"knownValues": [
"pending",
"running",
"succeeded",
"failed"
],
"type": "string"
},
"step": {
"description": "The step it last reached.",
"type": "string"
}
},
"required": [
"id",
"kind",
"status"
],
"type": "object"
},
"termsAcceptance": {
"description": "An acceptance of the beta terms, recorded append-only by the provisioner with the caller's DID.",
"properties": {
"termsVersion": {
"description": "The terms in force, e.g. beta-2026-11. Anything else is TermsOutdated.",
"maxLength": 64,
"type": "string"
},
"text": {
"description": "The exact wording the caller ticked.",
"maxLength": 1000,
"type": "string"
},
"textVersion": {
"description": "The version of the checkbox's wording.",
"maxLength": 32,
"type": "string"
}
},
"required": [
"termsVersion",
"textVersion",
"text"
],
"type": "object"
}
},
"id": "at.happyproto.server.createInstance",
"lexicon": 1
}