Skip to main content
Question

API Bug report: Upload Preflight check (OPTIONS) applies one-directional NFKC normalization causing asymmetric 409 conflicts on files and folders

  • April 23, 2026
  • 0 replies
  • 16 views

Summary

The preflight check endpoint applies NFKC normalization to the incoming filename/folder name before checking for conflicts, but does not apply the same normalization to the names already stored in the folder. This causes an order-dependent, asymmetric 409 conflict for NFKC-equivalent names that can legitimately coexist as separate items.

Steps to reproduce

Take two names that are NFKC-equivalent but distinct code points:
- Item A: `\uFA1B` (CJK Compatibility Ideograph, U+FA1B)
- Item B: `\u798F` (CJK Unified Ideograph, U+798F)

These two items can coexist in Box — the actual upload/create endpoint accepts both. However:

Order 1 (succeeds):
1. Upload/create `\uFA1B` → stored as `\uFA1B` ✓
2. Upload/create `\u798F` → preflight normalizes `\u798F` → `\u798F`, no exact `\u798F` in folder → OK ✓

Order 2 (fails):
1. Upload/create `\u798F` → stored as `\u798F` ✓
2. Upload/create `\uFA1B` → preflight normalizes `\uFA1B` → `\u798F`, finds existing `\u798F` → **409 Conflict** ✗

This behavior is reproducible for both files (preflight check on OPTIONS https://api.box.com/2.0/files/content) and folders (create folder on POSThttps://api.box.com/2.0/folders).

Expected behavior

The preflight should either:
- Apply NFKC normalization symmetrically (normalize both the incoming name and all stored names before comparing), or
- Not apply NFKC normalization at all in the preflight, consistent with what the actual upload/create endpoint allows (better option in my opinion)

Actual behavior

The preflight normalizes only the incoming name (NFKC), producing a false conflict that depends entirely on creation order. The actual endpoint does not exhibit this behavior — both items can coexist when the preflight is bypassed.

Impact

Applications that rely on the preflight check cannot deterministically upload files or create folders with NFKC-equivalent names regardless of order, even though Box storage supports their coexistence.

I am using direct API requests without using any SDK.

If you need more details please let me know.