concierge.v1.GovernanceService

Propose PERMANENTLY suspending a user (Owner only). The half of the old DisableUser verb that is not an emergency: UserDirectory.HoldUser freezes the account now and lapses in 24h, and this is what makes it stay.

A reason is required. It is what the other owners are voting on, and a decision to freeze somebody's account with no stated cause cannot be reviewed afterwards.

post/concierge.v1.GovernanceService/OpenUserSuspension

Request

  • The document declares no server URL.
  • Auth: none required

Headers

Connect-Protocol-Version1 required

Define the version of the Connect protocol

Connect-Timeout-Msnumber

Define the timeout, in ms

Request body

user_idstring
reasonstring

REQUIRED — it is what the other owners are voting on.

Response

Success

idstring
kind'USER_PROPOSAL_KIND_UNSPECIFIED' | 'USER_PROPOSAL_KIND_SUSPENSION' | 'USER_PROPOSAL_KIND_REINSTATEMENT' | 'USER_PROPOSAL_KIND_ADMIN_ADMISSION'

What a UserProposal decides. Three kinds share one message because all three are the same question — "do the owners agree to change this person's standing?" — differing only in what the verdict writes.

state'USER_PROPOSAL_STATE_UNSPECIFIED' | 'USER_PROPOSAL_STATE_OPEN' | 'USER_PROPOSAL_STATE_EXECUTED' | 'USER_PROPOSAL_STATE_REJECTED' | 'USER_PROPOSAL_STATE_EXPIRED' | 'USER_PROPOSAL_STATE_CANCELLED' | 'USER_PROPOSAL_STATE_VOID'

The six states, again as their own enum: proto enum VALUES share one namespace per package, so the identical states have to be spelled three times even though the domain models them with one type.

subject_user_idstring

Any user — NOT necessarily an owner. That is the difference from OwnerAdmission, and the reason none of its roster checks have an analogue here.

subject_emailstring
initiator_user_idstring
initiator_emailstring
reasonstring

Why, in the initiator's words. Required, and shown to every voter.

owner_countinteger

Owners at open. The initiator is counted but does not vote.

thresholdinteger

How many of peers must vote FOR, frozen at open — so a surface shows the bar this proposal is actually measured against, not one re-derived from a roster that moved.

void_reasonstring

Changes

No recorded changes to this operation across all 1 revision of this API.