docs: distinguish empty catalog song results from errors

Merged
SI
3d ago
+88-15

The catalog-song reference tells clients that an empty result is 404, although the handler returns 200 with an empty array and zero count. Document that result, missing/inaccessible-catalog 403 and masked server-error 500; add empty-result/error examples and explain effective artist filtering before pagination/counting. Regenerate the shared fixture and complete AI export. Other operations, schema components and current Context contracts are unchanged.

API #1078 and #1079 are merged. The inventory now pins API #1079's actual merge 934bbe57fc163bfecc14f618a0e8c56c60623378, whose complete tree matches the accepted candidate. The latest two-file delta updates only that API reference and the internal release status; all maintained public source, Context and complete AI bytes are unchanged.

Validation on the actual API source: 506 Marketing tests, 11 docs checks, 28 Python response-contract tests, fixture/inventory checks and the required production build pass. The local build uses a synthetic format-valid public Privy app ID and does not verify login. The earlier corrected empty/error examples and local rendered reference also pass validation. Fresh exact-head CI and independent delta review follow the update.

After this PR is accepted and merged, regenerate Docs #395 from the actual Marketing merge and verify each public publication separately. Existing hosted catalog rendering and broader reconciliation holds remain separate.


Summary by cubic

Corrects the catalog-song API reference so an empty result is documented as HTTP 200 with zero songs and count instead of 404, and adds examples for empty results plus specifics on 403 and 500 responses.

  • Explains that effective artist filtering happens before pagination and counting.
  • Regenerates the shared fixture and completed AI documentation export, pinned to the merged API release.
  • Missing or inaccessible catalogs return 403, and served failures return 500; the previous 404 contract is removed.