diff --git a/frontend/src/services/disclosureService.ts b/frontend/src/services/disclosureService.ts new file mode 100644 index 0000000..d9433e0 --- /dev/null +++ b/frontend/src/services/disclosureService.ts @@ -0,0 +1,23 @@ +import api from './api' +import type { DisclosureRequest, DisclosureCountResponse } from '@/types' + +export async function requestDisclosure(caseId: number, reason: string): Promise { + const res = await api.post(`/cases/${caseId}/disclosure-request`, { reason }) + return res.data +} + +export async function getDisclosureRequests(status?: string): Promise { + const params = status ? { status } : {} + const res = await api.get('/admin/disclosure-requests', { params }) + return res.data +} + +export async function getDisclosureCount(): Promise { + const res = await api.get('/admin/disclosure-requests/count') + return res.data.pending_count +} + +export async function reviewDisclosure(requestId: number, status: 'approved' | 'rejected'): Promise { + const res = await api.put(`/admin/disclosure-requests/${requestId}`, { status }) + return res.data +} diff --git a/frontend/src/types/index.ts b/frontend/src/types/index.ts index 390d80d..278a18b 100644 --- a/frontend/src/types/index.ts +++ b/frontend/src/types/index.ts @@ -82,6 +82,8 @@ export interface Case { import_source: string | null imported_at: string updated_at: string + disclosure_granted?: boolean + disclosure_expires_at?: string | null } export interface CaseListResponse { @@ -279,3 +281,26 @@ export interface AuditLogEntry { ip_address: string | null created_at: string } + +// Disclosure Requests +export interface DisclosureRequest { + id: number + case_id: number + requester_id: number + requester_username: string | null + fall_id: string | null + reason: string + status: 'pending' | 'approved' | 'rejected' + reviewed_by: number | null + reviewed_at: string | null + expires_at: string | null + created_at: string +} + +export interface DisclosureRequestCreate { + reason: string +} + +export interface DisclosureCountResponse { + pending_count: number +}