Browse the extensions reference

Update Security

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

Part of 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