Retiring a knowledge article through the Table API returns a 403 Forbidden errorIssue When attempting to retire a knowledge article by updating the "workflow_state" field through the Table API, the request fails with an ACL Exception Update Failed due to security constraints 403 Forbidden error. This error occurs because two ACLs fail when the Table API attempts to update the "workflow_state" field directly on a knowledge article. Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } All releases Cause Two ACLs fail when the Table API attempts to update the "workflow_state" field of a knowledge article. Both ACLs call the `canWrite` function in the `KBKnowledge` script include, which in turn calls the `kbKnowledge.canWriteKbVersioningSNC` script include. The failure originates at line 678 of the `canWrite` function: return ((this.hasAnyElevatedAccess(current) || this.isMemberOfValidGroup(current,this.OWNERSHIP_GROUP)) && this.getEditableFields()!=''); The `this.getEditableFields()!=''` condition fails. This condition checks whether minor edits to a published article are allowed by verifying that the `glide.knowman.versioning.enable_minor_edits` system property is set to `true`. If `glide.knowman.versioning.enable_minor_edits` is `true`, the system then checks the `glide.knowman.versioning.minor_edit_fields` system property to determine which fields are allowed to be edited on a published article. Because "workflow_state" is not listed in `glide.knowman.versioning.minor_edit_fields` by default, the ACL check fails and the API request is blocked. "Difference between the Retire UI action and a direct Table API update" The Retire UI action calls the `retireKnowledgeRecord` function of the `KnowledgeUIActions` script include. This function triggers the retire flow or workflow for the knowledge article rather than directly updating the "workflow_state" field. The retire flow or workflow must run to ensure all dependent records of the knowledge article are updated correctly when an article is retired. A direct update to "workflow_state" via the Table API bypasses this flow or workflow, which leaves dependent records in an inconsistent state. Resolution Articles should not be retired through the Table API. The Retire UI action must be used so that the retire flow or workflow is triggered and all dependent records are updated correctly. The ACLs, script includes, and system properties that enforce this base system behavior are high-risk files and must not be customized. "To retire a knowledge article using the Retire UI action, follow the steps below." "Important:" If the integration team requires an automated retirement process, the recommended approach is to trigger the retire flow or workflow through the appropriate API method rather than updating "workflow_state" directly. Related Links - ServiceNow Table API documentation- ServiceNow Knowledge Management documentation