Source code for coinbase.rest.portfolios

from typing import Any, Dict, Optional

from coinbase.constants import API_PREFIX
from coinbase.rest.types.portfolios_types import (
    CreatePortfolioResponse,
    DeletePortfolioResponse,
    EditPortfolioResponse,
    GetPortfolioBreakdownResponse,
    ListPortfoliosResponse,
    MovePortfolioFundsResponse,
)


[docs] def get_portfolios( self, portfolio_type: Optional[str] = None, **kwargs ) -> ListPortfoliosResponse: """ **List Portfolios** ___________________ [GET] https://api.coinbase.com/api/v3/brokerage/portfolios __________ **Description:** Get a list of all portfolios of a user. __________ **Read more on the official documentation:** `List Portfolios <https://docs.cdp.coinbase.com/api-reference/advanced-trade-api/rest-api/portfolios/list-portfolios>`_ """ endpoint = f"{API_PREFIX}/portfolios" params = {"portfolio_type": portfolio_type} return ListPortfoliosResponse(self.get(endpoint, params=params, **kwargs))
[docs] def create_portfolio(self, name: str, **kwargs) -> CreatePortfolioResponse: """ **Create Portfolio** ____________________ [POST] https://api.coinbase.com/api/v3/brokerage/portfolios __________ **Description:** Create a portfolio. __________ **Read more on the official documentation:** `Create Portfolio <https://docs.cdp.coinbase.com/api-reference/advanced-trade-api/rest-api/portfolios/create-portfolio>`_ """ endpoint = f"{API_PREFIX}/portfolios" data = { "name": name, } return CreatePortfolioResponse(self.post(endpoint, data=data, **kwargs))
[docs] def get_portfolio_breakdown( self, portfolio_uuid: str, currency: Optional[str] = None, **kwargs ) -> GetPortfolioBreakdownResponse: """ **Get Portfolio Breakdown** ___________________________ [GET] https://api.coinbase.com/api/v3/brokerage/portfolios/{portfolio_uuid} __________ **Description:** Get the breakdown of a portfolio by portfolio ID. __________ **Read more on the official documentation:** `Get Portfolio Breakdown <https://docs.cdp.coinbase.com/api-reference/advanced-trade-api/rest-api/portfolios/get-portfolio-breakdown>`_ """ endpoint = f"{API_PREFIX}/portfolios/{portfolio_uuid}" params = {"currency": currency} return GetPortfolioBreakdownResponse(self.get(endpoint, params=params, **kwargs))
[docs] def move_portfolio_funds( self, value: str, currency: str, source_portfolio_uuid: str, target_portfolio_uuid: str, **kwargs, ) -> MovePortfolioFundsResponse: """ **Move Portfolio Funds** ________________________ [POST] https://api.coinbase.com/api/v3/brokerage/portfolios/move_funds __________ **Description:** Transfer funds between portfolios. __________ **Read more on the official documentation:** `Move Portfolio Funds <https://docs.cdp.coinbase.com/api-reference/advanced-trade-api/rest-api/portfolios/move-portfolios-funds>`_ """ endpoint = f"{API_PREFIX}/portfolios/move_funds" data = { "funds": { "value": value, "currency": currency, }, "source_portfolio_uuid": source_portfolio_uuid, "target_portfolio_uuid": target_portfolio_uuid, } return MovePortfolioFundsResponse(self.post(endpoint, data=data, **kwargs))
[docs] def edit_portfolio( self, portfolio_uuid: str, name: str, **kwargs ) -> EditPortfolioResponse: """ **Edit Portfolio** __________________ [PUT] https://api.coinbase.com/api/v3/brokerage/portfolios/{portfolio_uuid} __________ **Description:** Modify a portfolio by portfolio ID. __________ **Read more on the official documentation:** `Edit Portfolio <https://docs.cdp.coinbase.com/api-reference/advanced-trade-api/rest-api/portfolios/edit-portfolio>`_ """ endpoint = f"{API_PREFIX}/portfolios/{portfolio_uuid}" data = { "name": name, } return EditPortfolioResponse(self.put(endpoint, data=data, **kwargs))
[docs] def delete_portfolio(self, portfolio_uuid: str, **kwargs) -> DeletePortfolioResponse: """ **Delete Portfolio** ____________________ [DELETE] https://api.coinbase.com/api/v3/brokerage/portfolios/{portfolio_uuid} __________ **Description:** Delete a portfolio by portfolio ID. __________ **Read more on the official documentation:** `Delete Portfolio <https://docs.cdp.coinbase.com/api-reference/advanced-trade-api/rest-api/portfolios/delete-portfolio>`_ """ endpoint = f"{API_PREFIX}/portfolios/{portfolio_uuid}" return DeletePortfolioResponse(self.delete(endpoint, **kwargs))