Browse the API reference

Update Security

post/extensions/roboinvestor/{graph_id}/operations/update-security

Part of Extensions: RoboInvestor.

Update mutable fields on a security (name, type, subtype, terms, share counts, entity linkage). Unset fields are ignored.

Idempotency: supply an Idempotency-Key header to make safe retries; replays within 24 hours return the same envelope. Reusing the key with a different body returns HTTP 409 Conflict.

Authentication

Authenticate in any one of these ways — not all of them:

  • API key in the X-API-Key header.
  • Bearer token in the Authorization header.

Path parameters

NameTypeDescription
graph_idrequiredstringGraph Id

Header parameters

NameTypeDescription
Idempotency-KeyoptionalstringIdempotency-Key

Request body

Required, application/json.

FieldTypeDescription
entity_idoptionalstring

Reassign to a different issuing entity. Unset = unchanged.

source_graph_idoptionalstring

Update the pre-association tenant graph. Unset = unchanged.

nameoptionalstring

New display name. Unset = unchanged.

security_typeoptionalstring

New instrument family. Unset = unchanged. Reclassifying a security may invalidate existing `terms` shape; the operation does not validate the cross-field consistency.

security_subtypeoptionalstring

New subtype refinement. Unset = unchanged.

termsoptionalobject

Replacement terms blob. Pass `null`/omit to leave existing terms unchanged; pass `{}` to clear them.

is_activeoptionalboolean

Active flag. Set `false` to soft-deactivate (positions remain addressable but the security is hidden from active lookups).

authorized_sharesoptionalinteger

New authorized share count. Unset = unchanged.

outstanding_sharesoptionalinteger

New outstanding share count. Unset = unchanged.

security_idrequiredstring

Target security ID.

Example request

curl
curl -X POST "https://api.robosystems.ai/extensions/roboinvestor/{graph_id}/operations/update-security" \
  -H "X-API-Key: $ROBOSYSTEMS_API_KEY" \
  -H "Idempotency-Key: <Idempotency-Key>" \
  -H "Content-Type: application/json" \
  -d '{
  "outstanding_shares": 7250000,
  "security_id": "sec_acme_common_a"
}'

Responses

200 Successful Response

FieldTypeDescription
operationrequiredstring

Kebab-case operation name

operationIdrequiredstring

op_-prefixed ULID for audit and SSE correlation

statusrequiredstring

Operation lifecycle state

One of: completed, pending, failed

resultoptionalSecurityResponse

Command-specific result payload

SecurityResponse fields
FieldTypeDescription
idrequiredstring

Security ID (`sec_*` ULID).

entity_idoptionalstring

ID of the issuing entity, when set.

entity_nameoptionalstring

Cached display name of the issuing entity, denormalized for list rendering. May lag the entity row's current name briefly.

source_graph_idoptionalstring

Tenant graph this security is pre-associated to, when the issuer entity hasn't been promoted yet.

namerequiredstring

Display name of the security.

security_typerequiredstring

Instrument family (e.g. `common_stock`, `preferred_stock`, `warrant`, `convertible_note`).

security_subtypeoptionalstring

Optional subtype refinement (e.g. `class_a`, `series_a`).

termsrequiredobject

Instrument-specific terms blob. Shape depends on `security_type` — see `CreateSecurityRequest.terms` for common keys.

is_activerequiredboolean

`true` when the security is in active status; `false` after a soft-delete or deactivation.

authorized_sharesoptionalinteger

Total shares authorized for this class, when set.

outstanding_sharesoptionalinteger

Shares currently issued and outstanding.

created_atrequiredstring (date-time)

Row creation timestamp (UTC).

updated_atrequiredstring (date-time)

Last-modified timestamp (UTC).

atrequiredstring

ISO-8601 UTC timestamp

createdByoptionalstring

User ID that initiated the operation (null for legacy callers)

idempotentReplayoptionalboolean

True when this envelope came from the idempotency cache — the underlying command did not execute again. False on fresh executions.

Default: false

StatusMeaning
400Invalid request
401Authentication required
403Access denied
404Resource not found
409Idempotency-Key conflict — key reused with different body
422Validation error
429Rate limit exceeded
500Internal server error