UpshiftDocs
REST APIInstitutional API

Governance

Roles, permissions, timelocks, and the audit log for a vault.

Get Vault Roles

Owner + Operator rows enriched with Safe metadata and the Fordefi check.

Enrichment failures degrade the affected fields (is_safe=False etc.) and add a warning — the endpoint never 500s because a third party is down. Non-EVM vaults return 422: their programs expose no owner.

GET
/upshift/governance/{vault_address}/roles

Path Parameters

vault_addressVault Address

Query Parameters

chain_idChain Id

Response Body

curl -X GET "https://api.upshift.finance/api/v1/upshift/governance/string/roles?chain_id=0"
null
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

Get Vault Permissions

Flat vault-wide permissions table from the Postgres integrations graph.

All EOAOperator and Subaccount rows of the vault contribute their integrations across every chain (operators trade cross-chain, so filtering to the vault's own chain would hide most of the whitelist); each row carries its integration's chain_id. Grouped by (integration, chain) with token symbols, AA role names, and spenders unioned. Vaults with no configured integrations return an empty list.

GET
/upshift/governance/{vault_address}/permissions

Path Parameters

vault_addressVault Address

Query Parameters

chain_idChain Id

Response Body

curl -X GET "https://api.upshift.finance/api/v1/upshift/governance/string/permissions?chain_id=0"
null
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

Get Vault Timelocks

Actions queued in the vault timelock, one row per scheduled request.

status mirrors the main app's /timelock-requests semantics: a single TimelockStatus value or all; default shows the pending queue. Empty queue returns timelocks: [].

GET
/upshift/governance/{vault_address}/timelocks

Path Parameters

vault_addressVault Address

Query Parameters

chain_idChain Id
status?Status
Default"scheduled"

Response Body

curl -X GET "https://api.upshift.finance/api/v1/upshift/governance/string/timelocks?chain_id=0&status=scheduled"
null
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

Get Vault Audit Log

Chronological governance log: timelock actions (derived live from timelock_request) merged with backend-owned manual entries (audit_log table), newest first. before + limit page older entries; the log starts at launch — no historical backfill.

GET
/upshift/governance/{vault_address}/audit_log

Path Parameters

vault_addressVault Address

Query Parameters

chain_idChain Id
category?Category
before?Before
limit?Limit
Default50

Response Body

curl -X GET "https://api.upshift.finance/api/v1/upshift/governance/string/audit_log?chain_id=0&category=string&before=2019-08-24T14%3A15%3A22Z&limit=50"
null
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}