Skip to content

Accounts Pydantic Models

In order to simplify and standardize the data that is passed between the client and the Revolut Business API, PyRevolut uses Pydantic models to define the structure of the data. Below are the Pydantic models used by the Accounts endpoint.


ResourceAccount

Bases: BaseModel

Account resource model.

Source code in pyrevolut/api/accounts/resources/account.py
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
class ResourceAccount(BaseModel):
    """
    Account resource model.
    """

    id: Annotated[
        UUID,
        Field(description="The account ID."),
    ]
    name: Annotated[
        str | None,
        Field(description="The account name."),
    ] = None
    balance: Annotated[
        float,
        Field(description="The current balance on the account."),
    ]
    currency: Annotated[
        Currency,
        Field(description="ISO 4217 currency code in upper case."),
    ]
    state: Annotated[
        EnumAccountState,
        Field(description="Indicates the state of the account."),
    ]
    public: Annotated[
        bool,
        Field(
            description="Indicates whether the account is visible to other businesses on Revolut."
        ),
    ]
    created_at: Annotated[
        DateTime,
        Field(
            description="The date and time the account was created in ISO 8601 format."
        ),
    ]
    updated_at: Annotated[
        DateTime,
        Field(
            description="The date and time the account was last updated in ISO 8601 format."
        ),
    ]

RetrieveAllAccounts

Get a list of all your accounts.

Source code in pyrevolut/api/accounts/get/retrieve_all_accounts.py
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class RetrieveAllAccounts:
    """
    Get a list of all your accounts.
    """

    ROUTE = "/1.0/accounts"

    class Params(BaseModel):
        """
        Query parameters for the endpoint.
        """

        pass

    class Response(ResourceAccount):
        """
        Response model for the endpoint.
        """

        pass

Params

Bases: BaseModel

Query parameters for the endpoint.

Source code in pyrevolut/api/accounts/get/retrieve_all_accounts.py
13
14
15
16
17
18
class Params(BaseModel):
    """
    Query parameters for the endpoint.
    """

    pass

Response

Bases: ResourceAccount

Response model for the endpoint.

Source code in pyrevolut/api/accounts/get/retrieve_all_accounts.py
20
21
22
23
24
25
class Response(ResourceAccount):
    """
    Response model for the endpoint.
    """

    pass

RetrieveAnAccount

Get the information about one of your accounts. Specify the account by its ID.

Source code in pyrevolut/api/accounts/get/retrieve_an_account.py
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class RetrieveAnAccount:
    """
    Get the information about one of your accounts. Specify the account by its ID.
    """

    ROUTE = "/1.0/accounts/{account_id}"

    class Params(BaseModel):
        """
        Query parameters for the endpoint.
        """

        pass

    class Response(ResourceAccount):
        """
        Response model for the endpoint.
        """

        pass

Params

Bases: BaseModel

Query parameters for the endpoint.

Source code in pyrevolut/api/accounts/get/retrieve_an_account.py
13
14
15
16
17
18
class Params(BaseModel):
    """
    Query parameters for the endpoint.
    """

    pass

Response

Bases: ResourceAccount

Response model for the endpoint.

Source code in pyrevolut/api/accounts/get/retrieve_an_account.py
20
21
22
23
24
25
class Response(ResourceAccount):
    """
    Response model for the endpoint.
    """

    pass

RetrieveFullBankDetails

Get all the bank details of one of your accounts. Specify the account by its ID.

Source code in pyrevolut/api/accounts/get/retrieve_full_bank_details.py
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
class RetrieveFullBankDetails:
    """
    Get all the bank details of one of your accounts. Specify the account by its ID.
    """

    ROUTE = "/1.0/accounts/{account_id}/bank-details"

    class Params(BaseModel):
        """
        Query parameters for the endpoint.
        """

        pass

    class Response(BaseModel):
        """
        Response model for the endpoint.
        """

        class ModelBeneficiaryAddress(BaseModel):
            """The address of the beneficiary."""

            street_line1: Annotated[
                str | None,
                Field(description="Street line 1 information."),
            ] = None
            street_line2: Annotated[
                str | None,
                Field(description="Street line 2 information."),
            ] = None
            region: Annotated[
                str | None,
                Field(description="The name of the region."),
            ] = None
            city: Annotated[
                str | None,
                Field(description="The name of the city."),
            ] = None
            country: Annotated[
                CountryAlpha2,
                Field(
                    description="The country of the counterparty as the 2-letter ISO 3166 code."
                ),
            ]
            postcode: Annotated[
                str,
                Field(description="The postcode of the counterparty address."),
            ]

        class ModelEstimatedTime(BaseModel):
            """The estimated time of the inboud transfer of the funds,
            i.e. when we expect the recipient to receive the transfer.
            """

            unit: Annotated[
                EnumTimeUnit,
                Field(
                    description="The estimated time unit of the inbound transfer of the funds."
                ),
            ]
            min: Annotated[
                int | None,
                Field(description="The minimum time estimate.", ge=0),
            ] = None
            max: Annotated[
                int | None,
                Field(description="The maximum time estimate.", ge=0),
            ] = None

        iban: Annotated[
            str | None,
            Field(description="The IBAN number."),
        ] = None
        bic: Annotated[
            str | None,
            Field(description="The BIC number, also known as SWIFT code."),
        ] = None
        account_no: Annotated[
            str | None,
            Field(description="The account number."),
        ] = None
        sort_code: Annotated[
            str | None,
            Field(description="The sort code of the account."),
        ] = None
        routing_number: Annotated[
            str | None,
            Field(description="The routing number of the account."),
        ] = None
        beneficiary: Annotated[
            str,
            Field(description="The name of the counterparty."),
        ]
        beneficiary_address: Annotated[
            ModelBeneficiaryAddress,
            Field(description="The address of the counterparty."),
        ]
        bank_country: Annotated[
            CountryAlpha2 | None,
            Field(description="The country of the bank as the 2-letter ISO 3166 code."),
        ] = None
        pooled: Annotated[
            bool | None,
            Field(
                description="Indicates whether the account address is pooled or unique."
            ),
        ] = None
        unique_reference: Annotated[
            str | None,
            Field(description="The reference of the pooled account."),
        ] = None
        schemes: Annotated[
            list[EnumPaymentScheme],
            Field(
                description="The schemes that are available for this currency account."
            ),
        ]
        estimated_time: Annotated[
            ModelEstimatedTime,
            Field(
                description="""
                The estimated time of the inboud transfer of the funds, 
                i.e. when we expect the recipient to receive the transfer.
                """
            ),
        ]

Params

Bases: BaseModel

Query parameters for the endpoint.

Source code in pyrevolut/api/accounts/get/retrieve_full_bank_details.py
16
17
18
19
20
21
class Params(BaseModel):
    """
    Query parameters for the endpoint.
    """

    pass

Response

Bases: BaseModel

Response model for the endpoint.

Source code in pyrevolut/api/accounts/get/retrieve_full_bank_details.py
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
class Response(BaseModel):
    """
    Response model for the endpoint.
    """

    class ModelBeneficiaryAddress(BaseModel):
        """The address of the beneficiary."""

        street_line1: Annotated[
            str | None,
            Field(description="Street line 1 information."),
        ] = None
        street_line2: Annotated[
            str | None,
            Field(description="Street line 2 information."),
        ] = None
        region: Annotated[
            str | None,
            Field(description="The name of the region."),
        ] = None
        city: Annotated[
            str | None,
            Field(description="The name of the city."),
        ] = None
        country: Annotated[
            CountryAlpha2,
            Field(
                description="The country of the counterparty as the 2-letter ISO 3166 code."
            ),
        ]
        postcode: Annotated[
            str,
            Field(description="The postcode of the counterparty address."),
        ]

    class ModelEstimatedTime(BaseModel):
        """The estimated time of the inboud transfer of the funds,
        i.e. when we expect the recipient to receive the transfer.
        """

        unit: Annotated[
            EnumTimeUnit,
            Field(
                description="The estimated time unit of the inbound transfer of the funds."
            ),
        ]
        min: Annotated[
            int | None,
            Field(description="The minimum time estimate.", ge=0),
        ] = None
        max: Annotated[
            int | None,
            Field(description="The maximum time estimate.", ge=0),
        ] = None

    iban: Annotated[
        str | None,
        Field(description="The IBAN number."),
    ] = None
    bic: Annotated[
        str | None,
        Field(description="The BIC number, also known as SWIFT code."),
    ] = None
    account_no: Annotated[
        str | None,
        Field(description="The account number."),
    ] = None
    sort_code: Annotated[
        str | None,
        Field(description="The sort code of the account."),
    ] = None
    routing_number: Annotated[
        str | None,
        Field(description="The routing number of the account."),
    ] = None
    beneficiary: Annotated[
        str,
        Field(description="The name of the counterparty."),
    ]
    beneficiary_address: Annotated[
        ModelBeneficiaryAddress,
        Field(description="The address of the counterparty."),
    ]
    bank_country: Annotated[
        CountryAlpha2 | None,
        Field(description="The country of the bank as the 2-letter ISO 3166 code."),
    ] = None
    pooled: Annotated[
        bool | None,
        Field(
            description="Indicates whether the account address is pooled or unique."
        ),
    ] = None
    unique_reference: Annotated[
        str | None,
        Field(description="The reference of the pooled account."),
    ] = None
    schemes: Annotated[
        list[EnumPaymentScheme],
        Field(
            description="The schemes that are available for this currency account."
        ),
    ]
    estimated_time: Annotated[
        ModelEstimatedTime,
        Field(
            description="""
            The estimated time of the inboud transfer of the funds, 
            i.e. when we expect the recipient to receive the transfer.
            """
        ),
    ]

ModelBeneficiaryAddress

Bases: BaseModel

The address of the beneficiary.

Source code in pyrevolut/api/accounts/get/retrieve_full_bank_details.py
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
class ModelBeneficiaryAddress(BaseModel):
    """The address of the beneficiary."""

    street_line1: Annotated[
        str | None,
        Field(description="Street line 1 information."),
    ] = None
    street_line2: Annotated[
        str | None,
        Field(description="Street line 2 information."),
    ] = None
    region: Annotated[
        str | None,
        Field(description="The name of the region."),
    ] = None
    city: Annotated[
        str | None,
        Field(description="The name of the city."),
    ] = None
    country: Annotated[
        CountryAlpha2,
        Field(
            description="The country of the counterparty as the 2-letter ISO 3166 code."
        ),
    ]
    postcode: Annotated[
        str,
        Field(description="The postcode of the counterparty address."),
    ]

ModelEstimatedTime

Bases: BaseModel

The estimated time of the inboud transfer of the funds, i.e. when we expect the recipient to receive the transfer.

Source code in pyrevolut/api/accounts/get/retrieve_full_bank_details.py
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
class ModelEstimatedTime(BaseModel):
    """The estimated time of the inboud transfer of the funds,
    i.e. when we expect the recipient to receive the transfer.
    """

    unit: Annotated[
        EnumTimeUnit,
        Field(
            description="The estimated time unit of the inbound transfer of the funds."
        ),
    ]
    min: Annotated[
        int | None,
        Field(description="The minimum time estimate.", ge=0),
    ] = None
    max: Annotated[
        int | None,
        Field(description="The maximum time estimate.", ge=0),
    ] = None