diff --git a/src/app/api/resolution-reports/[id]/route.ts b/src/app/api/resolution-reports/[id]/route.ts new file mode 100644 index 0000000..f09942d --- /dev/null +++ b/src/app/api/resolution-reports/[id]/route.ts @@ -0,0 +1,21 @@ +import { + buildResolutionReportDocument, + buildResolutionReportNotFoundError, + resolutionReports, +} from "../mockData"; + +export async function GET( + _request: Request, + context: { params: Promise<{ id: string }> }, +) { + const { id } = await context.params; + const report = resolutionReports.find((item) => item.id === id); + + if (!report) { + return Response.json(buildResolutionReportNotFoundError(id), { + status: 404, + }); + } + + return Response.json(buildResolutionReportDocument(report)); +} \ No newline at end of file diff --git a/src/app/api/resolution-reports/mockData.ts b/src/app/api/resolution-reports/mockData.ts new file mode 100644 index 0000000..510a31e --- /dev/null +++ b/src/app/api/resolution-reports/mockData.ts @@ -0,0 +1,5352 @@ +import type { + JsonApiErrorDocument, + ResolutionReport, + ResolutionReportCollectionDocument, + ResolutionReportDocument, + ResolutionReportSummary, +} from "@/types"; + +type RawResolutionReport = { + id: string | number; + type: string; + attributes: ResolutionReport["attributes"]; +}; + +export function buildResolutionReportsDocument( + reports: ResolutionReport[], + prefix?: string, +): ResolutionReportCollectionDocument { + return { + data: reports.map(toResolutionReportSummary), + meta: { + total: reports.length, + filteredTotal: reports.length, + prefix, + }, + }; +} + +export function buildResolutionReportDocument( + report: ResolutionReport, +): ResolutionReportDocument { + return { data: report }; +} + +function toResolutionReportSummary( + report: ResolutionReport, +): ResolutionReportSummary { + return { + id: report.id, + type: report.type, + attributes: { + prefix: report.attributes.prefix, + period: report.attributes.period, + summaryMetrics: report.attributes.summaryMetrics, + }, + }; +} + +export function buildResolutionReportNotFoundError( + id: string, +): JsonApiErrorDocument { + return { + errors: [ + { + status: "404", + title: "Resolution report not found", + detail: `No resolution report exists for id \"${id}\".`, + }, + ], + }; +} + +const MOCK_DATA: RawResolutionReport[] = [ + { + "id": 1, + "type": "resolutionReport", + "attributes": { + "prefix": "10.11570", + "period": "2026-07", + "summaryMetrics": { + "totalAttemptedResolutions": 1174, + "successfulResolutions": 1055, + "failedResolutions": 119, + "totalUniqueDois": 192, + "uniqueDoiSuccesses": 120, + "uniqueDoiFailures": 77 + }, + "topSuccessfulDois": [ + { + "doi": "10.11570/23.0029", + "resolutionCount": 116 + }, + { + "doi": "10.11570/25.0066", + "resolutionCount": 80 + }, + { + "doi": "10.11570/26.0020", + "resolutionCount": 77 + }, + { + "doi": "10.11570/24.0091", + "resolutionCount": 32 + }, + { + "doi": "10.11570/20.0002", + "resolutionCount": 27 + }, + { + "doi": "10.11570/26.0002", + "resolutionCount": 27 + }, + { + "doi": "10.11570/18.0005", + "resolutionCount": 23 + }, + { + "doi": "10.11570/26.0001", + "resolutionCount": 21 + }, + { + "doi": "10.11570/21.0007", + "resolutionCount": 19 + }, + { + "doi": "10.11570/21.0024", + "resolutionCount": 19 + }, + { + "doi": "10.11570/24.0087", + "resolutionCount": 19 + }, + { + "doi": "10.11570/25.0004", + "resolutionCount": 19 + }, + { + "doi": "10.11570/20.0006", + "resolutionCount": 18 + }, + { + "doi": "10.11570/26.0014", + "resolutionCount": 16 + }, + { + "doi": "10.11570/26.0015", + "resolutionCount": 16 + }, + { + "doi": "10.11570/23.0013", + "resolutionCount": 15 + }, + { + "doi": "10.11570/26.0003", + "resolutionCount": 15 + }, + { + "doi": "10.11570/16.0001", + "resolutionCount": 14 + }, + { + "doi": "10.11570/22.0020", + "resolutionCount": 14 + }, + { + "doi": "10.11570/22.0003", + "resolutionCount": 12 + }, + { + "doi": "10.11570/25.0036", + "resolutionCount": 12 + }, + { + "doi": "10.11570/13.0002", + "resolutionCount": 11 + }, + { + "doi": "10.11570/22.0080", + "resolutionCount": 10 + }, + { + "doi": "10.11570/24.0098", + "resolutionCount": 10 + }, + { + "doi": "10.11570/22.0082", + "resolutionCount": 9 + }, + { + "doi": "10.11570/23.0006", + "resolutionCount": 9 + }, + { + "doi": "10.11570/16.0003", + "resolutionCount": 8 + }, + { + "doi": "10.11570/16.0008", + "resolutionCount": 8 + }, + { + "doi": "10.11570/17.0007", + "resolutionCount": 8 + }, + { + "doi": "10.11570/19.0074", + "resolutionCount": 8 + }, + { + "doi": "10.11570/23.0033", + "resolutionCount": 8 + }, + { + "doi": "10.11570/24.0003", + "resolutionCount": 8 + }, + { + "doi": "10.11570/24.0092", + "resolutionCount": 8 + }, + { + "doi": "10.11570/25.0076", + "resolutionCount": 8 + }, + { + "doi": "10.11570/25.0104", + "resolutionCount": 8 + }, + { + "doi": "10.11570/15.0001", + "resolutionCount": 7 + }, + { + "doi": "10.11570/15.0002", + "resolutionCount": 7 + }, + { + "doi": "10.11570/16.0006", + "resolutionCount": 7 + }, + { + "doi": "10.11570/17.0009", + "resolutionCount": 7 + }, + { + "doi": "10.11570/18.0001", + "resolutionCount": 7 + }, + { + "doi": "10.11570/18.0007", + "resolutionCount": 7 + }, + { + "doi": "10.11570/19.0028", + "resolutionCount": 7 + }, + { + "doi": "10.11570/20.0007", + "resolutionCount": 7 + }, + { + "doi": "10.11570/22.0078", + "resolutionCount": 7 + }, + { + "doi": "10.11570/25.0001", + "resolutionCount": 7 + }, + { + "doi": "10.11570/13.0001", + "resolutionCount": 6 + }, + { + "doi": "10.11570/17.0006", + "resolutionCount": 6 + }, + { + "doi": "10.11570/19.0004", + "resolutionCount": 6 + }, + { + "doi": "10.11570/20.0013", + "resolutionCount": 6 + }, + { + "doi": "10.11570/21.0002", + "resolutionCount": 6 + }, + { + "doi": "10.11570/22.0083", + "resolutionCount": 6 + }, + { + "doi": "10.11570/24.0002", + "resolutionCount": 6 + }, + { + "doi": "10.11570/24.0088", + "resolutionCount": 6 + }, + { + "doi": "10.11570/25.0103", + "resolutionCount": 6 + }, + { + "doi": "10.11570/25.0106", + "resolutionCount": 6 + }, + { + "doi": "10.11570/26.0018", + "resolutionCount": 6 + }, + { + "doi": "10.11570/16.0002", + "resolutionCount": 5 + }, + { + "doi": "10.11570/16.0007", + "resolutionCount": 5 + }, + { + "doi": "10.11570/17.0001", + "resolutionCount": 5 + }, + { + "doi": "10.11570/17.0004", + "resolutionCount": 5 + }, + { + "doi": "10.11570/18.0002", + "resolutionCount": 5 + }, + { + "doi": "10.11570/18.0003", + "resolutionCount": 5 + }, + { + "doi": "10.11570/20.0001", + "resolutionCount": 5 + }, + { + "doi": "10.11570/20.0011", + "resolutionCount": 5 + }, + { + "doi": "10.11570/23.0004", + "resolutionCount": 5 + }, + { + "doi": "10.11570/23.0010", + "resolutionCount": 5 + }, + { + "doi": "10.11570/23.0030", + "resolutionCount": 5 + }, + { + "doi": "10.11570/25.0091", + "resolutionCount": 5 + }, + { + "doi": "10.11570/25.0105", + "resolutionCount": 5 + }, + { + "doi": "10.11570/26.0006", + "resolutionCount": 5 + }, + { + "doi": "10.11570/26.0019", + "resolutionCount": 5 + }, + { + "doi": "10.11570/16.0004", + "resolutionCount": 4 + }, + { + "doi": "10.11570/17.0010", + "resolutionCount": 4 + }, + { + "doi": "10.11570/19.0008", + "resolutionCount": 4 + }, + { + "doi": "10.11570/21.0004", + "resolutionCount": 4 + }, + { + "doi": "10.11570/21.0006", + "resolutionCount": 4 + }, + { + "doi": "10.11570/23.0017", + "resolutionCount": 4 + }, + { + "doi": "10.11570/24.0001", + "resolutionCount": 4 + }, + { + "doi": "10.11570/24.0090", + "resolutionCount": 4 + }, + { + "doi": "10.11570/26.0011", + "resolutionCount": 4 + }, + { + "doi": "10.11570/26.0013", + "resolutionCount": 4 + }, + { + "doi": "10.11570/16.0005", + "resolutionCount": 3 + }, + { + "doi": "10.11570/16.0009", + "resolutionCount": 3 + }, + { + "doi": "10.11570/17.0002", + "resolutionCount": 3 + }, + { + "doi": "10.11570/17.0003", + "resolutionCount": 3 + }, + { + "doi": "10.11570/17.0008", + "resolutionCount": 3 + }, + { + "doi": "10.11570/19.0009", + "resolutionCount": 3 + }, + { + "doi": "10.11570/21.0003", + "resolutionCount": 3 + }, + { + "doi": "10.11570/21.0008", + "resolutionCount": 3 + }, + { + "doi": "10.11570/22.0001", + "resolutionCount": 3 + }, + { + "doi": "10.11570/22.0072", + "resolutionCount": 3 + }, + { + "doi": "10.11570/24.0089", + "resolutionCount": 3 + }, + { + "doi": "10.11570/18.0006", + "resolutionCount": 2 + }, + { + "doi": "10.11570/19.0007", + "resolutionCount": 2 + }, + { + "doi": "10.11570/20.0010", + "resolutionCount": 2 + }, + { + "doi": "10.11570/21.0001", + "resolutionCount": 2 + }, + { + "doi": "10.11570/22.0005", + "resolutionCount": 2 + }, + { + "doi": "10.11570/23.0008", + "resolutionCount": 2 + }, + { + "doi": "10.11570/24.0007", + "resolutionCount": 2 + }, + { + "doi": "10.11570/25.0003", + "resolutionCount": 2 + }, + { + "doi": "10.11570/25.0048", + "resolutionCount": 2 + }, + { + "doi": "10.11570/25.0098", + "resolutionCount": 2 + }, + { + "doi": "10.11570/25.0099", + "resolutionCount": 2 + }, + { + "doi": "10.11570/17.0005", + "resolutionCount": 1 + }, + { + "doi": "10.11570/19.0005", + "resolutionCount": 1 + }, + { + "doi": "10.11570/20.0004", + "resolutionCount": 1 + }, + { + "doi": "10.11570/20.0009", + "resolutionCount": 1 + }, + { + "doi": "10.11570/20.0016", + "resolutionCount": 1 + }, + { + "doi": "10.11570/22.0002", + "resolutionCount": 1 + }, + { + "doi": "10.11570/23.0003", + "resolutionCount": 1 + }, + { + "doi": "10.11570/23.0018", + "resolutionCount": 1 + }, + { + "doi": "10.11570/23.0028", + "resolutionCount": 1 + }, + { + "doi": "10.11570/23.0031", + "resolutionCount": 1 + }, + { + "doi": "10.11570/24.0006", + "resolutionCount": 1 + }, + { + "doi": "10.11570/25.0002", + "resolutionCount": 1 + }, + { + "doi": "10.11570/25.0008", + "resolutionCount": 1 + }, + { + "doi": "10.11570/25.0068", + "resolutionCount": 1 + }, + { + "doi": "10.11570/25.0077", + "resolutionCount": 1 + }, + { + "doi": "10.11570/26.0008", + "resolutionCount": 1 + }, + { + "doi": "10.11570/26.0009", + "resolutionCount": 1 + } + ], + "failedDois": [ + { + "doi": "10.11570/", + "resolutionCount": 2, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/1", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/1234", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/13.0002.THE", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/13.0003", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/14.0005", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/15.0001.BINTLEY", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/15.0003", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/15.0004", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0001THIS", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0002ORION%EF%82%A0A", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0002Orion", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0003.K16", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0003KIRK", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0003OPHIUCHUS", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0003Ophiuchus", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0004.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0006ORION%EF%82%A0B", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0009.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0001.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.00044HTTPS:/DOI.ORG/10.11570/19.0028REFERENCESBALLY", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0007/", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0008.MORE", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0009.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0009.Key", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.007", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/18.00", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/18.000", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/18.0004", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/18.005", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/18007", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/19.0021", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/19.0029.TEST", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/19.0040", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/19.0049.TEST", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/19.0073", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/19.1000/108", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/20.0006.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/20.00071.A", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/21.0024A133", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/21.003", + "resolutionCount": 2, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/22.0072MOLECULAR", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/22.0078/", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/23.0001", + "resolutionCount": 4, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/23.0007", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/23.02647", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/24.0003WITH", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0005", + "resolutionCount": 6, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/25.0006", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0007", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0009", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0010", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0011", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0012", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0013", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0014", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0015", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0089", + "resolutionCount": 9, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/26.0004", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0005", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0007", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0008", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0014", + "resolutionCount": 3, + "top5FailedReferrers": ["https://www.overleaf.com/"] + }, + { + "doi": "10.11570/26.0014.10", + "resolutionCount": 2, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0014.101100", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0014.101100101", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0014.4.1", + "resolutionCount": 2, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0015.%3Cbr", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0016", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0018", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0019", + "resolutionCount": 3, + "top5FailedReferrers": ["https://www.overleaf.com/"] + }, + { + "doi": "10.11570/26.0020", + "resolutionCount": 2, + "top5FailedReferrers": ["https://www.overleaf.com/"] + }, + { + "doi": "10.11570/26.0022", + "resolutionCount": 2, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/A", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/ABC", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/CISTI.CANFAR/21.0007", + "resolutionCount": 1, + "top5FailedReferrers": [] + } + ] + } + }, + { + "id": 2, + "type": "resolutionReport", + "attributes": { + "prefix": "10.11570", + "period": "2026-08", + "summaryMetrics": { + "totalAttemptedResolutions": 800, + "successfulResolutions": 600, + "failedResolutions": 200, + "totalUniqueDois": 135, + "uniqueDoiSuccesses": 130, + "uniqueDoiFailures": 10 + }, + "topSuccessfulDois": [ + { + "doi": "10.11570/23.0029", + "resolutionCount": 116 + }, + { + "doi": "10.11570/25.0066", + "resolutionCount": 80 + }, + { + "doi": "10.11570/26.0020", + "resolutionCount": 77 + }, + { + "doi": "10.11570/24.0091", + "resolutionCount": 32 + }, + { + "doi": "10.11570/20.0002", + "resolutionCount": 27 + }, + { + "doi": "10.11570/26.0002", + "resolutionCount": 27 + }, + { + "doi": "10.11570/18.0005", + "resolutionCount": 23 + }, + { + "doi": "10.11570/26.0001", + "resolutionCount": 21 + }, + { + "doi": "10.11570/21.0007", + "resolutionCount": 19 + }, + { + "doi": "10.11570/21.0024", + "resolutionCount": 19 + }, + { + "doi": "10.11570/24.0087", + "resolutionCount": 19 + }, + { + "doi": "10.11570/25.0004", + "resolutionCount": 19 + }, + { + "doi": "10.11570/20.0006", + "resolutionCount": 18 + }, + { + "doi": "10.11570/26.0014", + "resolutionCount": 16 + }, + { + "doi": "10.11570/26.0015", + "resolutionCount": 16 + }, + { + "doi": "10.11570/23.0013", + "resolutionCount": 15 + }, + { + "doi": "10.11570/26.0003", + "resolutionCount": 15 + }, + { + "doi": "10.11570/16.0001", + "resolutionCount": 14 + }, + { + "doi": "10.11570/22.0020", + "resolutionCount": 14 + }, + { + "doi": "10.11570/22.0003", + "resolutionCount": 12 + }, + { + "doi": "10.11570/25.0036", + "resolutionCount": 12 + }, + { + "doi": "10.11570/13.0002", + "resolutionCount": 11 + }, + { + "doi": "10.11570/22.0080", + "resolutionCount": 10 + }, + { + "doi": "10.11570/24.0098", + "resolutionCount": 10 + }, + { + "doi": "10.11570/22.0082", + "resolutionCount": 9 + }, + { + "doi": "10.11570/23.0006", + "resolutionCount": 9 + }, + { + "doi": "10.11570/16.0003", + "resolutionCount": 8 + }, + { + "doi": "10.11570/16.0008", + "resolutionCount": 8 + }, + { + "doi": "10.11570/17.0007", + "resolutionCount": 8 + }, + { + "doi": "10.11570/19.0074", + "resolutionCount": 8 + }, + { + "doi": "10.11570/23.0033", + "resolutionCount": 8 + }, + { + "doi": "10.11570/24.0003", + "resolutionCount": 8 + }, + { + "doi": "10.11570/24.0092", + "resolutionCount": 8 + }, + { + "doi": "10.11570/25.0076", + "resolutionCount": 8 + }, + { + "doi": "10.11570/25.0104", + "resolutionCount": 8 + }, + { + "doi": "10.11570/15.0001", + "resolutionCount": 7 + }, + { + "doi": "10.11570/15.0002", + "resolutionCount": 7 + }, + { + "doi": "10.11570/16.0006", + "resolutionCount": 7 + }, + { + "doi": "10.11570/17.0009", + "resolutionCount": 7 + }, + { + "doi": "10.11570/18.0001", + "resolutionCount": 7 + }, + { + "doi": "10.11570/18.0007", + "resolutionCount": 7 + }, + { + "doi": "10.11570/19.0028", + "resolutionCount": 7 + }, + { + "doi": "10.11570/20.0007", + "resolutionCount": 7 + }, + { + "doi": "10.11570/22.0078", + "resolutionCount": 7 + }, + { + "doi": "10.11570/25.0001", + "resolutionCount": 7 + }, + { + "doi": "10.11570/13.0001", + "resolutionCount": 6 + }, + { + "doi": "10.11570/17.0006", + "resolutionCount": 6 + }, + { + "doi": "10.11570/19.0004", + "resolutionCount": 6 + }, + { + "doi": "10.11570/20.0013", + "resolutionCount": 6 + }, + { + "doi": "10.11570/21.0002", + "resolutionCount": 6 + }, + { + "doi": "10.11570/22.0083", + "resolutionCount": 6 + }, + { + "doi": "10.11570/24.0002", + "resolutionCount": 6 + }, + { + "doi": "10.11570/24.0088", + "resolutionCount": 6 + }, + { + "doi": "10.11570/25.0103", + "resolutionCount": 6 + }, + { + "doi": "10.11570/25.0106", + "resolutionCount": 6 + }, + { + "doi": "10.11570/26.0018", + "resolutionCount": 6 + }, + { + "doi": "10.11570/16.0002", + "resolutionCount": 5 + }, + { + "doi": "10.11570/16.0007", + "resolutionCount": 5 + }, + { + "doi": "10.11570/17.0001", + "resolutionCount": 5 + }, + { + "doi": "10.11570/17.0004", + "resolutionCount": 5 + }, + { + "doi": "10.11570/18.0002", + "resolutionCount": 5 + }, + { + "doi": "10.11570/18.0003", + "resolutionCount": 5 + }, + { + "doi": "10.11570/20.0001", + "resolutionCount": 5 + }, + { + "doi": "10.11570/20.0011", + "resolutionCount": 5 + }, + { + "doi": "10.11570/23.0004", + "resolutionCount": 5 + }, + { + "doi": "10.11570/23.0010", + "resolutionCount": 5 + }, + { + "doi": "10.11570/23.0030", + "resolutionCount": 5 + }, + { + "doi": "10.11570/25.0091", + "resolutionCount": 5 + }, + { + "doi": "10.11570/25.0105", + "resolutionCount": 5 + }, + { + "doi": "10.11570/26.0006", + "resolutionCount": 5 + }, + { + "doi": "10.11570/26.0019", + "resolutionCount": 5 + }, + { + "doi": "10.11570/16.0004", + "resolutionCount": 4 + }, + { + "doi": "10.11570/17.0010", + "resolutionCount": 4 + }, + { + "doi": "10.11570/19.0008", + "resolutionCount": 4 + }, + { + "doi": "10.11570/21.0004", + "resolutionCount": 4 + }, + { + "doi": "10.11570/21.0006", + "resolutionCount": 4 + }, + { + "doi": "10.11570/23.0017", + "resolutionCount": 4 + }, + { + "doi": "10.11570/24.0001", + "resolutionCount": 4 + }, + { + "doi": "10.11570/24.0090", + "resolutionCount": 4 + }, + { + "doi": "10.11570/26.0011", + "resolutionCount": 4 + }, + { + "doi": "10.11570/26.0013", + "resolutionCount": 4 + }, + { + "doi": "10.11570/16.0005", + "resolutionCount": 3 + }, + { + "doi": "10.11570/16.0009", + "resolutionCount": 3 + }, + { + "doi": "10.11570/17.0002", + "resolutionCount": 3 + }, + { + "doi": "10.11570/17.0003", + "resolutionCount": 3 + }, + { + "doi": "10.11570/17.0008", + "resolutionCount": 3 + }, + { + "doi": "10.11570/19.0009", + "resolutionCount": 3 + }, + { + "doi": "10.11570/21.0003", + "resolutionCount": 3 + }, + { + "doi": "10.11570/21.0008", + "resolutionCount": 3 + }, + { + "doi": "10.11570/22.0001", + "resolutionCount": 3 + }, + { + "doi": "10.11570/22.0072", + "resolutionCount": 3 + }, + { + "doi": "10.11570/24.0089", + "resolutionCount": 3 + }, + { + "doi": "10.11570/18.0006", + "resolutionCount": 2 + }, + { + "doi": "10.11570/19.0007", + "resolutionCount": 2 + }, + { + "doi": "10.11570/20.0010", + "resolutionCount": 2 + }, + { + "doi": "10.11570/21.0001", + "resolutionCount": 2 + }, + { + "doi": "10.11570/22.0005", + "resolutionCount": 2 + }, + { + "doi": "10.11570/23.0008", + "resolutionCount": 2 + }, + { + "doi": "10.11570/24.0007", + "resolutionCount": 2 + }, + { + "doi": "10.11570/25.0003", + "resolutionCount": 2 + }, + { + "doi": "10.11570/25.0048", + "resolutionCount": 2 + }, + { + "doi": "10.11570/25.0098", + "resolutionCount": 2 + }, + { + "doi": "10.11570/25.0099", + "resolutionCount": 2 + }, + { + "doi": "10.11570/17.0005", + "resolutionCount": 1 + }, + { + "doi": "10.11570/19.0005", + "resolutionCount": 1 + }, + { + "doi": "10.11570/20.0004", + "resolutionCount": 1 + }, + { + "doi": "10.11570/20.0009", + "resolutionCount": 1 + }, + { + "doi": "10.11570/20.0016", + "resolutionCount": 1 + }, + { + "doi": "10.11570/22.0002", + "resolutionCount": 1 + }, + { + "doi": "10.11570/23.0003", + "resolutionCount": 1 + }, + { + "doi": "10.11570/23.0018", + "resolutionCount": 1 + }, + { + "doi": "10.11570/23.0028", + "resolutionCount": 1 + }, + { + "doi": "10.11570/23.0031", + "resolutionCount": 1 + }, + { + "doi": "10.11570/24.0006", + "resolutionCount": 1 + }, + { + "doi": "10.11570/25.0002", + "resolutionCount": 1 + }, + { + "doi": "10.11570/25.0008", + "resolutionCount": 1 + }, + { + "doi": "10.11570/25.0068", + "resolutionCount": 1 + }, + { + "doi": "10.11570/25.0077", + "resolutionCount": 1 + }, + { + "doi": "10.11570/26.0008", + "resolutionCount": 1 + }, + { + "doi": "10.11570/26.0009", + "resolutionCount": 1 + } + ], + "failedDois": [ + { + "doi": "10.11570/", + "resolutionCount": 2, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/1", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/1234", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/13.0002.THE", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/13.0003", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/14.0005", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/15.0001.BINTLEY", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/15.0003", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/15.0004", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0001THIS", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0002ORION%EF%82%A0A", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0002Orion", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0003.K16", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0003KIRK", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0003OPHIUCHUS", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0003Ophiuchus", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0004.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0006ORION%EF%82%A0B", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0009.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0001.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.00044HTTPS:/DOI.ORG/10.11570/19.0028REFERENCESBALLY", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0007/", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0008.MORE", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0009.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0009.Key", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.007", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/18.00", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/18.000", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/18.0004", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/18.005", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/18007", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/19.0021", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/19.0029.TEST", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/19.0040", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/19.0049.TEST", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/19.0073", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/19.1000/108", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/20.0006.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/20.00071.A", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/21.0024A133", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/21.003", + "resolutionCount": 2, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/22.0072MOLECULAR", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/22.0078/", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/23.0001", + "resolutionCount": 4, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/23.0007", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/23.02647", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/24.0003WITH", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0005", + "resolutionCount": 6, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/25.0006", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0007", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0009", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0010", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0011", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0012", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0013", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0014", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0015", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0089", + "resolutionCount": 9, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/26.0004", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0005", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0007", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0008", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0014", + "resolutionCount": 3, + "top5FailedReferrers": ["https://www.overleaf.com/"] + }, + { + "doi": "10.11570/26.0014.10", + "resolutionCount": 2, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0014.101100", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0014.101100101", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0014.4.1", + "resolutionCount": 2, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0015.%3Cbr", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0016", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0018", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0019", + "resolutionCount": 3, + "top5FailedReferrers": ["https://www.overleaf.com/"] + }, + { + "doi": "10.11570/26.0020", + "resolutionCount": 2, + "top5FailedReferrers": ["https://www.overleaf.com/"] + }, + { + "doi": "10.11570/26.0022", + "resolutionCount": 2, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/A", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/ABC", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/CISTI.CANFAR/21.0007", + "resolutionCount": 1, + "top5FailedReferrers": [] + } + ] + } + }, + { + "id": 3, + "type": "resolutionReport", + "attributes": { + "prefix": "10.11570", + "period": "2026-09", + "summaryMetrics": { + "totalAttemptedResolutions": 2060, + "successfulResolutions": 1910, + "failedResolutions": 150, + "totalUniqueDois": 301, + "uniqueDoiSuccesses": 224, + "uniqueDoiFailures": 57 + }, + "topSuccessfulDois": [ + { + "doi": "10.11570/23.0029", + "resolutionCount": 116 + }, + { + "doi": "10.11570/25.0066", + "resolutionCount": 80 + }, + { + "doi": "10.11570/26.0020", + "resolutionCount": 77 + }, + { + "doi": "10.11570/24.0091", + "resolutionCount": 32 + }, + { + "doi": "10.11570/20.0002", + "resolutionCount": 27 + }, + { + "doi": "10.11570/26.0002", + "resolutionCount": 27 + }, + { + "doi": "10.11570/18.0005", + "resolutionCount": 23 + }, + { + "doi": "10.11570/26.0001", + "resolutionCount": 21 + }, + { + "doi": "10.11570/21.0007", + "resolutionCount": 19 + }, + { + "doi": "10.11570/21.0024", + "resolutionCount": 19 + }, + { + "doi": "10.11570/24.0087", + "resolutionCount": 19 + }, + { + "doi": "10.11570/25.0004", + "resolutionCount": 19 + }, + { + "doi": "10.11570/20.0006", + "resolutionCount": 18 + }, + { + "doi": "10.11570/26.0014", + "resolutionCount": 16 + }, + { + "doi": "10.11570/26.0015", + "resolutionCount": 16 + }, + { + "doi": "10.11570/23.0013", + "resolutionCount": 15 + }, + { + "doi": "10.11570/26.0003", + "resolutionCount": 15 + }, + { + "doi": "10.11570/16.0001", + "resolutionCount": 14 + }, + { + "doi": "10.11570/22.0020", + "resolutionCount": 14 + }, + { + "doi": "10.11570/22.0003", + "resolutionCount": 12 + }, + { + "doi": "10.11570/25.0036", + "resolutionCount": 12 + }, + { + "doi": "10.11570/13.0002", + "resolutionCount": 11 + }, + { + "doi": "10.11570/22.0080", + "resolutionCount": 10 + }, + { + "doi": "10.11570/24.0098", + "resolutionCount": 10 + }, + { + "doi": "10.11570/22.0082", + "resolutionCount": 9 + }, + { + "doi": "10.11570/23.0006", + "resolutionCount": 9 + }, + { + "doi": "10.11570/16.0003", + "resolutionCount": 8 + }, + { + "doi": "10.11570/16.0008", + "resolutionCount": 8 + }, + { + "doi": "10.11570/17.0007", + "resolutionCount": 8 + }, + { + "doi": "10.11570/19.0074", + "resolutionCount": 8 + }, + { + "doi": "10.11570/23.0033", + "resolutionCount": 8 + }, + { + "doi": "10.11570/24.0003", + "resolutionCount": 8 + }, + { + "doi": "10.11570/24.0092", + "resolutionCount": 8 + }, + { + "doi": "10.11570/25.0076", + "resolutionCount": 8 + }, + { + "doi": "10.11570/25.0104", + "resolutionCount": 8 + }, + { + "doi": "10.11570/15.0001", + "resolutionCount": 7 + }, + { + "doi": "10.11570/15.0002", + "resolutionCount": 7 + }, + { + "doi": "10.11570/16.0006", + "resolutionCount": 7 + }, + { + "doi": "10.11570/17.0009", + "resolutionCount": 7 + }, + { + "doi": "10.11570/18.0001", + "resolutionCount": 7 + }, + { + "doi": "10.11570/18.0007", + "resolutionCount": 7 + }, + { + "doi": "10.11570/19.0028", + "resolutionCount": 7 + }, + { + "doi": "10.11570/20.0007", + "resolutionCount": 7 + }, + { + "doi": "10.11570/22.0078", + "resolutionCount": 7 + }, + { + "doi": "10.11570/25.0001", + "resolutionCount": 7 + }, + { + "doi": "10.11570/13.0001", + "resolutionCount": 6 + }, + { + "doi": "10.11570/17.0006", + "resolutionCount": 6 + }, + { + "doi": "10.11570/19.0004", + "resolutionCount": 6 + }, + { + "doi": "10.11570/20.0013", + "resolutionCount": 6 + }, + { + "doi": "10.11570/21.0002", + "resolutionCount": 6 + }, + { + "doi": "10.11570/22.0083", + "resolutionCount": 6 + }, + { + "doi": "10.11570/24.0002", + "resolutionCount": 6 + }, + { + "doi": "10.11570/24.0088", + "resolutionCount": 6 + }, + { + "doi": "10.11570/25.0103", + "resolutionCount": 6 + }, + { + "doi": "10.11570/25.0106", + "resolutionCount": 6 + }, + { + "doi": "10.11570/26.0018", + "resolutionCount": 6 + }, + { + "doi": "10.11570/16.0002", + "resolutionCount": 5 + }, + { + "doi": "10.11570/16.0007", + "resolutionCount": 5 + }, + { + "doi": "10.11570/17.0001", + "resolutionCount": 5 + }, + { + "doi": "10.11570/17.0004", + "resolutionCount": 5 + }, + { + "doi": "10.11570/18.0002", + "resolutionCount": 5 + }, + { + "doi": "10.11570/18.0003", + "resolutionCount": 5 + }, + { + "doi": "10.11570/20.0001", + "resolutionCount": 5 + }, + { + "doi": "10.11570/20.0011", + "resolutionCount": 5 + }, + { + "doi": "10.11570/23.0004", + "resolutionCount": 5 + }, + { + "doi": "10.11570/23.0010", + "resolutionCount": 5 + }, + { + "doi": "10.11570/23.0030", + "resolutionCount": 5 + }, + { + "doi": "10.11570/25.0091", + "resolutionCount": 5 + }, + { + "doi": "10.11570/25.0105", + "resolutionCount": 5 + }, + { + "doi": "10.11570/26.0006", + "resolutionCount": 5 + }, + { + "doi": "10.11570/26.0019", + "resolutionCount": 5 + }, + { + "doi": "10.11570/16.0004", + "resolutionCount": 4 + }, + { + "doi": "10.11570/17.0010", + "resolutionCount": 4 + }, + { + "doi": "10.11570/19.0008", + "resolutionCount": 4 + }, + { + "doi": "10.11570/21.0004", + "resolutionCount": 4 + }, + { + "doi": "10.11570/21.0006", + "resolutionCount": 4 + }, + { + "doi": "10.11570/23.0017", + "resolutionCount": 4 + }, + { + "doi": "10.11570/24.0001", + "resolutionCount": 4 + }, + { + "doi": "10.11570/24.0090", + "resolutionCount": 4 + }, + { + "doi": "10.11570/26.0011", + "resolutionCount": 4 + }, + { + "doi": "10.11570/26.0013", + "resolutionCount": 4 + }, + { + "doi": "10.11570/16.0005", + "resolutionCount": 3 + }, + { + "doi": "10.11570/16.0009", + "resolutionCount": 3 + }, + { + "doi": "10.11570/17.0002", + "resolutionCount": 3 + }, + { + "doi": "10.11570/17.0003", + "resolutionCount": 3 + }, + { + "doi": "10.11570/17.0008", + "resolutionCount": 3 + }, + { + "doi": "10.11570/19.0009", + "resolutionCount": 3 + }, + { + "doi": "10.11570/21.0003", + "resolutionCount": 3 + }, + { + "doi": "10.11570/21.0008", + "resolutionCount": 3 + }, + { + "doi": "10.11570/22.0001", + "resolutionCount": 3 + }, + { + "doi": "10.11570/22.0072", + "resolutionCount": 3 + }, + { + "doi": "10.11570/24.0089", + "resolutionCount": 3 + }, + { + "doi": "10.11570/18.0006", + "resolutionCount": 2 + }, + { + "doi": "10.11570/19.0007", + "resolutionCount": 2 + }, + { + "doi": "10.11570/20.0010", + "resolutionCount": 2 + }, + { + "doi": "10.11570/21.0001", + "resolutionCount": 2 + }, + { + "doi": "10.11570/22.0005", + "resolutionCount": 2 + }, + { + "doi": "10.11570/23.0008", + "resolutionCount": 2 + }, + { + "doi": "10.11570/24.0007", + "resolutionCount": 2 + }, + { + "doi": "10.11570/25.0003", + "resolutionCount": 2 + }, + { + "doi": "10.11570/25.0048", + "resolutionCount": 2 + }, + { + "doi": "10.11570/25.0098", + "resolutionCount": 2 + }, + { + "doi": "10.11570/25.0099", + "resolutionCount": 2 + }, + { + "doi": "10.11570/17.0005", + "resolutionCount": 1 + }, + { + "doi": "10.11570/19.0005", + "resolutionCount": 1 + }, + { + "doi": "10.11570/20.0004", + "resolutionCount": 1 + }, + { + "doi": "10.11570/20.0009", + "resolutionCount": 1 + }, + { + "doi": "10.11570/20.0016", + "resolutionCount": 1 + }, + { + "doi": "10.11570/22.0002", + "resolutionCount": 1 + }, + { + "doi": "10.11570/23.0003", + "resolutionCount": 1 + }, + { + "doi": "10.11570/23.0018", + "resolutionCount": 1 + }, + { + "doi": "10.11570/23.0028", + "resolutionCount": 1 + }, + { + "doi": "10.11570/23.0031", + "resolutionCount": 1 + }, + { + "doi": "10.11570/24.0006", + "resolutionCount": 1 + }, + { + "doi": "10.11570/25.0002", + "resolutionCount": 1 + }, + { + "doi": "10.11570/25.0008", + "resolutionCount": 1 + }, + { + "doi": "10.11570/25.0068", + "resolutionCount": 1 + }, + { + "doi": "10.11570/25.0077", + "resolutionCount": 1 + }, + { + "doi": "10.11570/26.0008", + "resolutionCount": 1 + }, + { + "doi": "10.11570/26.0009", + "resolutionCount": 1 + } + ], + "failedDois": [ + { + "doi": "10.11570/", + "resolutionCount": 2, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/1", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/1234", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/13.0002.THE", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/13.0003", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/14.0005", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/15.0001.BINTLEY", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/15.0003", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/15.0004", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0001THIS", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0002ORION%EF%82%A0A", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0002Orion", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0003.K16", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0003KIRK", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0003OPHIUCHUS", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0003Ophiuchus", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0004.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0006ORION%EF%82%A0B", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0009.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0001.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.00044HTTPS:/DOI.ORG/10.11570/19.0028REFERENCESBALLY", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0007/", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0008.MORE", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0009.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0009.Key", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.007", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/18.00", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/18.000", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/18.0004", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/18.005", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/18007", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/19.0021", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/19.0029.TEST", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/19.0040", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/19.0049.TEST", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/19.0073", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/19.1000/108", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/20.0006.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/20.00071.A", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/21.0024A133", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/21.003", + "resolutionCount": 2, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/22.0072MOLECULAR", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/22.0078/", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/23.0001", + "resolutionCount": 4, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/23.0007", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/23.02647", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/24.0003WITH", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0005", + "resolutionCount": 6, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/25.0006", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0007", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0009", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0010", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0011", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0012", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0013", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0014", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0015", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0089", + "resolutionCount": 9, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/26.0004", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0005", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0007", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0008", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0014", + "resolutionCount": 3, + "top5FailedReferrers": ["https://www.overleaf.com/"] + }, + { + "doi": "10.11570/26.0014.10", + "resolutionCount": 2, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0014.101100", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0014.101100101", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0014.4.1", + "resolutionCount": 2, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0015.%3Cbr", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0016", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0018", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0019", + "resolutionCount": 3, + "top5FailedReferrers": ["https://www.overleaf.com/"] + }, + { + "doi": "10.11570/26.0020", + "resolutionCount": 2, + "top5FailedReferrers": ["https://www.overleaf.com/"] + }, + { + "doi": "10.11570/26.0022", + "resolutionCount": 2, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/A", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/ABC", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/CISTI.CANFAR/21.0007", + "resolutionCount": 1, + "top5FailedReferrers": [] + } + ] + } + }, + { + "id": 4, + "type": "resolutionReport", + "attributes": { + "prefix": "10.82206", + "period": "2026-07", + "summaryMetrics": { + "totalAttemptedResolutions": 1174, + "successfulResolutions": 1055, + "failedResolutions": 119, + "totalUniqueDois": 192, + "uniqueDoiSuccesses": 120, + "uniqueDoiFailures": 77 + }, + "topSuccessfulDois": [ + { + "doi": "10.11570/23.0029", + "resolutionCount": 116 + }, + { + "doi": "10.11570/25.0066", + "resolutionCount": 80 + }, + { + "doi": "10.11570/26.0020", + "resolutionCount": 77 + }, + { + "doi": "10.11570/24.0091", + "resolutionCount": 32 + }, + { + "doi": "10.11570/20.0002", + "resolutionCount": 27 + }, + { + "doi": "10.11570/26.0002", + "resolutionCount": 27 + }, + { + "doi": "10.11570/18.0005", + "resolutionCount": 23 + }, + { + "doi": "10.11570/26.0001", + "resolutionCount": 21 + }, + { + "doi": "10.11570/21.0007", + "resolutionCount": 19 + }, + { + "doi": "10.11570/21.0024", + "resolutionCount": 19 + }, + { + "doi": "10.11570/24.0087", + "resolutionCount": 19 + }, + { + "doi": "10.11570/25.0004", + "resolutionCount": 19 + }, + { + "doi": "10.11570/20.0006", + "resolutionCount": 18 + }, + { + "doi": "10.11570/26.0014", + "resolutionCount": 16 + }, + { + "doi": "10.11570/26.0015", + "resolutionCount": 16 + }, + { + "doi": "10.11570/23.0013", + "resolutionCount": 15 + }, + { + "doi": "10.11570/26.0003", + "resolutionCount": 15 + }, + { + "doi": "10.11570/16.0001", + "resolutionCount": 14 + }, + { + "doi": "10.11570/22.0020", + "resolutionCount": 14 + }, + { + "doi": "10.11570/22.0003", + "resolutionCount": 12 + }, + { + "doi": "10.11570/25.0036", + "resolutionCount": 12 + }, + { + "doi": "10.11570/13.0002", + "resolutionCount": 11 + }, + { + "doi": "10.11570/22.0080", + "resolutionCount": 10 + }, + { + "doi": "10.11570/24.0098", + "resolutionCount": 10 + }, + { + "doi": "10.11570/22.0082", + "resolutionCount": 9 + }, + { + "doi": "10.11570/23.0006", + "resolutionCount": 9 + }, + { + "doi": "10.11570/16.0003", + "resolutionCount": 8 + }, + { + "doi": "10.11570/16.0008", + "resolutionCount": 8 + }, + { + "doi": "10.11570/17.0007", + "resolutionCount": 8 + }, + { + "doi": "10.11570/19.0074", + "resolutionCount": 8 + }, + { + "doi": "10.11570/23.0033", + "resolutionCount": 8 + }, + { + "doi": "10.11570/24.0003", + "resolutionCount": 8 + }, + { + "doi": "10.11570/24.0092", + "resolutionCount": 8 + }, + { + "doi": "10.11570/25.0076", + "resolutionCount": 8 + }, + { + "doi": "10.11570/25.0104", + "resolutionCount": 8 + }, + { + "doi": "10.11570/15.0001", + "resolutionCount": 7 + }, + { + "doi": "10.11570/15.0002", + "resolutionCount": 7 + }, + { + "doi": "10.11570/16.0006", + "resolutionCount": 7 + }, + { + "doi": "10.11570/17.0009", + "resolutionCount": 7 + }, + { + "doi": "10.11570/18.0001", + "resolutionCount": 7 + }, + { + "doi": "10.11570/18.0007", + "resolutionCount": 7 + }, + { + "doi": "10.11570/19.0028", + "resolutionCount": 7 + }, + { + "doi": "10.11570/20.0007", + "resolutionCount": 7 + }, + { + "doi": "10.11570/22.0078", + "resolutionCount": 7 + }, + { + "doi": "10.11570/25.0001", + "resolutionCount": 7 + }, + { + "doi": "10.11570/13.0001", + "resolutionCount": 6 + }, + { + "doi": "10.11570/17.0006", + "resolutionCount": 6 + }, + { + "doi": "10.11570/19.0004", + "resolutionCount": 6 + }, + { + "doi": "10.11570/20.0013", + "resolutionCount": 6 + }, + { + "doi": "10.11570/21.0002", + "resolutionCount": 6 + }, + { + "doi": "10.11570/22.0083", + "resolutionCount": 6 + }, + { + "doi": "10.11570/24.0002", + "resolutionCount": 6 + }, + { + "doi": "10.11570/24.0088", + "resolutionCount": 6 + }, + { + "doi": "10.11570/25.0103", + "resolutionCount": 6 + }, + { + "doi": "10.11570/25.0106", + "resolutionCount": 6 + }, + { + "doi": "10.11570/26.0018", + "resolutionCount": 6 + }, + { + "doi": "10.11570/16.0002", + "resolutionCount": 5 + }, + { + "doi": "10.11570/16.0007", + "resolutionCount": 5 + }, + { + "doi": "10.11570/17.0001", + "resolutionCount": 5 + }, + { + "doi": "10.11570/17.0004", + "resolutionCount": 5 + }, + { + "doi": "10.11570/18.0002", + "resolutionCount": 5 + }, + { + "doi": "10.11570/18.0003", + "resolutionCount": 5 + }, + { + "doi": "10.11570/20.0001", + "resolutionCount": 5 + }, + { + "doi": "10.11570/20.0011", + "resolutionCount": 5 + }, + { + "doi": "10.11570/23.0004", + "resolutionCount": 5 + }, + { + "doi": "10.11570/23.0010", + "resolutionCount": 5 + }, + { + "doi": "10.11570/23.0030", + "resolutionCount": 5 + }, + { + "doi": "10.11570/25.0091", + "resolutionCount": 5 + }, + { + "doi": "10.11570/25.0105", + "resolutionCount": 5 + }, + { + "doi": "10.11570/26.0006", + "resolutionCount": 5 + }, + { + "doi": "10.11570/26.0019", + "resolutionCount": 5 + }, + { + "doi": "10.11570/16.0004", + "resolutionCount": 4 + }, + { + "doi": "10.11570/17.0010", + "resolutionCount": 4 + }, + { + "doi": "10.11570/19.0008", + "resolutionCount": 4 + }, + { + "doi": "10.11570/21.0004", + "resolutionCount": 4 + }, + { + "doi": "10.11570/21.0006", + "resolutionCount": 4 + }, + { + "doi": "10.11570/23.0017", + "resolutionCount": 4 + }, + { + "doi": "10.11570/24.0001", + "resolutionCount": 4 + }, + { + "doi": "10.11570/24.0090", + "resolutionCount": 4 + }, + { + "doi": "10.11570/26.0011", + "resolutionCount": 4 + }, + { + "doi": "10.11570/26.0013", + "resolutionCount": 4 + }, + { + "doi": "10.11570/16.0005", + "resolutionCount": 3 + }, + { + "doi": "10.11570/16.0009", + "resolutionCount": 3 + }, + { + "doi": "10.11570/17.0002", + "resolutionCount": 3 + }, + { + "doi": "10.11570/17.0003", + "resolutionCount": 3 + }, + { + "doi": "10.11570/17.0008", + "resolutionCount": 3 + }, + { + "doi": "10.11570/19.0009", + "resolutionCount": 3 + }, + { + "doi": "10.11570/21.0003", + "resolutionCount": 3 + }, + { + "doi": "10.11570/21.0008", + "resolutionCount": 3 + }, + { + "doi": "10.11570/22.0001", + "resolutionCount": 3 + }, + { + "doi": "10.11570/22.0072", + "resolutionCount": 3 + }, + { + "doi": "10.11570/24.0089", + "resolutionCount": 3 + }, + { + "doi": "10.11570/18.0006", + "resolutionCount": 2 + }, + { + "doi": "10.11570/19.0007", + "resolutionCount": 2 + }, + { + "doi": "10.11570/20.0010", + "resolutionCount": 2 + }, + { + "doi": "10.11570/21.0001", + "resolutionCount": 2 + }, + { + "doi": "10.11570/22.0005", + "resolutionCount": 2 + }, + { + "doi": "10.11570/23.0008", + "resolutionCount": 2 + }, + { + "doi": "10.11570/24.0007", + "resolutionCount": 2 + }, + { + "doi": "10.11570/25.0003", + "resolutionCount": 2 + }, + { + "doi": "10.11570/25.0048", + "resolutionCount": 2 + }, + { + "doi": "10.11570/25.0098", + "resolutionCount": 2 + }, + { + "doi": "10.11570/25.0099", + "resolutionCount": 2 + }, + { + "doi": "10.11570/17.0005", + "resolutionCount": 1 + }, + { + "doi": "10.11570/19.0005", + "resolutionCount": 1 + }, + { + "doi": "10.11570/20.0004", + "resolutionCount": 1 + }, + { + "doi": "10.11570/20.0009", + "resolutionCount": 1 + }, + { + "doi": "10.11570/20.0016", + "resolutionCount": 1 + }, + { + "doi": "10.11570/22.0002", + "resolutionCount": 1 + }, + { + "doi": "10.11570/23.0003", + "resolutionCount": 1 + }, + { + "doi": "10.11570/23.0018", + "resolutionCount": 1 + }, + { + "doi": "10.11570/23.0028", + "resolutionCount": 1 + }, + { + "doi": "10.11570/23.0031", + "resolutionCount": 1 + }, + { + "doi": "10.11570/24.0006", + "resolutionCount": 1 + }, + { + "doi": "10.11570/25.0002", + "resolutionCount": 1 + }, + { + "doi": "10.11570/25.0008", + "resolutionCount": 1 + }, + { + "doi": "10.11570/25.0068", + "resolutionCount": 1 + }, + { + "doi": "10.11570/25.0077", + "resolutionCount": 1 + }, + { + "doi": "10.11570/26.0008", + "resolutionCount": 1 + }, + { + "doi": "10.11570/26.0009", + "resolutionCount": 1 + } + ], + "failedDois": [ + { + "doi": "10.11570/", + "resolutionCount": 2, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/1", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/1234", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/13.0002.THE", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/13.0003", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/14.0005", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/15.0001.BINTLEY", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/15.0003", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/15.0004", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0001THIS", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0002ORION%EF%82%A0A", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0002Orion", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0003.K16", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0003KIRK", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0003OPHIUCHUS", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0003Ophiuchus", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0004.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0006ORION%EF%82%A0B", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0009.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0001.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.00044HTTPS:/DOI.ORG/10.11570/19.0028REFERENCESBALLY", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0007/", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0008.MORE", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0009.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0009.Key", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.007", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/18.00", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/18.000", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/18.0004", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/18.005", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/18007", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/19.0021", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/19.0029.TEST", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/19.0040", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/19.0049.TEST", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/19.0073", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/19.1000/108", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/20.0006.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/20.00071.A", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/21.0024A133", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/21.003", + "resolutionCount": 2, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/22.0072MOLECULAR", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/22.0078/", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/23.0001", + "resolutionCount": 4, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/23.0007", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/23.02647", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/24.0003WITH", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0005", + "resolutionCount": 6, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/25.0006", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0007", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0009", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0010", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0011", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0012", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0013", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0014", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0015", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0089", + "resolutionCount": 9, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/26.0004", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0005", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0007", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0008", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0014", + "resolutionCount": 3, + "top5FailedReferrers": ["https://www.overleaf.com/"] + }, + { + "doi": "10.11570/26.0014.10", + "resolutionCount": 2, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0014.101100", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0014.101100101", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0014.4.1", + "resolutionCount": 2, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0015.%3Cbr", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0016", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0018", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0019", + "resolutionCount": 3, + "top5FailedReferrers": ["https://www.overleaf.com/"] + }, + { + "doi": "10.11570/26.0020", + "resolutionCount": 2, + "top5FailedReferrers": ["https://www.overleaf.com/"] + }, + { + "doi": "10.11570/26.0022", + "resolutionCount": 2, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/A", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/ABC", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/CISTI.CANFAR/21.0007", + "resolutionCount": 1, + "top5FailedReferrers": [] + } + ] + } + }, + { + "id": 5, + "type": "resolutionReport", + "attributes": { + "prefix": "10.82206", + "period": "2026-08", + "summaryMetrics": { + "totalAttemptedResolutions": 1174, + "successfulResolutions": 1055, + "failedResolutions": 119, + "totalUniqueDois": 192, + "uniqueDoiSuccesses": 120, + "uniqueDoiFailures": 77 + }, + "topSuccessfulDois": [ + { + "doi": "10.11570/23.0029", + "resolutionCount": 116 + }, + { + "doi": "10.11570/25.0066", + "resolutionCount": 80 + }, + { + "doi": "10.11570/26.0020", + "resolutionCount": 77 + }, + { + "doi": "10.11570/24.0091", + "resolutionCount": 32 + }, + { + "doi": "10.11570/20.0002", + "resolutionCount": 27 + }, + { + "doi": "10.11570/26.0002", + "resolutionCount": 27 + }, + { + "doi": "10.11570/18.0005", + "resolutionCount": 23 + }, + { + "doi": "10.11570/26.0001", + "resolutionCount": 21 + }, + { + "doi": "10.11570/21.0007", + "resolutionCount": 19 + }, + { + "doi": "10.11570/21.0024", + "resolutionCount": 19 + }, + { + "doi": "10.11570/24.0087", + "resolutionCount": 19 + }, + { + "doi": "10.11570/25.0004", + "resolutionCount": 19 + }, + { + "doi": "10.11570/20.0006", + "resolutionCount": 18 + }, + { + "doi": "10.11570/26.0014", + "resolutionCount": 16 + }, + { + "doi": "10.11570/26.0015", + "resolutionCount": 16 + }, + { + "doi": "10.11570/23.0013", + "resolutionCount": 15 + }, + { + "doi": "10.11570/26.0003", + "resolutionCount": 15 + }, + { + "doi": "10.11570/16.0001", + "resolutionCount": 14 + }, + { + "doi": "10.11570/22.0020", + "resolutionCount": 14 + }, + { + "doi": "10.11570/22.0003", + "resolutionCount": 12 + }, + { + "doi": "10.11570/25.0036", + "resolutionCount": 12 + }, + { + "doi": "10.11570/13.0002", + "resolutionCount": 11 + }, + { + "doi": "10.11570/22.0080", + "resolutionCount": 10 + }, + { + "doi": "10.11570/24.0098", + "resolutionCount": 10 + }, + { + "doi": "10.11570/22.0082", + "resolutionCount": 9 + }, + { + "doi": "10.11570/23.0006", + "resolutionCount": 9 + }, + { + "doi": "10.11570/16.0003", + "resolutionCount": 8 + }, + { + "doi": "10.11570/16.0008", + "resolutionCount": 8 + }, + { + "doi": "10.11570/17.0007", + "resolutionCount": 8 + }, + { + "doi": "10.11570/19.0074", + "resolutionCount": 8 + }, + { + "doi": "10.11570/23.0033", + "resolutionCount": 8 + }, + { + "doi": "10.11570/24.0003", + "resolutionCount": 8 + }, + { + "doi": "10.11570/24.0092", + "resolutionCount": 8 + }, + { + "doi": "10.11570/25.0076", + "resolutionCount": 8 + }, + { + "doi": "10.11570/25.0104", + "resolutionCount": 8 + }, + { + "doi": "10.11570/15.0001", + "resolutionCount": 7 + }, + { + "doi": "10.11570/15.0002", + "resolutionCount": 7 + }, + { + "doi": "10.11570/16.0006", + "resolutionCount": 7 + }, + { + "doi": "10.11570/17.0009", + "resolutionCount": 7 + }, + { + "doi": "10.11570/18.0001", + "resolutionCount": 7 + }, + { + "doi": "10.11570/18.0007", + "resolutionCount": 7 + }, + { + "doi": "10.11570/19.0028", + "resolutionCount": 7 + }, + { + "doi": "10.11570/20.0007", + "resolutionCount": 7 + }, + { + "doi": "10.11570/22.0078", + "resolutionCount": 7 + }, + { + "doi": "10.11570/25.0001", + "resolutionCount": 7 + }, + { + "doi": "10.11570/13.0001", + "resolutionCount": 6 + }, + { + "doi": "10.11570/17.0006", + "resolutionCount": 6 + }, + { + "doi": "10.11570/19.0004", + "resolutionCount": 6 + }, + { + "doi": "10.11570/20.0013", + "resolutionCount": 6 + }, + { + "doi": "10.11570/21.0002", + "resolutionCount": 6 + }, + { + "doi": "10.11570/22.0083", + "resolutionCount": 6 + }, + { + "doi": "10.11570/24.0002", + "resolutionCount": 6 + }, + { + "doi": "10.11570/24.0088", + "resolutionCount": 6 + }, + { + "doi": "10.11570/25.0103", + "resolutionCount": 6 + }, + { + "doi": "10.11570/25.0106", + "resolutionCount": 6 + }, + { + "doi": "10.11570/26.0018", + "resolutionCount": 6 + }, + { + "doi": "10.11570/16.0002", + "resolutionCount": 5 + }, + { + "doi": "10.11570/16.0007", + "resolutionCount": 5 + }, + { + "doi": "10.11570/17.0001", + "resolutionCount": 5 + }, + { + "doi": "10.11570/17.0004", + "resolutionCount": 5 + }, + { + "doi": "10.11570/18.0002", + "resolutionCount": 5 + }, + { + "doi": "10.11570/18.0003", + "resolutionCount": 5 + }, + { + "doi": "10.11570/20.0001", + "resolutionCount": 5 + }, + { + "doi": "10.11570/20.0011", + "resolutionCount": 5 + }, + { + "doi": "10.11570/23.0004", + "resolutionCount": 5 + }, + { + "doi": "10.11570/23.0010", + "resolutionCount": 5 + }, + { + "doi": "10.11570/23.0030", + "resolutionCount": 5 + }, + { + "doi": "10.11570/25.0091", + "resolutionCount": 5 + }, + { + "doi": "10.11570/25.0105", + "resolutionCount": 5 + }, + { + "doi": "10.11570/26.0006", + "resolutionCount": 5 + }, + { + "doi": "10.11570/26.0019", + "resolutionCount": 5 + }, + { + "doi": "10.11570/16.0004", + "resolutionCount": 4 + }, + { + "doi": "10.11570/17.0010", + "resolutionCount": 4 + }, + { + "doi": "10.11570/19.0008", + "resolutionCount": 4 + }, + { + "doi": "10.11570/21.0004", + "resolutionCount": 4 + }, + { + "doi": "10.11570/21.0006", + "resolutionCount": 4 + }, + { + "doi": "10.11570/23.0017", + "resolutionCount": 4 + }, + { + "doi": "10.11570/24.0001", + "resolutionCount": 4 + }, + { + "doi": "10.11570/24.0090", + "resolutionCount": 4 + }, + { + "doi": "10.11570/26.0011", + "resolutionCount": 4 + }, + { + "doi": "10.11570/26.0013", + "resolutionCount": 4 + }, + { + "doi": "10.11570/16.0005", + "resolutionCount": 3 + }, + { + "doi": "10.11570/16.0009", + "resolutionCount": 3 + }, + { + "doi": "10.11570/17.0002", + "resolutionCount": 3 + }, + { + "doi": "10.11570/17.0003", + "resolutionCount": 3 + }, + { + "doi": "10.11570/17.0008", + "resolutionCount": 3 + }, + { + "doi": "10.11570/19.0009", + "resolutionCount": 3 + }, + { + "doi": "10.11570/21.0003", + "resolutionCount": 3 + }, + { + "doi": "10.11570/21.0008", + "resolutionCount": 3 + }, + { + "doi": "10.11570/22.0001", + "resolutionCount": 3 + }, + { + "doi": "10.11570/22.0072", + "resolutionCount": 3 + }, + { + "doi": "10.11570/24.0089", + "resolutionCount": 3 + }, + { + "doi": "10.11570/18.0006", + "resolutionCount": 2 + }, + { + "doi": "10.11570/19.0007", + "resolutionCount": 2 + }, + { + "doi": "10.11570/20.0010", + "resolutionCount": 2 + }, + { + "doi": "10.11570/21.0001", + "resolutionCount": 2 + }, + { + "doi": "10.11570/22.0005", + "resolutionCount": 2 + }, + { + "doi": "10.11570/23.0008", + "resolutionCount": 2 + }, + { + "doi": "10.11570/24.0007", + "resolutionCount": 2 + }, + { + "doi": "10.11570/25.0003", + "resolutionCount": 2 + }, + { + "doi": "10.11570/25.0048", + "resolutionCount": 2 + }, + { + "doi": "10.11570/25.0098", + "resolutionCount": 2 + }, + { + "doi": "10.11570/25.0099", + "resolutionCount": 2 + }, + { + "doi": "10.11570/17.0005", + "resolutionCount": 1 + }, + { + "doi": "10.11570/19.0005", + "resolutionCount": 1 + }, + { + "doi": "10.11570/20.0004", + "resolutionCount": 1 + }, + { + "doi": "10.11570/20.0009", + "resolutionCount": 1 + }, + { + "doi": "10.11570/20.0016", + "resolutionCount": 1 + }, + { + "doi": "10.11570/22.0002", + "resolutionCount": 1 + }, + { + "doi": "10.11570/23.0003", + "resolutionCount": 1 + }, + { + "doi": "10.11570/23.0018", + "resolutionCount": 1 + }, + { + "doi": "10.11570/23.0028", + "resolutionCount": 1 + }, + { + "doi": "10.11570/23.0031", + "resolutionCount": 1 + }, + { + "doi": "10.11570/24.0006", + "resolutionCount": 1 + }, + { + "doi": "10.11570/25.0002", + "resolutionCount": 1 + }, + { + "doi": "10.11570/25.0008", + "resolutionCount": 1 + }, + { + "doi": "10.11570/25.0068", + "resolutionCount": 1 + }, + { + "doi": "10.11570/25.0077", + "resolutionCount": 1 + }, + { + "doi": "10.11570/26.0008", + "resolutionCount": 1 + }, + { + "doi": "10.11570/26.0009", + "resolutionCount": 1 + } + ], + "failedDois": [ + { + "doi": "10.11570/", + "resolutionCount": 2, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/1", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/1234", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/13.0002.THE", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/13.0003", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/14.0005", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/15.0001.BINTLEY", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/15.0003", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/15.0004", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0001THIS", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0002ORION%EF%82%A0A", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0002Orion", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0003.K16", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0003KIRK", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0003OPHIUCHUS", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0003Ophiuchus", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0004.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0006ORION%EF%82%A0B", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0009.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0001.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.00044HTTPS:/DOI.ORG/10.11570/19.0028REFERENCESBALLY", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0007/", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0008.MORE", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0009.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0009.Key", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.007", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/18.00", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/18.000", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/18.0004", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/18.005", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/18007", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/19.0021", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/19.0029.TEST", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/19.0040", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/19.0049.TEST", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/19.0073", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/19.1000/108", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/20.0006.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/20.00071.A", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/21.0024A133", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/21.003", + "resolutionCount": 2, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/22.0072MOLECULAR", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/22.0078/", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/23.0001", + "resolutionCount": 4, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/23.0007", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/23.02647", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/24.0003WITH", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0005", + "resolutionCount": 6, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/25.0006", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0007", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0009", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0010", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0011", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0012", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0013", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0014", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0015", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0089", + "resolutionCount": 9, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/26.0004", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0005", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0007", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0008", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0014", + "resolutionCount": 3, + "top5FailedReferrers": ["https://www.overleaf.com/"] + }, + { + "doi": "10.11570/26.0014.10", + "resolutionCount": 2, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0014.101100", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0014.101100101", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0014.4.1", + "resolutionCount": 2, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0015.%3Cbr", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0016", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0018", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0019", + "resolutionCount": 3, + "top5FailedReferrers": ["https://www.overleaf.com/"] + }, + { + "doi": "10.11570/26.0020", + "resolutionCount": 2, + "top5FailedReferrers": ["https://www.overleaf.com/"] + }, + { + "doi": "10.11570/26.0022", + "resolutionCount": 2, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/A", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/ABC", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/CISTI.CANFAR/21.0007", + "resolutionCount": 1, + "top5FailedReferrers": [] + } + ] + } + }, + { + "id": 6, + "type": "resolutionReport", + "attributes": { + "prefix": "10.82206", + "period": "2026-09", + "summaryMetrics": { + "totalAttemptedResolutions": 1174, + "successfulResolutions": 1055, + "failedResolutions": 119, + "totalUniqueDois": 192, + "uniqueDoiSuccesses": 120, + "uniqueDoiFailures": 77 + }, + "topSuccessfulDois": [ + { + "doi": "10.11570/23.0029", + "resolutionCount": 116 + }, + { + "doi": "10.11570/25.0066", + "resolutionCount": 80 + }, + { + "doi": "10.11570/26.0020", + "resolutionCount": 77 + }, + { + "doi": "10.11570/24.0091", + "resolutionCount": 32 + }, + { + "doi": "10.11570/20.0002", + "resolutionCount": 27 + }, + { + "doi": "10.11570/26.0002", + "resolutionCount": 27 + }, + { + "doi": "10.11570/18.0005", + "resolutionCount": 23 + }, + { + "doi": "10.11570/26.0001", + "resolutionCount": 21 + }, + { + "doi": "10.11570/21.0007", + "resolutionCount": 19 + }, + { + "doi": "10.11570/21.0024", + "resolutionCount": 19 + }, + { + "doi": "10.11570/24.0087", + "resolutionCount": 19 + }, + { + "doi": "10.11570/25.0004", + "resolutionCount": 19 + }, + { + "doi": "10.11570/20.0006", + "resolutionCount": 18 + }, + { + "doi": "10.11570/26.0014", + "resolutionCount": 16 + }, + { + "doi": "10.11570/26.0015", + "resolutionCount": 16 + }, + { + "doi": "10.11570/23.0013", + "resolutionCount": 15 + }, + { + "doi": "10.11570/26.0003", + "resolutionCount": 15 + }, + { + "doi": "10.11570/16.0001", + "resolutionCount": 14 + }, + { + "doi": "10.11570/22.0020", + "resolutionCount": 14 + }, + { + "doi": "10.11570/22.0003", + "resolutionCount": 12 + }, + { + "doi": "10.11570/25.0036", + "resolutionCount": 12 + }, + { + "doi": "10.11570/13.0002", + "resolutionCount": 11 + }, + { + "doi": "10.11570/22.0080", + "resolutionCount": 10 + }, + { + "doi": "10.11570/24.0098", + "resolutionCount": 10 + }, + { + "doi": "10.11570/22.0082", + "resolutionCount": 9 + }, + { + "doi": "10.11570/23.0006", + "resolutionCount": 9 + }, + { + "doi": "10.11570/16.0003", + "resolutionCount": 8 + }, + { + "doi": "10.11570/16.0008", + "resolutionCount": 8 + }, + { + "doi": "10.11570/17.0007", + "resolutionCount": 8 + }, + { + "doi": "10.11570/19.0074", + "resolutionCount": 8 + }, + { + "doi": "10.11570/23.0033", + "resolutionCount": 8 + }, + { + "doi": "10.11570/24.0003", + "resolutionCount": 8 + }, + { + "doi": "10.11570/24.0092", + "resolutionCount": 8 + }, + { + "doi": "10.11570/25.0076", + "resolutionCount": 8 + }, + { + "doi": "10.11570/25.0104", + "resolutionCount": 8 + }, + { + "doi": "10.11570/15.0001", + "resolutionCount": 7 + }, + { + "doi": "10.11570/15.0002", + "resolutionCount": 7 + }, + { + "doi": "10.11570/16.0006", + "resolutionCount": 7 + }, + { + "doi": "10.11570/17.0009", + "resolutionCount": 7 + }, + { + "doi": "10.11570/18.0001", + "resolutionCount": 7 + }, + { + "doi": "10.11570/18.0007", + "resolutionCount": 7 + }, + { + "doi": "10.11570/19.0028", + "resolutionCount": 7 + }, + { + "doi": "10.11570/20.0007", + "resolutionCount": 7 + }, + { + "doi": "10.11570/22.0078", + "resolutionCount": 7 + }, + { + "doi": "10.11570/25.0001", + "resolutionCount": 7 + }, + { + "doi": "10.11570/13.0001", + "resolutionCount": 6 + }, + { + "doi": "10.11570/17.0006", + "resolutionCount": 6 + }, + { + "doi": "10.11570/19.0004", + "resolutionCount": 6 + }, + { + "doi": "10.11570/20.0013", + "resolutionCount": 6 + }, + { + "doi": "10.11570/21.0002", + "resolutionCount": 6 + }, + { + "doi": "10.11570/22.0083", + "resolutionCount": 6 + }, + { + "doi": "10.11570/24.0002", + "resolutionCount": 6 + }, + { + "doi": "10.11570/24.0088", + "resolutionCount": 6 + }, + { + "doi": "10.11570/25.0103", + "resolutionCount": 6 + }, + { + "doi": "10.11570/25.0106", + "resolutionCount": 6 + }, + { + "doi": "10.11570/26.0018", + "resolutionCount": 6 + }, + { + "doi": "10.11570/16.0002", + "resolutionCount": 5 + }, + { + "doi": "10.11570/16.0007", + "resolutionCount": 5 + }, + { + "doi": "10.11570/17.0001", + "resolutionCount": 5 + }, + { + "doi": "10.11570/17.0004", + "resolutionCount": 5 + }, + { + "doi": "10.11570/18.0002", + "resolutionCount": 5 + }, + { + "doi": "10.11570/18.0003", + "resolutionCount": 5 + }, + { + "doi": "10.11570/20.0001", + "resolutionCount": 5 + }, + { + "doi": "10.11570/20.0011", + "resolutionCount": 5 + }, + { + "doi": "10.11570/23.0004", + "resolutionCount": 5 + }, + { + "doi": "10.11570/23.0010", + "resolutionCount": 5 + }, + { + "doi": "10.11570/23.0030", + "resolutionCount": 5 + }, + { + "doi": "10.11570/25.0091", + "resolutionCount": 5 + }, + { + "doi": "10.11570/25.0105", + "resolutionCount": 5 + }, + { + "doi": "10.11570/26.0006", + "resolutionCount": 5 + }, + { + "doi": "10.11570/26.0019", + "resolutionCount": 5 + }, + { + "doi": "10.11570/16.0004", + "resolutionCount": 4 + }, + { + "doi": "10.11570/17.0010", + "resolutionCount": 4 + }, + { + "doi": "10.11570/19.0008", + "resolutionCount": 4 + }, + { + "doi": "10.11570/21.0004", + "resolutionCount": 4 + }, + { + "doi": "10.11570/21.0006", + "resolutionCount": 4 + }, + { + "doi": "10.11570/23.0017", + "resolutionCount": 4 + }, + { + "doi": "10.11570/24.0001", + "resolutionCount": 4 + }, + { + "doi": "10.11570/24.0090", + "resolutionCount": 4 + }, + { + "doi": "10.11570/26.0011", + "resolutionCount": 4 + }, + { + "doi": "10.11570/26.0013", + "resolutionCount": 4 + }, + { + "doi": "10.11570/16.0005", + "resolutionCount": 3 + }, + { + "doi": "10.11570/16.0009", + "resolutionCount": 3 + }, + { + "doi": "10.11570/17.0002", + "resolutionCount": 3 + }, + { + "doi": "10.11570/17.0003", + "resolutionCount": 3 + }, + { + "doi": "10.11570/17.0008", + "resolutionCount": 3 + }, + { + "doi": "10.11570/19.0009", + "resolutionCount": 3 + }, + { + "doi": "10.11570/21.0003", + "resolutionCount": 3 + }, + { + "doi": "10.11570/21.0008", + "resolutionCount": 3 + }, + { + "doi": "10.11570/22.0001", + "resolutionCount": 3 + }, + { + "doi": "10.11570/22.0072", + "resolutionCount": 3 + }, + { + "doi": "10.11570/24.0089", + "resolutionCount": 3 + }, + { + "doi": "10.11570/18.0006", + "resolutionCount": 2 + }, + { + "doi": "10.11570/19.0007", + "resolutionCount": 2 + }, + { + "doi": "10.11570/20.0010", + "resolutionCount": 2 + }, + { + "doi": "10.11570/21.0001", + "resolutionCount": 2 + }, + { + "doi": "10.11570/22.0005", + "resolutionCount": 2 + }, + { + "doi": "10.11570/23.0008", + "resolutionCount": 2 + }, + { + "doi": "10.11570/24.0007", + "resolutionCount": 2 + }, + { + "doi": "10.11570/25.0003", + "resolutionCount": 2 + }, + { + "doi": "10.11570/25.0048", + "resolutionCount": 2 + }, + { + "doi": "10.11570/25.0098", + "resolutionCount": 2 + }, + { + "doi": "10.11570/25.0099", + "resolutionCount": 2 + }, + { + "doi": "10.11570/17.0005", + "resolutionCount": 1 + }, + { + "doi": "10.11570/19.0005", + "resolutionCount": 1 + }, + { + "doi": "10.11570/20.0004", + "resolutionCount": 1 + }, + { + "doi": "10.11570/20.0009", + "resolutionCount": 1 + }, + { + "doi": "10.11570/20.0016", + "resolutionCount": 1 + }, + { + "doi": "10.11570/22.0002", + "resolutionCount": 1 + }, + { + "doi": "10.11570/23.0003", + "resolutionCount": 1 + }, + { + "doi": "10.11570/23.0018", + "resolutionCount": 1 + }, + { + "doi": "10.11570/23.0028", + "resolutionCount": 1 + }, + { + "doi": "10.11570/23.0031", + "resolutionCount": 1 + }, + { + "doi": "10.11570/24.0006", + "resolutionCount": 1 + }, + { + "doi": "10.11570/25.0002", + "resolutionCount": 1 + }, + { + "doi": "10.11570/25.0008", + "resolutionCount": 1 + }, + { + "doi": "10.11570/25.0068", + "resolutionCount": 1 + }, + { + "doi": "10.11570/25.0077", + "resolutionCount": 1 + }, + { + "doi": "10.11570/26.0008", + "resolutionCount": 1 + }, + { + "doi": "10.11570/26.0009", + "resolutionCount": 1 + } + ], + "failedDois": [ + { + "doi": "10.11570/", + "resolutionCount": 2, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/1", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/1234", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/13.0002.THE", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/13.0003", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/14.0005", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/15.0001.BINTLEY", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/15.0003", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/15.0004", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0001THIS", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0002ORION%EF%82%A0A", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0002Orion", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0003.K16", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0003KIRK", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0003OPHIUCHUS", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0003Ophiuchus", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0004.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0006ORION%EF%82%A0B", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/16.0009.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0001.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.00044HTTPS:/DOI.ORG/10.11570/19.0028REFERENCESBALLY", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0007/", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0008.MORE", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0009.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.0009.Key", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/17.007", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/18.00", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/18.000", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/18.0004", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/18.005", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/18007", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/19.0021", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/19.0029.TEST", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/19.0040", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/19.0049.TEST", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/19.0073", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/19.1000/108", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/20.0006.", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/20.00071.A", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/21.0024A133", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/21.003", + "resolutionCount": 2, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/22.0072MOLECULAR", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/22.0078/", + "resolutionCount": 1, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/23.0001", + "resolutionCount": 4, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/23.0007", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/23.02647", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/24.0003WITH", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0005", + "resolutionCount": 6, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/25.0006", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0007", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0009", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0010", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0011", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0012", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0013", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0014", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0015", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/25.0089", + "resolutionCount": 9, + "top5FailedReferrers": ["https://stats.datacite.org"] + }, + { + "doi": "10.11570/26.0004", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0005", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0007", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0008", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0014", + "resolutionCount": 3, + "top5FailedReferrers": ["https://www.overleaf.com/"] + }, + { + "doi": "10.11570/26.0014.10", + "resolutionCount": 2, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0014.101100", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0014.101100101", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0014.4.1", + "resolutionCount": 2, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0015.%3Cbr", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0016", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0018", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/26.0019", + "resolutionCount": 3, + "top5FailedReferrers": ["https://www.overleaf.com/"] + }, + { + "doi": "10.11570/26.0020", + "resolutionCount": 2, + "top5FailedReferrers": ["https://www.overleaf.com/"] + }, + { + "doi": "10.11570/26.0022", + "resolutionCount": 2, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/A", + "resolutionCount": 1, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/ABC", + "resolutionCount": 3, + "top5FailedReferrers": [] + }, + { + "doi": "10.11570/CISTI.CANFAR/21.0007", + "resolutionCount": 1, + "top5FailedReferrers": [] + } + ] + } + } +]; + +export const resolutionReports: ResolutionReport[] = MOCK_DATA.map( + ({ id, attributes }) => ({ + id: String(id), + type: "resolution-reports", + attributes, + }), +); diff --git a/src/app/api/resolution-reports/route.ts b/src/app/api/resolution-reports/route.ts new file mode 100644 index 0000000..ae71734 --- /dev/null +++ b/src/app/api/resolution-reports/route.ts @@ -0,0 +1,12 @@ +import { buildResolutionReportsDocument, resolutionReports } from "./mockData"; + +export async function GET(request: Request) { + const { searchParams } = new URL(request.url); + const prefix = searchParams.get("prefix")?.trim(); + + const reports = prefix + ? resolutionReports.filter((report) => report.attributes.prefix === prefix) + : resolutionReports; + + return Response.json(buildResolutionReportsDocument(reports, prefix)); +} \ No newline at end of file diff --git a/src/app/org-repo/[id]/OrgRepoPageClient.tsx b/src/app/org-repo/[id]/OrgRepoPageClient.tsx index a72d9fc..59d1150 100644 --- a/src/app/org-repo/[id]/OrgRepoPageClient.tsx +++ b/src/app/org-repo/[id]/OrgRepoPageClient.tsx @@ -12,6 +12,7 @@ import DoisPageClient from "@/app/dois/DoisPageClient"; import { fetchDoisTotal } from "@/data/fetch"; import { asNumber } from "@/util"; import type { Entity } from "@/types"; +import ResolutionReports from "./ResolutionReports"; type Props = { id: string; @@ -116,11 +117,15 @@ export default function OrgRepoPageClient({ content: , }, { - label: "Resolution Statistics", - value: "resolution-statistics", + label: "Resolution Metrics", + value: "resolution-metrics", groupLabel: "Impact", icon: , - content: , + content: ( + + + + ), }, { label: `${entityLabel} Info`, diff --git a/src/app/org-repo/[id]/ResolutionReports.tsx b/src/app/org-repo/[id]/ResolutionReports.tsx new file mode 100644 index 0000000..7825c9b --- /dev/null +++ b/src/app/org-repo/[id]/ResolutionReports.tsx @@ -0,0 +1,323 @@ +"use client"; + +import { ArrowRight } from "lucide-react"; +import Link from "next/link"; +import { useRouter, usePathname, useSearchParams } from "next/navigation"; +import { useEffect, useMemo, useState } from "react"; +import { + Card, + CardContent, + CardHeader, + CardTitle, +} from "@/components/ui/card"; +import ScrollableTable from "@/components/ScrollableTable"; +import { Spinner } from "@/components/ui/spinner"; +import { H4 } from "@/components/datacite/Headings"; +import { PrefixSelector } from "@/components/resolution-reports/PrefixSelector"; +import { TrendChart } from "@/components/resolution-reports/TrendChart"; +import { SummaryStatsBox } from "@/components/resolution-reports/SummaryStatsBox"; +import { ReportSelector } from "@/components/resolution-reports/ReportSelector"; +import { + useResolutionReportDetail, + useResolutionReportSummaries, +} from "@/data/resolution-reports"; +import { RESOLUTION_REPORTS } from "@/constants"; +import { buildTrendData } from "@/components/resolution-reports/utils"; +import type { ChartMode, PrefixOption, ReportOption } from "@/types"; + +const PREFIX_PARAM = RESOLUTION_REPORTS.PREFIX_PARAM; +const REPORT_PARAM = RESOLUTION_REPORTS.REPORT_PARAM; + +function buildPrefixUrl( + pathname: string, + searchParams: URLSearchParams, + prefix: string, +): string { + const nextParams = new URLSearchParams(searchParams.toString()); + nextParams.set(PREFIX_PARAM, prefix); + return `${pathname}?${nextParams.toString()}`; +} + +function buildReportUrl( + pathname: string, + searchParams: URLSearchParams, + reportId: string, +): string { + const nextParams = new URLSearchParams(searchParams.toString()); + nextParams.set(REPORT_PARAM, reportId); + return `${pathname}?${nextParams.toString()}`; +} + +export default function ResolutionReports() { + const [chartMode, setChartMode] = useState("total-resolutions"); + + const router = useRouter(); + const pathname = usePathname(); + const searchParams = useSearchParams(); + + const selectedPrefix = searchParams.get(PREFIX_PARAM); + const selectedReportId = searchParams.get(REPORT_PARAM); + const prefixCount = searchParams.get("prefix-count"); + + const filteredPrefixOptions = useMemo(() => { + const maxPrefixOptions = 2; + const parsedCount = prefixCount ? Number.parseInt(prefixCount, 10) : Number.NaN; + const count = Number.isFinite(parsedCount) + ? Math.min(Math.max(parsedCount, 1), maxPrefixOptions) + : RESOLUTION_REPORTS.PREFIX_OPTIONS.length; + + return RESOLUTION_REPORTS.PREFIX_OPTIONS.slice(0, count); + }, [prefixCount]); + + const selectedOption = useMemo( + () => ( + filteredPrefixOptions.find((option) => option.prefix === selectedPrefix) ?? + filteredPrefixOptions[0] + ), + [filteredPrefixOptions, selectedPrefix], + ); + + // Fetch summaries + const { data, isLoading, isError } = useResolutionReportSummaries(selectedOption.prefix); + + // Derive report options and selected report + const reportOptions = useMemo(() => { + if (!data?.data) { + return []; + } + + return [...data.data] + .sort((left, right) => right.attributes.period.localeCompare(left.attributes.period)) + .map((report) => ({ + id: report.id, + period: report.attributes.period, + })); + }, [data?.data]); + + const selectedReport = useMemo(() => { + if (reportOptions.length === 0) { + return null; + } + + return reportOptions.find((report) => report.id === selectedReportId) ?? reportOptions[0]; + }, [reportOptions, selectedReportId]); + + const { + data: reportDetailResponse, + isLoading: isDetailLoading, + isError: isDetailError, + } = useResolutionReportDetail(selectedReport?.id ?? "", { + enabled: !!selectedReport, + }); + + const fullReportDetail = reportDetailResponse?.data ?? null; + + // Sync URL when prefix changes + useEffect(() => { + if (selectedPrefix === selectedOption.prefix) return; + router.replace( + buildPrefixUrl(pathname, new URLSearchParams(searchParams.toString()), selectedOption.prefix), + { scroll: false }, + ); + }, [selectedOption.prefix, selectedPrefix, pathname, searchParams, router]); + + // Sync URL when report changes + useEffect(() => { + if (!selectedReport) return; + if (selectedReportId === selectedReport.id) return; + + router.replace( + buildReportUrl( + pathname, + new URLSearchParams(searchParams.toString()), + selectedReport.id, + ), + { scroll: false }, + ); + }, [selectedReport, selectedReportId, pathname, searchParams, router]); + + const chartData = useMemo(() => buildTrendData(data?.data ?? []), [data?.data]); + + const successfulDoiRows = fullReportDetail?.attributes.topSuccessfulDois.map((doi) => ({ + rowId: doi.doi, + doi: ( + + {doi.doi} + + + ), + resolutionCount: doi.resolutionCount, + })) ?? []; + + const successfulDoiExportRows = fullReportDetail?.attributes.topSuccessfulDois.map((doi) => ({ + doi: doi.doi, + resolutionCount: doi.resolutionCount, + })) ?? []; + + const failedDoiRows = fullReportDetail?.attributes.failedDois.map((doi) => ({ + doi: doi.doi, + resolutionCount: doi.resolutionCount, + topReferrers: doi.top5FailedReferrers?.join(", ") || "—", + })) ?? []; + + const failedDoiExportRows = fullReportDetail?.attributes.failedDois.map((doi) => ({ + doi: doi.doi, + resolutionCount: doi.resolutionCount, + topReferrers: doi.top5FailedReferrers?.join(", ") || "—", + })) ?? []; + + const csvMonth = fullReportDetail?.attributes.period || "report"; + + const handlePrefixSelect = (prefix: PrefixOption) => { + router.replace( + buildPrefixUrl(pathname, new URLSearchParams(searchParams.toString()), prefix.prefix), + { scroll: false }, + ); + }; + + const handleReportSelect = (report: ReportOption) => { + router.replace( + buildReportUrl(pathname, new URLSearchParams(searchParams.toString()), report.id), + { scroll: false }, + ); + }; + + const handleChartReportSelect = (reportId: string) => { + router.replace( + buildReportUrl(pathname, new URLSearchParams(searchParams.toString()), reportId), + { scroll: false }, + ); + }; + + return ( +
+ {/* Prefix Selector */} + {filteredPrefixOptions.length > 1 ? ( + + ) : null} + + + +
+ +

Resolutions Trends

+
+ +
+
+
+ + + +
+ +

Resolution Reports By Month

+
+ +
+
+ + + {isLoading || isDetailLoading ? ( +
+ +
+ ) : isError ? ( +
+ Unable to load available reports. +
+ ) : reportOptions.length === 0 || !selectedReport ? ( +
+ No reports are available for this prefix. +
+ ) : isDetailError ? ( +
+ Unable to load the selected report. +
+ ) : selectedReport && fullReportDetail ? ( +
+ {/* Summary Stats */} +
+ + +
+ + + + +
+ ) : null} +
+
+
+ ); +} \ No newline at end of file diff --git a/src/components/ScrollableTable.tsx b/src/components/ScrollableTable.tsx new file mode 100644 index 0000000..72183df --- /dev/null +++ b/src/components/ScrollableTable.tsx @@ -0,0 +1,135 @@ +import { DownloadIcon } from "lucide-react"; +import type { ReactNode } from "react"; +import { H3 } from "@/components/datacite/Headings"; + +import { Button } from "@/components/ui/button"; + +type TableValue = ReactNode; +type CsvCellValue = string | number | boolean | null | undefined; + +function escapeCsvValue(value: CsvCellValue): string { + const stringValue = value == null ? "" : String(value); + return /[",\n\r]/.test(stringValue) + ? `"${stringValue.replaceAll('"', '""')}"` + : stringValue; +} + +function downloadCsvFile(contents: string, filename: string) { + const blob = new Blob([contents], { type: "text/csv" }); + const href = URL.createObjectURL(blob); + const link = document.createElement("a"); + link.href = href; + link.download = filename; + link.click(); + URL.revokeObjectURL(href); +} + +export type TableColumn = { + header: string; + accessor: keyof T; + className?: string; +}; + +interface ScrollableTableProps { + columns: TableColumn[]; + data: T[]; + maxHeight?: string; + rowKey: keyof T; + title?: string; + csvFilename?: string; + csvRows?: Array>; +} + +export default function ScrollableTable({ + columns, + data, + maxHeight = "h-96", + rowKey, + title, + csvFilename = "table-export.csv", + csvRows, +}: ScrollableTableProps) { + function handleDownloadCsv() { + if (!csvRows || csvRows.length === 0) return; + + const headerRow = columns.map((column) => escapeCsvValue(column.header)).join(","); + const bodyRows = csvRows.map((row) => + columns.map((column) => escapeCsvValue(row[String(column.accessor)])).join(","), + ); + downloadCsvFile([headerRow, ...bodyRows].join("\n"), csvFilename); + } + + return ( +
+ {title || (csvRows && csvRows.length > 0) ? ( +
+

{title}

+ {csvRows && csvRows.length > 0 ? ( + + ) : null} +
+ ) : null} +
+
+ + + + {columns.map((column, idx) => ( + + ))} + + + + {data.length === 0 ? ( + + + + ) : ( + data.map((item, index) => ( + + {columns.map((column, colIdx) => ( + + ))} + + )) + )} + +
+ {column.header} +
+ No data available +
+ {(item[column.accessor] as TableValue) ?? ""} +
+
+
+
+ ); +} diff --git a/src/components/resolution-reports/PrefixSelector.tsx b/src/components/resolution-reports/PrefixSelector.tsx new file mode 100644 index 0000000..92f382e --- /dev/null +++ b/src/components/resolution-reports/PrefixSelector.tsx @@ -0,0 +1,77 @@ +"use client"; + +import { + Combobox, + ComboboxContent, + ComboboxItem, + ComboboxList, + ComboboxTrigger, + ComboboxValue, +} from "@/components/ui/combobox"; +import { Item, ItemContent, ItemTitle } from "@/components/ui/item"; +import type { PrefixOption } from "@/types"; + +type PrefixSelectorProps = { + selectedOption: PrefixOption; + options: PrefixOption[]; + onSelect: (option: PrefixOption) => void; + isLoading?: boolean; +}; + +export function PrefixSelector({ + selectedOption, + options, + onSelect, + isLoading, +}: PrefixSelectorProps) { + const isSingleOption = options.length === 1; + + if (isSingleOption) { + return null; + } + + return ( +
+ item.prefix} + itemToStringLabel={(item) => item.prefix} + onValueChange={(value) => { + const nextValue = value as PrefixOption | null; + if (!nextValue) return; + onSelect(nextValue); + }} + disabled={isLoading} + > + + + + + Prefix
+
+
+
+
+ + + + {(item) => ( + + + + {item.prefix} + + + + )} + + +
+
+ ); +} diff --git a/src/components/resolution-reports/ReportSelector.tsx b/src/components/resolution-reports/ReportSelector.tsx new file mode 100644 index 0000000..4b39cd4 --- /dev/null +++ b/src/components/resolution-reports/ReportSelector.tsx @@ -0,0 +1,75 @@ +"use client"; + +import { + Combobox, + ComboboxContent, + ComboboxItem, + ComboboxList, + ComboboxTrigger, + ComboboxValue, +} from "@/components/ui/combobox"; +import { Item, ItemContent, ItemTitle } from "@/components/ui/item"; +import { formatPeriodLabel } from "@/components/resolution-reports/utils"; +import type { ReportOption } from "@/types"; + +type ReportSelectorProps = { + selectedReport: ReportOption | null; + options: ReportOption[]; + onSelect: (option: ReportOption) => void; + isLoading?: boolean; +}; + +export function ReportSelector({ + selectedReport, + options, + onSelect, + isLoading, +}: ReportSelectorProps) { + if (options.length === 0 || !selectedReport) { + return null; + } + + return ( +
+ item.id} + itemToStringLabel={(item) => formatPeriodLabel(item.period)} + onValueChange={(value) => { + const nextValue = value as ReportOption | null; + if (!nextValue) return; + onSelect(nextValue); + }} + disabled={isLoading} + > + + + + +
Month
+
+
+
+
+ + + + {(item) => ( + + + + + {formatPeriodLabel(item.period)} + + + + + )} + + +
+
+ ); +} diff --git a/src/components/resolution-reports/SummaryStatsBox.tsx b/src/components/resolution-reports/SummaryStatsBox.tsx new file mode 100644 index 0000000..5c36db7 --- /dev/null +++ b/src/components/resolution-reports/SummaryStatsBox.tsx @@ -0,0 +1,33 @@ +import { asNumber } from "@/util"; + +type Stat = { + label: string; + value: number; +}; + +type SummaryStatsBoxProps = { + title: string; + mainValue: number; + stats: Stat[]; +}; + +export function SummaryStatsBox({ title, mainValue, stats }: SummaryStatsBoxProps) { + return ( +
+
{title}
+
+ {asNumber(mainValue)} +
+
+ {stats.map((stat) => ( +
+
{stat.label}
+
+ {asNumber(stat.value)} +
+
+ ))} +
+
+ ); +} diff --git a/src/components/resolution-reports/TrendChart.tsx b/src/components/resolution-reports/TrendChart.tsx new file mode 100644 index 0000000..cb585ad --- /dev/null +++ b/src/components/resolution-reports/TrendChart.tsx @@ -0,0 +1,241 @@ +"use client"; + +import { + Area, + AreaChart, + Line, + LineChart, + XAxis, + YAxis, +} from "recharts"; +import { Button } from "@/components/ui/button"; +import { + ChartContainer, + ChartTooltip, + ChartTooltipContent, +} from "@/components/ui/chart"; +import { Toolbar, ToolbarGroup } from "@/components/ui/toolbar"; +import { Spinner } from "@/components/ui/spinner"; +import { asNumber } from "@/util"; +import { formatPeriodLabel } from "@/components/resolution-reports/utils"; +import { RESOLUTION_REPORTS } from "@/constants"; +import type { ResolutionTrendPoint, ChartMode } from "@/types"; + +const CHART_TOOLTIP_ORDER: Record = { + successfulResolutions: 0, + failedResolutions: 1, + uniqueDoiSuccesses: 0, + uniqueDoiFailures: 1, +}; + +type TooltipContentProps = React.ComponentProps; +type TooltipPayload = NonNullable; + +type TrendChartProps = { + data: ResolutionTrendPoint[]; + mode: ChartMode; + onModeChange: (mode: ChartMode) => void; + onSelectReport?: (reportId: string) => void; + isLoading?: boolean; + isError?: boolean; +}; + +export function TrendChart({ + data, + mode, + onModeChange, + onSelectReport, + isLoading, + isError, +}: TrendChartProps) { + function sortTooltipPayload( + payload: TooltipContentProps["payload"], + displayOrder?: Record, + ) { + if (!displayOrder || !payload) { + return payload; + } + + return [...payload].sort((left, right) => { + const leftPriority = displayOrder[String(left.dataKey)] ?? Number.MAX_SAFE_INTEGER; + const rightPriority = displayOrder[String(right.dataKey)] ?? Number.MAX_SAFE_INTEGER; + return leftPriority - rightPriority; + }) as TooltipPayload; + } + + function handleChartClick(state: { activePayload?: Array<{ payload?: ResolutionTrendPoint }> }) { + const reportId = state.activePayload?.[0]?.payload?.id; + if (!reportId) return; + onSelectReport?.(reportId); + } + + function renderTooltipContent( + props: Pick, + displayOrder?: Record, + hideIndicator?: boolean, + ) { + const sortedPayload = sortTooltipPayload(props.payload, displayOrder); + + return ( + formatPeriodLabel(String(label))} + labelClassName="text-base" + /> + ); + } + + if (isLoading) { + return ( +
+ +
+ ); + } + + if (isError) { + return ( +
+ Unable to load resolution reports. +
+ ); + } + + if (data.length === 0) { + return ( +
+ No resolution report data is available for this prefix. +
+ ); + } + + return ( +
+ + + {RESOLUTION_REPORTS.CHART_MODES.map((option) => { + const isActive = mode === option.value; + return ( + + ); + })} + + + + + {mode === "total-resolutions" ? ( + + + + + + + + + + + + + asNumber(Number(value))} + /> + renderTooltipContent(props, CHART_TOOLTIP_ORDER)} + /> + + + + ) : ( + + + asNumber(Number(value))} + /> + renderTooltipContent(props, CHART_TOOLTIP_ORDER)} + /> + + + + )} + +
+ ); +} diff --git a/src/components/resolution-reports/utils.ts b/src/components/resolution-reports/utils.ts new file mode 100644 index 0000000..ee3b66d --- /dev/null +++ b/src/components/resolution-reports/utils.ts @@ -0,0 +1,34 @@ +import type { ResolutionReportSummary, ResolutionTrendPoint } from "@/types"; + +export function formatPeriodLabel(period: string): string { + const [year, month] = period.split("-"); + const parsedYear = Number(year); + const parsedMonth = Number(month); + + if (!Number.isFinite(parsedYear) || !Number.isFinite(parsedMonth)) { + return period; + } + + return new Intl.DateTimeFormat("en-US", { + month: "long", + year: "numeric", + timeZone: "UTC", + }).format(new Date(Date.UTC(parsedYear, parsedMonth - 1, 1))); +} + +export function buildTrendData(reports: ResolutionReportSummary[]): ResolutionTrendPoint[] { + return [...reports] + .sort((left, right) => left.attributes.period.localeCompare(right.attributes.period)) + .map((report) => ({ + id: report.id, + period: report.attributes.period, + totalAttemptedResolutions: + report.attributes.summaryMetrics.totalAttemptedResolutions, + successfulResolutions: + report.attributes.summaryMetrics.successfulResolutions, + failedResolutions: report.attributes.summaryMetrics.failedResolutions, + totalUniqueDois: report.attributes.summaryMetrics.totalUniqueDois, + uniqueDoiSuccesses: report.attributes.summaryMetrics.uniqueDoiSuccesses, + uniqueDoiFailures: report.attributes.summaryMetrics.uniqueDoiFailures, + })); +} diff --git a/src/components/ui/chart.tsx b/src/components/ui/chart.tsx index e5f09ad..16f918c 100644 --- a/src/components/ui/chart.tsx +++ b/src/components/ui/chart.tsx @@ -108,23 +108,16 @@ function ChartTooltipContent({ active, payload, className, - indicator = "dot", hideLabel = false, hideIndicator = false, label, labelFormatter, labelClassName, formatter, - color, - nameKey, - labelKey, }: React.ComponentProps & React.ComponentProps<"div"> & { hideLabel?: boolean; hideIndicator?: boolean; - indicator?: "line" | "dot" | "dashed"; - nameKey?: string; - labelKey?: string; }) { const { config } = useChart(); @@ -134,12 +127,11 @@ function ChartTooltipContent({ } const [item] = payload; - const key = `${labelKey || item?.dataKey || item?.name || "value"}`; + const key = `${item?.dataKey || item?.name || "value"}`; const itemConfig = getPayloadConfigFromPayload(config, item, key); - const value = - !labelKey && typeof label === "string" - ? config[label as keyof typeof config]?.label || label - : itemConfig?.label; + const value = typeof label === "string" + ? config[label as keyof typeof config]?.label || label + : itemConfig?.label; if (labelFormatter) { return ( @@ -161,81 +153,57 @@ function ChartTooltipContent({ hideLabel, labelClassName, config, - labelKey, ]); if (!active || !payload?.length) { return null; } - const nestLabel = payload.length === 1 && indicator !== "dot"; - return (
- {!nestLabel ? tooltipLabel : null} -
+ {tooltipLabel} +
{payload .filter((item) => item.type !== "none") .map((item, index) => { - const key = `${nameKey || item.name || item.dataKey || "value"}`; + const key = `${item.name || item.dataKey || "value"}`; const itemConfig = getPayloadConfigFromPayload(config, item, key); - const indicatorColor = color || item.payload.fill || item.color; + const indicatorColor = + itemConfig?.color || + itemConfig?.theme?.light || + item.payload.fill || + item.color; return (
svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5", - indicator === "dot" && "items-center", - )} + className="[&>svg]:text-muted-foreground flex w-full flex-wrap items-center gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5" > {formatter && item?.value !== undefined && item.name ? ( formatter(item.value, item.name, item, index, item.payload) ) : ( <> - {itemConfig?.icon ? ( - - ) : ( - !hideIndicator && ( -
- ) - )} + {!hideIndicator ? ( +
+ ) : null}
- {nestLabel ? tooltipLabel : null} - + {itemConfig?.label || item.name}
{item.value && ( - + {item.value.toLocaleString()} )} @@ -252,62 +220,6 @@ function ChartTooltipContent({ const ChartLegend = RechartsPrimitive.Legend; -function ChartLegendContent({ - className, - hideIcon = false, - payload, - verticalAlign = "bottom", - nameKey, -}: React.ComponentProps<"div"> & - Pick & { - hideIcon?: boolean; - nameKey?: string; - }) { - const { config } = useChart(); - - if (!payload?.length) { - return null; - } - - return ( -
- {payload - .filter((item) => item.type !== "none") - .map((item) => { - const key = `${nameKey || item.dataKey || "value"}`; - const itemConfig = getPayloadConfigFromPayload(config, item, key); - - return ( -
svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3", - )} - > - {itemConfig?.icon && !hideIcon ? ( - - ) : ( -
- )} - {itemConfig?.label} -
- ); - })} -
- ); -} - // Helper to extract item config from a payload. function getPayloadConfigFromPayload( config: ChartConfig, @@ -352,6 +264,4 @@ export { ChartTooltip, ChartTooltipContent, ChartLegend, - ChartLegendContent, - ChartStyle, }; diff --git a/src/constants.ts b/src/constants.ts index b2b5513..6b924eb 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -401,7 +401,53 @@ export const RESOURCE_TYPE_FIELDS = { present: [TYPES, TYPES_RESOURCE_TYPE, TYPES_RESOURCE_TYPE_GENERAL], distribution: [TYPES_RESOURCE_TYPE_GENERAL], } as const; - +// Resolution Reports +export const RESOLUTION_REPORTS = { + PREFIX_PARAM: "prefix", + REPORT_PARAM: "report", + PREFIX_OPTIONS: [ + { + prefix: "10.11570", + repositoryName: "Example University Library", + repositoryId: "UNI.ID", + }, + { + prefix: "10.82206", + repositoryName: "Data Repo", + repositoryId: "DATA.REPO", + }, + ], + CHART_MODES: [ + { value: "total-resolutions", label: "Total DOI Resolutions" }, + { value: "unique-dois", label: "Resolutions of Unique DOIs" }, + ], + CHART_CONFIG: { + totalAttemptedResolutions: { + label: "Total resolutions", + color: "#0F4C81", + }, + totalUniqueDois: { + label: "Total unique DOIs resolved", + color: "#0F4C81", + }, + successfulResolutions: { + label: "Successful resolutions", + color: "#00B1E2", + }, + uniqueDoiSuccesses: { + label: "Unique DOIs successfully resolved", + color: "#00B1E2", + }, + failedResolutions: { + label: "Failed resolutions", + color: "#7C8998", + }, + uniqueDoiFailures: { + label: "Unique DOIs failed to resolve", + color: "#7C8998", + }, + }, +} as const; export const SUBJECTS_FIELDS = { present: [SUBJECTS, SUBJECTS_SUBJECT_SCHEME, SUBJECTS_VALUE_URI], distribution: [SUBJECTS_SUBJECT_SCHEME], diff --git a/src/data/resolution-reports.ts b/src/data/resolution-reports.ts new file mode 100644 index 0000000..b2c67d6 --- /dev/null +++ b/src/data/resolution-reports.ts @@ -0,0 +1,49 @@ +import { useQuery as useTanstackQuery } from "@tanstack/react-query"; +import type { ResolutionReportCollectionDocument, ResolutionReport } from "@/types"; + +export async function fetchResolutionReportSummaries(prefix: string) { + const response = await fetch( + `/api/resolution-reports?${new URLSearchParams({ prefix }).toString()}`, + { + method: "GET", + }, + ); + + if (!response.ok) { + throw new Error("Failed to fetch resolution reports."); + } + + return response.json() as Promise; +} + +export async function fetchResolutionReportDetail(id: string) { + const response = await fetch( + `/api/resolution-reports/${id}`, + { + method: "GET", + }, + ); + + if (!response.ok) { + throw new Error("Failed to fetch resolution report detail."); + } + + return response.json() as Promise<{ data: ResolutionReport }>; +} + +export function useResolutionReportSummaries(prefix: string) { + return useTanstackQuery({ + queryKey: ["resolution-reports", prefix], + queryFn: () => fetchResolutionReportSummaries(prefix), + staleTime: 60 * 1000, // 1 minute + }); +} + +export function useResolutionReportDetail(id: string, options?: { enabled?: boolean }) { + return useTanstackQuery({ + queryKey: ["resolution-report-detail", id], + queryFn: () => fetchResolutionReportDetail(id), + enabled: options?.enabled ?? !!id, + staleTime: 5 * 60 * 1000, // 5 minutes + }); +} diff --git a/src/types.ts b/src/types.ts index 0148c80..68d852b 100644 --- a/src/types.ts +++ b/src/types.ts @@ -372,6 +372,98 @@ export type Filters = { registered: string | null; openSearchQuery: string | null; }; + +export type ResolutionReportSummaryMetrics = { + totalAttemptedResolutions: number; + successfulResolutions: number; + failedResolutions: number; + totalUniqueDois: number; + uniqueDoiSuccesses: number; + uniqueDoiFailures: number; +}; + +export type ResolutionReportTopSuccessfulDoi = { + doi: string; + resolutionCount: number; +}; + +export type ResolutionReportFailedDoi = { + doi: string; + resolutionCount: number; + top5FailedReferrers: string[]; +}; + +export type ResolutionReportAttributes = { + prefix: string; + period: string; + summaryMetrics: ResolutionReportSummaryMetrics; + topSuccessfulDois: ResolutionReportTopSuccessfulDoi[]; + failedDois: ResolutionReportFailedDoi[]; +} & Record; + +export type ResolutionReportSummaryAttributes = Pick< + ResolutionReportAttributes, + "prefix" | "period" | "summaryMetrics" +>; + +export type ResolutionReport = { + id: string; + type: "resolution-reports"; + attributes: ResolutionReportAttributes; +}; + +export type ResolutionReportSummary = { + id: string; + type: "resolution-reports"; + attributes: ResolutionReportSummaryAttributes; +}; + +export type ResolutionReportCollectionDocument = { + data: ResolutionReportSummary[]; + meta: { + total: number; + filteredTotal: number; + prefix?: string; + }; +}; + +export type ResolutionReportDocument = { + data: ResolutionReport; +}; + +// Resolution Reports Component Types +export type PrefixOption = { + prefix: string; + repositoryName: string; + repositoryId: string; +}; + +export type ReportOption = { + id: string; + period: string; +}; + +export type ResolutionTrendPoint = { + id: string; + period: string; + totalAttemptedResolutions: number; + successfulResolutions: number; + failedResolutions: number; + totalUniqueDois: number; + uniqueDoiSuccesses: number; + uniqueDoiFailures: number; +}; + +export type ChartMode = "total-resolutions" | "unique-dois"; + +export type JsonApiErrorDocument = { + errors: Array<{ + status: string; + title: string; + detail?: string; + }>; +}; + export type Format = ( present: PresentProps[], distribution: DistributionProps[],