ores.iam.tenant_provisioning_messages

Table of Contents

The tenant_provisioning protocol messages.

1. Includes

#include <cstdint>
#include <string>
#include <string_view>
#include <vector>

2. Messages

2.1. provision_tenant_command

/**
 * @brief Provisions a tenant from a seed profile.
 *
 * The tenant and its administrator are created before the answer; the steps
 * the profile orders run afterwards as a workflow instance, whose id the
 * answer carries. This is the one verb for every tenant, the first one
 * included, and it replaces iam.v1.bootstrap.provision-tenant and
 * iam.v1.ops.provision_tenant-acme.
 *
 * The answer takes longer than the transport's default request timeout,
 * because creating the tenant copies the deployment's registered data into it
 * -- its roles, its permissions and its lookup tables -- before the steps are
 * dispatched. The budget is the one the bootstrap verb this replaces declared.
 */

2.1.1. profile_code

/**
 * @brief Code of the seed profile to provision from.
 *
 * The profile states the tenant's type, the steps to run and the parameters
 * this request must supply. An unknown code is refused.
 */

2.1.2. tenant_code

/**
 * @brief Unique code of the tenant to create.
 */

2.1.3. tenant_name

/**
 * @brief Display name of the tenant.
 */

2.1.4. tenant_hostname

/**
 * @brief Hostname of the tenant.
 *
 * A principal of the form username@hostname resolves its tenant through this
 * value.
 */

2.1.5. tenant_description

/**
 * @brief Optional description for the tenant record.
 */

2.1.6. admin_username

/**
 * @brief Username of the tenant's first administrator, without a hostname
 * part.
 */

2.1.7. admin_email

/**
 * @brief Email address of that administrator.
 */

2.1.8. admin_password

/**
 * @brief Initial password of that administrator.
 *
 * A client that reuses the caller's own password, as a demonstration
 * profile's form does, sends it here: a server cannot read the password its
 * caller signed in with.
 */

2.1.9. parameters

/**
 * @brief Values for the profile's declared parameters, one "name=value" entry
 * each.
 *
 * A parameter the profile does not declare is refused, and so is a value the
 * parameter's data type or its choices refuse. A parameter this list omits
 * takes the profile's default; one that is required, omitted and declares no
 * default is refused, and so is a required parameter whose value is empty.
 */

2.2. provision_tenant_command_response

/**
 * @brief The answer to a provision request.
 *
 * The tenant and its administrator exist by the time this answers, and the steps
 * the starting point orders run afterwards, so the answer carries the run's id
 * rather than waiting for work that takes minutes.
 */

2.2.1. success

2.2.2. message

2.2.3. instance_id

/**
 * @brief Id of the workflow instance that runs the profile's steps.
 *
 * The caller follows the run, its progress and its retries by this id.
 */

2.2.4. tenant_id

/**
 * @brief Id of the tenant the request created.
 */

2.2.5. account_id

/**
 * @brief Id of the administrator account it created.
 */

2.3. provision_party_command

/**
 * @brief Provisions one party of the caller's own tenant.
 *
 * The tenant exists already: this request provisions one of its parties, the
 * one an administrator names. The party stage is one request because both
 * clients drive it and neither is the reference — the browser when a person
 * adds a party, the shell when a script does — and the work runs as a workflow
 * instance, whose id the answer carries, because publishing a party's data
 * takes minutes and can fail half way.
 */

2.3.1. party

/**
 * @brief The party to provision, by its identifier or its exact full name.
 *
 * A person types the name they know the party by and a script states the
 * identifier it read; the read that resolves either is the party read, so
 * neither spelling is privileged.
 */

2.3.2. profile_code

/**
 * @brief Code of the seed profile whose party stage the request runs.
 *
 * A party's data is the starting point's and the starting point states it as
 * a row: the bundles a party is published from are the profile's
 * "provision_party" step arguments. An unknown code is refused, and so is a
 * profile that orders no party step.
 *
 * An empty code means the deployment's own party starting point, which is the
 * first profile that orders a party step. A tenant administrator cannot name a
 * profile: the profiles are the system tenant's rows, and a tenant reads only
 * its own, so the service that holds both is the one that chooses.
 */

2.3.3. lei

/**
 * @brief The legal entity the party was built from, or empty for one that is
 * not in the register.
 *
 * A person who adds a party either finds the legal entity among those the
 * deployment holds or names the party by hand, and the LEI is what tells the
 * two apart: the register's identifier of the entity the party is, or nothing
 * at all.
 *
 * The run records it, because a party identifier carries the party the writing
 * session acts in and the person who adds a party works in another one. An
 * empty value leaves the party without an LEI, which is the party a person
 * described by hand.
 */

2.4. provision_party_command_response

2.4.1. success

2.4.2. message

2.4.3. instance_id

/**
 * @brief Id of the workflow instance that runs the party stage.
 *
 * The caller follows the run, its progress and its retries by this id.
 */

2.4.4. party_id

/**
 * @brief Id of the party the request resolved.
 */

Emacs 29.3 (Org mode 9.6.15)