export type GetApiRecordsSearchArgs = {q: string, page?: number | undefined, limit?: number | undefined, searchAfter?: number | undefined, sourceIncludes?: string | undefined, title?: string | undefined, title_is?: string | undefined, naId?: string | undefined, naId_is?: number | undefined, digitalObjectCount?: boolean | undefined, availableOnline?: boolean | undefined, levelOfDescription?: ('recordGroup' | 'collection' | 'series' | 'fileUnit' | 'item') | undefined, personOrOrg?: string | undefined, dataSource?: ('description' | 'authority') | undefined, typeOfMaterials?: ('Photographs and other Graphic Materials' | 'Moving Images' | 'Textual Records' | 'Architectural and Engineering Drawings' | 'Data Files' | 'Maps and Charts' | 'Sound Recordings' | 'Artifacts') | undefined, controlNumbers?: string | undefined, localIdentifier?: string | undefined, localIdentifier_is?: string | undefined, microformPublicationsIdentifier?: string | undefined, microformPublicationsIdentifier_is?: string | undefined, variantControlNumber_is?: string | undefined, variantControlType?: string | undefined, variantControlType_is?: string | undefined, controlGroup?: string | undefined, collectionIdentifier?: string | undefined, recordGroupNumber?: string | undefined, creators?: string | undefined, objectType?: string | undefined, referenceUnits?: string | undefined, geographicReference?: string | undefined, ancestorNaId?: number | undefined, debug?: boolean | undefined, abbreviated?: boolean | undefined, startDate?: string | undefined, endDate?: string | undefined, fieldName_exists?: boolean | undefined, contributions_exist?: boolean | undefined, tags_exist?: boolean | undefined, transcriptions_exist?: boolean | undefined, comments_exist?: boolean | undefined, exactDate?: string | undefined, fieldName_is_not?: string | undefined, recurringDateDay?: string | undefined, recurringDateMonth?: string | undefined, beginCongress?: number | undefined, endCongress?: number | undefined, congressNumber?: number | undefined, tagContribution?: string | undefined, commentContribution?: string | undefined, transcriptionContribution?: string | undefined, extractedTextContribution?: string | undefined, includeExtractedText?: boolean | undefined, includeOtherExtractedText?: boolean | undefined, ingestTimeStart?: string | undefined, ingestTimeEnd?: string | undefined, objectCreatedDateStart?: string | undefined, objectCreatedDateEnd?: string | undefined, ocrCompletedDateStart?: string | undefined, ocrCompletedDateEnd?: string | undefined}; export type GetApiRecordsSearchOptions = {baseUrl?: string | undefined, fetch?: typeof fetch | undefined}; /** * Get records by using url parameters to perform a catalog search. * * GET /records/search */ export const getApiRecordsSearch = async (args: GetApiRecordsSearchArgs, options?: GetApiRecordsSearchOptions) => { const {baseUrl = "https://catalog.archives.gov/api/v2", fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() if (args.q != null) query.append("q", String(args.q)) if (args.page != null) query.append("page", String(args.page)) if (args.limit != null) query.append("limit", String(args.limit)) if (args.searchAfter != null) query.append("searchAfter", String(args.searchAfter)) if (args.sourceIncludes != null) query.append("sourceIncludes", String(args.sourceIncludes)) if (args.title != null) query.append("title", String(args.title)) if (args.title_is != null) query.append("title_is", String(args.title_is)) if (args.naId != null) query.append("naId", String(args.naId)) if (args.naId_is != null) query.append("naId_is", String(args.naId_is)) if (args.digitalObjectCount != null) query.append("digitalObjectCount", String(args.digitalObjectCount)) if (args.availableOnline != null) query.append("availableOnline", String(args.availableOnline)) if (args.levelOfDescription != null) query.append("levelOfDescription", String(args.levelOfDescription)) if (args.personOrOrg != null) query.append("personOrOrg", String(args.personOrOrg)) if (args.dataSource != null) query.append("dataSource", String(args.dataSource)) if (args.typeOfMaterials != null) query.append("typeOfMaterials", String(args.typeOfMaterials)) if (args.controlNumbers != null) query.append("controlNumbers", String(args.controlNumbers)) if (args.localIdentifier != null) query.append("localIdentifier", String(args.localIdentifier)) if (args.localIdentifier_is != null) query.append("localIdentifier_is", String(args.localIdentifier_is)) if (args.microformPublicationsIdentifier != null) query.append("microformPublicationsIdentifier", String(args.microformPublicationsIdentifier)) if (args.microformPublicationsIdentifier_is != null) query.append("microformPublicationsIdentifier_is", String(args.microformPublicationsIdentifier_is)) if (args.variantControlNumber_is != null) query.append("variantControlNumber_is", String(args.variantControlNumber_is)) if (args.variantControlType != null) query.append("variantControlType", String(args.variantControlType)) if (args.variantControlType_is != null) query.append("variantControlType_is", String(args.variantControlType_is)) if (args.controlGroup != null) query.append("controlGroup", String(args.controlGroup)) if (args.collectionIdentifier != null) query.append("collectionIdentifier", String(args.collectionIdentifier)) if (args.recordGroupNumber != null) query.append("recordGroupNumber", String(args.recordGroupNumber)) if (args.creators != null) query.append("creators", String(args.creators)) if (args.objectType != null) query.append("objectType", String(args.objectType)) if (args.referenceUnits != null) query.append("referenceUnits", String(args.referenceUnits)) if (args.geographicReference != null) query.append("geographicReference", String(args.geographicReference)) if (args.ancestorNaId != null) query.append("ancestorNaId", String(args.ancestorNaId)) if (args.debug != null) query.append("debug", String(args.debug)) if (args.abbreviated != null) query.append("abbreviated", String(args.abbreviated)) if (args.startDate != null) query.append("startDate", String(args.startDate)) if (args.endDate != null) query.append("endDate", String(args.endDate)) if (args.fieldName_exists != null) query.append("fieldName_exists", String(args.fieldName_exists)) if (args.contributions_exist != null) query.append("contributions_exist", String(args.contributions_exist)) if (args.tags_exist != null) query.append("tags_exist", String(args.tags_exist)) if (args.transcriptions_exist != null) query.append("transcriptions_exist", String(args.transcriptions_exist)) if (args.comments_exist != null) query.append("comments_exist", String(args.comments_exist)) if (args.exactDate != null) query.append("exactDate", String(args.exactDate)) if (args.fieldName_is_not != null) query.append("fieldName_is_not", String(args.fieldName_is_not)) if (args.recurringDateDay != null) query.append("recurringDateDay", String(args.recurringDateDay)) if (args.recurringDateMonth != null) query.append("recurringDateMonth", String(args.recurringDateMonth)) if (args.beginCongress != null) query.append("beginCongress", String(args.beginCongress)) if (args.endCongress != null) query.append("endCongress", String(args.endCongress)) if (args.congressNumber != null) query.append("congressNumber", String(args.congressNumber)) if (args.tagContribution != null) query.append("tagContribution", String(args.tagContribution)) if (args.commentContribution != null) query.append("commentContribution", String(args.commentContribution)) if (args.transcriptionContribution != null) query.append("transcriptionContribution", String(args.transcriptionContribution)) if (args.extractedTextContribution != null) query.append("extractedTextContribution", String(args.extractedTextContribution)) if (args.includeExtractedText != null) query.append("includeExtractedText", String(args.includeExtractedText)) if (args.includeOtherExtractedText != null) query.append("includeOtherExtractedText", String(args.includeOtherExtractedText)) if (args.ingestTimeStart != null) query.append("ingestTimeStart", String(args.ingestTimeStart)) if (args.ingestTimeEnd != null) query.append("ingestTimeEnd", String(args.ingestTimeEnd)) if (args.objectCreatedDateStart != null) query.append("objectCreatedDateStart", String(args.objectCreatedDateStart)) if (args.objectCreatedDateEnd != null) query.append("objectCreatedDateEnd", String(args.objectCreatedDateEnd)) if (args.ocrCompletedDateStart != null) query.append("ocrCompletedDateStart", String(args.ocrCompletedDateStart)) if (args.ocrCompletedDateEnd != null) query.append("ocrCompletedDateEnd", String(args.ocrCompletedDateEnd)) const url = `${baseUrl.replace(/\/+$/, '')}/records/search${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return undefined };