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

# List payment methods for a Merchant

> Lists the applicable payment methods for a particular Merchant ID.
Use the client secret and publishable key authorization to list all relevant payment methods of the merchant for the payment corresponding to the client secret.



## OpenAPI

````yaml openapi_spec get /account/payment_methods
openapi: 3.0.3
info:
  title: Pesaswap - API Documentation
  description: >

    ## Get started


    Pesaswap provides a collection of APIs that enable you to process and manage
    payments.

    Our APIs accept and return JSON in the HTTP body, and return standard HTTP
    response codes.


    You can consume the APIs directly using your favorite HTTP/REST library.


    We have a testing environment referred to "sandbox", which you can setup to
    test API calls without

    affecting production data.

    Currently, our sandbox environment is live while our production environment
    is under development

    and will be available soon.

    You can sign up on our Dashboard to get API keys to access Pesaswap API.


    ### Environment


    Use the following base URLs when making requests to the APIs:


    | Environment   |  Base URL                          |

    |---------------|------------------------------------|

    | Sandbox       | <https://api.sandbox.pesaswap.io>   |

    | Production    | <https://api.pesaswap.io>       |


    ## Authentication


    When you sign up on our [dashboard](https://app.pesaswap.io) and create a
    merchant

    account, you are given a secret key (also referred as api-key) and a
    publishable key.

    You may authenticate all API requests with Pesaswap server by providing the
    appropriate key in

    the request Authorization header.


    | Key             | 
    Description                                                                                 
    |

    |-----------------|-----------------------------------------------------------------------------------------------|

    | api-key         | Private key. Used to authenticate all API requests from
    your merchant server                  |

    | publishable key | Unique identifier for your account. Used to authenticate
    API requests from your app's client  |


    Never share your secret api keys. Keep them guarded and secure.
  contact:
    name: Pesaswap Support
    url: https://pesaswap.io
    email: support@pesaswap.io
  license:
    name: Apache-2.0
  version: 0.1.0
servers:
  - url: https://api.sandbox.pesaswap.io
    description: Sandbox Environment
  - url: https://api.pesaswap.io
    description: Production Environment
security: []
tags:
  - name: Merchant Account
    description: Create and manage merchant accounts
  - name: Profile
    description: Create and manage profiles
  - name: Merchant Connector Account
    description: Create and manage merchant connector accounts
  - name: Payments
    description: Create and manage one-time payments, recurring payments and mandates
  - name: Refunds
    description: Create and manage refunds for successful payments
  - name: Mandates
    description: Manage mandates
  - name: Customers
    description: Create and manage customers
  - name: Payment Methods
    description: Create and manage payment methods of customers
  - name: Disputes
    description: Manage disputes
  - name: API Key
    description: Create and manage API Keys
  - name: Payouts
    description: Create and manage payouts
  - name: payment link
    description: Create payment link
  - name: Routing
    description: Create and manage routing configurations
  - name: Event
    description: Manage events
paths:
  /account/payment_methods:
    get:
      tags:
        - Payment Methods
      summary: List payment methods for a Merchant
      description: >-
        Lists the applicable payment methods for a particular Merchant ID.

        Use the client secret and publishable key authorization to list all
        relevant payment methods of the merchant for the payment corresponding
        to the client secret.
      operationId: List all Payment Methods for a Merchant
      parameters:
        - name: account_id
          in: path
          description: The unique identifier for the merchant account
          required: true
          schema:
            type: string
        - name: accepted_country
          in: query
          description: The two-letter ISO currency code
          required: true
          schema:
            type: array
            items:
              type: string
        - name: accepted_currency
          in: path
          description: The three-letter ISO currency code
          required: true
          schema:
            type: array
            items:
              $ref: '#/components/schemas/Currency'
        - name: minimum_amount
          in: query
          description: >-
            The minimum amount accepted for processing by the particular payment
            method.
          required: true
          schema:
            type: integer
            format: int64
        - name: maximum_amount
          in: query
          description: >-
            The maximum amount accepted for processing by the particular payment
            method.
          required: true
          schema:
            type: integer
            format: int64
        - name: recurring_payment_enabled
          in: query
          description: >-
            Indicates whether the payment method is eligible for recurring
            payments
          required: true
          schema:
            type: boolean
        - name: installment_payment_enabled
          in: query
          description: >-
            Indicates whether the payment method is eligible for installment
            payments
          required: true
          schema:
            type: boolean
      responses:
        '200':
          description: Payment Methods retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentMethodListResponse'
        '400':
          description: Invalid Data
        '404':
          description: Payment Methods does not exist in records
      security:
        - api_key: []
        - publishable_key: []
components:
  schemas:
    Currency:
      type: string
      description: >-
        The three letter ISO currency code in uppercase. Eg: 'USD' for the
        United States Dollar.
      enum:
        - AED
        - AFN
        - ALL
        - AMD
        - ANG
        - AOA
        - ARS
        - AUD
        - AWG
        - AZN
        - BAM
        - BBD
        - BDT
        - BGN
        - BHD
        - BIF
        - BMD
        - BND
        - BOB
        - BRL
        - BSD
        - BTN
        - BWP
        - BYN
        - BZD
        - CAD
        - CDF
        - CHF
        - CLP
        - CNY
        - COP
        - CRC
        - CUP
        - CVE
        - CZK
        - DJF
        - DKK
        - DOP
        - DZD
        - EGP
        - ERN
        - ETB
        - EUR
        - FJD
        - FKP
        - GBP
        - GEL
        - GHS
        - GIP
        - GMD
        - GNF
        - GTQ
        - GYD
        - HKD
        - HNL
        - HRK
        - HTG
        - HUF
        - IDR
        - ILS
        - INR
        - IQD
        - IRR
        - ISK
        - JMD
        - JOD
        - JPY
        - KES
        - KGS
        - KHR
        - KMF
        - KPW
        - KRW
        - KWD
        - KYD
        - KZT
        - LAK
        - LBP
        - LKR
        - LRD
        - LSL
        - LYD
        - MAD
        - MDL
        - MGA
        - MKD
        - MMK
        - MNT
        - MOP
        - MRU
        - MUR
        - MVR
        - MWK
        - MXN
        - MYR
        - MZN
        - NAD
        - NGN
        - NIO
        - NOK
        - NPR
        - NZD
        - OMR
        - PAB
        - PEN
        - PGK
        - PHP
        - PKR
        - PLN
        - PYG
        - QAR
        - RON
        - RSD
        - RUB
        - RWF
        - SAR
        - SBD
        - SCR
        - SDG
        - SEK
        - SGD
        - SHP
        - SLE
        - SLL
        - SOS
        - SRD
        - SSP
        - STN
        - SVC
        - SYP
        - SZL
        - THB
        - TJS
        - TMT
        - TND
        - TOP
        - TRY
        - TTD
        - TWD
        - TZS
        - UAH
        - UGX
        - USD
        - UYU
        - UZS
        - VES
        - VND
        - VUV
        - WST
        - XAF
        - XCD
        - XOF
        - XPF
        - YER
        - ZAR
        - ZMW
        - ZWL
    PaymentMethodListResponse:
      type: object
      required:
        - currency
        - payment_methods
        - mandate_payment
        - show_surcharge_breakup_screen
        - request_external_three_ds_authentication
        - is_tax_calculation_enabled
      properties:
        redirect_url:
          type: string
          description: Redirect URL of the merchant
          example: https://www.google.com
          nullable: true
        currency:
          $ref: '#/components/schemas/Currency'
        payment_methods:
          type: array
          items:
            $ref: '#/components/schemas/ResponsePaymentMethodsEnabled'
          description: Information about the payment method
        mandate_payment:
          $ref: '#/components/schemas/MandateType'
        merchant_name:
          type: string
          nullable: true
        show_surcharge_breakup_screen:
          type: boolean
          description: >-
            flag to indicate if surcharge and tax breakup screen should be shown
            or not
        payment_type:
          allOf:
            - $ref: '#/components/schemas/PaymentType'
          nullable: true
        request_external_three_ds_authentication:
          type: boolean
          description: flag to indicate whether to perform external 3ds authentication
          example: true
        collect_shipping_details_from_wallets:
          type: boolean
          description: >-
            flag that indicates whether to collect shipping details from wallets
            or from the customer
          nullable: true
        collect_billing_details_from_wallets:
          type: boolean
          description: >-
            flag that indicates whether to collect billing details from wallets
            or from the customer
          nullable: true
        is_tax_calculation_enabled:
          type: boolean
          description: flag that indicates whether to calculate tax on the order amount
    ResponsePaymentMethodsEnabled:
      type: object
      required:
        - payment_method
        - payment_method_types
      properties:
        payment_method:
          $ref: '#/components/schemas/PaymentMethod'
        payment_method_types:
          type: array
          items:
            $ref: '#/components/schemas/ResponsePaymentMethodTypes'
          description: The list of payment method types enabled for a connector account
    MandateType:
      oneOf:
        - type: object
          required:
            - single_use
          properties:
            single_use:
              $ref: '#/components/schemas/MandateAmountData'
        - type: object
          required:
            - multi_use
          properties:
            multi_use:
              allOf:
                - $ref: '#/components/schemas/MandateAmountData'
              nullable: true
    PaymentType:
      type: string
      description: >-
        The type of the payment that differentiates between normal and various
        types of mandate payments. Use 'setup_mandate' in case of zero auth
        flow.
      enum:
        - normal
        - new_mandate
        - setup_mandate
        - recurring_mandate
    PaymentMethod:
      type: string
      description: 'Indicates the type of payment method. Eg: ''card'', ''wallet'', etc.'
      enum:
        - card
        - card_redirect
        - pay_later
        - wallet
        - bank_redirect
        - bank_transfer
        - crypto
        - bank_debit
        - reward
        - real_time_payment
        - upi
        - voucher
        - gift_card
        - open_banking
        - mobile_payment
    ResponsePaymentMethodTypes:
      type: object
      required:
        - payment_method_type
      properties:
        payment_method_type:
          $ref: '#/components/schemas/PaymentMethodType'
        payment_experience:
          type: array
          items:
            $ref: '#/components/schemas/PaymentExperienceTypes'
          description: >-
            The list of payment experiences enabled, if applicable for a payment
            method type
          nullable: true
        card_networks:
          type: array
          items:
            $ref: '#/components/schemas/CardNetworkTypes'
          description: >-
            The list of card networks enabled, if applicable for a payment
            method type
          nullable: true
        bank_names:
          type: array
          items:
            $ref: '#/components/schemas/BankCodeResponse'
          description: The list of banks enabled, if applicable for a payment method type
          nullable: true
        bank_debits:
          allOf:
            - $ref: '#/components/schemas/BankDebitTypes'
          nullable: true
        bank_transfers:
          allOf:
            - $ref: '#/components/schemas/BankTransferTypes'
          nullable: true
        required_fields:
          type: object
          description: Required fields for the payment_method_type.
          additionalProperties:
            $ref: '#/components/schemas/RequiredFieldInfo'
          nullable: true
        surcharge_details:
          allOf:
            - $ref: '#/components/schemas/SurchargeDetailsResponse'
          nullable: true
        pm_auth_connector:
          type: string
          description: auth service connector label for this payment method type, if exists
          nullable: true
    MandateAmountData:
      type: object
      required:
        - amount
        - currency
      properties:
        amount:
          type: integer
          format: int64
          description: The maximum amount to be debited for the mandate transaction
          example: 6540
        currency:
          $ref: '#/components/schemas/Currency'
        start_date:
          type: string
          format: date-time
          description: Specifying start date of the mandate
          example: '2022-09-10T00:00:00Z'
          nullable: true
        end_date:
          type: string
          format: date-time
          description: Specifying end date of the mandate
          example: '2023-09-10T23:59:59Z'
          nullable: true
        metadata:
          type: object
          description: Additional details required by mandate
          nullable: true
    PaymentMethodType:
      type: string
      description: >-
        Indicates the sub type of payment method. Eg: 'google_pay' & 'apple_pay'
        for wallets.
      enum:
        - ach
        - affirm
        - afterpay_clearpay
        - alfamart
        - ali_pay
        - ali_pay_hk
        - alma
        - amazon_pay
        - apple_pay
        - atome
        - bacs
        - bancontact_card
        - becs
        - benefit
        - bizum
        - blik
        - boleto
        - bca_bank_transfer
        - bni_va
        - bri_va
        - card_redirect
        - cimb_va
        - classic
        - credit
        - crypto_currency
        - cashapp
        - dana
        - danamon_va
        - debit
        - duit_now
        - efecty
        - eps
        - fps
        - evoucher
        - giropay
        - givex
        - google_pay
        - go_pay
        - gcash
        - ideal
        - interac
        - indomaret
        - klarna
        - kakao_pay
        - local_bank_redirect
        - mandiri_va
        - knet
        - mb_way
        - mobile_pay
        - momo
        - momo_atm
        - multibanco
        - online_banking_thailand
        - online_banking_czech_republic
        - online_banking_finland
        - online_banking_fpx
        - online_banking_poland
        - online_banking_slovakia
        - oxxo
        - pago_efectivo
        - permata_bank_transfer
        - open_banking_uk
        - pay_bright
        - paypal
        - paze
        - pix
        - pay_safe_card
        - przelewy24
        - prompt_pay
        - pse
        - red_compra
        - red_pagos
        - samsung_pay
        - sepa
        - sofort
        - swish
        - touch_n_go
        - trustly
        - twint
        - upi_collect
        - upi_intent
        - vipps
        - viet_qr
        - venmo
        - walley
        - we_chat_pay
        - seven_eleven
        - lawson
        - mini_stop
        - family_mart
        - seicomart
        - pay_easy
        - local_bank_transfer
        - mifinity
        - open_banking_pis
        - m_pesa_express
        - direct_carrier_billing
    PaymentExperienceTypes:
      type: object
      required:
        - eligible_connectors
      properties:
        payment_experience_type:
          allOf:
            - $ref: '#/components/schemas/PaymentExperience'
          nullable: true
        eligible_connectors:
          type: array
          items:
            type: string
          description: The list of eligible connectors for a given payment experience
          example:
            - stripe
            - adyen
    CardNetworkTypes:
      type: object
      required:
        - eligible_connectors
      properties:
        card_network:
          allOf:
            - $ref: '#/components/schemas/CardNetwork'
          nullable: true
        surcharge_details:
          allOf:
            - $ref: '#/components/schemas/SurchargeDetailsResponse'
          nullable: true
        eligible_connectors:
          type: array
          items:
            type: string
          description: The list of eligible connectors for a given card network
          example:
            - stripe
            - adyen
    BankCodeResponse:
      type: object
      required:
        - bank_name
        - eligible_connectors
      properties:
        bank_name:
          type: array
          items:
            $ref: '#/components/schemas/BankNames'
        eligible_connectors:
          type: array
          items:
            type: string
    BankDebitTypes:
      type: object
      required:
        - eligible_connectors
      properties:
        eligible_connectors:
          type: array
          items:
            type: string
    BankTransferTypes:
      type: object
      required:
        - eligible_connectors
      properties:
        eligible_connectors:
          type: array
          items:
            type: string
          description: The list of eligible connectors for a given payment experience
          example:
            - stripe
            - adyen
    RequiredFieldInfo:
      type: object
      description: Required fields info used while listing the payment_method_data
      required:
        - required_field
        - display_name
        - field_type
      properties:
        required_field:
          type: string
          description: Required field for a payment_method through a payment_method_type
        display_name:
          type: string
          description: Display name of the required field in the front-end
        field_type:
          $ref: '#/components/schemas/FieldType'
        value:
          type: string
          nullable: true
    SurchargeDetailsResponse:
      type: object
      required:
        - surcharge
        - display_surcharge_amount
        - display_tax_on_surcharge_amount
        - display_total_surcharge_amount
      properties:
        surcharge:
          $ref: '#/components/schemas/SurchargeResponse'
        tax_on_surcharge:
          allOf:
            - $ref: '#/components/schemas/SurchargePercentage'
          nullable: true
        display_surcharge_amount:
          type: number
          format: double
          description: surcharge amount for this payment
        display_tax_on_surcharge_amount:
          type: number
          format: double
          description: tax on surcharge amount for this payment
        display_total_surcharge_amount:
          type: number
          format: double
          description: sum of display_surcharge_amount and display_tax_on_surcharge_amount
    PaymentExperience:
      type: string
      description: >-
        To indicate the type of payment experience that the customer would go
        through
      enum:
        - redirect_to_url
        - invoke_sdk_client
        - display_qr_code
        - one_click
        - link_wallet
        - invoke_payment_app
        - display_wait_screen
        - collect_otp
    CardNetwork:
      type: string
      description: Indicates the card network.
      enum:
        - Visa
        - Mastercard
        - AmericanExpress
        - JCB
        - DinersClub
        - Discover
        - CartesBancaires
        - UnionPay
        - Interac
        - RuPay
        - Maestro
    BankNames:
      type: string
      description: Name of banks supported by Pesaswap
      enum:
        - american_express
        - affin_bank
        - agro_bank
        - alliance_bank
        - am_bank
        - bank_of_america
        - bank_of_china
        - bank_islam
        - bank_muamalat
        - bank_rakyat
        - bank_simpanan_nasional
        - barclays
        - blik_p_s_p
        - capital_one
        - chase
        - citi
        - cimb_bank
        - discover
        - navy_federal_credit_union
        - pentagon_federal_credit_union
        - synchrony_bank
        - wells_fargo
        - abn_amro
        - asn_bank
        - bunq
        - handelsbanken
        - hong_leong_bank
        - hsbc_bank
        - ing
        - knab
        - kuwait_finance_house
        - moneyou
        - rabobank
        - regiobank
        - revolut
        - sns_bank
        - triodos_bank
        - van_lanschot
        - arzte_und_apotheker_bank
        - austrian_anadi_bank_ag
        - bank_austria
        - bank99_ag
        - bankhaus_carl_spangler
        - bankhaus_schelhammer_und_schattera_ag
        - bank_millennium
        - bank_p_e_k_a_o_s_a
        - bawag_psk_ag
        - bks_bank_ag
        - brull_kallmus_bank_ag
        - btv_vier_lander_bank
        - capital_bank_grawe_gruppe_ag
        - ceska_sporitelna
        - dolomitenbank
        - easybank_ag
        - e_platby_v_u_b
        - erste_bank_und_sparkassen
        - friesland_bank
        - hypo_alpeadriabank_international_ag
        - hypo_noe_lb_fur_niederosterreich_u_wien
        - hypo_oberosterreich_salzburg_steiermark
        - hypo_tirol_bank_ag
        - hypo_vorarlberg_bank_ag
        - hypo_bank_burgenland_aktiengesellschaft
        - komercni_banka
        - m_bank
        - marchfelder_bank
        - maybank
        - oberbank_ag
        - osterreichische_arzte_und_apothekerbank
        - ocbc_bank
        - pay_with_i_n_g
        - place_z_i_p_k_o
        - platnosc_online_karta_platnicza
        - posojilnica_bank_e_gen
        - postova_banka
        - public_bank
        - raiffeisen_bankengruppe_osterreich
        - rhb_bank
        - schelhammer_capital_bank_ag
        - standard_chartered_bank
        - schoellerbank_ag
        - sparda_bank_wien
        - sporo_pay
        - santander_przelew24
        - tatra_pay
        - viamo
        - volksbank_gruppe
        - volkskreditbank_ag
        - vr_bank_braunau
        - uob_bank
        - pay_with_alior_bank
        - banki_spoldzielcze
        - pay_with_inteligo
        - b_n_p_paribas_poland
        - bank_nowy_s_a
        - credit_agricole
        - pay_with_b_o_s
        - pay_with_citi_handlowy
        - pay_with_plus_bank
        - toyota_bank
        - velo_bank
        - e_transfer_pocztowy24
        - plus_bank
        - etransfer_pocztowy24
        - banki_spbdzielcze
        - bank_nowy_bfg_sa
        - getin_bank
        - blik
        - noble_pay
        - idea_bank
        - envelo_bank
        - nest_przelew
        - mbank_mtransfer
        - inteligo
        - pbac_z_ipko
        - bnp_paribas
        - bank_pekao_sa
        - volkswagen_bank
        - alior_bank
        - boz
        - bangkok_bank
        - krungsri_bank
        - krung_thai_bank
        - the_siam_commercial_bank
        - kasikorn_bank
        - open_bank_success
        - open_bank_failure
        - open_bank_cancelled
        - aib
        - bank_of_scotland
        - danske_bank
        - first_direct
        - first_trust
        - halifax
        - lloyds
        - monzo
        - nat_west
        - nationwide_bank
        - royal_bank_of_scotland
        - starling
        - tsb_bank
        - tesco_bank
        - ulster_bank
        - yoursafe
        - n26
        - nationale_nederlanden
    FieldType:
      oneOf:
        - type: string
          enum:
            - user_card_number
        - type: string
          enum:
            - user_card_expiry_month
        - type: string
          enum:
            - user_card_expiry_year
        - type: string
          enum:
            - user_card_cvc
        - type: string
          enum:
            - user_full_name
        - type: string
          enum:
            - user_email_address
        - type: string
          enum:
            - user_phone_number
        - type: string
          enum:
            - user_phone_number_country_code
        - type: object
          required:
            - user_country
          properties:
            user_country:
              type: object
              required:
                - options
              properties:
                options:
                  type: array
                  items:
                    type: string
        - type: object
          required:
            - user_currency
          properties:
            user_currency:
              type: object
              required:
                - options
              properties:
                options:
                  type: array
                  items:
                    type: string
        - type: string
          enum:
            - user_crypto_currency_network
        - type: string
          enum:
            - user_billing_name
        - type: string
          enum:
            - user_address_line1
        - type: string
          enum:
            - user_address_line2
        - type: string
          enum:
            - user_address_city
        - type: string
          enum:
            - user_address_pincode
        - type: string
          enum:
            - user_address_state
        - type: object
          required:
            - user_address_country
          properties:
            user_address_country:
              type: object
              required:
                - options
              properties:
                options:
                  type: array
                  items:
                    type: string
        - type: string
          enum:
            - user_shipping_name
        - type: string
          enum:
            - user_shipping_address_line1
        - type: string
          enum:
            - user_shipping_address_line2
        - type: string
          enum:
            - user_shipping_address_city
        - type: string
          enum:
            - user_shipping_address_pincode
        - type: string
          enum:
            - user_shipping_address_state
        - type: object
          required:
            - user_shipping_address_country
          properties:
            user_shipping_address_country:
              type: object
              required:
                - options
              properties:
                options:
                  type: array
                  items:
                    type: string
        - type: string
          enum:
            - user_blik_code
        - type: string
          enum:
            - user_bank
        - type: string
          enum:
            - user_bank_account_number
        - type: string
          enum:
            - text
        - type: object
          required:
            - drop_down
          properties:
            drop_down:
              type: object
              required:
                - options
              properties:
                options:
                  type: array
                  items:
                    type: string
        - type: string
          enum:
            - user_date_of_birth
        - type: string
          enum:
            - user_vpa_id
        - type: object
          required:
            - language_preference
          properties:
            language_preference:
              type: object
              required:
                - options
              properties:
                options:
                  type: array
                  items:
                    type: string
        - type: string
          enum:
            - user_pix_key
        - type: string
          enum:
            - user_cpf
        - type: string
          enum:
            - user_cnpj
        - type: string
          enum:
            - user_iban
        - type: string
          enum:
            - user_bsb_number
        - type: string
          enum:
            - user_bank_sort_code
        - type: string
          enum:
            - user_bank_routing_number
        - type: string
          enum:
            - user_msisdn
        - type: string
          enum:
            - user_client_identifier
        - type: string
          enum:
            - order_details_product_name
      description: Possible field type of required fields in payment_method_data
    SurchargeResponse:
      oneOf:
        - type: object
          required:
            - type
            - value
          properties:
            type:
              type: string
              enum:
                - fixed
            value:
              $ref: '#/components/schemas/MinorUnit'
        - type: object
          required:
            - type
            - value
          properties:
            type:
              type: string
              enum:
                - rate
            value:
              $ref: '#/components/schemas/SurchargePercentage'
      discriminator:
        propertyName: type
    SurchargePercentage:
      type: object
      required:
        - percentage
      properties:
        percentage:
          type: number
          format: float
    MinorUnit:
      type: integer
      format: int64
      description: This Unit struct represents MinorUnit in which core amount works
  securitySchemes:
    api_key:
      type: apiKey
      in: header
      name: api-key
      description: >-
        Use the API key created under your merchant account from the Pesaswap
        dashboard. API key is used to authenticate API requests from your
        merchant server only. Don't expose this key on a website or embed it in
        a mobile application.
    publishable_key:
      type: apiKey
      in: header
      name: api-key
      description: >-
        Publishable keys are a type of keys that can be public and have limited
        scope of usage.

````