> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mls.onchainden.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Propose updating accounts

> [Admin Only] Creates a proposal to update existing accounts.

Note: Name changes are applied immediately upon request submission and do not 
require proposal execution. Only network additions require the full proposal workflow.
Only admin API members can make requests to this endpoint.




## OpenAPI

````yaml /openapi.yaml post /accounts/proposals/update
openapi: 3.1.0
info:
  title: Den API
  version: 2.0.0
  description: >
    API for managing wallets with Den. This API provides programmatic access to
    all platform capabilities

    including wallet accounts, members, groups, policies, and transactions.


    ## Authentication

    All API requests require authentication via Bearer token in the
    Authorization header.


    ## Idempotency

    All mutation requests (POST, PUT, DELETE) require an X-Idempotency-Key
    header for safe retries.


    ## Two Transaction Types

    - **Account Transactions**: Value movement and contract interactions
    (governed by policies)

    - **Organization Operations**: Governance/admin changes (governed by admin
    threshold)
servers:
  - url: https://api.onchainden.com/api/v1
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Members
    description: Manage organization members
  - name: Groups
    description: Manage member groups
  - name: Policies
    description: Manage transaction policies
  - name: Accounts
    description: Manage wallet accounts
  - name: Transactions
    description: Create and execute account transactions
  - name: Admins
    description: Manage admin configuration
  - name: AuditLogs
    description: View audit log entries
paths:
  /accounts/proposals/update:
    post:
      tags:
        - Accounts
      summary: Propose updating accounts
      description: >
        [Admin Only] Creates a proposal to update existing accounts.


        Note: Name changes are applied immediately upon request submission and
        do not 

        require proposal execution. Only network additions require the full
        proposal workflow.

        Only admin API members can make requests to this endpoint.
      operationId: createAccountUpdateProposal
      parameters:
        - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - items
              properties:
                items:
                  type: array
                  items:
                    $ref: '#/components/schemas/AccountUpdateItem'
                  description: List of account updates
            example:
              items:
                - id: acc_123
                  name: Main Treasury
                - id: acc_456
                  networkIds:
                    - 42161
      responses:
        '200':
          description: Account update proposal created
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                properties:
                  data:
                    $ref: '#/components/schemas/OrganizationOperationAccountsUpdate'
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/Conflict'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '426':
          $ref: '#/components/responses/UpgradeRequired'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
      x-codeSamples:
        - lang: javascript
          label: SDK
          source: |
            const client = new DenClient({ apiKey: 'ck_live_...' });
            const proposal = await client.proposeAccountUpdate({
              items: [
                { id: 'acc_123', name: 'Main Treasury' },
                { id: 'acc_456', networkIds: [42161] },
              ],
            });
components:
  parameters:
    IdempotencyKey:
      name: X-Idempotency-Key
      in: header
      required: true
      schema:
        type: string
        format: uuid
      description: Idempotency key for safely retrying mutation requests.
  schemas:
    AccountUpdateItem:
      type: object
      required:
        - id
      properties:
        id:
          type: string
          example: acc_123
        name:
          type: string
          example: Main Treasury
        networkIds:
          type: array
          items:
            $ref: '#/components/schemas/NetworkId'
          description: Network IDs to add to the account
    OrganizationOperationAccountsUpdate:
      allOf:
        - $ref: '#/components/schemas/OrganizationOperationBase'
        - type: object
          properties:
            resourceType:
              type: string
              const: accounts
            action:
              type: string
              const: update
            data:
              $ref: '#/components/schemas/AccountUpdateProposalData'
      example:
        id: prop_acc_update_123
        resourceType: accounts
        action: update
        signatureStatus: approvalReady
        executionStatus: completed
        threshold: 2
        approvals: []
        rejections: []
        createdAt: '2026-01-18T00:00:00.000Z'
        expiresAt: '2026-01-25T00:00:00.000Z'
        data:
          items:
            - id: acc_123
              name: Main Treasury
            - id: acc_456
              networkIds:
                - 42161
        result:
          resolution: approved
          resources:
            - type: account
              id: acc_123
              uri: /api/v1/accounts/acc_123
            - type: account
              id: acc_456
              uri: /api/v1/accounts/acc_456
    NetworkId:
      type: integer
      example: 1
      description: Network chain ID
    OrganizationOperationBase:
      type: object
      required:
        - id
        - resourceType
        - action
        - signatureStatus
        - executionStatus
        - threshold
        - approvals
        - rejections
        - createdAt
        - expiresAt
        - data
      properties:
        id:
          type: string
          example: prop_abc
        resourceType:
          $ref: '#/components/schemas/ResourceType'
        action:
          $ref: '#/components/schemas/ProposalAction'
        signatureStatus:
          $ref: '#/components/schemas/SignatureStatus'
        executionStatus:
          $ref: '#/components/schemas/ExecutionStatus'
        threshold:
          type: integer
          example: 2
        approvals:
          type: array
          items:
            $ref: '#/components/schemas/MemberSummary'
        rejections:
          type: array
          items:
            $ref: '#/components/schemas/MemberSummary'
        createdAt:
          type: string
          format: date-time
        expiresAt:
          type: string
          format: date-time
        data:
          description: Proposed resource state after execution.
        signingPayloads:
          $ref: '#/components/schemas/ReviewSigningPayloads'
          description: >-
            Present only while signatures can still be collected for non-expired
            organization operations
        result:
          $ref: '#/components/schemas/OrganizationOperationResult'
          description: Present only after execution
    AccountUpdateProposalData:
      type: object
      required:
        - items
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/AccountUpdateItem'
    Error:
      type: object
      required:
        - error
      properties:
        error:
          $ref: '#/components/schemas/ErrorObject'
    ResourceType:
      type: string
      enum:
        - members
        - groups
        - policies
        - accounts
        - admins
    ProposalAction:
      type: string
      enum:
        - create
        - update
        - remove
        - delete
    SignatureStatus:
      type: string
      enum:
        - pendingInitiatorSignature
        - pendingReviewSignatures
        - approvalReady
        - rejectionReady
        - approvalAndRejectionReady
        - expired
      description: >
        Current signature state in the approval workflow:

        - pendingInitiatorSignature: Account Transactions only - awaiting
        initiator signature

        - pendingReviewSignatures: Neither approval nor rejection threshold met

        - approvalReady: Approval threshold met, rejection not met

        - rejectionReady: Rejection threshold met, approval not met

        - approvalAndRejectionReady: Both thresholds met, either can be executed

        - expired: Proposal expired before execution
    ExecutionStatus:
      type: string
      nullable: true
      enum:
        - null
        - processing
        - completed
        - rejected
        - failed
        - blocked
      description: |
        Execution lifecycle state:
        - null: Not yet attempted
        - processing: Execution in progress
        - completed: Successfully executed
        - rejected: Successfully rejected
        - failed: Execution failed
        - blocked: Blocked by policy or constraint
    MemberSummary:
      type: object
      description: Abbreviated member info used in approvals/rejections arrays
      required:
        - id
        - name
        - type
        - walletAddress
      properties:
        id:
          type: string
          example: mem_123
        name:
          type: string
          example: Alice
        type:
          $ref: '#/components/schemas/MemberType'
        walletAddress:
          type: string
          pattern: ^0x[a-fA-F0-9]{40}$
    ReviewSigningPayloads:
      type: object
      required:
        - approvePayload
        - rejectPayload
      properties:
        approvePayload:
          type: string
          description: Payload for approval signature
        rejectPayload:
          type: string
          description: Payload for rejection signature
    OrganizationOperationResult:
      type: object
      required:
        - resolution
      properties:
        resolution:
          type: string
          enum:
            - approved
            - rejected
          description: Final outcome of the proposal execution
        resources:
          type: array
          items:
            $ref: '#/components/schemas/OrganizationOperationResultResource'
          description: Resources created or modified. Empty when rejected.
    ErrorObject:
      type: object
      required:
        - code
        - message
      properties:
        code:
          $ref: '#/components/schemas/ErrorCode'
        message:
          type: string
          description: Human-readable error message
        details:
          $ref: '#/components/schemas/ErrorDetails'
    MemberType:
      type: string
      enum:
        - user
        - api
      description: Type of member (user for human members, api for bots)
    OrganizationOperationResultResource:
      type: object
      required:
        - type
        - id
      properties:
        type:
          type: string
          description: Resource type that was created, updated, or removed
          example: member
        id:
          type: string
          description: Unique identifier of the affected resource
          example: mem_new1
        uri:
          type: string
          description: >-
            Canonical URI for the affected resource (omitted for
            removals/deletes)
          example: /api/v1/members/mem_new1
    ErrorCode:
      type: string
      enum:
        - validationError
        - invalidSignature
        - unauthorized
        - forbidden
        - notFound
        - conflict
        - thresholdNotMet
        - proposalExpired
        - idempotencyConflict
        - upgradeRequired
        - rateLimited
        - internalError
      description: Machine-readable error codes
    ErrorDetails:
      type: object
      additionalProperties: true
      description: Additional error details (structure varies by error type)
      properties:
        field:
          type: string
          description: Field that caused the error (for validation errors)
        message:
          type: string
          description: Detailed message about the error
  responses:
    ValidationError:
      description: Validation error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: validationError
              message: Validation failed
              details:
                field: name
                message: Name is required
    Unauthorized:
      description: API key is missing or invalid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: unauthorized
              message: Invalid API key
    Forbidden:
      description: Not permitted for this action
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: forbidden
              message: Not permitted for this action
    Conflict:
      description: Resource already exists or proposal already queued
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: conflict
              message: Resource already exists
    UnprocessableEntity:
      description: >-
        Request cannot be processed due to proposal state or idempotency
        conflict
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            thresholdNotMet:
              value:
                error:
                  code: thresholdNotMet
                  message: Threshold not reached
            proposalExpired:
              value:
                error:
                  code: proposalExpired
                  message: Proposal expired
            idempotencyConflict:
              value:
                error:
                  code: idempotencyConflict
                  message: Idempotency key used with different request body
    UpgradeRequired:
      description: HTTPS required; plain HTTP requests are rejected
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: upgradeRequired
              message: HTTPS required
    RateLimited:
      description: Too many requests
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: rateLimited
              message: Too many requests
    InternalError:
      description: Server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: internalError
              message: Server error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: >-
        API key authentication. Include your API key in the Authorization
        header.

````