set_portfolio_members

Set a portfolio's orgs

act entity tenant-private since 2026-10-01

Replaces a portfolio's orgs with the set given, and returns the set. A portfolio in an account holds only that account's orgs. Sending the same set again, in any order, changes nothing.

Contract

shape
entity
authority
act
evidence
none
subscription
false
permission
any one of: staff.provision (the staff role staff_provision held in the Internal org, tradehq_role.staff_role); account.owner (account role owner or higher in the account that owns the portfolio `portfolio_id`; a portfolio with no account is staff's); a deactivated caller is refused first
idempotency
natural
emits
portfolio.changed
MCP tool
set_portfolio_members
decision_set
approve, reject, edit, request_info
REST
POST https://api.containertradehq.com/v1/cap/set_portfolio_members

Through MCP this call returns an approval request first; see Approvals.

Idempotency: keyed by the contract's own inputs: the same inputs replay the first call's result

Inputs

nametyperequiredvalidation
portfolio_idportfolio_idrequiredtradehq-portfolio-id
The portfolio.
org_idsorg_idsrequired0 to 500 items; unique
Every org the portfolio is to hold, and no others. An empty list empties it.

Response

  • portfolio_id · string · The portfolio.
  • org_ids · string[] · Its orgs, sorted.
Full JSON Schema
{
  "type": "object",
  "properties": {
    "portfolio_id": {
      "type": "string",
      "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
      "format": "tradehq-portfolio-id",
      "description": "The portfolio.",
      "x-data-class": "operational"
    },
    "org_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 20,
        "pattern": "^[A-Za-z0-9_-]{1,20}$",
        "format": "tradehq-org-id"
      },
      "description": "Its orgs, sorted.",
      "x-data-class": "operational"
    }
  },
  "required": [
    "portfolio_id",
    "org_ids"
  ],
  "additionalProperties": false
}

Refusals

not yet declared

The platform refusals apply to every call: version, authentication, authority, validation and rate limits, each in the same envelope.

Surfaces

DesktopF
MobileD5
APIF
MCPF*
VoiceD2
PushF
OneBoxN
OutboundN
  • Mobile: degraded: composition
  • MCP: approval required
  • Voice: degraded: confirmation
  • OneBox: no document originates a portfolio change
  • Outbound: crosses to no counterparty

Events

Related

None.