# Modify Subscription Request
The request to update the quantity of the product or service in a subscription. You can also use this method to switch the plan and update the `shipping_amount` and `shipping_address` values for the subscription. This type of update requires the buyer's consent.
## Structure
`ModifySubscriptionRequest`
## Fields
| Name | Type | Tags | Description | Getter | Setter |
| --- | --- | --- | --- | --- | --- |
| `planId` | `?string` | Optional | The unique PayPal-generated ID for the plan.
**Constraints**: *Minimum Length*: `26`, *Maximum Length*: `26`, *Pattern*: `^P-[A-Z0-9]*$` | getPlanId(): ?string | setPlanId(?string planId): void |
| `quantity` | `?string` | Optional | The quantity of the product or service in the subscription.
**Constraints**: *Minimum Length*: `1`, *Maximum Length*: `32`, *Pattern*: `^([0-9]+\|([0-9]+)?[.][0-9]+)$` | getQuantity(): ?string | setQuantity(?string quantity): void |
| `shippingAmount` | [`?Money`](../../doc/models/money.md) | Optional | The currency and amount for a financial transaction, such as a balance or payment due. | getShippingAmount(): ?Money | setShippingAmount(?Money shippingAmount): void |
| `shippingAddress` | [`?ShippingDetails`](../../doc/models/shipping-details.md) | Optional | The shipping details. | getShippingAddress(): ?ShippingDetails | setShippingAddress(?ShippingDetails shippingAddress): void |
| `applicationContext` | [`?SubscriptionPatchApplicationContext`](../../doc/models/subscription-patch-application-context.md) | Optional | The application context, which customizes the payer experience during the subscription approval process with PayPal. | getApplicationContext(): ?SubscriptionPatchApplicationContext | setApplicationContext(?SubscriptionPatchApplicationContext applicationContext): void |
| `plan` | [`?PlanOverride`](../../doc/models/plan-override.md) | Optional | An inline plan object to customise the subscription. You can override plan level default attributes by providing customised values for the subscription in this object. | getPlan(): ?PlanOverride | setPlan(?PlanOverride plan): void |
## Example (as JSON)
```json
{
"plan_id": "plan_id6",
"quantity": "quantity0",
"shipping_amount": {
"currency_code": "currency_code0",
"value": "value6"
},
"shipping_address": {
"name": {
"full_name": "full_name6"
},
"email_address": "email_address8",
"phone_number": {
"country_code": "country_code2",
"national_number": "national_number6"
},
"type": "PICKUP_IN_STORE",
"options": [
{
"id": "id2",
"label": "label2",
"type": "SHIPPING",
"amount": {
"currency_code": "currency_code6",
"value": "value0"
},
"selected": false
}
]
},
"application_context": {
"brand_name": "brand_name8",
"locale": "locale2",
"shipping_preference": "SET_PROVIDED_ADDRESS",
"payment_method": {
"payee_preferred": "UNRESTRICTED"
},
"return_url": "return_url0",
"cancel_url": "cancel_url2"
}
}
```