Skip to content

docs: Add Folder Management API to Unstable spec#387

Merged
sametozcan merged 7 commits intomainfrom
samet/add-internal-articles-folders-api
Mar 12, 2026
Merged

docs: Add Folder Management API to Unstable spec#387
sametozcan merged 7 commits intomainfrom
samet/add-internal-articles-folders-api

Conversation

@sametozcan
Copy link
Contributor

@sametozcan sametozcan commented Feb 26, 2026

Why?

Folder endpoints are being refactored from /internal_articles/folders to top-level /folders to make folders a first-class organizational structure that can be used across multiple content types (internal articles, help center articles, etc.) in the future, not just internal articles.

How?

Updated the OpenAPI specification to reflect the new folder endpoint structure and removed the bulk move endpoint that's not needed initially.

Issue: https://github.com/intercom/intercom/issues/477358

Generated with Claude Code

sametozcan and others added 3 commits March 10, 2026 15:20
- Add folder_id field to internal_article schema (nullable)
- Add folder_id parameter to create internal article request
- Add folder_id query parameter to search endpoint (already present)
- Add new endpoints:
  * GET /internal_articles/folders - List all folders
  * POST /internal_articles/folders - Create a folder
  * GET /internal_articles/folders/{id} - Get folder details
  * PUT /internal_articles/folders/{id} - Update a folder
  * DELETE /internal_articles/folders/{id} - Delete empty folder
  * POST /internal_articles/move_to_folder - Bulk move articles

- Add schemas:
  * internal_article_folder
  * internal_article_folder_list
  * create_internal_article_folder_request
  * update_internal_article_folder_request

This enables folder management for internal articles through the API,
allowing customers to organize their internal documentation.

Relates to: intercom/intercom#472943
Update OpenAPI specification to reflect folder endpoints moving from
/internal_articles/folders to top-level /folders resource.

Changes:
- Update paths: /internal_articles/folders → /folders
- Update operation IDs: Remove "InternalArticle" prefix
- Change tags: "Internal Articles" → "Folders"
- Update descriptions: Remove "for internal articles" references
- Remove bulk move endpoint /internal_articles/move_to_folder

This makes folders a first-class organizational structure that can be
used across multiple content types, not just internal articles.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add parent_folder_id query param to GET /folders for hierarchy filtering
- Rename article_count to content_count to match monolith presenter
- Add folder_id to article_list_item, create/update article requests
- Add folder_id to update_internal_article_request
- Add phrase query param and fix folder_id type on internal articles search
- Add deleted_folder_object schema for delete response
- Fix owner_id description in update_internal_article_request

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@sametozcan sametozcan force-pushed the samet/add-internal-articles-folders-api branch from aa3f37c to ab102b2 Compare March 10, 2026 15:36
sametozcan and others added 2 commits March 11, 2026 15:08
Folders are a top-level resource that can hold both articles and internal
articles. Rename internal_article_folder* schemas to folder* to reflect this.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove phrase query param from internal articles search (not implemented)
- Inline folder_list, create_folder_request, update_folder_request schemas
  directly into endpoint definitions instead of separate schema refs
- Remove standalone schema definitions for the above
- Keep folder and deleted_folder_object as reusable schemas

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@sametozcan sametozcan changed the title docs: Refactor folder endpoints to top-level /folders docs: Add Folder Management API to Unstable spec Mar 11, 2026
@sametozcan sametozcan requested review from a team and marvin-bitterlich March 11, 2026 15:37
Copy link
Contributor

@auroralimin auroralimin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@sametozcan sametozcan requested review from a team and EmmanuelIntercom March 12, 2026 10:37
example: 123
schema:
type: string
type: integer
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just adding a note to make sure that this is really an int!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, this is an integer

description: A folder for organizing content
properties:
id:
type: integer
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same thing here. only pointing this out bc we have a lot of IDs that are strings. they should really be ints but they're not.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Folder ID is integer in the model

sametozcan and others added 2 commits March 12, 2026 17:33
Add 401 Unauthorized to Create, Retrieve, Update, Delete folder endpoints.
Add 422 Validation error to Update folder endpoint.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Create and Update folder endpoints now return 400 Bad Request for
validation errors. 422 is reserved for Delete when folder has content.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@sametozcan sametozcan merged commit b2616a7 into main Mar 12, 2026
3 checks passed
@sametozcan sametozcan deleted the samet/add-internal-articles-folders-api branch March 12, 2026 18:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants