We recently added a new descriptive FIELD_LIMIT_EXCEEDED error to all API versions.

The error occurs when there are to many requests running concurrently. Previously, this returned a non-descriptive Internal Server Error . You can resolve the error by waiting for the amount of time indicated in the error before retrying the call.

{ "error_message": "Concurrency limit exceeded for the field", "error_code": "FIELD_LIMIT_EXCEEDED", "error_data": { "retry_in_seconds": 15, "entity": "boards" }, "status_code": 429, "account_id": 123456 }

In API version 2024-10, we added the errors object to all API errors to comply with GraphQL specifications. Check out the before and after sample errors below!

Before

{ "error_message": "User unauthorized to perform action", "error_code": "UserUnauthorizedException", "error_data": {}, "status_code": 403, "account_id": 123456 }

After

{ "errors": [ { "message": "User unauthorized to perform action", "locations": [ { "line": 2, "column": 3 } ], "path": [ "me" ], "extensions": { "code": "UserUnauthorizedException", "error_data": {}, "status_code": 403 } } ], "error_message": "User unauthorized to perform action", "error_code": "UserUnauthorizedException", "error_data": {}, "status_code": 403, "account_id": 123456 }

We recently added a new descriptive JsonParseException error to all API versions.

The error occurs when an issue with JSON syntax error is identified in a query. Previously, this returned a non-descriptive Internal Server Error . You can resolve the error by verifying the validity of the JSON input.

{ "error_message": "Syntax error in JSON input", "error_code": "JsonParseException", "error_data": { "json": "{\"columnId..." }, "status_code": 400, "account_id": 123456 }

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 } }