In API version 2024-10, we added two new mutations to enable marketplace app developers to grant and delete discounts through the platform API.

Grant discounts

Using the grant_marketplace_app_discount mutation, you can give discounts through the API.

mutation { grant_marketplace_app_discount ( account_slug: "Test", app_id: 123456, data: { app_plan_ids: ["Basic"], days_valid: 30, discount: 10, is_recurring: false, period: MONTHLY }) { granted_discount { app_id period discount } } }

Delete discounts

Using the delete_marketplace_app_discount mutation, you can remove discounts through the API.

mutation { delete_marketplace_app_discount ( account_slug: "Test", app_id: 123456 ) { deleted_discount { account_slug app_id } } }

In API version 2024-10, we added the new marketplace_app_discounts object for marketplace app developers to manage discounts using the platform API. You can query this object to return discount metadata.

query { marketplace_app_discounts (app_id: 123456) { account_slug discount valid_until } }

In the UI, you can subscribe everyone in a monday account to a board by selecting the "Everyone at " team option (see image below).

We just released a bug fix to all API versions that enables you to do the same thing through the API by passing [-1 as the team ID in the add_teams_to_board mutation.

mutation { add_teams_to_board (board_id: 1234567890, kind: subscriber, team_ids: [-1]) { id } }

In API versions 2024-07 and later, you can access the new apps_monetization_info object to determine the number of seats a monday.com account has across all products. This is relevant for all marketplace apps utilizing seat-based pricing.

query { apps_monetization_info { seats_count } }
let query = "query { apps_monetization_info { seats_count } }"; fetch ("https://api.monday.com/v2", { method: 'post', headers: { 'Content-Type': 'application/json', 'Authorization' : 'YOUR_API_KEY_HERE' }, body: JSON.stringify({ query : query }) }) .then(res => res.json()) .then(res => console.log(JSON.stringify(res, null, 2)));

We recently reverted changes to the ComplexityException errors that impacted the error message (related to this previous update). They are now back in their original state (see example below).

{ "error_code": "ComplexityException", "status_code": 429, "error_message": "Complexity budget exhausted, query cost 30001 budget remaining 19986 out of 1000000 reset in 3 seconds", "error_data": {}, "errors": [ "Complexity budget exhausted, query cost 30001 budget remaining 19986 out of 1000000 reset in 3 seconds" ], "account_id": 1234567890 }

Changes to the ComplexityException error's structure and error code were reverted to their original format. Check out the example below:

{ "error_code": "ComplexityException", "status_code": 429, "error_message": "Complexity budget exhausted, query cost 30001 budget remaining 19986 out of 1000000 reset in 3 seconds", "error_data": {}, "errors": [ "Complexity budget exhausted, query cost 30001 budget remaining 19986 out of 1000000 reset in 3 seconds" ], "account_id": 1234567890 }

At the end of March, we added a new app_subscription_operations query and mutation to API version 2024-04. App developers using feature-based pricing can use this API to track and update operation usage, as needed.

Query

The new app_subscription_operations query returns app subscription data, the current operation counter value, as well as the name of each operation. You can read more about the new query here.

query { app_subscription_operations (kind: "image_scan") { counter_value period_key } }

Mutation

The new increase_app_subscription_operations mutation allows you to increase the counter for a specific operation. This can be used to track the number of operations each account uses, per operation, per billing period. You can read more about the new mutation here.

mutation { increase_app_subscription_operations(kind: "image_scan", increment_by: 2){ counter_value } }