# Update bonus promotion Updates the promotion. NoteNew data will replace old data. If you want to update only a part of a promotion, you should transfer all required data in request as well. Promotion adds free bonus items to the purchase made by a user. The promotion can be applied to every purchase within a project or to a purchase that includes particular items. Endpoint: PUT /v3/project/{project_id}/admin/promotion/{promotion_id}/bonus Version: 2.0.0 Security: basicAuth ## Path parameters: - `project_id` (integer, required) Project ID. You can find this parameter in your Publisher Account next to the name of the project. Example: 44056 - `promotion_id` (integer, required) Promotion ID. Unique promotion identifier within the project. Example: 111425 ## Request fields (application/json): - `id` (integer) Promotion ID. Unique promotion identifier within the project. - `promotion_periods` (array) Promotion validity periods. If multiple periods are specified, both date_from and date_until are required. - `promotion_periods.date_from` (string, required) Start date for the specified promotion. Example: "2020-08-11T10:00:00+03:00" - `promotion_periods.date_until` (string,null) End date for the specified promotion. If set to null, the promotion is indefinite. Can be null only if a single validity period is specified. Example: "2020-08-11T20:00:00+03:00" - `name` (object, required) Name of promotion. Should contain key/value pairs where key is a locale with "^[a-z]{2}-[A-Z]{2}$" format, value is string. Example: {"en-US":"Summer season bonus","de-DE":"Sommersaison Bonus"} - `condition` (array,null, required) Set of items required to be included in the purchase for applying a promotion. If this parameters is null, a promotion will be applied to any purchases within a project. - `condition.sku` (string) Item SKU. - `attribute_conditions` (array) Conditions for validating user attributes. Determine promotion availability based on whether user attributes match all specified conditions. - `bonus` (array,null, required) - `bonus.quantity` (number) Item quantity. - `limits` (object) Promotion limits. - `limits.per_user` (integer,null) Promotion limitation for a separate user. - `limits.recurrent_schedule` (object,null) Limit refresh period. - `limits.recurrent_schedule.per_user` (object) User limit refresh period. - `limits.recurrent_schedule.per_user.interval_type` (string) Recurrent refresh period type. Enum: "daily", "weekly", "monthly" - `limits.recurrent_schedule.per_user.day_of_week` (integer,null) Day of the week when the limits refresh. Where 1 is Monday and 7 is Sunday. Not null only for weekly limit refresh period type. - `limits.recurrent_schedule.per_user.day_of_month` (integer,null) Day of the month when limits refresh. If there's no selected day of the month as it's shorter, then the refresh will occur on the last day of the month. Not null only for monthly limit refresh period type. - `limits.recurrent_schedule.per_user.time` (string) Time of limit refresh in the desired time zone (rounding to hours). Example: "11:00:00+03:00" - `limits.recurrent_schedule.per_user.reset_next_date` (integer) Date and time when limits refresh (Unix Timestamp). Example: 1677553200 - `limits.recurrent_schedule.per_user.displayable_reset_start_date` (string) Date and time of the first limit refresh (ISO 8601). Example: "2023-02-28T11:00:00+08:00" - `limits.recurrent_schedule.per_user.displayable_reset_next_date` (string) Date and time when limits should reset (ISO 8601). Example: "2023-02-28T11:00:00+08:00" - `price_conditions` (array,null) Array of objects with conditions that set the price range for applying the promotion. The promotion applies only to items whose price meets all the conditions in the array. If you pass this array, set the value of the [condition](/api/shop-builder/operation/create-bonus-promotion/#!path=condition&t=request) object to null. - `price_conditions.operator` (string, required) Comparison operator for setting the price range for applying the promotion. Enum: "ge", "gt", "le", "lt", "eq", "ne" - `price_conditions.value` (string, required) Value for determining the price range for applying the promotion. - `excluded_promotions` (array) List of promotion IDs to exclude when applying this promotion. Example: [12, 789] Example: [12,789] - `is_enabled` (boolean) Whether promotion is enabled or not. Example: true ## Response 401 fields (application/json): - `statusCode` (integer) Example: 401 - `errorCode` (integer) Example: 1020 - `errorMessage` (string) Example: "[0401-1020]: Error in Authentication method occurred" ## Response 422 fields (application/json): - `statusCode` (integer) Example: 422 - `errorCode` (integer) Example: 1102 - `errorMessage` (string) Example: "[0401-1102]: Unprocessable Entity. The property `bonus` is required" - `transactionId` (string) Example: "x-x-x-x-transactionId-mock-x-x-x" ## Response 204 fields