at.happyproto.server.stopInstance

happyproto.at

Documentation

Stop one of the caller's instances, and start a job that follows the stop. Customers only.

main procedure

Stop one of the caller's instances, and start a job that follows the stop. Customers only.

Input

Encodingapplication/json
id string Required

The instance's UUID.

idempotencyKey string Required

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.

Output

Encodingapplication/json
jobId string Required

The background job following the change. Poll it with at.happyproto.server.getJob.

Errors

AuthRequired This endpoint requires an authenticated caller.
Forbidden The caller is not a HappyProto customer, or the provisioner refused them.
InvalidRequest id or idempotencyKey is missing or not a UUID.
NotFound No such instance, or it is not the caller's. The two are indistinguishable.
InvalidSlug Passed through from the provisioner: it reserves slugs by configuration as well.
SlugTaken Passed through from the provisioner.
NotEntitled Passed through from the provisioner.
InstanceLimit Passed through from the provisioner.
NoCapacity Passed through from the provisioner.
OperationInProgress Passed through from the provisioner: the instance is already changing, or a request with this idempotencyKey is still running.
Upstream The provisioner is unreachable, not configured, or answered with an error it does not explain to callers, or the job could not be started.
Try It

Requests are sent directly from your browser. Some servers may block requests due to CORS.

Base URL for XRPC calls (e.g., https://bsky.social)
Enter valid JSON for the request body
View raw schema
{
  "description": "Stop one of the caller's instances, and start a job that follows the stop. 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": "id or idempotencyKey is missing or not a UUID.",
      "name": "InvalidRequest"
    },
    {
      "description": "No such instance, or it is not the caller's. The two are indistinguishable.",
      "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 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": {
        "id": {
          "description": "The instance's UUID.",
          "type": "string"
        },
        "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"
        }
      },
      "required": [
        "id",
        "idempotencyKey"
      ],
      "type": "object"
    }
  },
  "output": {
    "encoding": "application/json",
    "schema": {
      "properties": {
        "jobId": {
          "description": "The background job following the change. Poll it with at.happyproto.server.getJob.",
          "type": "string"
        }
      },
      "required": [
        "jobId"
      ],
      "type": "object"
    }
  },
  "type": "procedure"
}

Lexicon Garden

@