Harthelm Docs
REST APIManaged services

Change a managed service

Needs `team.managed_services`, for a bound instance also `landscape.manage` on its workspace. Absent fields stay. `plan`, `resources` and `config` are checked like a create and against the change rules (`x-hart-change`: 422 `update-constraint` at the field); a change that asks for more storage than the instance's volume holds while its storage class has no `allowVolumeExpansion` is 422 `volume-cannot-grow` at `/plan` (or `/resources/<k>` when the request sets the storage), whose message names the class and the most the volume holds (1.3); `paused` needs the provider's `pause` capability (422 at `/paused`). The status goes `updating` (`pausing`, `unpausing`) and back to `synchronized`; some changes restart the server. `public` (1.4) switches an S3 store's browser host between gated and public at once, without a new generation or a restart: 422 at `/public` for a provider whose host cannot be public, 409 `public-hosts-disabled` while the installation forbids public hosts (`marketplace.browserHosts.allowPublic`); turning it off always works. An instance bound to a landscape takes only `backups` and `public` here (409 `managed-service-bound`: change `harthelm.yml` and Sync); a deleting or deleted one nothing (409 `managed-service-deleted`). Secrets change only through Rotate.

Generated from openapi/harthelm.yaml at v1.5.0
PATCH
/managed-services/{ms}

Authorization

cookie__Host-harthelm_session<token>

Browser session of the UI (12 h idle, 7 days absolute). State-changing requests also need the header Harthelm-CSRF: 1 and a matching Origin.

Path Parameters

ms*string

A managed service's id.

Formatuuid

Request Body

application/json
  1. body
Properties1 <= properties
plan?string
resources?
config?

The settings to change; absent keys stay.

paused?boolean
backups?boolean
public?boolean

A public browser host (S3 only, 1.4); no restart.

Response Body

The managed service.

application/json
  1. response
id*string
Formatuuid
team_id*ID

Numeric resource id.

Formatint64
Range1 <= value
workspace_id?ID

Numeric resource id.

Formatint64
Range1 <= value
name*ServiceNameValue
Match^[a-z]([-a-z0-9]{0,30}[a-z0-9])?$
provider*ProviderNameValue
Match^[a-z][a-z0-9-]{0,62}$
provider_version*ProviderVersionValue
Match^[1-9][0-9]{0,5}$
plan*string

The provider plan's id; empty for a provider without plans.

resources*

The plan's resource values with the instance's overrides (the provider's resources say what each one is).

config*

The settings, defaults applied.

secrets*array<>
details*

What the backend reports (fields.details), e.g. host, port, database, user, a DSN with **** for the password, ready.

status*ManagedServiceStatus
  • creating, updating, pausing, unpausing, deleting: the backend works on a change;
  • synchronized: it runs as asked; paused: data kept, no server (a torn-down landscape's database);
  • deleted: a tombstone, listed with include_deleted until it is purged;
  • unknown: the backend does not answer or does not report it; the details are the last known ones;
  • invalid-provider: its provider version is gone or no longer accepts its settings.
Value in"creating""updating""synchronized""pausing""paused""unpausing""deleting""deleted""unknown""invalid-provider"
status_detail?string

The backend's message when something failed, else empty.

paused*boolean

Asked to be paused (status says where it is).

backups*boolean

The nightly backup dumps it.

public*boolean

Asked for a public browser host (S3 only; 1.4): no sign-in, the store's public buckets readable by anyone. browser.public says whether the host is public now (the administrator may forbid public hosts).

browser?

The instance's own host for browsers (1.4): RabbitMQ's management UI and HTTP API, or an S3 store's API (path-style, presigned URLs, public buckets). Absent for providers without one and while the installation has marketplace.browserHosts.enabled off. The console opens a gated host through /auth/managed/{ms}.

last_dump_at?string

When the newest successful dump finished; absent before the first.

Formatdate-time
created_at*string
Formatdate-time
created_by?ID

Numeric resource id.

Formatint64
Range1 <= value
updated_at*string
Formatdate-time
deleted_at?string
Formatdate-time
purge_after?string

Tombstones, when the row goes for good.

Formatdate-time
curl -X PATCH 'https://console.example.com/api/v1/managed-services/497f6eca-6276-4993-bfeb-53cbbbba6f08' \  -H 'Content-Type: application/json' \  -d '{}'
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "team_id": 1,  "workspace_id": 1,  "name": "string",  "provider": "string",  "provider_version": "string",  "plan": "string",  "resources": {    "property1": 0,    "property2": 0  },  "config": {},  "secrets": [    {      "name": "string",      "vault_key": "string",      "revision": 1,      "rotated_at": "2019-08-24T14:15:22Z"    }  ],  "details": {},  "status": "creating",  "status_detail": "string",  "paused": true,  "backups": true,  "public": true,  "browser": {    "url": "http://example.com",    "kind": "management",    "public": true,    "public_allowed": true,    "sso": true  },  "last_dump_at": "2019-08-24T14:15:22Z",  "created_at": "2019-08-24T14:15:22Z",  "created_by": 1,  "updated_at": "2019-08-24T14:15:22Z",  "deleted_at": "2019-08-24T14:15:22Z",  "purge_after": "2019-08-24T14:15:22Z"}