Source and collection detail: updatedSince filters the repository itself, so the request returns 404

Đang mở
#2,938 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
55/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Lĩnh vực
api

Hướng nghiên cứu

Read get_base_queryset in core/common/models.py, then trace how source and collection detail views use it and how updatedSince filters included concepts and mappings. Check the serializers in core/common/serializers.py and the detail documentation in oclapi/apireference/sources.md and collections.md for the verbose decision. Add a test where updatedSince is later than the repository's updated_at; confirm detail requests filter included rows and repository lists still filter repositories.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

component/api decision/human-review signal/needs-human signal/quick-win signal/small-scope signal/well-specified stage/triaged type/bug

Summary

On a source or collection detail, updatedSince filters the repository itself as well as the included concepts and mappings. Editing concepts or mappings doesn't change the repository's own updated_at, so the request returns 404 whenever updatedSince is later than the last change to the repository's details:

  • GET /orgs/CIEL/sources/CIEL/?includeConcepts=true&limit=2&updatedSince=2026-09-01 → 200 (CIEL's updated_on is 2026-09-04)
  • the same with updatedSince=2026-09-24T03:03:36Z → 404
  • GET /orgs/CIEL/collections/MPX/?updatedSince=2026-10-20 → 404 (its updated_on is 2026-02-25); with 2026-01-01 → 200

Reproduced on staging with a new source: right after editing its concepts, the detail request with updatedSince set to the release time returned 404, while concepts/?updatedSince=… returned the edits.

Cause: get_base_queryset applies updated_at__gte to the repository queryset (core/common/models.py#L881). That's right for repository lists, but the detail views use it too.

Also: the included concepts and mappings are always brief rows (core/common/serializers.py#L339, since OpenConceptLab/ocl_issues#1528): no names, descriptions or extras, even with verbose=true or Compress: true. A client can't import concepts from them.

Impact: the OpenMRS OCL module's snapshot (HEAD) subscription uses this request (OclClient.fetchSnapshotUpdates, with updatedSince), so those subscriptions fail once their last import is newer than the repository's details. oclapi/apireference/sources.md and collections.md document updatedSince on the detail as filtering the included concepts and mappings only.

Acceptance criteria

  • On a source or collection detail (HEAD or a version), updatedSince filters only the included concepts and mappings. Repository lists still filter repositories.
  • Decide whether the included concepts and mappings honor verbose=true; if not, sources.md and collections.md say they're brief.
  • A test covers a detail request whose updatedSince is later than the repository's updated_at.
Ngôn ngữ chính
Không có dữ liệu ngôn ngữ
Star
4
Fork
2
Merge trung bình
2 giờ 12 phút
Pull request đã merge (30 ngày)
1

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của OpenConceptLab/ocl_issues

Tất cả issue của OpenConceptLab/ocl_issues

Issue tương tự

Thêm issue về Backend & API Design

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.