Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion codegen/pkg/builder/methods.go
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,6 @@ func (b *Builder) buildQueryFields(o *v3.Operation) ([]Property, error) {
SerializedName: alias,
Type: typeName,
Optional: p.Required == nil || !*p.Required,
Nullable: schemaIsNullable(p.Schema.Schema()),
Schema: p.Schema,
Comment: parameterPropertyDoc(p.Schema.Schema()),
})
Expand Down
77 changes: 35 additions & 42 deletions openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@
"post": {
"operationId": "CreateCheckout",
"summary": "Create a checkout",
"description": "Creates a new payment checkout resource. The unique `checkout_reference` created by this request, is used for further manipulation of the checkout.\n\nFor 3DS checkouts, add the `redirect_url` parameter to your request body schema.\nTo use the [Hosted Checkout](https://developer.sumup.com/online-payments/checkouts/hosted-checkout/) page, set the `hosted_checkout.enabled` to `true`.\n\nFollow by processing a checkout to charge the provided payment instrument.",
"description": "Creates a payment checkout for the specified merchant, amount, and currency. Supply a `checkout_reference` to identify the payment attempt in your own systems. Creating a checkout does not charge a payment instrument.\n\nSet `hosted_checkout.enabled` to `true` to receive a [Hosted Checkout](https://developer.sumup.com/online-payments/checkouts/hosted-checkout/) URL where the customer can complete the payment.\nUse `redirect_url` for redirect-based payment and 3DS flows. If `return_url` is provided, SumUp sends processing updates to that backend callback URL.\n\nComplete the payment through [Hosted Checkout](https://developer.sumup.com/online-payments/checkouts/hosted-checkout/) or the [Payment Widget](https://developer.sumup.com/online-payments/checkouts/card-widget).",
"tags": [
"Checkouts"
],
Expand Down Expand Up @@ -746,7 +746,7 @@
"patch": {
"operationId": "UpdateCheckout",
"summary": "Update a checkout",
"description": "Updates an identified checkout resource.",
"description": "Updates the amount, currency, description, reference, expiration, or customer associated with an existing checkout. Only the supplied fields are updated.\n\nThis request changes the checkout details; it does not charge a payment instrument. Process the checkout separately to attempt a payment.",
"tags": [
"Checkouts"
],
Expand Down Expand Up @@ -3443,28 +3443,30 @@
"type": "string"
}
},
{
"name": "resource.id",
"in": "query",
"description": "Filter memberships by the ID of the resource the membership is in.",
"schema": {
"type": "string"
}
},
{
"name": "resource.parent.id",
"in": "query",
"description": "Filter memberships by the parent of the resource the membership is in.\nWhen filtering by parent both `resource.parent.id` and `resource.parent.type` must be present. Pass explicit null to filter for resources without a parent.",
"allowEmptyValue": true,
"description": "Filter memberships by the parent of the resource the membership is in.\nOmit both `resource.parent.id` and `resource.parent.type` to skip parent filtering. When filtering by parent, both parameters must be present. To select resources without a parent, set each parameter to an empty value. Otherwise, both parameters must identify a parent.",
"schema": {
"type": [
"string",
"null"
]
"type": "string"
}
},
{
"name": "resource.parent.type",
"in": "query",
"description": "Filter memberships by the parent of the resource the membership is in.\nWhen filtering by parent both `resource.parent.id` and `resource.parent.type` must be present. Pass explicit null to filter for resources without a parent.",
"allowEmptyValue": true,
"description": "Filter memberships by the parent of the resource the membership is in.\nOmit both `resource.parent.id` and `resource.parent.type` to skip parent filtering. When filtering by parent, both parameters must be present. To select resources without a parent, set each parameter to an empty value. Otherwise, both parameters must identify a parent.",
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/ResourceType"
}
],
"type": "null"
"$ref": "#/components/schemas/ResourceType"
}
},
{
Expand Down Expand Up @@ -3603,19 +3605,6 @@
"example": "245b2ead-85bf-45ff-856f-311a88a5d454"
}
},
{
"name": "user.type",
"in": "query",
"description": "Filter the returned members by user type. Repeat this parameter to include multiple user types.",
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/UserType"
}
},
"style": "form",
"explode": true
},
{
"name": "status",
"in": "query",
Expand Down Expand Up @@ -3730,7 +3719,7 @@
"post": {
"operationId": "CreateMerchantMember",
"summary": "Create a member",
"description": "Create a merchant member.",
"description": "Adds a member to the merchant account with the specified roles.\n\nBy default, sends an invitation email to the provided address. The recipient must accept the invitation to join the account.\nWhen `is_managed_user` is `true`, creates a managed user with the provided password and optional nickname and assigns the roles directly, without sending an invitation.",
"tags": [
"Members"
],
Expand Down Expand Up @@ -3795,6 +3784,7 @@
"roles": {
"type": "array",
"description": "List of roles to assign to the new member.",
"minItems": 1,
"maxItems": 124,
"items": {
"type": "string",
Expand Down Expand Up @@ -3978,7 +3968,7 @@
},
"put": {
"summary": "Update a member",
"description": "Update the merchant member.",
"description": "Updates a merchant member and returns the updated member.\n\nProviding `roles` replaces the member's assigned roles and can grant or revoke access. Providing `metadata` replaces the entire metadata object.\nFor managed users, `user.nickname` changes the display name and `user.password` replaces the password. Updating the password also enables the managed user account.",
"tags": [
"Members"
],
Expand Down Expand Up @@ -4017,6 +4007,7 @@
"properties": {
"roles": {
"type": "array",
"minItems": 1,
"maxItems": 124,
"items": {
"type": "string",
Expand Down Expand Up @@ -4392,6 +4383,7 @@
"permissions": {
"type": "array",
"description": "User's permissions.",
"minItems": 1,
"maxItems": 100,
"items": {
"type": "string"
Expand Down Expand Up @@ -4652,7 +4644,7 @@
"patch": {
"operationId": "UpdateMerchantRole",
"summary": "Update a role",
"description": "Update a custom role.",
"description": "Updates a custom role's name, description, or permissions and returns the updated role.\n\nProviding `permissions` replaces the role's permission list and changes the access granted to members assigned to that role. Omitted fields remain unchanged.",
"tags": [
"Roles"
],
Expand Down Expand Up @@ -4696,6 +4688,7 @@
"permissions": {
"type": "array",
"description": "User's permissions.",
"minItems": 1,
"maxItems": 100,
"items": {
"type": "string"
Expand Down Expand Up @@ -5438,7 +5431,7 @@
},
"patch": {
"summary": "Update a Reader",
"description": "Update a Reader.",
"description": "Updates a reader's name or metadata and returns the updated reader.\n\nProviding `metadata` replaces the entire metadata object; include all entries that should be retained. Omitted fields remain unchanged.",
"operationId": "UpdateReader",
"tags": [
"Readers"
Expand Down Expand Up @@ -8923,17 +8916,6 @@
}
}
},
"UserType": {
"type": "string",
"description": "Type of the user account.",
"enum": [
"user",
"managed_user",
"service_account",
"system_account"
],
"example": "user"
},
"Metadata": {
"description": "Set of user-defined key-value pairs attached to the object. Partial updates are not supported. When updating, always submit whole metadata. Maximum of 64 parameters are allowed in the object.",
"type": "object",
Expand All @@ -8947,6 +8929,17 @@
"example": {},
"additionalProperties": true
},
"UserType": {
"type": "string",
"description": "Type of the user account.",
"enum": [
"user",
"managed_user",
"service_account",
"system_account"
],
"example": "user"
},
"Address": {
"externalDocs": {
"description": "Address documentation",
Expand Down
2 changes: 1 addition & 1 deletion sumup/_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
from ._version import __version__

HeaderTypes = typing.Mapping[str, str]
PrimitiveQueryValue = str | int | float | None
PrimitiveQueryValue = str | int | float
QueryValue = PrimitiveQueryValue | typing.Sequence[PrimitiveQueryValue]
QueryParamTypes = typing.Mapping[str, QueryValue]

Expand Down
24 changes: 14 additions & 10 deletions sumup/checkouts/resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -642,12 +642,12 @@ def create(
"""
Create a checkout

Creates a new payment checkout resource. The unique `checkout_reference` created by this request, is used for furthermanipulation of the checkout.
Creates a payment checkout for the specified merchant, amount, and currency. Supply a `checkout_reference` to identifythe payment attempt in your own systems. Creating a checkout does not charge a payment instrument.

For 3DS checkouts, add the `redirect_url` parameter to your request body schema.
To use the [Hosted Checkout](https://developer.sumup.com/online-payments/checkouts/hosted-checkout/) page, setthe `hosted_checkout.enabled` to `true`.
Set `hosted_checkout.enabled` to `true` to receive a [Hosted Checkout](https://developer.sumup.com/online-payments/checkouts/hosted-checkout/) URLwhere the customer can complete the payment.
Use `redirect_url` for redirect-based payment and 3DS flows. If `return_url` is provided, SumUp sends processing updatesto that backend callback URL.

Follow by processing a checkout to charge the provided payment instrument.
Complete the payment through [Hosted Checkout](https://developer.sumup.com/online-payments/checkouts/hosted-checkout/) orthe [Payment Widget](https://developer.sumup.com/online-payments/checkouts/card-widget).


Raises:
Expand Down Expand Up @@ -786,7 +786,9 @@ def update(
"""
Update a checkout

Updates an identified checkout resource.
Updates the amount, currency, description, reference, expiration, or customer associated with an existing checkout. Onlythe supplied fields are updated.

This request changes the checkout details; it does not charge a payment instrument. Process the checkout separately toattempt a payment.


Raises:
Expand Down Expand Up @@ -1062,12 +1064,12 @@ async def create(
"""
Create a checkout

Creates a new payment checkout resource. The unique `checkout_reference` created by this request, is used for furthermanipulation of the checkout.
Creates a payment checkout for the specified merchant, amount, and currency. Supply a `checkout_reference` to identifythe payment attempt in your own systems. Creating a checkout does not charge a payment instrument.

For 3DS checkouts, add the `redirect_url` parameter to your request body schema.
To use the [Hosted Checkout](https://developer.sumup.com/online-payments/checkouts/hosted-checkout/) page, setthe `hosted_checkout.enabled` to `true`.
Set `hosted_checkout.enabled` to `true` to receive a [Hosted Checkout](https://developer.sumup.com/online-payments/checkouts/hosted-checkout/) URLwhere the customer can complete the payment.
Use `redirect_url` for redirect-based payment and 3DS flows. If `return_url` is provided, SumUp sends processing updatesto that backend callback URL.

Follow by processing a checkout to charge the provided payment instrument.
Complete the payment through [Hosted Checkout](https://developer.sumup.com/online-payments/checkouts/hosted-checkout/) orthe [Payment Widget](https://developer.sumup.com/online-payments/checkouts/card-widget).


Raises:
Expand Down Expand Up @@ -1206,7 +1208,9 @@ async def update(
"""
Update a checkout

Updates an identified checkout resource.
Updates the amount, currency, description, reference, expiration, or customer associated with an existing checkout. Onlythe supplied fields are updated.

This request changes the checkout details; it does not charge a payment instrument. Process the checkout separately toattempt a payment.


Raises:
Expand Down
35 changes: 22 additions & 13 deletions sumup/members/resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@
MetadataInput,
Problem,
UserType,
UserTypeInput,
)


Expand All @@ -57,7 +56,9 @@ class CreateMerchantMemberBodyInput(typing_extensions.TypedDict, total=False):
roles: typing_extensions.Required[
typing_extensions.Annotated[
typing.Sequence[str],
typing_extensions.Doc("List of roles to assign to the new member.\nMax items: 124"),
typing_extensions.Doc(
"List of roles to assign to the new member.\nMin items: 1\nMax items: 124"
),
]
]
attributes: typing_extensions.NotRequired[
Expand Down Expand Up @@ -147,7 +148,9 @@ class UpdateMerchantMemberBodyInput(typing_extensions.TypedDict, total=False):
]
]
roles: typing_extensions.NotRequired[
typing_extensions.Annotated[typing.Sequence[str], typing_extensions.Doc("Max items: 124")]
typing_extensions.Annotated[
typing.Sequence[str], typing_extensions.Doc("Min items: 1\nMax items: 124")
]
]
user: typing_extensions.NotRequired[
typing_extensions.Annotated[
Expand Down Expand Up @@ -182,7 +185,6 @@ def list(
scroll: bool | NotGivenType = NOT_GIVEN,
email: str | NotGivenType = NOT_GIVEN,
user_id: str | NotGivenType = NOT_GIVEN,
user_type: typing.Sequence[UserTypeInput] | NotGivenType = NOT_GIVEN,
status: MembershipStatusInput | NotGivenType = NOT_GIVEN,
roles: typing.Sequence[str] | NotGivenType = NOT_GIVEN,
headers: HeaderTypes | None = None,
Expand All @@ -209,8 +211,6 @@ def list(
query_data["email"] = email
if not isinstance(user_id, NotGivenType) and user_id is not None:
query_data["user.id"] = user_id
if not isinstance(user_type, NotGivenType) and user_type is not None:
query_data["user.type"] = list(user_type)
if not isinstance(status, NotGivenType) and status is not None:
query_data["status"] = status
if not isinstance(roles, NotGivenType) and roles is not None:
Expand Down Expand Up @@ -244,7 +244,10 @@ def create(
"""
Create a member

Create a merchant member.
Adds a member to the merchant account with the specified roles.

By default, sends an invitation email to the provided address. The recipient must accept the invitation tojoin the account.
When `is_managed_user` is `true`, creates a managed user with the provided password and optional nickname andassigns the roles directly, without sending an invitation.


Raises:
Expand Down Expand Up @@ -325,7 +328,10 @@ def update(
"""
Update a member

Update the merchant member.
Updates a merchant member and returns the updated member.

Providing `roles` replaces the member's assigned roles and can grant or revoke access. Providing `metadata` replaces theentire metadata object.
For managed users, `user.nickname` changes the display name and `user.password` replaces the password. Updating thepassword also enables the managed user account.


Raises:
Expand Down Expand Up @@ -420,7 +426,6 @@ async def list(
scroll: bool | NotGivenType = NOT_GIVEN,
email: str | NotGivenType = NOT_GIVEN,
user_id: str | NotGivenType = NOT_GIVEN,
user_type: typing.Sequence[UserTypeInput] | NotGivenType = NOT_GIVEN,
status: MembershipStatusInput | NotGivenType = NOT_GIVEN,
roles: typing.Sequence[str] | NotGivenType = NOT_GIVEN,
headers: HeaderTypes | None = None,
Expand All @@ -447,8 +452,6 @@ async def list(
query_data["email"] = email
if not isinstance(user_id, NotGivenType) and user_id is not None:
query_data["user.id"] = user_id
if not isinstance(user_type, NotGivenType) and user_type is not None:
query_data["user.type"] = list(user_type)
if not isinstance(status, NotGivenType) and status is not None:
query_data["status"] = status
if not isinstance(roles, NotGivenType) and roles is not None:
Expand Down Expand Up @@ -482,7 +485,10 @@ async def create(
"""
Create a member

Create a merchant member.
Adds a member to the merchant account with the specified roles.

By default, sends an invitation email to the provided address. The recipient must accept the invitation tojoin the account.
When `is_managed_user` is `true`, creates a managed user with the provided password and optional nickname andassigns the roles directly, without sending an invitation.


Raises:
Expand Down Expand Up @@ -565,7 +571,10 @@ async def update(
"""
Update a member

Update the merchant member.
Updates a merchant member and returns the updated member.

Providing `roles` replaces the member's assigned roles and can grant or revoke access. Providing `metadata` replaces theentire metadata object.
For managed users, `user.nickname` changes the display name and `user.password` replaces the password. Updating thepassword also enables the managed user account.


Raises:
Expand Down
Loading
Loading