Fordefi Address Book API

These endpoints allow you to list the contacts in your address book.To add/remove contacts, visit the Fordefi web console. See the user guide for more info.

OpenAPI Specification

fordefi-address-book-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Fordefi Address Book API
  version: 0.2.0
  description: These endpoints allow you to list the contacts in your address book.<br><br>To add/remove contacts, visit the Fordefi web console. See the <a href='https://docs.fordefi.com/user-guide/address-book'>user guide</a> for more info.
servers:
- url: https://api.fordefi.com/
  description: Production
security:
- bearerAuth: []
tags:
- name: Address Book
  description: These endpoints allow you to list the contacts in your address book.<br><br>To add/remove contacts, visit the Fordefi web console. See the <a href='https://docs.fordefi.com/user-guide/address-book'>user guide</a> for more info.
paths:
  /api/v1/addressbook/contacts:
    post:
      tags:
      - Address Book
      summary: Create Contact
      description: Create a new address book contact in an organization.
      operationId: create_contact_api_v1_addressbook_contacts_post
      parameters:
      - name: x-signature
        in: header
        required: false
        schema:
          description: Signature of the body. Base64 encoded string. If the request is made programatically by an API user, signing of the request is required and is intended to protect you from malicious backends. `x_signature` is valid for 120 seconds.
          title: X-Signature
          type: string
          example: SGVsbG8=
        description: Signature of the body. Base64 encoded string. If the request is made programatically by an API user, signing of the request is required and is intended to protect you from malicious backends. `x_signature` is valid for 120 seconds.
      - name: x-timestamp
        in: header
        required: false
        schema:
          description: Timestamp of the signature. Integer. Specify an Epoch date. If the request is made programatically by an API user, the timestamp of the request is required and is intended to protect you from replay attacks.
          title: X-Timestamp
          type: integer
        description: Timestamp of the signature. Integer. Specify an Epoch date. If the request is made programatically by an API user, the timestamp of the request is required and is intended to protect you from replay attacks.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateContactRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressBookContact'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PreconditionFailedError'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '500':
          description: Unexpected Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '401':
          description: Unauthorized User
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '403':
          description: Forbidden User
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '408':
          description: Request Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '429':
          description: Rate Limit Exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitError'
    get:
      tags:
      - Address Book
      summary: List Contacts
      description: Get a list of all contacts in an organization.
      operationId: list_contacts_api_v1_addressbook_contacts_get
      parameters:
      - name: sort_by
        in: query
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ContactSortableFields'
          title: Sort By
      - name: page
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          description: The page number to fetch.
          default: 1
          title: Page
        description: The page number to fetch.
      - name: size
        in: query
        required: false
        schema:
          type: integer
          maximum: 100
          minimum: 0
          description: The number of items per page.
          default: 50
          title: Size
        description: The number of items per page.
      - name: skip_count
        in: query
        required: false
        schema:
          type: boolean
          description: Whether to skip counting the total number of items.
          default: false
          title: Skip Count
        description: Whether to skip counting the total number of items.
      - name: contact_ids
        in: query
        required: false
        schema:
          description: The contact IDs to filter by.
          title: Contact Ids
          type: array
          items:
            type: string
            format: uuid
        description: The contact IDs to filter by.
      - name: names
        in: query
        required: false
        schema:
          description: The names to filter by.
          title: Names
          type: array
          items:
            type: string
        description: The names to filter by.
      - name: states
        in: query
        required: false
        schema:
          description: The states to filter by.
          title: States
          type: array
          items:
            $ref: '#/components/schemas/AddressBookContactState'
        description: The states to filter by.
      - name: chain_types
        in: query
        required: false
        schema:
          description: The chain types to filter by.
          title: Chain Types
          type: array
          items:
            $ref: '#/components/schemas/ChainType'
        description: The chain types to filter by.
      - name: chains
        in: query
        required: false
        schema:
          description: The chain unique ids to filter by.
          title: Chains
          type: array
          items:
            type: string
            minLength: 1
            description: The unique chain ID. </br>Can be either one of those supported by the default chains below or a custom numeric EVM chain ID `evm_<chain_id>` if one was added to your organization. <ul><li>`"aptos_mainnet"`</li><li>`"aptos_testnet"`</li><li>`"aptos_movement_mainnet"`</li><li>`"aptos_movement_testnet"`</li><li>`"arch_mainnet"`</li><li>`"arch_testnet"`</li><li>`"canton_mainnet"`</li><li>`"cosmos_agoric-3"`</li><li>`"cosmos_akashnet-2"`</li><li>`"cosmos_archway-1"`</li><li>`"cosmos_axelar-dojo-1"`</li><li>`"cosmos_bbn-1"`</li><li>`"cosmos_celestia"`</li><li>`"cosmos_cosmoshub-4"`</li><li>`"cosmos_dydx-mainnet-1"`</li><li>`"cosmos_dydx-testnet-4"`</li><li>`"cosmos_dymension_1100-1"`</li><li>`"cosmos_injective-1"`</li><li>`"cosmos_neutron-1"`</li><li>`"cosmos_nillion-1"`</li><li>`"cosmos_noble-1"`</li><li>`"cosmos_osmosis-1"`</li><li>`"cosmos_provider"`</li><li>`"cosmos_ssc-1"`</li><li>`"cosmos_pacific-1"`</li><li>`"cosmos_stride-1"`</li><li>`"cosmos_thorchain-1"`</li><li>`"cosmos_mantra-1"`</li><li>`"exchange_binance"`</li><li>`"exchange_bybit"`</li><li>`"exchange_coinbase_international"`</li><li>`"exchange_coinbase_us"`</li><li>`"exchange_okx"`</li><li>`"exchange_kraken"`</li><li>`"ripple_mainnet"`</li><li>`"solana_mainnet"`</li><li>`"solana_devnet"`</li><li>`"solana_eclipse_mainnet"`</li><li>`"solana_fogo_mainnet"`</li><li>`"solana_fogo_testnet"`</li><li>`"stacks_mainnet"`</li><li>`"starknet_mainnet"`</li><li>`"stellar_mainnet"`</li><li>`"sui_mainnet"`</li><li>`"sui_testnet"`</li><li>`"ton_mainnet"`</li><li>`"tron_mainnet"`</li><li>`"tron_shasta"`</li><li>`"bitcoin_mainnet"`</li><li>`"bitcoin_testnet"`</li><li>`"bitcoin_testnet_v4"`</li><li>`"dogecoin_mainnet"`</li><li>`"bitcoin_cash_mainnet"`</li><li>`"pearl_testnet"`</li><li>`"pearl_mainnet"`</li><li>`"evm_1"`</li><li>`"evm_5"`</li><li>`"evm_10"`</li><li>`"evm_14"`</li><li>`"evm_16"`</li><li>`"evm_30"`</li><li>`"evm_56"`</li><li>`"evm_100"`</li><li>`"evm_130"`</li><li>`"evm_137"`</li><li>`"evm_143"`</li><li>`"evm_146"`</li><li>`"evm_169"`</li><li>`"evm_196"`</li><li>`"evm_250"`</li><li>`"evm_324"`</li><li>`"evm_999"`</li><li>`"evm_1030"`</li><li>`"evm_1100"`</li><li>`"evm_1101"`</li><li>`"evm_1329"`</li><li>`"evm_1337"`</li><li>`"evm_1666"`</li><li>`"evm_1672"`</li><li>`"evm_1729"`</li><li>`"evm_2222"`</li><li>`"evm_4200"`</li><li>`"evm_4217"`</li><li>`"evm_4663"`</li><li>`"evm_5000"`</li><li>`"evm_7000"`</li><li>`"evm_7700"`</li><li>`"evm_8453"`</li><li>`"evm_8818"`</li><li>`"evm_8819"`</li><li>`"evm_9745"`</li><li>`"evm_16661"`</li><li>`"evm_17000"`</li><li>`"evm_80001"`</li><li>`"evm_80094"`</li><li>`"evm_42161"`</li><li>`"evm_43113"`</li><li>`"evm_43114"`</li><li>`"evm_57073"`</li><li>`"evm_59144"`</li><li>`"evm_81457"`</li><li>`"evm_421614"`</li><li>`"evm_534352"`</li><li>`"evm_660279"`</li><li>`"evm_747474"`</li><li>`"evm_810180"`</li><li>`"evm_11155111"`</li><li>`"evm_ethereum_mainnet"`</li><li>`"evm_ethereum_goerli"`</li><li>`"evm_optimism_mainnet"`</li><li>`"evm_flare_mainnet"`</li><li>`"evm_flare_testnet"`</li><li>`"evm_rootstock_mainnet"`</li><li>`"evm_bsc_mainnet"`</li><li>`"evm_gnosis_mainnet"`</li><li>`"evm_unichain_mainnet"`</li><li>`"evm_polygon_mainnet"`</li><li>`"evm_monad_mainnet"`</li><li>`"evm_sonic_mainnet"`</li><li>`"evm_manta_pacific_mainnet"`</li><li>`"evm_x_layer_mainnet"`</li><li>`"evm_fantom_mainnet"`</li><li>`"evm_zksync_era_mainnet"`</li><li>`"evm_hyperevm_mainnet"`</li><li>`"evm_conflux_mainnet"`</li><li>`"evm_dymension_mainnet"`</li><li>`"evm_polygon_zkevm_mainnet"`</li><li>`"evm_sei_mainnet"`</li><li>`"evm_hypercore_mainnet"`</li><li>`"evm_aster_mainnet"`</li><li>`"evm_pharos_mainnet"`</li><li>`"evm_reya_mainnet"`</li><li>`"evm_kava_mainnet"`</li><li>`"evm_merlin_mainnet"`</li><li>`"evm_tempo_mainnet"`</li><li>`"evm_robinhood_mainnet"`</li><li>`"evm_mantle_mainnet"`</li><li>`"evm_zeta_mainnet"`</li><li>`"evm_canto_mainnet"`</li><li>`"evm_base_mainnet"`</li><li>`"evm_clink_mainnet"`</li><li>`"evm_clink_testnet"`</li><li>`"evm_plasma_mainnet"`</li><li>`"evm_zero_gravity_mainnet"`</li><li>`"evm_ethereum_holesky"`</li><li>`"evm_polygon_mumbai"`</li><li>`"evm_berachain_mainnet"`</li><li>`"evm_arbitrum_mainnet"`</li><li>`"evm_avalanche_fuji"`</li><li>`"evm_avalanche_chain"`</li><li>`"evm_ink_mainnet"`</li><li>`"evm_linea_mainnet"`</li><li>`"evm_blast_mainnet"`</li><li>`"evm_arbitrum_sepolia"`</li><li>`"evm_scroll_mainnet"`</li><li>`"evm_xai_mainnet"`</li><li>`"evm_katana_mainnet"`</li><li>`"evm_zklink_nova_mainnet"`</li><li>`"evm_ethereum_sepolia"`</li></ul>
            title: ChainUniqueId
        description: The chain unique ids to filter by.
      - name: asset_ids
        in: query
        required: false
        schema:
          description: List of asset identifiers to filter on.
          title: Asset Ids
          type: array
          items:
            type: string
            format: uuid
        description: List of asset identifiers to filter on.
      - name: address_group_ids
        in: query
        required: false
        schema:
          description: The address group IDs to filter by.
          title: Address Group Ids
          type: array
          items:
            type: string
            format: uuid
        description: The address group IDs to filter by.
      - name: exclude_address_group_ids
        in: query
        required: false
        schema:
          description: List of address group IDs to exclude.
          title: Exclude Address Group Ids
          type: array
          items:
            type: string
            format: uuid
        description: List of address group IDs to exclude.
      - name: exclude_contact_ids
        in: query
        required: false
        schema:
          description: List of contact IDs to exclude.
          title: Exclude Contact Ids
          type: array
          items:
            type: string
            format: uuid
        description: List of contact IDs to exclude.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListAddressBookContactResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PreconditionFailedError'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '500':
          description: Unexpected Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '401':
          description: Unauthorized User
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '403':
          description: Forbidden User
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '408':
          description: Request Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '429':
          description: Rate Limit Exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitError'
  /api/v1/addressbook/contacts/batch:
    post:
      tags:
      - Address Book
      summary: Create Batch Contacts
      description: Create multiple new address book contacts in an organization.
      operationId: create_batch_contacts_api_v1_addressbook_contacts_batch_post
      parameters:
      - name: x-signature
        in: header
        required: false
        schema:
          description: Signature of the body. Base64 encoded string. If the request is made programatically by an API user, signing of the request is required and is intended to protect you from malicious backends. `x_signature` is valid for 120 seconds.
          title: X-Signature
          type: string
          example: SGVsbG8=
        description: Signature of the body. Base64 encoded string. If the request is made programatically by an API user, signing of the request is required and is intended to protect you from malicious backends. `x_signature` is valid for 120 seconds.
      - name: x-timestamp
        in: header
        required: false
        schema:
          description: Timestamp of the signature. Integer. Specify an Epoch date. If the request is made programatically by an API user, the timestamp of the request is required and is intended to protect you from replay attacks.
          title: X-Timestamp
          type: integer
        description: Timestamp of the signature. Integer. Specify an Epoch date. If the request is made programatically by an API user, the timestamp of the request is required and is intended to protect you from replay attacks.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBatchContactsRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateBatchContactsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PreconditionFailedError'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '500':
          description: Unexpected Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '401':
          description: Unauthorized User
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '403':
          description: Forbidden User
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '408':
          description: Request Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '429':
          description: Rate Limit Exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitError'
  /api/v1/addressbook/contacts/proposals/{proposal_id}/abort:
    post:
      tags:
      - Address Book
      summary: Abort Contact Change Proposal
      description: Abort a contact change proposal.
      operationId: abort_contact_change_proposal_api_v1_addressbook_contacts_proposals__proposal_id__abort_post
      parameters:
      - name: proposal_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          description: ID of the address book contact proposal to abort.
          title: Proposal Id
        description: ID of the address book contact proposal to abort.
      responses:
        '204':
          description: Successful Response
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PreconditionFailedError'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '500':
          description: Unexpected Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '401':
          description: Unauthorized User
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '403':
          description: Forbidden User
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '408':
          description: Request Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '429':
          description: Rate Limit Exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitError'
  /api/v1/addressbook/contacts/{id}/proposals:
    post:
      tags:
      - Address Book
      summary: Edit Contact
      description: Edit address book contact.
      operationId: edit_contact_api_v1_addressbook_contacts__id__proposals_post
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          description: ID of the address book contact.
          title: Id
        description: ID of the address book contact.
      - name: x-signature
        in: header
        required: false
        schema:
          description: Signature of the body. Base64 encoded string. If the request is made programatically by an API user, signing of the request is required and is intended to protect you from malicious backends. `x_signature` is valid for 120 seconds.
          title: X-Signature
          type: string
          example: SGVsbG8=
        description: Signature of the body. Base64 encoded string. If the request is made programatically by an API user, signing of the request is required and is intended to protect you from malicious backends. `x_signature` is valid for 120 seconds.
      - name: x-timestamp
        in: header
        required: false
        schema:
          description: Timestamp of the signature. Integer. Specify an Epoch date. If the request is made programatically by an API user, the timestamp of the request is required and is intended to protect you from replay attacks.
          title: X-Timestamp
          type: integer
        description: Timestamp of the signature. Integer. Specify an Epoch date. If the request is made programatically by an API user, the timestamp of the request is required and is intended to protect you from replay attacks.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EditContactRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PreconditionFailedError'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '500':
          description: Unexpected Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '401':
          description: Unauthorized User
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '403':
          description: Forbidden User
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '408':
          description: Request Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '429':
          description: Rate Limit Exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitError'
components:
  schemas:
    StacksAssetIdentifier:
      properties:
        type:
          type: string
          const: stacks
          title: Type
          description: Stacks asset identifier type.
        details:
          oneOf:
          - $ref: '#/components/schemas/StacksNativeAssetIdentifierRequest'
          - $ref: '#/components/schemas/StacksSip10AssetIdentifierRequest'
          discriminator:
            propertyName: type
            mapping:
              native: '#/components/schemas/StacksNativeAssetIdentifierRequest'
              sip10: '#/components/schemas/StacksSip10AssetIdentifierRequest'
        chain:
          $ref: '#/components/schemas/EnrichedStacksChain'
      type: object
      required:
      - type
      - details
      - chain
      title: StacksAssetIdentifier
    EnrichedUtxoChain:
      properties:
        chain_type:
          type: string
          const: utxo
          title: Chain Type
          description: The type of the chain.
        unique_id:
          $ref: '#/components/schemas/UtxoChainUniqueId'
          description: The UTXO chain unique ID.
        name:
          type: string
          minLength: 1
          title: Name
          description: The full blockchain name.
        native_currency_symbol:
          type: string
          minLength: 1
          title: Native Currency Symbol
          description: The native currency symbol.
          example: ETH
        native_currency_name:
          type: string
          minLength: 1
          title: Native Currency Name
          description: The native currency name.
          example: Ether
        blockchain_explorer:
          $ref: '#/components/schemas/BlockchainExplorer'
        logo_url:
          type: string
          maxLength: 2083
          minLength: 1
          format: uri
          title: Logo Url
          description: The logo URL of the chain.
        is_testnet:
          type: boolean
          title: Is Testnet
          description: Whether the chain is on a testnet.
        is_enabled:
          type: boolean
          title: Is Enabled
          description: Whether the chain is enabled.
      type: object
      required:
      - chain_type
      - unique_id
      - name
      - native_currency_symbol
      - native_currency_name
      - logo_url
      - is_testnet
      - is_enabled
      title: EnrichedUtxoChain
    ListAddressBookContactResponse:
      properties:
        total:
          type: integer
          title: Total
        page:
          type: integer
          title: Page
        size:
          type: integer
          title: Size
        contacts:
          items:
            $ref: '#/components/schemas/AddressBookContact'
          type: array
          title: Contacts
      type: object
      required:
      - total
      - page
      - size
      - contacts
      title: ListAddressBookContactResponse
    SolanaAddressBookContact:
      properties:
        id:
          type: string
          format: uuid
          title: Id
          description: The unique identifier of the object in the Fordefi platform.
        created_at:
          type: string
          format: date-time
          title: Created At
          description: The date and time when the object was created.
        modified_at:
          type: string
          format: date-time
          title: Modified At
          description: The date and time when the object was last modified. Any change to any field of the resource is considered a modification.
        name:
          type: string
          title: Name
          description: The name of the contact.
        modified_by:
          $ref: '#/components/schemas/UserRef'
          description: Address last modifier.
        state:
          $ref: '#/components/schemas/AddressBookContactState'
          description: The state of the contact.
        groups:
          items:
            $ref: '#/components/schemas/GroupRef'
          type: array
          title: Groups
          description: List of contact's groups.
        pending_changes:
          description: Pending changes for the contact.
          $ref: '#/components/schemas/AddressBookContactChanges'
        asset_infos:
          items:
            $ref: '#/components/schemas/AssetInfo'
          type: array
          title: Asset Infos
          description: A list of asset infos for the contact. Can be used to enforce trading of specific assets intransfers to this address
        chain_type:
          type: string
          const: solana
          title: Chain Type
          description: The type of the chain.
        address:
          type: string
          maxLength: 44
          minLength: 32
          pattern: ^[a-km-zA-HJ-NP-Z1-9]+$
          title: Address
          description: The address on the solana chain.
          example: 4fYNw3dojWmQ4dXtSGE9epjRGy9pFSx62YypT7avPYvA
        chains:
          items:
            $ref: '#/components/schemas/EnrichedSolanaChain'
          type: array
          title: Chains
          description: The chains the contact belongs to. If empty, the contact is associated with all chains.
      type: object
      required:
      - id
      - created_at
      - modified_at
      - name
      - modified_by
      - state
      - groups
      - asset_infos
      - chain_type
      - address
      - chains
      title: SolanaAddressBookContact
      description: Represents a contact in the Fordefi platform
    CreateBatchContactsRequest:
      properties:
        contacts:
          items:
            $ref: '#/components/schemas/CreateContactRequest'
          type: array
          maxItems: 1000
          minItems: 1
          title: Contacts
          description: The contacts to create.
      type: object
      required:
      - contacts
      title: CreateBatchContactsRequest
    TronChainUniqueId:
      type: string
      enum:
      - tron_mainnet
      - tron_shasta
      title: TronChainUniqueId
    AptosAssetIdentifierRequest:
      properties:
        type:
          type: string
          const: aptos
          title: Type
          description: Aptos asset identifier type.
        details:
          oneOf:
          - $ref: '#/components/schemas/AptosNativeAssetIdentifierRequest'
          - $ref: '#/components/schemas/AptosCoinAssetIdentifierRequest'
          - $ref: '#/components/schemas/AptosNewCoinAssetIdentifierRequest'
          discriminator:
            propertyName: type
            mapping:
              coin: '#/components/schemas/AptosCoinAssetIdentifierRequest'
              native: '#/components/schemas/AptosNativeAssetIdentifierRequest'
              new_coin: '#/components/schemas/AptosNewCoinAssetIdentifierRequest'
      type: object
      required:
      - type
      - details
      title: AptosAssetIdentifierRequest
    StarknetChainUniqueId:
      type: string
      enum:
      - starknet_mainnet
      title: StarknetChainUniqueId
    TonNativeAssetIdentifierRequest:
      properties:
        type:
          type: string
          const: native
          title: Type
          description: TON asset identifier type.
        chain:
          $ref: '#/components/schemas/TonChainUniqueId'
          description: The details of the chain of the native asset.
      type: object
      required:
      - type
      - chain
      title: TonNativeAssetIdentifierRequest
    CreateContactRequest:
      oneOf:
      - $ref: '#/components/schemas/CreateAptosContactRequest'
      - $ref: '#/components/schemas/CreateArchContactRequest'
      - $ref: '#/components/schemas/CreateCantonContactRequest'
      - $ref: '#/components/schemas/CreateCosmosContactRequest'
      - $ref: '#/components/schemas/CreateEVMContactRequest'
      - $ref: '#/components/schemas/CreateSolanaContactRequest'
      - $ref: '#/components/schemas/CreateStacksContactRequest'
      - $ref: '#/components/schemas/CreateStarknetContactRequest'
      - $ref: '#/components/schemas/CreateStellarContactRequest'
      - $ref: '#/components/schemas/CreateSuiContactRequest'
      - $ref: '#/components/schemas/CreateTonContactRequest'
      - $ref: '#/components/schemas/CreateTronContactRequest'
      - $ref: '#/components/schemas/CreateUtxoContactRequest'
      discriminator:
        propertyName: type
        mapping:
          aptos: '#/components/schemas/CreateAptosContactRequest'
          arch: '#/components/schemas/CreateArchContactRequest'
          canton: '#/components/schemas/CreateCantonContactRequest'
          cosmos: '#/components/schemas/CreateCosmosContactRequest'
          evm: '#/components/schemas/CreateEVMContactRequest'
          solana: '#/components/schemas/CreateSolanaContactRequest'
          stacks: '#/components/schemas/CreateStacksContactRequest'
          starknet: '#/components/schemas/CreateStarknetContactRequest'
          stellar: '#/components/schemas/CreateStellarContactRequest'
          sui: '#/components/schemas/CreateSuiContactRequest'
          ton: '#/components/schemas/CreateTonContactRequest'
          tron: '#/components/schemas/CreateTronContactRequest'
          utxo: '#/components/schemas/CreateUtxoContactRequest'
    StarknetErc20AssetIdentifierRequest:
      properties:
        type:
          type: string
          const: erc20
          title: Type
          description: Erc20 asset identifier type.
        erc20:
          $ref: '#/components/schemas/StarknetAddressRequest'
          description: The Erc20 details.
      type: object
      required:
      - type
      - erc20
      title: StarknetErc20AssetIdentifierRequest
    TronTrc20AssetIdentifierRequest:
      properties:
        type:
          type: string
          const: trc20
          title: Type
          description: Trc20 asset identifier type.
        trc20:
          $ref: '#/components/schemas/TronAddressRequest'
          description: The Trc20 details.
      type: object
      required:
      - type
      - trc20
      title: TronTrc20AssetIdentifierRequest
    CreateEVMContactRequest:
      properties:
        name:


# --- truncated at 32 KB (186 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/fordefi/refs/heads/main/openapi/fordefi-address-book-api-openapi.yml