From 3dd10b978b1d141f12374c4e8e31b71b1205e46b Mon Sep 17 00:00:00 2001 From: Laura Herring Date: Fri, 9 Feb 2024 13:57:55 -0500 Subject: [PATCH 01/13] feb 9 updates from the FAC --- src/info/updates/archive.md | 48 ++++++++++++++++++++++++++ src/info/updates/index.md | 68 +++++++++++++++++++++++++++++-------- 2 files changed, 101 insertions(+), 15 deletions(-) diff --git a/src/info/updates/archive.md b/src/info/updates/archive.md index d917cb91..d188c484 100644 --- a/src/info/updates/archive.md +++ b/src/info/updates/archive.md @@ -10,6 +10,54 @@ meta: The FAC is committed to working transparently and openly. In addition to [our regular updates](https://www.fac.gov/info/updates/), you can find historical updates below. +
+

+ +

+
+ +This week we've made improvements to user access roles, search results, and Tribal data access. + +### What we delivered + +We work in [an agile manner](https://asana.com/resources/agile-methodology). That means we have a long-term strategy, medium-term features we work to deliver, and make continuous improvement and bug fixes to the existing product. + +#### Audit access management + +We improved [the user access experience]({{ config.baseUrl }}resources/instructions/user-access) for single audits. Users can now change both the auditor and auditee certifying official for a submission and add new audit editors. + +Future improvements will allow for the removal of other contributors to a submission. + +#### Search improvements + +We added the ability to filter search results by auditee state. We also enhanced the results returned by the ALN filter, making it possible to see if a submission includes audit findings. + +#### Tribal data access controls + +We have implemented [access controls for Tribal audit data]({{ config.baseUrl }}data/tribal), and notified NSACs and KMSALs. This data will now appear in searches for logged in Federal users who have access. + +#### Summary reports + +We added the ability to download a summary report for an individual single audit submission. This combines all data from a single SF-SAC into one Excel document. + +#### Pre-certification review + +Auditors and auditees can now review a submission after it is validated and locked, but before it is certified. + +### What's next? + +#### Historic data migration + +We continue to work with Census on the migration of historic data. +
+

From 6e85f6a8984a3279193329e6816fc7e54956a77a Mon Sep 17 00:00:00 2001 From: Laura Herring Date: Fri, 9 Feb 2024 14:02:52 -0500 Subject: [PATCH 02/13] fixing broken url --- src/info/updates/index.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/info/updates/index.md b/src/info/updates/index.md index a9c47998..5dd9c2ed 100644 --- a/src/info/updates/index.md +++ b/src/info/updates/index.md @@ -41,7 +41,7 @@ The team currently replies to a ticket within 1.5 hours of receipt, and closes 7 #### UX/Design -We completed user testing on navigation changes for [FAC.gov]({{ config.baseUrl }}index). This validated a new site structure that will be easier for users to navigate. +We completed user testing on navigation changes for [FAC.gov]({{ config.baseUrl }}). This validated a new site structure that will be easier for users to navigate. The team finalized a research plan around audit resolution work. We began interviews with audit resolution officials, IG offices, and other users. @@ -49,7 +49,7 @@ The team finalized a research plan around audit resolution work. We began interv We made multiple improvements to the submission experience. We use research and interviews with our users, as well as issues reported in the helpdesk, to guide this work. -- Added an SF-SAC summary report, allowing users to review the form data for in-progress and completed audits ([PR 3025](https://github.com/GSA-TTS/FAC/pull/3025)). +- Added an SF-SAC summary report, allowing users to review the form data for in-progress and completed audits (PR [3025](https://github.com/GSA-TTS/FAC/pull/3025)). - Significantly sped up PDF validation (PR [3057](https://github.com/GSA-TTS/FAC/pull/3057)). @@ -78,6 +78,7 @@ We made multiple improvements to the submission experience. We use research and We also made multiple improvements to the audit search experience. - A small update to SF-SAC summary exports (PR [3296](https://github.com/GSA-TTS/FAC/pull/3296)) that adds ALNs to the Federal Awards sheet. + - Fixed a performance bug within the FAC API (PR [3355](https://github.com/GSA-TTS/FAC/pull/3355)). ### What's next? From e7ba7ceba0bc498bc76e4e16bb3a684596d4734a Mon Sep 17 00:00:00 2001 From: Laura Herring Date: Fri, 9 Feb 2024 14:05:21 -0500 Subject: [PATCH 03/13] removed old census bullet --- src/_collections/updates/2023-09-08-01-historical-search.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_collections/updates/2023-09-08-01-historical-search.md b/src/_collections/updates/2023-09-08-01-historical-search.md index 57f48f21..e972dbe6 100644 --- a/src/_collections/updates/2023-09-08-01-historical-search.md +++ b/src/_collections/updates/2023-09-08-01-historical-search.md @@ -1,5 +1,5 @@ --- -tags: general +tags: date: "2023-09-08" --- Search and download of audit data from 2016-2022 will remain on [the Census' site](https://facdissem.census.gov/Main.aspx) through December, 31, 2023. This data will migrate to the new FAC by the end of the year. From 1fc39d400333d0967658a41ecc1a8b388b9d2d2f Mon Sep 17 00:00:00 2001 From: Laura Herring Date: Fri, 9 Feb 2024 14:27:08 -0500 Subject: [PATCH 04/13] closing archive accordion --- src/info/updates/archive.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/info/updates/archive.md b/src/info/updates/archive.md index d188c484..c0a25394 100644 --- a/src/info/updates/archive.md +++ b/src/info/updates/archive.md @@ -63,7 +63,7 @@ We continue to work with Census on the migration of historic data. @@ -134,7 +134,7 @@ The historical data migration occupies a lot of our team’s time. However, we a type="button" class="usa-accordion__button" aria-expanded="false" - aria-controls="b-a2" + aria-controls="b-a3" > Week of October 20, 2023 @@ -301,7 +301,7 @@ Do you have an idea that could transform and improve grants management and overs type="button" class="usa-accordion__button" aria-expanded="false" - aria-controls="b-a3" + aria-controls="b-a4" > Week of October 23, 2023 @@ -451,7 +451,7 @@ Do you have an idea that could transform and improve grants management and overs type="button" class="usa-accordion__button" aria-expanded="false" - aria-controls="b-a4" + aria-controls="b-a5" > Week of October 16, 2023 @@ -483,7 +483,7 @@ Our pending feature priorities are: type="button" class="usa-accordion__button" aria-expanded="false" - aria-controls="b-a5" + aria-controls="b-a6" > Week of October 9, 2023 @@ -519,7 +519,7 @@ Our other feature priorities are: type="button" class="usa-accordion__button" aria-expanded="false" - aria-controls="b-a6" + aria-controls="b-a7" > Week of September 25, 2023 From ce08a301f7b522a1a1caa9bdfd214d2505e539f0 Mon Sep 17 00:00:00 2001 From: Laura Herring Date: Fri, 9 Feb 2024 14:34:27 -0500 Subject: [PATCH 06/13] accordion fixes --- src/info/updates/archive.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/info/updates/archive.md b/src/info/updates/archive.md index 53df3597..094e54df 100644 --- a/src/info/updates/archive.md +++ b/src/info/updates/archive.md @@ -69,7 +69,7 @@ We continue to work with Census on the migration of historic data. Week of November 20, 2023 -
+
*This update is a bit richer given the cancellation of the November office hour for Federal partners.* @@ -139,7 +139,7 @@ The historical data migration occupies a lot of our team’s time. However, we a Week of October 20, 2023 -
+
We launched search and are ready for users to begin searching single audit reports. This initial iteration of search leverages six different filters for sorting data. @@ -306,7 +306,7 @@ Do you have an idea that could transform and improve grants management and overs Week of October 23, 2023 -
+
The FAC participated in the Single Audit Roundtable, providing an update on our work to date and planned next steps, and used the opportunity to discuss pressing needs for auditors, resolution officials, and IGs. @@ -456,7 +456,7 @@ Do you have an idea that could transform and improve grants management and overs Week of October 16, 2023 -
+
We released the GSA FAC as a minimal viable product. That means we are continuing to work and improve the FAC. We work in [an agile manner](https://asana.com/resources/agile-methodology). @@ -488,7 +488,7 @@ Our pending feature priorities are: Week of October 9, 2023 -
+
We released the GSA FAC as a minimal viable product. That means we are continuing to work and improve the FAC. We work in [an agile manner](https://asana.com/resources/agile-methodology). @@ -524,7 +524,7 @@ Our other feature priorities are: Week of September 25, 2023 -
+
We're excited to see completed audits coming in and data exporting via the FAC API. That said, we know there have been some issues. We're doing our best to provide help center support for those as fast as possible. From 3fe6415509638e868acf2648043b3c62017eabea Mon Sep 17 00:00:00 2001 From: Matthew Jadud Date: Mon, 12 Feb 2024 13:51:07 -0500 Subject: [PATCH 07/13] Improvements to data dictionary and questions answered for users (#80) * Dictionaries initial pass * Linking in from the index * Changing to GSA. * Updating names, adding 'formerly' * Adding the first tutorial * Fixing a URL. * Fixing a paste error * Fixes * Fixed spacing. * Updates to the rollups * Moving the dictionaries. * Removing old stuff. * Updating rollup tutorials. * Updates based on questions These updates answer questions from the Federal API dev list. More conversation is needed. Despite some of this being living content, we need to document more of what is going on for our partners. * Forgot to add all of these? * I don't know how to construct URLs. I have no idea what is going on with URLs on this site. * Updates based on convo w/ LH * Updating dictionary, new example Addressing more questions in API list/mail. * edits --------- Co-authored-by: Daniel Swick <2365503+danswick@users.noreply.github.com> --- generate_api_docs.sh | 23 - src/_data/dictionary_csv/additional_eins.csv | 4 + src/_data/dictionary_csv/additional_ueis.csv | 4 + src/_data/dictionary_csv/convert_to_json.bash | 7 + .../corrective_action_plans.csv | 6 + src/_data/dictionary_csv/federal_awards.csv | 23 + src/_data/dictionary_csv/findings.csv | 14 + src/_data/dictionary_csv/findings_text.csv | 6 + src/_data/dictionary_csv/general.csv | 58 + src/_data/dictionary_csv/notes_to_sefa.csv | 9 + src/_data/dictionary_csv/passthrough.csv | 6 + .../dictionary_csv/secondary_auditors.csv | 13 + .../dictionary_json/additional_eins.json | 1 + .../dictionary_json/additional_ueis.json | 1 + src/_data/dictionary_json/audit_findings.json | 1 + .../dictionary_json/audit_findings_text.json | 1 + src/_data/dictionary_json/captext.json | 1 + .../corrective_action_plans.json | 1 + src/_data/dictionary_json/federal_awards.json | 1 + src/_data/dictionary_json/findings.json | 1 + src/_data/dictionary_json/findings_text.json | 1 + src/_data/dictionary_json/general.json | 1 + src/_data/dictionary_json/notes_to_sefa.json | 1 + src/_data/dictionary_json/passthrough.json | 1 + .../dictionary_json/secondary_auditors.json | 1 + .../api/v1_0_0/api-documentation-body.html | 3041 ---------- .../api/v1_0_0/api-documentation-nav.html | 50 - .../v1_0_0_beta/api-documentation-body.html | 4260 ------------- .../v1_0_0_beta/api-documentation-nav.html | 40 - src/developers/dictionary.md | 72 + src/developers/differences.md | 242 + src/developers/index.md | 14 +- src/developers/retrieve-many.md | 118 + src/developers/rollups.md | 352 ++ src/developers/v1_0_0/index.md | 8 - tools/openapi2uswds/.gitignore | 9 - tools/openapi2uswds/Dockerfile | 18 - tools/openapi2uswds/README.md | 63 - tools/openapi2uswds/as-sexp.rkt | 5259 ----------------- tools/openapi2uswds/base.rkt | 39 - tools/openapi2uswds/main.rkt | 254 - tools/openapi2uswds/template.html | 19 - tools/openapi2uswds/template.rkt | 125 - 43 files changed, 957 insertions(+), 13212 deletions(-) delete mode 100755 generate_api_docs.sh create mode 100644 src/_data/dictionary_csv/additional_eins.csv create mode 100644 src/_data/dictionary_csv/additional_ueis.csv create mode 100755 src/_data/dictionary_csv/convert_to_json.bash create mode 100644 src/_data/dictionary_csv/corrective_action_plans.csv create mode 100644 src/_data/dictionary_csv/federal_awards.csv create mode 100644 src/_data/dictionary_csv/findings.csv create mode 100644 src/_data/dictionary_csv/findings_text.csv create mode 100644 src/_data/dictionary_csv/general.csv create mode 100644 src/_data/dictionary_csv/notes_to_sefa.csv create mode 100644 src/_data/dictionary_csv/passthrough.csv create mode 100644 src/_data/dictionary_csv/secondary_auditors.csv create mode 100644 src/_data/dictionary_json/additional_eins.json create mode 100644 src/_data/dictionary_json/additional_ueis.json create mode 100644 src/_data/dictionary_json/audit_findings.json create mode 100644 src/_data/dictionary_json/audit_findings_text.json create mode 100644 src/_data/dictionary_json/captext.json create mode 100644 src/_data/dictionary_json/corrective_action_plans.json create mode 100644 src/_data/dictionary_json/federal_awards.json create mode 100644 src/_data/dictionary_json/findings.json create mode 100644 src/_data/dictionary_json/findings_text.json create mode 100644 src/_data/dictionary_json/general.json create mode 100644 src/_data/dictionary_json/notes_to_sefa.json create mode 100644 src/_data/dictionary_json/passthrough.json create mode 100644 src/_data/dictionary_json/secondary_auditors.json delete mode 100644 src/_includes/api/v1_0_0/api-documentation-body.html delete mode 100644 src/_includes/api/v1_0_0/api-documentation-nav.html delete mode 100644 src/_includes/api/v1_0_0_beta/api-documentation-body.html delete mode 100644 src/_includes/api/v1_0_0_beta/api-documentation-nav.html create mode 100644 src/developers/dictionary.md create mode 100644 src/developers/differences.md create mode 100644 src/developers/retrieve-many.md create mode 100644 src/developers/rollups.md delete mode 100644 src/developers/v1_0_0/index.md delete mode 100644 tools/openapi2uswds/.gitignore delete mode 100644 tools/openapi2uswds/Dockerfile delete mode 100644 tools/openapi2uswds/README.md delete mode 100644 tools/openapi2uswds/as-sexp.rkt delete mode 100644 tools/openapi2uswds/base.rkt delete mode 100644 tools/openapi2uswds/main.rkt delete mode 100644 tools/openapi2uswds/template.html delete mode 100644 tools/openapi2uswds/template.rkt diff --git a/generate_api_docs.sh b/generate_api_docs.sh deleted file mode 100755 index 56550aa9..00000000 --- a/generate_api_docs.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -URL="${URL:-https://api-staging.fac.gov}" - -echo Generating docs from ${URL} - -for version in v1_0_0 -do - echo "Generating docs for $version" - - docker run \ - -v ${PWD}:/input \ - -v ${PWD}/src/_includes/api/${version}:/output \ - fac/o2u \ - --template tools/openapi2uswds/template.html \ - --api-key $API_GOV_KEY \ - --jwt-token $JWT \ - --url $URL - - # Remove the file that has everything in it. We only want - # the pieces-parts. - rm -f src/_includes/api/${version}/api-documentation.html -done diff --git a/src/_data/dictionary_csv/additional_eins.csv b/src/_data/dictionary_csv/additional_eins.csv new file mode 100644 index 00000000..5715fd9c --- /dev/null +++ b/src/_data/dictionary_csv/additional_eins.csv @@ -0,0 +1,4 @@ +Census,GSAFAC,Type,Column Reference, +AUDITYEAR + DBKEY,General.report_id,TEXT,"gen.report_id,", +AUDITYEAR,General.audit_year,TEXT,,"gen.audit_year" +EIN,additional_ein,TEXT,,ein.additional_ein diff --git a/src/_data/dictionary_csv/additional_ueis.csv b/src/_data/dictionary_csv/additional_ueis.csv new file mode 100644 index 00000000..e76c5a08 --- /dev/null +++ b/src/_data/dictionary_csv/additional_ueis.csv @@ -0,0 +1,4 @@ +Census,GSAFAC,Type,Column Reference +AUDITYEAR + DBKEY,General.report_id,TEXT,"gen.report_id," +AUDITYEAR,General.audit_year,TEXT,gen.audit_year +UEI,additional_uei,TEXT,uei.additional_uei diff --git a/src/_data/dictionary_csv/convert_to_json.bash b/src/_data/dictionary_csv/convert_to_json.bash new file mode 100755 index 00000000..766ff0a0 --- /dev/null +++ b/src/_data/dictionary_csv/convert_to_json.bash @@ -0,0 +1,7 @@ +for csvf in `ls *.csv`; do + echo Converting $csvf + base="${csvf%.csv}" + cat $csvf | \ + python -c 'import csv, json, sys; print(json.dumps([dict(r) for r in csv.DictReader(sys.stdin)]))' \ + > ../dictionary_json/$base.json +done \ No newline at end of file diff --git a/src/_data/dictionary_csv/corrective_action_plans.csv b/src/_data/dictionary_csv/corrective_action_plans.csv new file mode 100644 index 00000000..b248c575 --- /dev/null +++ b/src/_data/dictionary_csv/corrective_action_plans.csv @@ -0,0 +1,6 @@ +Census,GSAFAC,Type,Column Reference +AUDITYEAR + DBKEY,General.report_id,TEXT,"gen.report_id," +AUDITYEAR,General.audit_year,TEXT,gen.audit_year +FINDINGREFNUMS,finding_ref_number,TEXT,ct.finding_ref_number +TEXT,planned_action,TEXT,ct.planned_action +CHARTSTABLES,contains_chart_or_table,TEXT,ct.contains_chart_or_table \ No newline at end of file diff --git a/src/_data/dictionary_csv/federal_awards.csv b/src/_data/dictionary_csv/federal_awards.csv new file mode 100644 index 00000000..a22d727f --- /dev/null +++ b/src/_data/dictionary_csv/federal_awards.csv @@ -0,0 +1,23 @@ +Census,GSAFAC,Type,Column Reference +AUDITYEAR + DBKEY,General.report_id,TEXT,"gen.report_id," +AUDITYEAR,General.audit_year,TEXT,"gen.audit_year," +EIN,General.auditee_ein,TEXT, +CFDA,federal_agency_prefix + federal_award_extension,TEXT,"award.award_reference," +AWARDIDENTIFICATION,additional_award_identification,TEXT,"award.federal_agency_prefix," +FEDERALPROGRAMNAME,federal_program_name,TEXT,"award.federal_award_extension," +AMOUNT,amount_expended,BIGINT,"award.additional_award_identification," +CLUSTERNAME,cluster_name,TEXT,"award.federal_program_name," +STATECLUSTERNAME,state_cluster_name,TEXT,"award.amount_expended," +PROGRAMTOTAL,federal_program_total,BIGINT,"award.cluster_name," +CLUSTERTOTAL,cluster_total,BIGINT,"award.other_cluster_name," +DIRECT,is_direct,BOOLEAN,"award.state_cluster_name," +PASSTHROUGHAWARD,is_passthrough_award,BOOLEAN,"award.cluster_total," +PASSTHROUGHAMOUNT,passthrough_amount,BIGINT,"award.federal_program_total," +MAJORPROGRAM,is_major,BOOLEAN,"award.is_major," +TYPEREPORT_MP,audit_report_type,TEXT,"award.is_loan," +FINDINGREFNUMS,audit_findings.finding_ref_number,TEXT,"award.loan_balance," +LOANS,is_loan,BOOLEAN,"award.is_direct," +LOANBALANCE,loan_balance,TEXT,"award.audit_report_type," +FINDINGSCOUNT,findings_count,INT,"award.findings_count," +ELECAUDITSID,award_reference,TEXT,"award.is_passthrough_award," +OTHERCLUSTERNAME,other_cluster_name,TEXT,award.passthrough_amount \ No newline at end of file diff --git a/src/_data/dictionary_csv/findings.csv b/src/_data/dictionary_csv/findings.csv new file mode 100644 index 00000000..593cc56a --- /dev/null +++ b/src/_data/dictionary_csv/findings.csv @@ -0,0 +1,14 @@ +Census,GSAFAC,Type,Column Reference +AUDITYEAR + DBKEY,General.report_id,TEXT,"gen.report_id," +AUDITYEAR,General.audit_year,TEXT,gen.audit_year +ELECAUDITSID,FederalAward.award_reference,TEXT,finding.award_reference +FINDINGSREFNUMS,reference_number,TEXT,finding.reference_number +TYPEREQUIREMENT,type_requirement,TEXT,finding.type_requirement +MODIFIEDOPINION,is_modified_opinion,BOOLEAN,finding.is_modified_opinion +OTHERNONCOMPLIANCE,is_other_matters,BOOLEAN,finding.is_other_matters +MATERIALWEAKNESS,is_material_weakness,BOOLEAN,finding.is_material_weakness +SIGNIFICANTDEFICIENCY,is_significant_deficiency,BOOLEAN,finding.is_significant_deficiency +OTHERFINDINGS,is_other_findings,BOOLEAN,finding.is_other_findings +QCOSTS,is_questioned_costs,BOOLEAN,finding.is_questioned_costs +REPEATFINDING,is_repeat_finding,BOOLEAN,finding.is_repeat_finding +PRIORFINDINGREFNUMS,prior_finding_ref_numbers,TEXT,finding.prior_finding_ref_numbers diff --git a/src/_data/dictionary_csv/findings_text.csv b/src/_data/dictionary_csv/findings_text.csv new file mode 100644 index 00000000..4142d075 --- /dev/null +++ b/src/_data/dictionary_csv/findings_text.csv @@ -0,0 +1,6 @@ +Census,GSAFAC,Type,Column Reference +AUDITYEAR + DBKEY,General.report_id,TEXT,"gen.report_id," +AUDITYEAR,General.audit_year,TEXT,gen.audit_year +FINDINGREFNUMS,finding_ref_number,TEXT,ft.finding_ref_number +TEXT,finding_text,TEXT,ft.finding_text +CHARTSTABLES,contains_chart_or_table,TEXT,ft.contains_chart_or_table diff --git a/src/_data/dictionary_csv/general.csv b/src/_data/dictionary_csv/general.csv new file mode 100644 index 00000000..42402028 --- /dev/null +++ b/src/_data/dictionary_csv/general.csv @@ -0,0 +1,58 @@ +Census,GSAFAC,Type,Column Reference +AUDITYEAR,audit_year,TEXT,gen.audit_year +TYPEOFENTITY,entity_type,TEXT,gen.entity_type +FYSTARTDATE,fy_start_date,DATE,gen.fy_start_date +FYENDDATE,fy_end_date,DATE,gen.fy_end_date +AUDITTYPE,audit_type,TEXT,gen.audit_type +PERIODCOVERED,audit_period_covered,TEXT,gen.audit_period_covered +NUMBERMONTHS,number_months,TEXT,gen.number_months +EIN,auditee_ein,TEXT,gen.auditee_ein +AUDITEENAME,auditee_name,TEXT,gen.auditee_name +STREET1,auditee_address_line_1,TEXT,gen.auditee_address_line_1 +CITY,auditee_city,TEXT,gen.auditee_city +STATE,auditee_state,TEXT,gen.auditee_state +ZIPCODE,auditee_zip,TEXT,gen.auditee_zip +AUDITEECONTACT,auditee_contact_name,TEXT,gen.auditee_contact_name +AUDITEETITLE,auditee_contact_title,TEXT,gen.auditee_contact_title +AUDITEEPHONE,auditee_phone,TEXT,gen.auditee_phone +AUDITEEEMAIL,auditee_email,TEXT,gen.auditee_email +AUDITEEDATESIGNED,auditee_certified_date,DATE,gen.auditee_certified_date +CPAFIRMNAME,auditor_firm_name,TEXT,gen.auditor_firm_name +CPASTREET1,auditor_address_line_1,TEXT,gen.auditor_address_line_1 +CPACITY,auditor_city,TEXT,gen.auditor_city +CPASTATE,auditor_state,TEXT,gen.auditor_state +CPAZIPCODE,auditor_zip,TEXT,gen.auditor_zip +CPACONTACT,auditor_contact_name,TEXT,gen.auditor_contact_name +CPATITLE,auditor_contact_title,TEXT,gen.auditor_contact_title +CPAPHONE,auditor_phone,TEXT,gen.auditor_phone +CPAEMAIL,auditor_email,TEXT,gen.auditor_email +CPADATESIGNED,auditor_certified_date,DATE,gen.auditor_certified_date +COGAGENCY,cognizant_agency,TEXT,gen.cognizant_agency +OVERSIGHTAGENCY,oversight_agency,TEXT,gen.oversight_agency +TYPEREPORT_FS,gaap_results,TEXT,gen.gaap_results +SP_FRAMEWORK,sp_framework_basis,TEXT,gen.sp_framework_basis +TYPEREPORT_SP_FRAMEWORK,sp_framework_opinions,TEXT,gen.sp_framework_opinions +GOINGCONCERN,is_going_concern_included,BOOLEAN,gen.is_going_concern_included +MATERIALWEAKNESS,is_internal_control_material_weakness_disclosed,BOOLEAN,gen.is_internal_control_material_weakness_disclosed +DUP_REPORTS,is_aicpa_audit_guide_included,BOOLEAN, +DOLLARTHRESHOLD,dollar_threshold,BIGINT,gen.dollar_threshold +LOWRISK,is_low_risk_auditee,BOOLEAN,gen.is_low_risk_auditee +TOTFEDEXPEND,total_amount_expended,BIGINT,gen.total_amount_expended +AUDITOR_EIN,auditor_ein,BIGINT,gen.auditor_ein +FACACCEPTEDDATE,fac_accepted_date,DATE,gen.fac_accepted_date +CPAFOREIGN,auditor_foreign_address,TEXT,gen.auditor_foreign_address +CPACOUNTRY,auditor_country,TEXT,gen.auditor_country +EUI,auditee_uei,TEXT,gen.auditee_uei +MULTIPLEUEIS,is_additional_ueis,BOOLEAN,gen.is_additional_ueis +AUDITEECERTIFYNAME,auditee_certify_name,TEXT,gen.auditee_certify_name +AUDITEECERTIFYTITLE,auditee_certify_title,TEXT,gen.auditee_certify_title +SP_FRAMEWORK_REQUIRED,is_sp_framework_required,BOOLEAN,gen.is_sp_framework_required +SIGNIFICANTDEFICIENCY,is_internal_control_deficiency_disclosed,BOOLEAN,gen.is_internal_control_deficiency_disclosed +MATERIALNONCOMPLIANCE,is_material_noncompliance_disclosed,BOOLEAN,gen.is_material_noncompliance_disclosed +Question 3.d - Audit Info,agencies_with_prior_findings,ARRAY,gen.agencies_with_prior_findings +INTIALDATE,date_created,DATE,gen.date_created +TYPE_AUDITCODE,type_audit_code,TEXT,gen.type_audit_code +SUPPRESSION_CODE,is_public,BOOLEAN,gen.is_public +____,ready_for_certification_date,DATE,Date auditor/auditee marked audit as ready for certification +____,data_source,TEXT,"GSAFAC" or "CENSUS" +____,is_secondary_auditors,TEXT,If secondary auditors data included \ No newline at end of file diff --git a/src/_data/dictionary_csv/notes_to_sefa.csv b/src/_data/dictionary_csv/notes_to_sefa.csv new file mode 100644 index 00000000..54accfb5 --- /dev/null +++ b/src/_data/dictionary_csv/notes_to_sefa.csv @@ -0,0 +1,9 @@ +Census,GSAFAC,Type,Column Reference +AUDITYEAR + DBKEY,General.report_id,TEXT,"gen.report_id," +AUDITYEAR,General.audit_year,TEXT,gen.report_year +TITLE,title,TEXT,note.note_title +CONTENT,content,TEXT,note.content +____,accounting_policies,TEXT,note.accounting_policies, +____,is_minimis_rate_used,TEXT,note.is_minimis_rate_used +____,rate_explained,TEXT,note.rate_explained, +____,contains_chart_or_table,TEXT,note.contains_chart_or_table \ No newline at end of file diff --git a/src/_data/dictionary_csv/passthrough.csv b/src/_data/dictionary_csv/passthrough.csv new file mode 100644 index 00000000..ed890d5e --- /dev/null +++ b/src/_data/dictionary_csv/passthrough.csv @@ -0,0 +1,6 @@ +Census,GSAFAC,Type,Column Reference +AUDITYEAR + DBKEY,General.report_id,TEXT,"gen.report_id," +AUDITYEAR,General.audit_year,TEXT,gen.audit_year +ELECAUDITSID,award_reference,TEXT,pass.award_reference +PASSTHROUGHNAME,passthrough_name,TEXT,pass.passthrough_name +PASSTHROUGHID,passthrough_id,TEXT,pass.passthrough_id diff --git a/src/_data/dictionary_csv/secondary_auditors.csv b/src/_data/dictionary_csv/secondary_auditors.csv new file mode 100644 index 00000000..1b2e56e9 --- /dev/null +++ b/src/_data/dictionary_csv/secondary_auditors.csv @@ -0,0 +1,13 @@ +Census,GSAFAC,Type,Column Reference +AUDITYEAR + DBKEY,General.report_id,TEXT,"gen.report_id," +AUDITYEAR,General.audit_year,TEXT,gen.audit_year +CPAFIRMNAME,auditor_name,TEXT,sa.auditor_name +CPAEIN,auditor_ein,TEXT,sa.auditor_ein +CPASTREET1,address_street,TEXT,sa.address_street +CPACITY,address_city,TEXT,sa.address_city +CPASTATE,address_state,TEXT,sa.address_state +CPAZIPCODE,address_zipcode,TEXT,sa.address_zipcode +CPACONTACT,contact_name,TEXT,sa.contact_name +CPATITLE,contact_title,TEXT,sa.contact_title +CPAPHONE,contact_phone,TEXT,sa.contact_phone +CPAEMAIL,contact_email,TEXT,sa.contact_email diff --git a/src/_data/dictionary_json/additional_eins.json b/src/_data/dictionary_json/additional_eins.json new file mode 100644 index 00000000..c14edc55 --- /dev/null +++ b/src/_data/dictionary_json/additional_eins.json @@ -0,0 +1 @@ +[{"Census": "AUDITYEAR + DBKEY", "GSAFAC": "General.report_id", "Type": "TEXT", "Column Reference": "gen.report_id,", "": ""}, {"Census": "AUDITYEAR", "GSAFAC": "General.audit_year", "Type": "TEXT", "Column Reference": "", "": "gen.audit_year"}, {"Census": "EIN", "GSAFAC": "additional_ein", "Type": "TEXT", "Column Reference": "", "": "ein.additional_ein"}] diff --git a/src/_data/dictionary_json/additional_ueis.json b/src/_data/dictionary_json/additional_ueis.json new file mode 100644 index 00000000..8c7a3141 --- /dev/null +++ b/src/_data/dictionary_json/additional_ueis.json @@ -0,0 +1 @@ +[{"Census": "AUDITYEAR + DBKEY", "GSAFAC": "General.report_id", "Type": "TEXT", "Column Reference": "gen.report_id,"}, {"Census": "AUDITYEAR", "GSAFAC": "General.audit_year", "Type": "TEXT", "Column Reference": "gen.audit_year"}, {"Census": "UEI", "GSAFAC": "additional_uei", "Type": "TEXT", "Column Reference": "uei.additional_uei"}] diff --git a/src/_data/dictionary_json/audit_findings.json b/src/_data/dictionary_json/audit_findings.json new file mode 100644 index 00000000..499a2275 --- /dev/null +++ b/src/_data/dictionary_json/audit_findings.json @@ -0,0 +1 @@ +[{"Census": "AUDITYEAR + DBKEY", "GSAFAC": "General.report_id", "Type": "TEXT", "Column Reference": "gen.report_id,"}, {"Census": "AUDITYEAR", "GSAFAC": "General.audit_year", "Type": "TEXT", "Column Reference": "gen.audit_year"}, {"Census": "ELECAUDITSID", "GSAFAC": "FederalAward.award_reference", "Type": "TEXT", "Column Reference": "finding.award_reference"}, {"Census": "FINDINGSREFNUMS", "GSAFAC": "reference_number", "Type": "TEXT", "Column Reference": "finding.reference_number"}, {"Census": "TYPEREQUIREMENT", "GSAFAC": "type_requirement", "Type": "TEXT", "Column Reference": "finding.type_requirement"}, {"Census": "MODIFIEDOPINION", "GSAFAC": "is_modified_opinion", "Type": "BOOLEAN", "Column Reference": "finding.is_modified_opinion"}, {"Census": "OTHERNONCOMPLIANCE", "GSAFAC": "is_other_matters", "Type": "BOOLEAN", "Column Reference": "finding.is_other_matters"}, {"Census": "MATERIALWEAKNESS", "GSAFAC": "is_material_weakness", "Type": "BOOLEAN", "Column Reference": "finding.is_material_weakness"}, {"Census": "SIGNIFICANTDEFICIENCY", "GSAFAC": "is_significant_deficiency", "Type": "BOOLEAN", "Column Reference": "finding.is_significant_deficiency"}, {"Census": "OTHERFINDINGS", "GSAFAC": "is_other_findings", "Type": "BOOLEAN", "Column Reference": "finding.is_other_findings"}, {"Census": "QCOSTS", "GSAFAC": "is_questioned_costs", "Type": "BOOLEAN", "Column Reference": "finding.is_questioned_costs"}, {"Census": "REPEATFINDING", "GSAFAC": "is_repeat_finding", "Type": "BOOLEAN", "Column Reference": "finding.is_repeat_finding"}, {"Census": "PRIORFINDINGREFNUMS", "GSAFAC": "prior_finding_ref_numbers", "Type": "TEXT", "Column Reference": "finding.prior_finding_ref_numbers"}] diff --git a/src/_data/dictionary_json/audit_findings_text.json b/src/_data/dictionary_json/audit_findings_text.json new file mode 100644 index 00000000..531decf6 --- /dev/null +++ b/src/_data/dictionary_json/audit_findings_text.json @@ -0,0 +1 @@ +[{"Census": "AUDITYEAR + DBKEY", "GSAFAC": "General.report_id", "Type": "TEXT", "Column Reference": "gen.report_id,"}, {"Census": "AUDITYEAR", "GSAFAC": "General.audit_year", "Type": "TEXT", "Column Reference": "gen.audit_year"}, {"Census": "FINDINGREFNUMS", "GSAFAC": "finding_ref_number", "Type": "TEXT", "Column Reference": "ft.finding_ref_number"}, {"Census": "TEXT", "GSAFAC": "finding_text", "Type": "TEXT", "Column Reference": "ft.finding_text"}, {"Census": "CHARTSTABLES", "GSAFAC": "contains_chart_or_table", "Type": "TEXT", "Column Reference": "ft.contains_chart_or_table"}] diff --git a/src/_data/dictionary_json/captext.json b/src/_data/dictionary_json/captext.json new file mode 100644 index 00000000..49feb09a --- /dev/null +++ b/src/_data/dictionary_json/captext.json @@ -0,0 +1 @@ +[{"Census": "AUDITYEAR + DBKEY", "GSAFAC": "General.report_id", "Type": "TEXT", "Column Reference": "gen.report_id,"}, {"Census": "AUDITYEAR", "GSAFAC": "General.audit_year", "Type": "", "Column Reference": "gen.audit_year"}, {"Census": "FINDINGREFNUMS", "GSAFAC": "finding_ref_number", "Type": "TEXT", "Column Reference": "ct.finding_ref_number"}, {"Census": "TEXT", "GSAFAC": "planned_action", "Type": "TEXT", "Column Reference": "ct.planned_action"}, {"Census": "CHARTSTABLES", "GSAFAC": "contains_chart_or_table", "Type": "TEXT", "Column Reference": "ct.contains_chart_or_table"}] diff --git a/src/_data/dictionary_json/corrective_action_plans.json b/src/_data/dictionary_json/corrective_action_plans.json new file mode 100644 index 00000000..0dff9101 --- /dev/null +++ b/src/_data/dictionary_json/corrective_action_plans.json @@ -0,0 +1 @@ +[{"Census": "AUDITYEAR + DBKEY", "GSAFAC": "General.report_id", "Type": "TEXT", "Column Reference": "gen.report_id,"}, {"Census": "AUDITYEAR", "GSAFAC": "General.audit_year", "Type": "TEXT", "Column Reference": "gen.audit_year"}, {"Census": "FINDINGREFNUMS", "GSAFAC": "finding_ref_number", "Type": "TEXT", "Column Reference": "ct.finding_ref_number"}, {"Census": "TEXT", "GSAFAC": "planned_action", "Type": "TEXT", "Column Reference": "ct.planned_action"}, {"Census": "CHARTSTABLES", "GSAFAC": "contains_chart_or_table", "Type": "TEXT", "Column Reference": "ct.contains_chart_or_table"}] diff --git a/src/_data/dictionary_json/federal_awards.json b/src/_data/dictionary_json/federal_awards.json new file mode 100644 index 00000000..7bc70d48 --- /dev/null +++ b/src/_data/dictionary_json/federal_awards.json @@ -0,0 +1 @@ +[{"Census": "AUDITYEAR + DBKEY", "GSAFAC": "General.report_id", "Type": "TEXT", "Column Reference": "gen.report_id,"}, {"Census": "AUDITYEAR", "GSAFAC": "General.audit_year", "Type": "TEXT", "Column Reference": "gen.audit_year,"}, {"Census": "EIN", "GSAFAC": "General.auditee_ein", "Type": "TEXT", "Column Reference": ""}, {"Census": "CFDA", "GSAFAC": "federal_agency_prefix + federal_award_extension", "Type": "TEXT", "Column Reference": "award.award_reference,"}, {"Census": "AWARDIDENTIFICATION", "GSAFAC": "additional_award_identification", "Type": "TEXT", "Column Reference": "award.federal_agency_prefix,"}, {"Census": "FEDERALPROGRAMNAME", "GSAFAC": "federal_program_name", "Type": "TEXT", "Column Reference": "award.federal_award_extension,"}, {"Census": "AMOUNT", "GSAFAC": "amount_expended", "Type": "BIGINT", "Column Reference": "award.additional_award_identification,"}, {"Census": "CLUSTERNAME", "GSAFAC": "cluster_name", "Type": "TEXT", "Column Reference": "award.federal_program_name,"}, {"Census": "STATECLUSTERNAME", "GSAFAC": "state_cluster_name", "Type": "TEXT", "Column Reference": "award.amount_expended,"}, {"Census": "PROGRAMTOTAL", "GSAFAC": "federal_program_total", "Type": "BIGINT", "Column Reference": "award.cluster_name,"}, {"Census": "CLUSTERTOTAL", "GSAFAC": "cluster_total", "Type": "BIGINT", "Column Reference": "award.other_cluster_name,"}, {"Census": "DIRECT", "GSAFAC": "is_direct", "Type": "BOOLEAN", "Column Reference": "award.state_cluster_name,"}, {"Census": "PASSTHROUGHAWARD", "GSAFAC": "is_passthrough_award", "Type": "BOOLEAN", "Column Reference": "award.cluster_total,"}, {"Census": "PASSTHROUGHAMOUNT", "GSAFAC": "passthrough_amount", "Type": "BIGINT", "Column Reference": "award.federal_program_total,"}, {"Census": "MAJORPROGRAM", "GSAFAC": "is_major", "Type": "BOOLEAN", "Column Reference": "award.is_major,"}, {"Census": "TYPEREPORT_MP", "GSAFAC": "audit_report_type", "Type": "TEXT", "Column Reference": "award.is_loan,"}, {"Census": "FINDINGREFNUMS", "GSAFAC": "audit_findings.finding_ref_number", "Type": "TEXT", "Column Reference": "award.loan_balance,"}, {"Census": "LOANS", "GSAFAC": "is_loan", "Type": "BOOLEAN", "Column Reference": "award.is_direct,"}, {"Census": "LOANBALANCE", "GSAFAC": "loan_balance", "Type": "TEXT", "Column Reference": "award.audit_report_type,"}, {"Census": "FINDINGSCOUNT", "GSAFAC": "findings_count", "Type": "INT", "Column Reference": "award.findings_count,"}, {"Census": "ELECAUDITSID", "GSAFAC": "award_reference", "Type": "TEXT", "Column Reference": "award.is_passthrough_award,"}, {"Census": "OTHERCLUSTERNAME", "GSAFAC": "other_cluster_name", "Type": "TEXT", "Column Reference": "award.passthrough_amount"}] diff --git a/src/_data/dictionary_json/findings.json b/src/_data/dictionary_json/findings.json new file mode 100644 index 00000000..499a2275 --- /dev/null +++ b/src/_data/dictionary_json/findings.json @@ -0,0 +1 @@ +[{"Census": "AUDITYEAR + DBKEY", "GSAFAC": "General.report_id", "Type": "TEXT", "Column Reference": "gen.report_id,"}, {"Census": "AUDITYEAR", "GSAFAC": "General.audit_year", "Type": "TEXT", "Column Reference": "gen.audit_year"}, {"Census": "ELECAUDITSID", "GSAFAC": "FederalAward.award_reference", "Type": "TEXT", "Column Reference": "finding.award_reference"}, {"Census": "FINDINGSREFNUMS", "GSAFAC": "reference_number", "Type": "TEXT", "Column Reference": "finding.reference_number"}, {"Census": "TYPEREQUIREMENT", "GSAFAC": "type_requirement", "Type": "TEXT", "Column Reference": "finding.type_requirement"}, {"Census": "MODIFIEDOPINION", "GSAFAC": "is_modified_opinion", "Type": "BOOLEAN", "Column Reference": "finding.is_modified_opinion"}, {"Census": "OTHERNONCOMPLIANCE", "GSAFAC": "is_other_matters", "Type": "BOOLEAN", "Column Reference": "finding.is_other_matters"}, {"Census": "MATERIALWEAKNESS", "GSAFAC": "is_material_weakness", "Type": "BOOLEAN", "Column Reference": "finding.is_material_weakness"}, {"Census": "SIGNIFICANTDEFICIENCY", "GSAFAC": "is_significant_deficiency", "Type": "BOOLEAN", "Column Reference": "finding.is_significant_deficiency"}, {"Census": "OTHERFINDINGS", "GSAFAC": "is_other_findings", "Type": "BOOLEAN", "Column Reference": "finding.is_other_findings"}, {"Census": "QCOSTS", "GSAFAC": "is_questioned_costs", "Type": "BOOLEAN", "Column Reference": "finding.is_questioned_costs"}, {"Census": "REPEATFINDING", "GSAFAC": "is_repeat_finding", "Type": "BOOLEAN", "Column Reference": "finding.is_repeat_finding"}, {"Census": "PRIORFINDINGREFNUMS", "GSAFAC": "prior_finding_ref_numbers", "Type": "TEXT", "Column Reference": "finding.prior_finding_ref_numbers"}] diff --git a/src/_data/dictionary_json/findings_text.json b/src/_data/dictionary_json/findings_text.json new file mode 100644 index 00000000..531decf6 --- /dev/null +++ b/src/_data/dictionary_json/findings_text.json @@ -0,0 +1 @@ +[{"Census": "AUDITYEAR + DBKEY", "GSAFAC": "General.report_id", "Type": "TEXT", "Column Reference": "gen.report_id,"}, {"Census": "AUDITYEAR", "GSAFAC": "General.audit_year", "Type": "TEXT", "Column Reference": "gen.audit_year"}, {"Census": "FINDINGREFNUMS", "GSAFAC": "finding_ref_number", "Type": "TEXT", "Column Reference": "ft.finding_ref_number"}, {"Census": "TEXT", "GSAFAC": "finding_text", "Type": "TEXT", "Column Reference": "ft.finding_text"}, {"Census": "CHARTSTABLES", "GSAFAC": "contains_chart_or_table", "Type": "TEXT", "Column Reference": "ft.contains_chart_or_table"}] diff --git a/src/_data/dictionary_json/general.json b/src/_data/dictionary_json/general.json new file mode 100644 index 00000000..f3c3ada3 --- /dev/null +++ b/src/_data/dictionary_json/general.json @@ -0,0 +1 @@ +[{"Census": "AUDITYEAR", "GSAFAC": "audit_year", "Type": "TEXT", "Column Reference": "gen.audit_year"}, {"Census": "TYPEOFENTITY", "GSAFAC": "entity_type", "Type": "TEXT", "Column Reference": "gen.entity_type"}, {"Census": "FYSTARTDATE", "GSAFAC": "fy_start_date", "Type": "DATE", "Column Reference": "gen.fy_start_date"}, {"Census": "FYENDDATE", "GSAFAC": "fy_end_date", "Type": "DATE", "Column Reference": "gen.fy_end_date"}, {"Census": "AUDITTYPE", "GSAFAC": "audit_type", "Type": "TEXT", "Column Reference": "gen.audit_type"}, {"Census": "PERIODCOVERED", "GSAFAC": "audit_period_covered", "Type": "TEXT", "Column Reference": "gen.audit_period_covered"}, {"Census": "NUMBERMONTHS", "GSAFAC": "number_months", "Type": "TEXT", "Column Reference": "gen.number_months"}, {"Census": "EIN", "GSAFAC": "auditee_ein", "Type": "TEXT", "Column Reference": "gen.auditee_ein"}, {"Census": "AUDITEENAME", "GSAFAC": "auditee_name", "Type": "TEXT", "Column Reference": "gen.auditee_name"}, {"Census": "STREET1", "GSAFAC": "auditee_address_line_1", "Type": "TEXT", "Column Reference": "gen.auditee_address_line_1"}, {"Census": "CITY", "GSAFAC": "auditee_city", "Type": "TEXT", "Column Reference": "gen.auditee_city"}, {"Census": "STATE", "GSAFAC": "auditee_state", "Type": "TEXT", "Column Reference": "gen.auditee_state"}, {"Census": "ZIPCODE", "GSAFAC": "auditee_zip", "Type": "TEXT", "Column Reference": "gen.auditee_zip"}, {"Census": "AUDITEECONTACT", "GSAFAC": "auditee_contact_name", "Type": "TEXT", "Column Reference": "gen.auditee_contact_name"}, {"Census": "AUDITEETITLE", "GSAFAC": "auditee_contact_title", "Type": "TEXT", "Column Reference": "gen.auditee_contact_title"}, {"Census": "AUDITEEPHONE", "GSAFAC": "auditee_phone", "Type": "TEXT", "Column Reference": "gen.auditee_phone"}, {"Census": "AUDITEEEMAIL", "GSAFAC": "auditee_email", "Type": "TEXT", "Column Reference": "gen.auditee_email"}, {"Census": "AUDITEEDATESIGNED", "GSAFAC": "auditee_certified_date", "Type": "DATE", "Column Reference": "gen.auditee_certified_date"}, {"Census": "CPAFIRMNAME", "GSAFAC": "auditor_firm_name", "Type": "TEXT", "Column Reference": "gen.auditor_firm_name"}, {"Census": "CPASTREET1", "GSAFAC": "auditor_address_line_1", "Type": "TEXT", "Column Reference": "gen.auditor_address_line_1"}, {"Census": "CPACITY", "GSAFAC": "auditor_city", "Type": "TEXT", "Column Reference": "gen.auditor_city"}, {"Census": "CPASTATE", "GSAFAC": "auditor_state", "Type": "TEXT", "Column Reference": "gen.auditor_state"}, {"Census": "CPAZIPCODE", "GSAFAC": "auditor_zip", "Type": "TEXT", "Column Reference": "gen.auditor_zip"}, {"Census": "CPACONTACT", "GSAFAC": "auditor_contact_name", "Type": "TEXT", "Column Reference": "gen.auditor_contact_name"}, {"Census": "CPATITLE", "GSAFAC": "auditor_contact_title", "Type": "TEXT", "Column Reference": "gen.auditor_contact_title"}, {"Census": "CPAPHONE", "GSAFAC": "auditor_phone", "Type": "TEXT", "Column Reference": "gen.auditor_phone"}, {"Census": "CPAEMAIL", "GSAFAC": "auditor_email", "Type": "TEXT", "Column Reference": "gen.auditor_email"}, {"Census": "CPADATESIGNED", "GSAFAC": "auditor_certified_date", "Type": "DATE", "Column Reference": "gen.auditor_certified_date"}, {"Census": "COGAGENCY", "GSAFAC": "cognizant_agency", "Type": "TEXT", "Column Reference": "gen.cognizant_agency"}, {"Census": "OVERSIGHTAGENCY", "GSAFAC": "oversight_agency", "Type": "TEXT", "Column Reference": "gen.oversight_agency"}, {"Census": "TYPEREPORT_FS", "GSAFAC": "gaap_results", "Type": "TEXT", "Column Reference": "gen.gaap_results"}, {"Census": "SP_FRAMEWORK", "GSAFAC": "sp_framework_basis", "Type": "TEXT", "Column Reference": "gen.sp_framework_basis"}, {"Census": "TYPEREPORT_SP_FRAMEWORK", "GSAFAC": "sp_framework_opinions", "Type": "TEXT", "Column Reference": "gen.sp_framework_opinions"}, {"Census": "GOINGCONCERN", "GSAFAC": "is_going_concern_included", "Type": "BOOLEAN", "Column Reference": "gen.is_going_concern_included"}, {"Census": "MATERIALWEAKNESS", "GSAFAC": "is_internal_control_material_weakness_disclosed", "Type": "BOOLEAN", "Column Reference": "gen.is_internal_control_material_weakness_disclosed"}, {"Census": "DUP_REPORTS", "GSAFAC": "is_aicpa_audit_guide_included", "Type": "BOOLEAN", "Column Reference": ""}, {"Census": "DOLLARTHRESHOLD", "GSAFAC": "dollar_threshold", "Type": "BIGINT", "Column Reference": "gen.dollar_threshold"}, {"Census": "LOWRISK", "GSAFAC": "is_low_risk_auditee", "Type": "BOOLEAN", "Column Reference": "gen.is_low_risk_auditee"}, {"Census": "TOTFEDEXPEND", "GSAFAC": "total_amount_expended", "Type": "BIGINT", "Column Reference": "gen.total_amount_expended"}, {"Census": "AUDITOR_EIN", "GSAFAC": "auditor_ein", "Type": "BIGINT", "Column Reference": "gen.auditor_ein"}, {"Census": "FACACCEPTEDDATE", "GSAFAC": "fac_accepted_date", "Type": "DATE", "Column Reference": "gen.fac_accepted_date"}, {"Census": "CPAFOREIGN", "GSAFAC": "auditor_foreign_address", "Type": "TEXT", "Column Reference": "gen.auditor_foreign_address"}, {"Census": "CPACOUNTRY", "GSAFAC": "auditor_country", "Type": "TEXT", "Column Reference": "gen.auditor_country"}, {"Census": "EUI", "GSAFAC": "auditee_uei", "Type": "TEXT", "Column Reference": "gen.auditee_uei"}, {"Census": "MULTIPLEUEIS", "GSAFAC": "is_additional_ueis", "Type": "BOOLEAN", "Column Reference": "gen.is_additional_ueis"}, {"Census": "AUDITEECERTIFYNAME", "GSAFAC": "auditee_certify_name", "Type": "TEXT", "Column Reference": "gen.auditee_certify_name"}, {"Census": "AUDITEECERTIFYTITLE", "GSAFAC": "auditee_certify_title", "Type": "TEXT", "Column Reference": "gen.auditee_certify_title"}, {"Census": "SP_FRAMEWORK_REQUIRED", "GSAFAC": "is_sp_framework_required", "Type": "BOOLEAN", "Column Reference": "gen.is_sp_framework_required"}, {"Census": "SIGNIFICANTDEFICIENCY", "GSAFAC": "is_internal_control_deficiency_disclosed", "Type": "BOOLEAN", "Column Reference": "gen.is_internal_control_deficiency_disclosed"}, {"Census": "MATERIALNONCOMPLIANCE", "GSAFAC": "is_material_noncompliance_disclosed", "Type": "BOOLEAN", "Column Reference": "gen.is_material_noncompliance_disclosed"}, {"Census": "Question 3.d - Audit Info", "GSAFAC": "agencies_with_prior_findings", "Type": "ARRAY", "Column Reference": "gen.agencies_with_prior_findings"}, {"Census": "INTIALDATE", "GSAFAC": "date_created", "Type": "DATE", "Column Reference": "gen.date_created"}, {"Census": "TYPE_AUDITCODE", "GSAFAC": "type_audit_code", "Type": "TEXT", "Column Reference": "gen.type_audit_code"}, {"Census": "SUPPRESSION_CODE", "GSAFAC": "is_public", "Type": "BOOLEAN", "Column Reference": "gen.is_public"}, {"Census": "____", "GSAFAC": "ready_for_certification_date", "Type": "DATE", "Column Reference": "Date auditor/auditee marked audit as ready for certification"}, {"Census": "____", "GSAFAC": "data_source", "Type": "TEXT", "Column Reference": "GSAFAC or \"CENSUS\""}, {"Census": "____", "GSAFAC": "is_secondary_auditors", "Type": "TEXT", "Column Reference": "If secondary auditors data included"}] diff --git a/src/_data/dictionary_json/notes_to_sefa.json b/src/_data/dictionary_json/notes_to_sefa.json new file mode 100644 index 00000000..1d162dc7 --- /dev/null +++ b/src/_data/dictionary_json/notes_to_sefa.json @@ -0,0 +1 @@ +[{"Census": "AUDITYEAR + DBKEY", "GSAFAC": "General.report_id", "Type": "TEXT", "Column Reference": "gen.report_id,"}, {"Census": "AUDITYEAR", "GSAFAC": "General.audit_year", "Type": "TEXT", "Column Reference": "gen.report_year"}, {"Census": "TITLE", "GSAFAC": "title", "Type": "TEXT", "Column Reference": "note.note_title"}, {"Census": "CONTENT", "GSAFAC": "content", "Type": "TEXT", "Column Reference": "note.content"}, {"Census": "____", "GSAFAC": "accounting_policies", "Type": "TEXT", "Column Reference": "note.accounting_policies", "null": [""]}, {"Census": "____", "GSAFAC": "is_minimis_rate_used", "Type": "TEXT", "Column Reference": "note.is_minimis_rate_used"}, {"Census": "____", "GSAFAC": "rate_explained", "Type": "TEXT", "Column Reference": "note.rate_explained", "null": [""]}, {"Census": "____", "GSAFAC": "contains_chart_or_table", "Type": "TEXT", "Column Reference": "note.contains_chart_or_table"}] diff --git a/src/_data/dictionary_json/passthrough.json b/src/_data/dictionary_json/passthrough.json new file mode 100644 index 00000000..153a05d9 --- /dev/null +++ b/src/_data/dictionary_json/passthrough.json @@ -0,0 +1 @@ +[{"Census": "AUDITYEAR + DBKEY", "GSAFAC": "General.report_id", "Type": "TEXT", "Column Reference": "gen.report_id,"}, {"Census": "AUDITYEAR", "GSAFAC": "General.audit_year", "Type": "TEXT", "Column Reference": "gen.audit_year"}, {"Census": "ELECAUDITSID", "GSAFAC": "award_reference", "Type": "TEXT", "Column Reference": "pass.award_reference"}, {"Census": "PASSTHROUGHNAME", "GSAFAC": "passthrough_name", "Type": "TEXT", "Column Reference": "pass.passthrough_name"}, {"Census": "PASSTHROUGHID", "GSAFAC": "passthrough_id", "Type": "TEXT", "Column Reference": "pass.passthrough_id"}] diff --git a/src/_data/dictionary_json/secondary_auditors.json b/src/_data/dictionary_json/secondary_auditors.json new file mode 100644 index 00000000..8a91fc7c --- /dev/null +++ b/src/_data/dictionary_json/secondary_auditors.json @@ -0,0 +1 @@ +[{"Census": "AUDITYEAR + DBKEY", "GSAFAC": "General.report_id", "Type": "TEXT", "Column Reference": "gen.report_id,"}, {"Census": "AUDITYEAR", "GSAFAC": "General.audit_year", "Type": "TEXT", "Column Reference": "gen.audit_year"}, {"Census": "CPAFIRMNAME", "GSAFAC": "auditor_name", "Type": "TEXT", "Column Reference": "sa.auditor_name"}, {"Census": "CPAEIN", "GSAFAC": "auditor_ein", "Type": "TEXT", "Column Reference": "sa.auditor_ein"}, {"Census": "CPASTREET1", "GSAFAC": "address_street", "Type": "TEXT", "Column Reference": "sa.address_street"}, {"Census": "CPACITY", "GSAFAC": "address_city", "Type": "TEXT", "Column Reference": "sa.address_city"}, {"Census": "CPASTATE", "GSAFAC": "address_state", "Type": "TEXT", "Column Reference": "sa.address_state"}, {"Census": "CPAZIPCODE", "GSAFAC": "address_zipcode", "Type": "TEXT", "Column Reference": "sa.address_zipcode"}, {"Census": "CPACONTACT", "GSAFAC": "contact_name", "Type": "TEXT", "Column Reference": "sa.contact_name"}, {"Census": "CPATITLE", "GSAFAC": "contact_title", "Type": "TEXT", "Column Reference": "sa.contact_title"}, {"Census": "CPAPHONE", "GSAFAC": "contact_phone", "Type": "TEXT", "Column Reference": "sa.contact_phone"}, {"Census": "CPAEMAIL", "GSAFAC": "contact_email", "Type": "TEXT", "Column Reference": "sa.contact_email"}] diff --git a/src/_includes/api/v1_0_0/api-documentation-body.html b/src/_includes/api/v1_0_0/api-documentation-body.html deleted file mode 100644 index bcee1f8d..00000000 --- a/src/_includes/api/v1_0_0/api-documentation-body.html +++ /dev/null @@ -1,3041 +0,0 @@ - -
-
-
- - -

- additional_ueis -

-

- -

-
-

- -

-

- Fields -

-
-
- Field name -
-
- Type -
-
- Format -
-
- Description -
-
-
-
-

- additional_uei -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- audit_year -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditee_uei -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- report_id -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-
- - -

- corrective_action_plans -

-

- -

-
-

- -

-

- Fields -

-
-
- Field name -
-
- Type -
-
- Format -
-
- Description -
-
-
-
-

- audit_year -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditee_uei -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- contains_chart_or_table -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- finding_ref_number -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- planned_action -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- report_id -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-
- - -

- federal_awards -

-

- -

-
-

- -

-

- Fields -

-
-
- Field name -
-
- Type -
-
- Format -
-
- Description -
-
-
-
-

- additional_award_identification -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- amount_expended -

-
-
-
- - integer - -
-
- bigint -
-
-

- -

-
-
-
-
-

- audit_report_type -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- audit_year -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditee_uei -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- award_reference -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- cluster_name -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- cluster_total -

-
-
-
- - integer - -
-
- bigint -
-
-

- -

-
-
-
-
-

- federal_agency_prefix -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- federal_award_extension -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- federal_program_name -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- federal_program_total -

-
-
-
- - integer - -
-
- bigint -
-
-

- -

-
-
-
-
-

- findings_count -

-
-
-
- - integer - -
-
- integer -
-
-

- -

-
-
-
-
-

- is_direct -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- is_loan -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- is_major -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- is_passthrough_award -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- loan_balance -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- other_cluster_name -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- passthrough_amount -

-
-
-
- - integer - -
-
- bigint -
-
-

- -

-
-
-
-
-

- report_id -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- state_cluster_name -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-
- - -

- findings -

-

- -

-
-

- -

-

- Fields -

-
-
- Field name -
-
- Type -
-
- Format -
-
- Description -
-
-
-
-

- audit_year -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditee_uei -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- award_reference -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- is_material_weakness -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- is_modified_opinion -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- is_other_findings -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- is_other_matters -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- is_questioned_costs -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- is_repeat_finding -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- is_significant_deficiency -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- prior_finding_ref_numbers -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- reference_number -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- report_id -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- type_requirement -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-
- - -

- findings_text -

-

- -

-
-

- -

-

- Fields -

-
-
- Field name -
-
- Type -
-
- Format -
-
- Description -
-
-
-
-

- audit_year -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditee_uei -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- contains_chart_or_table -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- finding_ref_number -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- finding_text -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- report_id -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-
- - -

- general -

-

- -

-
-

- -

-

- Fields -

-
-
- Field name -
-
- Type -
-
- Format -
-
- Description -
-
-
-
-

- agencies_with_prior_findings -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- audit_period_covered -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- audit_type -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- audit_year -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditee_address_line_1 -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditee_certify_name -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditee_certify_title -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditee_city -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditee_contact_name -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditee_contact_title -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditee_ein -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditee_email -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditee_name -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditee_phone -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditee_state -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditee_uei -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditee_zip -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditor_address_line_1 -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditor_city -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditor_contact_name -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditor_contact_title -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditor_country -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditor_ein -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditor_email -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditor_firm_name -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditor_phone -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditor_state -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditor_zip -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- cognizant_agency -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- data_source -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- date_created -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- dollar_threshold -

-
-
-
- - integer - -
-
- bigint -
-
-

- -

-
-
-
-
-

- entity_type -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- fy_end_date -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- fy_start_date -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- gaap_results -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- is_going_concern_included -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- is_internal_control_deficiency_disclosed -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- is_internal_control_material_weakness_disclosed -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- is_low_risk_auditee -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- is_material_noncompliance_disclosed -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- is_public -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- is_sp_framework_required -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- number_months -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- oversight_agency -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- ready_for_certification_date -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- report_id -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- sp_framework_basis -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- sp_framework_opinions -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- submitted_date -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- total_amount_expended -

-
-
-
- - integer - -
-
- bigint -
-
-

- -

-
-
-
-
-

- type_audit_code -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-
- - -

- notes_to_sefa -

-

- -

-
-

- -

-

- Fields -

-
-
- Field name -
-
- Type -
-
- Format -
-
- Description -
-
-
-
-

- accounting_policies -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- audit_year -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditee_uei -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- content -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- is_minimis_rate_used -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- rate_explained -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- report_id -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- title -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-
- - -

- passthrough -

-

- -

-
-

- -

-

- Fields -

-
-
- Field name -
-
- Type -
-
- Format -
-
- Description -
-
-
-
-

- audit_year -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditee_uei -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- award_reference -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- passthrough_id -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- passthrough_name -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- report_id -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-
- - -

- secondary_auditors -

-

- -

-
-

- -

-

- Fields -

-
-
- Field name -
-
- Type -
-
- Format -
-
- Description -
-
-
-
-

- address_city -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- address_state -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- address_street -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- address_zipcode -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- audit_year -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditee_uei -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditor_ein -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- auditor_name -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- contact_email -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- contact_name -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- contact_phone -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- report_id -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-
-
\ No newline at end of file diff --git a/src/_includes/api/v1_0_0/api-documentation-nav.html b/src/_includes/api/v1_0_0/api-documentation-nav.html deleted file mode 100644 index bf080be4..00000000 --- a/src/_includes/api/v1_0_0/api-documentation-nav.html +++ /dev/null @@ -1,50 +0,0 @@ - - \ No newline at end of file diff --git a/src/_includes/api/v1_0_0_beta/api-documentation-body.html b/src/_includes/api/v1_0_0_beta/api-documentation-body.html deleted file mode 100644 index ce170e87..00000000 --- a/src/_includes/api/v1_0_0_beta/api-documentation-body.html +++ /dev/null @@ -1,4260 +0,0 @@ -
-
-
- - -

- auditor -

-

- -

-
-

- -

-

- Fields -

-
-
- Field name -
-
- Type -
-
- Format -
-
- Description -
-
-
-
-

- audit_year -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditee_ein -

-
-
-
- - integer - -
-
- integer -
-
-

- -

-
-
-
-
-

- auditee_uei -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditor_address_line_1 -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditor_city -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditor_contact_title -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditor_country -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditor_ein -

-
-
-
- - integer - -
-
- integer -
-
-

- -

-
-
-
-
-

- auditor_email -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditor_firm_name -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditor_foreign_addr -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditor_phone -

-
-
-
- - integer - -
-
- bigint -
-
-

- -

-
-
-
-
-

- auditor_seq_number -

-
-
-
- - integer - -
-
- integer -
-
-

- -

-
-
-
-
-

- auditor_state -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditor_zip -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- id -

-
-
-
- - integer - -
-
- bigint -
-
-

- Note: -This is a Primary Key.<pk/> -

-
-
-
-
-

- report_id -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-
- - -

- cap_text -

-

- -

-
-

- -

-

- Fields -

-
-
- Field name -
-
- Type -
-
- Format -
-
- Description -
-
-
-
-

- audit_year -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditee_ein -

-
-
-
- - integer - -
-
- integer -
-
-

- -

-
-
-
-
-

- auditee_uei -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- cap_text -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- charts_tables -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- finding_ref_number -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- fy_end_date -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- fy_start_date -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- id -

-
-
-
- - integer - -
-
- bigint -
-
-

- Note: -This is a Primary Key.<pk/> -

-
-
-
-
-

- report_id -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-
- - -

- federal_award -

-

- -

-
-

- -

-

- Fields -

-
-
- Field name -
-
- Type -
-
- Format -
-
- Description -
-
-
-
-

- additional_award_identification -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- amount_expended -

-
-
-
- - integer - -
-
- bigint -
-
-

- -

-
-
-
-
-

- audit_year -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditee_ein -

-
-
-
- - integer - -
-
- integer -
-
-

- -

-
-
-
-
-

- auditee_uei -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- award_seq_number -

-
-
-
- - integer - -
-
- integer -
-
-

- -

-
-
-
-
-

- cluster_name -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- cluster_total -

-
-
-
- - integer - -
-
- bigint -
-
-

- -

-
-
-
-
-

- federal_agency_prefix -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- federal_award_extension -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- federal_program_name -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- federal_program_total -

-
-
-
- - integer - -
-
- bigint -
-
-

- -

-
-
-
-
-

- findings_count -

-
-
-
- - integer - -
-
- integer -
-
-

- -

-
-
-
-
-

- fy_end_date -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- fy_start_date -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- id -

-
-
-
- - integer - -
-
- bigint -
-
-

- Note: -This is a Primary Key.<pk/> -

-
-
-
-
-

- is_direct -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- is_loan -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- is_major -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- loan_balance_at_audit_period_end -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- mp_audit_report_type -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- other_cluster_name -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- passthrough_amount -

-
-
-
- - integer - -
-
- bigint -
-
-

- -

-
-
-
-
-

- passthrough_award -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- report_id -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- state_cluster_name -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- type_requirement -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-
- - -

- finding -

-

- -

-
-

- -

-

- Fields -

-
-
- Field name -
-
- Type -
-
- Format -
-
- Description -
-
-
-
-

- audit_year -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditee_ein -

-
-
-
- - integer - -
-
- integer -
-
-

- -

-
-
-
-
-

- auditee_uei -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- award_seq_number -

-
-
-
- - integer - -
-
- integer -
-
-

- -

-
-
-
-
-

- federal_agency_prefix -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- federal_award_extension -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- finding_ref_number -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- finding_seq_number -

-
-
-
- - integer - -
-
- integer -
-
-

- -

-
-
-
-
-

- fy_end_date -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- fy_start_date -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- id -

-
-
-
- - integer - -
-
- bigint -
-
-

- Note: -This is a Primary Key.<pk/> -

-
-
-
-
-

- is_material_weakness -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- is_significant_deficiency -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- modified_opinion -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- other_findings -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- other_non_compliance -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- prior_finding_ref_numbers -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- questioned_costs -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- repeat_finding -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- report_id -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- type_requirement -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-
- - -

- finding_text -

-

- -

-
-

- -

-

- Fields -

-
-
- Field name -
-
- Type -
-
- Format -
-
- Description -
-
-
-
-

- audit_year -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditee_ein -

-
-
-
- - integer - -
-
- integer -
-
-

- -

-
-
-
-
-

- auditee_uei -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- charts_tables -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- finding_ref_number -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- finding_text -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- fy_end_date -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- fy_start_date -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- id -

-
-
-
- - integer - -
-
- bigint -
-
-

- Note: -This is a Primary Key.<pk/> -

-
-
-
-
-

- report_id -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-
- - -

- general -

-

- -

-
-

- -

-

- Fields -

-
-
- Field name -
-
- Type -
-
- Format -
-
- Description -
-
-
-
-

- audit_period_covered -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- audit_type -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- audit_year -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditee_addl_duns_list -

-
-
-
- - array - -
-
- character varying[] -
-
-

- -

-
-
-
-
-

- auditee_addl_ein_list -

-
-
-
- - array - -
-
- integer[] -
-
-

- -

-
-
-
-
-

- auditee_addl_uei_list -

-
-
-
- - array - -
-
- character varying[] -
-
-

- -

-
-
-
-
-

- auditee_address_line_1 -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditee_certified_date -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- auditee_certify_name -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditee_certify_title -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditee_city -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditee_contact_name -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditee_contact_title -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditee_duns -

-
-
-
- - array - -
-
- character varying[] -
-
-

- -

-
-
-
-
-

- auditee_ein -

-
-
-
- - integer - -
-
- integer -
-
-

- -

-
-
-
-
-

- auditee_email -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditee_name -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditee_phone -

-
-
-
- - integer - -
-
- bigint -
-
-

- -

-
-
-
-
-

- auditee_state -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditee_uei -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditee_zip -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditor_address_line_1 -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditor_certified_date -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- auditor_city -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditor_contact_name -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditor_contact_title -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditor_country -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditor_ein -

-
-
-
- - integer - -
-
- integer -
-
-

- -

-
-
-
-
-

- auditor_email -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditor_firm_name -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditor_foreign_addr -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditor_phone -

-
-
-
- - integer - -
-
- bigint -
-
-

- -

-
-
-
-
-

- auditor_state -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditor_zip -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- cfac_report_id -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- cfac_version -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- cognizant_agency -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- condition_or_deficiency_major_program -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- create_date -

-
-
-
- - string - -
-
- timestamp with time zone -
-
-

- -

-
-
-
-
-

- current_or_former_findings -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- data_source -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- date_published -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- date_received -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- dbkey -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- dollar_threshold -

-
-
-
- - number - -
-
- double precision -
-
-

- -

-
-
-
-
-

- ein_subcode -

-
-
-
- - integer - -
-
- integer -
-
-

- -

-
-
-
-
-

- entity_type -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- fac_accepted_date -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- federal_agency_prefix -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- federal_award_extension -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- form_date_received -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- fy_end_date -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- fy_start_date -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- hist_auditee_address_line_2 -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- hist_auditee_fax -

-
-
-
- - integer - -
-
- bigint -
-
-

- -

-
-
-
-
-

- hist_auditor_address_line_2 -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- hist_auditor_fax -

-
-
-
- - integer - -
-
- bigint -
-
-

- -

-
-
-
-
-

- hist_completed_date -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- hist_component_date_received -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- hist_previous_completed_on -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- hist_previous_date_published -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- hist_reportable_condition -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- hist_type_of_entity -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- id -

-
-
-
- - integer - -
-
- bigint -
-
-

- Note: -This is a Primary Key.<pk/> -

-
-
-
-
-

- initial_date_received -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- is_duplicate_reports -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- is_going_concern -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- is_low_risk -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- is_material_noncompliance -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- is_material_weakness -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- is_public -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- is_significant_deficiency -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- is_special_framework_required -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- material_weakness -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- material_weakness_major_program -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- modified_date -

-
-
-
- - string - -
-
- timestamp with time zone -
-
-

- -

-
-
-
-
-

- multiple_auditors -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- multiple_duns -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- multiple_ein -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- multiple_uei -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- number_months -

-
-
-
- - integer - -
-
- integer -
-
-

- -

-
-
-
-
-

- oversight_agency -

-
-
-
- - integer - -
-
- integer -
-
-

- -

-
-
-
-
-

- pdf_url -

-
-
-
- - array - -
-
- character varying[] -
-
-

- -

-
-
-
-
-

- prior_year_schedule -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- questioned_costs -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- report_id -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- report_required -

-
-
-
- - boolean - -
-
- boolean -
-
-

- -

-
-
-
-
-

- special_framework -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- suppression_code -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- total_fed_expenditures -

-
-
-
- - integer - -
-
- bigint -
-
-

- -

-
-
-
-
-

- type_audit_code -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- type_report_financial_statements -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- type_report_major_program -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- type_report_special_purpose_framework -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-
- - -

- note -

-

- -

-
-

- -

-

- Fields -

-
-
- Field name -
-
- Type -
-
- Format -
-
- Description -
-
-
-
-

- audit_year -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- auditee_ein -

-
-
-
- - integer - -
-
- integer -
-
-

- -

-
-
-
-
-

- auditee_uei -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- content -

-
-
-
- - string - -
-
- text -
-
-

- -

-
-
-
-
-

- fy_end_date -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- fy_start_date -

-
-
-
- - string - -
-
- date -
-
-

- -

-
-
-
-
-

- id -

-
-
-
- - integer - -
-
- bigint -
-
-

- Note: -This is a Primary Key.<pk/> -

-
-
-
-
-

- note_index -

-
-
-
- - integer - -
-
- integer -
-
-

- -

-
-
-
-
-

- note_seq_number -

-
-
-
- - integer - -
-
- integer -
-
-

- -

-
-
-
-
-

- note_title -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- report_id -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-

- type_id -

-
-
-
- - string - -
-
- character varying -
-
-

- -

-
-
-
-
-
-
\ No newline at end of file diff --git a/src/_includes/api/v1_0_0_beta/api-documentation-nav.html b/src/_includes/api/v1_0_0_beta/api-documentation-nav.html deleted file mode 100644 index da512496..00000000 --- a/src/_includes/api/v1_0_0_beta/api-documentation-nav.html +++ /dev/null @@ -1,40 +0,0 @@ - - \ No newline at end of file diff --git a/src/developers/dictionary.md b/src/developers/dictionary.md new file mode 100644 index 00000000..3a05508b --- /dev/null +++ b/src/developers/dictionary.md @@ -0,0 +1,72 @@ +--- +layout: home.njk +title: FAC data dictionary +meta: + name: FAC data dictionary + description: A description of fields in the API. +endpoints: + - general + - federal_awards + - notes_to_sefa + - findings + - findings_text + - corrective_action_plans + - passthrough + - secondary_auditors + - additional_ueis + - additional_eins +formerly: + - gen + - cfda + - notes + - findings + - findingstext + - captext + - passthrough + - cpas + - ueis + - eins +--- + +# Data dictionary + +The data dictionary provides an overview of the FAC API from the perspective of historical Census data. Many users are familiar with the pipe-delimited CSV files distributed by Census. These documents help developers navigate from what-was to what-is. + + +## Dictionary by endpoint + +
    +{% for ep in endpoints %} +
  1. {{ep}}
  2. +{% endfor %} +
+ + +{% for ep in endpoints %} + +

Endpoint: {{ep}} (formerly {{formerly[loop.index0]}})

+ +
+ + + + + + + + + + + {% for line in dictionary_json[ep] %} + + + + + + {% endfor %} + +
+ Data from the {{ep}} endpoint in the FAC API. +
CensusGSAData type
{{line.Census}}{{line.GSAFAC}}{{line.Type}}
+
+{% endfor %} diff --git a/src/developers/differences.md b/src/developers/differences.md new file mode 100644 index 00000000..e8b0f386 --- /dev/null +++ b/src/developers/differences.md @@ -0,0 +1,242 @@ +--- +layout: home.njk +title: FAC API differences +meta: + name: FAC api differences + description: Some of the differeces from the Census FAC +differences: + general: + - census: COMPLETED ON + gsa: submitted_date or fac_accepted_date + comment: > + We do not know what Census meant by this field. We use `submitted_date` internally to mean "the day on which the final button was pressed by the auditee in order to submit their audit." We use `fac_accepted_date` to mean "the day upon which we processed and disseminated their audit." + - census: EINSubCode + gsa: Unknown + comment: + - census: AUDITEE STREET2 + gsa: N/A + comment: Not in the 2023 collection. + - census: AuditeeFax + gsa: N/A + comment: Not in the 2023 collection. + - census: AuditeeNameTitle + gsa: auditee_certify_name and auditee_certify_title + comment: These are likely the closest mappings in the GSA FAC API. + - census: TYPEREPORT_MP + gsa: Rollup + comment: See rollups. + - census: SIGNIFICANTDEFICIENCY_MP + gsa: Rollup + comment: See rollups. + - census: QCOSTS + gsa: Rollup + comment: See rollups. + - census: CYFINDINGS + gsa: Rollup + comment: See rollups. + - census: PYSCHEDULE + gsa: Rollup + comment: See rollups. + - census: COMPONENT DATE RECEIVED + gsa: Unknown + comment: + - census: FORM DATE RECEIVED + gsa: Unknown + comment: + - census: INITIAL DATE RECEIVED + gsa: submitted_date + comment: > + GSA FAC tracks multiple timestamps as the auditor and auditee progress through the system. date_created is the date the audit is first initialized in the FAC. ready_for_certification_date is the point that the audit is locked and marked ready to be certified. The certified dates are when the auditor/auditee sign. submitted_date is when the auditee "pushes the button" to certify, and fac_accepted_date is when the FAC acknowledges that submission. These last two days are currently (Jan '24) *always* the same, but there may be reasons, in the future, that they are not. + - census: FAC RELEASE DATE + gsa: fac_accepted_date + comment: > + GSA sets fac_accepted_date to the date that the audit is compeleted and moved to dissemination. + - census: AUDITEEDATESIGNED + gsa: auditee_certified_date + comment: + - census: CPADATESIGNED + gsa: auditor_certified_date + comment: + - census: FAC ACCEPTED DATE + gsa: fac_accepted_date + comment: + - census: PREVIOUSCOMPLETEDON + gsa: Unknown + comment: + - census: REPORTREQUIRED + gsa: Unknown + comment: + - census: MATERIALWEAKNESS_MP + gsa: Rollup + comment: See rollups. + - census: DBKEY + gsa: + comment: > + Not yet incorporated into the GSA FAC API. This value does not exist for 2023 and future years. The DBKEY and AUDITYEAR formed a compound primary key in the Census FAC, and GSA uses a single PK (report_id) which is guaranteed to be globally unique within the system. When historical data is incorporated into the collection, all historical audits will be given a new-style report_id, and a mapping from report_id to DBKEY and AUDITYEAR will be provided as a standalone table. It will not be part of general. + - census: COGOVER + gsa: Rollup + comment: See rollups. + - census: CPAFAX + gsa: N/A + comment: + - census: CPASTREET2 + gsa: N/A + comment: + secondary_auditors: + - census: CPAFAX + gsa: N/A + comment: + findings: + - census: ELECAUDITFINDINGSID + gsa: award_reference + comment: The award_reference is an effective key into the findings, findings text, and CAP text tables. + - census: FINDING SEQ_NUMBER + gsa: implicit + comment: Findings are ordered. GSA can consider adding an explicit index back in. + - census: CAP SEQ_NUMBER + gsa: Unknown? + comment: If this is a reverse-mapping from CAP text, then it is not in the GSA endpoints. Forward-referencing from the award_reference is recommended. + federal_awards: + - census: TYPEREQUIREMENT + gsa: type_requirement + comment: + - census: RD + gsa: Unknown + comment: + - census: ARRA + gsa: Unknown + comment: + - census: CFDAPROGRAMNAME + gsa: Uknown + comment: + notes_to_sefa: + - census: ID + gsa: Unknown + comment: + - census: REPORTID + gsa: Unknown + comment: + - census: VERSION + gsa: Unknown + comment: + - census: SEQ_NUMBER + gsa: + comment: Forward reference from award_reference + - census: TYPE_ID + gsa: Not needed + comment: GSA encodes the notes differently; this field is not required to determine row type. + - census: NOTE_INDEX + gsa: implicit + comment: Notes are ordered. +--- + + +{% macro endpoint(ep) %} + + + + + + + + + + + + {% for row in differences[ep] %} + {% if row.census %} + + + + + + {% endif %} + {% endfor %} + +
+ Differences in the {{ep}} endpoint. +
Census fieldFAC fieldDescription
+ {{ row.census | safe }} + {{ row.gsa | safe }} + {% if row.gsa == "N/A" %} + Not in the 2023 collection. + {% elif row.gsa == "Unknown" %} + No information available at this time. + {% else %} + {{ row.comment | safe }} + {% endif %} +
+ + +{% endmacro %} + + + +# FAC API differences with historical fields + + +
+
+

This is a living document

+

+ As of this writing (February '24), the historical data migration is underway. We're still discussing how best to map historical data that does not fit the 2023 collection data model. Federal API users are encouraged to engage the FAC in dialogue as to how historical data is exposed for future use. +

+
+
+ +We are in the process of migrating historical data (2018-2023) so that it maps into the 2023 collection's PRA. Fields that do not fit (e.g. `DBKEY`) will be mapped in via a seperate (e.g. `historical`) endpoint. As part of this process, some historical fields have been omitted. For example: + +1. **Short-lived fields.** The historical data includes some fields that only existed for a handful of years and do not have an apparent correlate when compared to other years. +2. **Duplicative data.** The historical data includes some fields that "roll up" one or more fields into a secondary field. Where practical, we have omitted these fields in favor of their constituent parts. + +When trying to understand how GSA maps historical data into the API, three parts of the codebase are useful references: + +1. **Historical migration code**. GSA implemented the historical migration by (1) loading historical data, (2) creating "virtual submissions" from it (e.g. constructing submission workbooks and form data), (3) running them through the entire submission process, including validation, and (4) disseminating those "virtual audits." This code is in [census_historical_migration](https://github.com/GSA-TTS/FAC/tree/main/backend/census_historical_migration). +2. **`IntakeToDissemination`**. [This code](https://github.com/GSA-TTS/FAC/blob/main/backend/audit/intake_to_dissemination.py) maps the internal data structures of the GSA FAC through to the dissemination tables (which feed the API). +3. **The API itself**. The API ([v1.0.3](https://github.com/GSA-TTS/FAC/tree/a83c0f06a7bf3737f48f5061db95488a34305ba4/backend/dissemination/api/api_v1_0_3)) provides the mapping from the internal dissemination tables through to PostgREST, which is then consumed by clients. + +This document is organized by FAC endpoint. + +- [FAC API differences with historical fields](#fac-api-differences-with-historical-fields) + - [Endpoints](#endpoints) + - [general](#general) + - [secondary\_auditors](#secondary_auditors) + - [findings](#findings) + - [federal\_awards](#federal_awards) + - [notes\_to\_sefa](#notes_to_sefa) + - [Other tables](#other-tables) + +## Endpoints + +### general + +{{endpoint("general")}} + +### secondary_auditors + +This was previously the CPAS table. + +{{endpoint("secondary_auditors")}} + +### findings + +{{endpoint("findings")}} + +### federal_awards + +This was previously the CFDAs table. + +{{endpoint("federal_awards")}} + +### notes_to_sefa + +{{endpoint("notes_to_sefa")}} + +## Other tables + +Census had three more tables that are not represented (at this time) in the GSA FAC API: + +* `REVISIONS` (or similar) will be implemented in Q2/Q3 after further research with agencies. +* `AGENCY` It is unclear whether the FAC *should* provide this table. In Q2/Q3, we will determine whether it is redundant with offerings from SAM.gov or elsewhere. +* `DUNS` will be investigated as part of historical data migration and mapping to new-style reports. There are no DUNS numbers in the 2023 collection, and therefore it is not present as part of the 2023 data. diff --git a/src/developers/index.md b/src/developers/index.md index aa74bdc2..13b09e7f 100644 --- a/src/developers/index.md +++ b/src/developers/index.md @@ -22,10 +22,16 @@ To interact with the FAC API, you will need an API key from query operations documentation. +Once you have your API key, you can begin exploring the API. + +## Resources + +* [Getting started]({{ config.baseUrl }}developers/getting-started/). What you need to get started, with some examples using `curl` on the command line. +* [PostgREST](https://postgrest.org), our API server. We use PostgREST as our API server. That means that you will use their documentation to guide you in formulating queries and interacting with our API server. +* [GSA data dictionary]({{ config.baseUrl }}developers/dictionary/). A mapping from the Census FAC to the GSA FAC API +* [Rollup fields]({{ config.baseUrl }}developers/rollups/) in Census data. A look at fields that existed in the Census data dissemination, and how to compute them from the FAC API. +* [Differences]({{ config.baseUrl }}developers/differences/) between Census data fields and GSA data fields. A list of fields you might be looking for, and where you might find them in the GSA FAC API. +* [Retrieiving many results]({{ config.baseUrl }}developers/retrieve-many/). An example of how to use pagination in PostgREST to retrieve many results from the API. ## API limits and future updates diff --git a/src/developers/retrieve-many.md b/src/developers/retrieve-many.md new file mode 100644 index 00000000..0dd5e5df --- /dev/null +++ b/src/developers/retrieve-many.md @@ -0,0 +1,118 @@ +--- +layout: home.njk +title: Retrieving many results from the FAC API +meta: + name: Retrieving many results from the FAC API + description: How to use pagination +--- + +# Retriving many results from the FAC API + +Every year, roughly 40,000-50,000 audits are submitted to the FAC. Given that there is data in the FAC database going back to 2016, that means there are more than 200,000 audits, with more than 2.5M `federal_awards` records. + +To keep the FAC running smoothly for all users, we limit requests to 20,000 results at a time. So, how do you search and retrieve more than that? + +## Consider more focused queries + +Our first recommendation is *not* to issue queries that return tens or hundreds of thousands of results. You will likely find the experience to be non-performant. + +Wherever possible, we recommend that partners build systems that issue small, restrictive queries. For small agencies, asking for all of the audits in a month or year may work well; for large agencies, it may not. Therefore, we recommend you consider issuing queries for a single day's or week's worth of audits. While this may mean more queries, each individual request will be more performant. + +### Example + +Assume you want to retrieve all of the awards for which your agency is cognizant in a given year. If you were to do this in SQL, it might be a `JOIN` across two tables. This would be slow, as you would be querying the `general` table, which has hundreds of thousands of rows, against the `federal_awards` table, which has millions of rows. + +Instead, you can issue a sequence of small queries via the API. The following example demonstrates how this might work using Python: + +```python +# Create a function that gets a list of all audits for a +# given agency in a given year. Then, for each audit, +# request its corresponding awards and add them to a list. +def retrieve_cog_awards(year, agency): + general_url = f"{FAC_API_BASE}/general" + federal_awards_url = f"{FAC_API_BASE}/federal_awards" + general_response = requests.get(general_url, + params={ + "select": "report_id", + "audit_year": f"eq.{year}", + "cognizant_agency": f"eq.{agency}" + }, + headers={ "X-API-Key": FAC_API_KEY }) + + print(f"Agency[{agency}] Records: {len(general_response.json())}") + report_ids = set(map(lambda o: o["report_id"], res.json())) + awards = [] + for report_id in report_ids: + awards_response = requests.get(federal_awards_url, + params={ + "report_id": f"eq.{report_id}" + }, + headers={ "X-API-Key": FAC_API_KEY }) + print(f"\treport_id[{report_id}]: {len(awards_response.json())} awards") + awards.append(awards_response.json()) + + return awards + +# Call your function +treasury = retrieve_cog_awards(2020, 21) +``` + +This example prints out the following: + +``` +Agency[21] Records: 18 + report_id[2020-12-CENSUS-0000187886]: 42 awards + report_id[2020-12-CENSUS-0000182305]: 71 awards + report_id[2020-12-CENSUS-0000187776]: 12 awards + report_id[2020-06-CENSUS-0000242068]: 1 awards + report_id[2020-09-CENSUS-0000136906]: 68 awards + report_id[2020-11-CENSUS-0000138628]: 45 awards + report_id[2020-12-CENSUS-0000251225]: 1 awards + report_id[2020-12-CENSUS-0000252841]: 1 awards + report_id[2020-12-CENSUS-0000166851]: 46 awards + report_id[2020-12-CENSUS-0000208943]: 6 awards + report_id[2020-09-CENSUS-0000074286]: 7 awards + report_id[2020-12-CENSUS-0000128618]: 3 awards + report_id[2020-12-CENSUS-0000230310]: 2 awards + report_id[2020-11-CENSUS-0000138705]: 48 awards + report_id[2020-12-CENSUS-0000022772]: 4 awards + report_id[2020-12-CENSUS-0000188333]: 36 awards + report_id[2020-12-CENSUS-0000258107]: 2 awards + report_id[2020-06-CENSUS-0000200809]: 11 awards +``` + +In the first query against `general`, you discover that Treasury was the cognizant agency 18 audits in 2020. In the second set of queries, you requested the `federal_awards` for each audit, where each query returned between 1 and 71 results. + +## Use pagination + +If you cannot restrict your queries in the manner described above, or if your focused queries still return more than 20,000 results, you will need to use pagination to get retrieve all of your results. + +There are two ways to do this. The first is to use the query parameters `limit` and `offset`. The `limit` parameter determines the maximum number of results that will be included in each "page" of results. The `offset` parameter tells the API where to begin its count of results. For example, if you believe a query is going to return 35K results, you could make the following requests in a sequence of queries to get all of your results: + +``` +...url.../...table...?limit=4999&offset=0 +...url.../...table...?limit=4999&offset=5000 +...url.../...table...?limit=4999&offset=10000 +...url.../...table...?limit=4999&offset=15000 +...url.../...table...?limit=4999&offset=20000 +...url.../...table...?limit=4999&offset=25000 +...url.../...table...?limit=4999&offset=30000 +``` + + You can terminate your loop in one of two ways: + +1. Use the [headers that PostgREST supplies to determine where you are in your pagination](https://postgrest.org/en/stable/references/api/pagination_count.html), and stop at the appropriate time. +2. Stop when you get no results. With this method, there is some danger your loop could run forever, consuming your entire API query limit. We recommend you always use an upper limit to prevent this issue. + +The following is an example of how you could use both methods to terminate the loop using Python: + +```python +# Get results from count 0 to 35,000, going in increments of 5,000 +for offset in range(0, 35000, 5000): + ... + results = requests.get(... query using the `offset` variable ...) + if results == []: + break + else: + ... +``` diff --git a/src/developers/rollups.md b/src/developers/rollups.md new file mode 100644 index 00000000..5227aa6f --- /dev/null +++ b/src/developers/rollups.md @@ -0,0 +1,352 @@ +--- +layout: home.njk +title: FAC API rollup tutorial +meta: + name: FAC API rollup tutorial + description: A tutorial focused on the rollup fields in the API +rollups: + ALN: + rolled: CFDA + orig: CFDA table + criteria: A combination of agency and program number + output: A CFDA/ALN number + censusdesc: FIXME + code: https://github.com/GSA-TTS/fac-api-examples/tree/main/rollups/01-aln + COGOVER: + rolled: FIXME + orig: FIXME + criteria: FIXME + output: FIXME + censusdesc: FIXME + code: https://github.com/GSA-TTS/fac-api-examples/tree/main/rollups/02-cogover + QCOSTS: + rolled: QCOSTS + orig: QCOSTS from Findings table + criteria: "If any of the auditee's findings have QCOSTS = Y (QCOSTS from Findings Table)" + output: Then QCOSTS in General table = Y otherwise QCOSTS = N + censusdesc: Indicate whether or not the audit disclosed any known questioned costs. + code: https://github.com/GSA-TTS/fac-api-examples/tree/main/rollups/03-qcosts + CYFINDINGS: + rolled: CYFINDINGS + orig: Findings Table + criteria: If any records in the Findings table + output: "CYFINDINGS=Y" + censusdesc: > + Indicate whether or not current year findings affecting direct funds were reported + code: https://github.com/GSA-TTS/fac-api-examples/tree/main/rollups/04-cyfindings + TYPEREPORT_MP: + rolled: TYPEREPORT_MP + orig: TYPEREPORT_MP from CFDA (now `federal_awards`) table + criteria: Combines all values (U, D, A, S) entered in the TYPEREPORT_MP field from CFDA + output: > + "U" if all TYPEREPORT_MP = U or the non-"U" values listed once + censusdesc: Type of report issued on the major program compliance + code: https://github.com/GSA-TTS/fac-api-examples/tree/main/rollups/050-typereportmp + MATERIALWEAKNESS_MP: + rolled: MATERIALWEAKNESS_MP + orig: MATERIALWEAKNESS from Findings table + criteria: If any of the auditee’s findings have MATERIALWEAKNESS = Y + output: Then MATERIAL WEAKNESS_MP = Y + censusdesc: > + Indicate whether any reportable condition/signficant deficiency was disclosed as a material weakness for a major program in the Schedule of Findings and Questioned Costs + code: https://github.com/GSA-TTS/fac-api-examples/tree/main/rollups/06-materialweakness + REPORTABLECONDITION_MP: + rolled: REPORTABLECONDITION_MP + orig: SIGNIFICANTDEFICIENCY from Findings Table + criteria: If any of the auditee’s findings have SIGNIFICANTDEFICIENCY = Y + output: Then the REPORTABLE CONDITION_MP = Y + censusdesc: > + Whether or not the audit disclosed a reportable condition/significant deficiency for any major program in the Schedule of Findings and Questioned Costs + code: https://github.com/GSA-TTS/fac-api-examples/tree/main/rollups/07-reportable + PYSCHEDULE: + rolled: PYSCHEDULE + orig: Question 3.d. on the Audit Info tab + criteria: If there is any number other than 00 listed + output: PYSCHEDULE=Y + censusdesc: > + Indicate whether or not the report includes a Summary Schedule of Prior Year Audit Findings + code: https://github.com/GSA-TTS/fac-api-examples/tree/main/rollups/08-pysched +--- + +{% macro rollup(tag) %} +
    + {% if not "FIXME".includes(rollups[tag].rolled) %}
  • Rolled up Census field and table: {{ rollups[tag].rolled }}
  • {% endif %} + + {% if not "FIXME".includes(rollups[tag].criteria) %}
  • Criteria: {{ rollups[tag].criteria }}
  • {% endif %} + + {% if not "FIXME".includes(rollups[tag].output) %}
  • Output: {{ rollups[tag].output }}
  • {% endif %} + + {% if not "FIXME".includes(rollups[tag].censusdesc) %}
  • Census data dictionary description: {{ rollups[tag].censusdesc }}
  • {% endif %} + + {% if not "FIXME".includes(rollups[tag].code) %}
  • FAC API example code: {{ rollups[tag].code }}
  • {% endif %} +
+{% endmacro %} + +# FAC API rollup tutorial + +The FAC API follows the historical data format distributed by Census with a few exceptions. During the transition, we attempted to provide consistency for our partners as they migrate between system while streamlining the data wherever possible. This tutorial will look at some of the fields we no longer provide and how those fields can be recreated using the data already in the FAC API. + +## About this code + +The code for this tutorial can be found in the [fac-api-examples](https://github.com/GSA-TTS/fac-api-examples) repository. These resources would not be possible without help from HHS, who provided feedback and documentation regarding many of these rollup fields. If you see space for improvement, please reach out via our [help desk](https://support.fac.gov/hc/en-us). + +### Rollups covered + +* [ALN (previously CFDA)](#ALN) +* [COGOVER](#COGOVER) +* [QCOSTS](#QCOSTS) +* [CYFINDINGS](#CYFINDINGS) +* [TYPEREPORT_MP](#TYPEREPORT_MP) +* [MATERIALWEAKNESS_MP](#MATERIALWEAKNESS_MP) +* [REPORTABLECONDITION_MP](#REPORTABLECONDITION_MP) +* [PYSCHEDULE](#PYSCHEDULE) + +## Example: ALN (previously CFDA) + +{{ rollup("ALN") }} + +The ALN, or Agency Listing number, is a two-part identifier with the shape `12.345`. Sometimes it includes letters (`12.RD`), or even letters _and_ numbers (`12.U01`). Historically, it is sometimes even messier. The FAC does not distribute the ALN. It distributes the agency prefix (the first part of the code) and the program number (the second part of the code). + +The FAC collects two fields related to the ALN: the `federal_agency_prefix` and `federal_award_extension`. Both of these fields are required as part of the federal awards workbook and are distributed via the `federal_awards` endpoint. + +To generate a single ALN, combine `federal_agency_prefix` and `federal_award_extension` with a `.` in the middle. + +### Code example output + +If you run the sample code provided above, you should get: + +``` +2023-06-GSAFAC-0000000002 ['84.027', '84.027', '84.173', '84.173', '84.010', '84.367', '84.424', '84.424', '84.425', '84.425', '84.425', '84.425', '84.425', '84.425', '84.425', '10.553', '10.555', '10.575', '10.649', '10.555'] +2023-06-GSAFAC-0000000688 ['14.155', '14.195', '14.018', '14.228'] +2022-12-GSAFAC-0000001061 ['16.557', '16.524', '16.841', '16.526', '93.497', '16.575'] +``` + +## Example: Given a report ID, calculate COGOVER + +{{ rollup("COGOVER") }} + +Every audit has an agency who is either cognizant or has oversight. The FAC populates one of two fields in every record: `cognizant_agency` or `oversight_agency`. Only one of the two fields will ever be populated. + +Census included a field called `cog_over` that would be set to `C` if the audit had an agency that was cognizant, and `O` if the audit had an agency who had oversight. + +### Code example output + +If you run the sample code provided above, you should get: + +``` +2023-06-GSAFAC-0000000002 O +2023-06-GSAFAC-0000000688 O +2022-12-GSAFAC-0000001061 O +``` + +## Example: Are there questioned costs? + +{{ rollup("QCOSTS") }} + +The `QCOSTS` rollup did a bit more work. In the original table, this field looked at all questioned costs fields and if any of them were `yes`, then this field was `yes`. + +``` +IF the audit has any findings AND one of the questioned cost fields are `true` +THEN this is true +ELSE false +``` + +To compute this using the new FAC data, you need to check each of those questioned costs fields. + +### Code example output + +If you run the sample code provided above, you should get the following output. From the first 30 audits that come back, three of them have findings. + +``` +2023-01-GSAFAC-0000000854 N +2023-06-GSAFAC-0000000688 N +2022-12-GSAFAC-0000001061 N +2023-06-GSAFAC-0000000733 N +2023-06-GSAFAC-0000001206 N +2023-05-GSAFAC-0000001215 N +2021-06-GSAFAC-0000000998 N +2023-06-GSAFAC-0000002250 N +2022-12-GSAFAC-0000000861 N +2023-06-GSAFAC-0000000779 N +2023-06-GSAFAC-0000000800 N +2023-04-GSAFAC-0000000495 N +2023-02-GSAFAC-0000000773 N +2023-03-GSAFAC-0000000812 Y +2023-06-GSAFAC-0000000127 N +2023-06-GSAFAC-0000000050 N +2023-06-GSAFAC-0000000198 N +... +``` + +## Example: Are there current year findings? + +{{ rollup("CYFINDINGS") }} + +The `CYFINDINGS` field rolled up an audit's findings and, if any were found, reported `True`. To recreate the `CYFINDINGS` field, query the `/findings` endpoint for a given report ID. If there are findings, it is `True`. If there are no findings, it is `False`. + + +### Code example output + +If you run the sample code provided above, you should get the following output. From the first 5 audits that come back, none have findings. + +``` +2023-01-GSAFAC-0000000854 N +2023-06-GSAFAC-0000000688 N +2022-12-GSAFAC-0000001061 N +2023-06-GSAFAC-0000000733 N +2023-06-GSAFAC-0000001206 N +``` + +## Example: Major program report type? + + +{{ rollup("TYPEREPORT_MP") }} + +The logic for this rollup is set-based. + +``` +"U" if all TYPEREPORT_MP = U or the non-"U" values listed once +``` + +In Python, we've unpacked this in the example code as follows: + +```python + types = set() + for art in json: + if art["audit_report_type"] != "": + types.add(art["audit_report_type"]) + if types == {"U"}: + return "U" + elif "U" not in types: + return set_to_string(types) + else: + return "ERR" +``` + +For each row in `federal_awards`, look at the report type and add it to a `set`. If the end result is that the entirety of the set is `{"U"}`, return `"U"`. Otherwise, collapse the set to a single string (e.g. `"AD"`). Include the "ERR" case, but do not expect it to be possible to reach. + +### Code example output + +If you run the sample code provided above, you should get: + +``` +2023-06-GSAFAC-0000000198 U +2022-12-GSAFAC-0000000165 U +2023-06-GSAFAC-0000000339 U +2023-06-GSAFAC-0000001644 U +2023-06-GSAFAC-0000000967 U +``` + +## Example: + +{{ rollup("MATERIALWEAKNESS_MP") }} + +If any of the auditee’s findings' `MATERIALWEAKNESS` fields equal a certain value (`Y`, for example), then `MATERIAL WEAKNESS_MP` equals that value. + +``` +If any findings have MATERIALWEAKNESS = Y +Then MATERIALWEAKNESS_MP = Y +``` + +The FAC stores this value in the `general` table under the key `is_internal_control_material_weakness_disclosed`. Note that the FAC stores *yes* values as `"Yes"`, and *no* values as `"No"`. The example code maps these back to `Y/N` to demonstrate mapping values to the old-style. + +### Code example output + +If you run the sample code provided above, you should get: + +``` +2023-01-GSAFAC-0000000854 N +2023-06-GSAFAC-0000000688 N +2022-12-GSAFAC-0000001061 N +2023-06-GSAFAC-0000000733 N +2023-06-GSAFAC-0000001206 N +2023-05-GSAFAC-0000001215 N +2021-06-GSAFAC-0000000998 N +2023-06-GSAFAC-0000002250 N +2022-12-GSAFAC-0000000861 N +2023-06-GSAFAC-0000000779 N +2023-06-GSAFAC-0000000800 N +2023-04-GSAFAC-0000000495 N +2023-02-GSAFAC-0000000773 N +2023-03-GSAFAC-0000000812 Y +2023-06-GSAFAC-0000000127 N +2023-06-GSAFAC-0000000050 N +2023-06-GSAFAC-0000000198 N +2022-12-GSAFAC-0000000165 N +2023-06-GSAFAC-0000000339 N +2023-06-GSAFAC-0000001644 N +``` + +## Example: + +{{ rollup("REPORTABLECONDITION_MP") }} + +This is almost identical in construction to the previous example. + +### Code example output + +If you run the sample code provided above, you should get: + +``` +2023-01-GSAFAC-0000000854 N +2023-06-GSAFAC-0000000688 N +2022-12-GSAFAC-0000001061 N +2023-06-GSAFAC-0000000733 N +2023-06-GSAFAC-0000001206 N +2023-05-GSAFAC-0000001215 N +2021-06-GSAFAC-0000000998 N +2023-06-GSAFAC-0000002250 N +2022-12-GSAFAC-0000000861 N +2023-06-GSAFAC-0000000779 N +2023-06-GSAFAC-0000000800 N +2023-04-GSAFAC-0000000495 N +2023-02-GSAFAC-0000000773 N +2023-03-GSAFAC-0000000812 Y +2023-06-GSAFAC-0000000127 N +2023-06-GSAFAC-0000000050 N +2023-06-GSAFAC-0000000198 N +2022-12-GSAFAC-0000000165 N +2023-06-GSAFAC-0000000339 N +2023-06-GSAFAC-0000001644 N +``` + +## Example: Previous year findings? + +{{ rollup("PYSCHEDULE") }} + +This involves looking at the array of values in `agencies_with_prior_findings` in `general`, splitting on the string (and stripping any spaces for good measure) and asking whether or not any agencies had findings. + +In the Python example provided, you can do this by converting the list to a set, then deciding if the set is non-empty. + +```python + # If there is any number other than 00 listed + # Then PYSCHEDULE=Y + set_of_agencies = set() + for find in json: + numbers = list(filter(lambda n: n != "00", + [n.strip() for n in find[AWPF].split(',')] + )) + set_of_agencies.update(numbers) + # An empty set is "false" in python + return bool(set_of_agencies) +``` + +### Code example output + +If you run the sample code provided above, you should get: + +``` +2023-01-GSAFAC-0000000854 N +2023-06-GSAFAC-0000000688 N +2022-12-GSAFAC-0000001061 N +2023-06-GSAFAC-0000000733 N +2023-06-GSAFAC-0000001206 N +2023-05-GSAFAC-0000001215 N +2021-06-GSAFAC-0000000998 N +2023-06-GSAFAC-0000002250 N +2022-12-GSAFAC-0000000861 N +2023-06-GSAFAC-0000000779 Y +2023-06-GSAFAC-0000000800 N +2023-04-GSAFAC-0000000495 N +... +``` diff --git a/src/developers/v1_0_0/index.md b/src/developers/v1_0_0/index.md deleted file mode 100644 index fbeda072..00000000 --- a/src/developers/v1_0_0/index.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -layout: home.njk -title: FAC API v1.0.0 ---- - -# {{title}} - -{% include "api/v1_0_0/api-documentation-body.html" %} diff --git a/tools/openapi2uswds/.gitignore b/tools/openapi2uswds/.gitignore deleted file mode 100644 index e691d13d..00000000 --- a/tools/openapi2uswds/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -*~ -compiled -*.html -o2u -openapi-to-uswds -*.json -!template.html -!fac-template.html -assets \ No newline at end of file diff --git a/tools/openapi2uswds/Dockerfile b/tools/openapi2uswds/Dockerfile deleted file mode 100644 index 8ab08d97..00000000 --- a/tools/openapi2uswds/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM racket/racket:8.9-full - -RUN mkdir /app -COPY *.rkt /app -RUN mkdir /input -COPY template.html /input -WORKDIR /app -RUN raco pkg install \ - --auto \ - --no-cache \ - --no-docs \ - cli \ - gregor \ - http-easy -RUN raco exe -o openapi-to-uswds main.rkt ;\ - raco distribute o2u openapi-to-uswds -RUN mkdir /output -ENTRYPOINT ["/app/o2u/bin/openapi-to-uswds", "--output-directory", "/output", "--input-directory", "/input"] diff --git a/tools/openapi2uswds/README.md b/tools/openapi2uswds/README.md deleted file mode 100644 index 01de5f3b..00000000 --- a/tools/openapi2uswds/README.md +++ /dev/null @@ -1,63 +0,0 @@ -## To build - -``` -docker build -t fac/o2u -f Dockerfile . -``` - -## To run - -``` -docker run -v ${PWD}:/output fac/o2u --url -``` - -## For help - -``` -docker run fac/o2u --help -``` - -## Input and output - -The tool defaults to the output directory `/output`; hence, mapping - -``` --v :/output -``` - -will set where the output file should be rendered. - -``` -docker run -v ${PWD}/output fac/o2u --url -``` - -will render the URL through a default template to the file `api-documentation.html`. - -The output filename can be changed with `--outfile`. - -To use a different template, it needs to be placed in the input directory. You should map this as well. - -``` -docker run -v ${PWD}:/output -v ${PWD}:/input fac/o2u --url -``` - -It is possible to run against a file instead of a URL, but it, too, should be in the input directory. - -``` -docker run -v ${PWD}:/output -v ${PWD}:/input fac/o2u --file -``` - -## Running locally - -``` -racket main.rkt -``` - -will run the application. It defaults to the current directory for input and output directories. - -``` -racket main.rkt --url -``` - -is the equivalent to the dockerized commands above. - -Tested with Racket 8.9. Probably good back to at least Racket 8.6. \ No newline at end of file diff --git a/tools/openapi2uswds/as-sexp.rkt b/tools/openapi2uswds/as-sexp.rkt deleted file mode 100644 index 6261b37a..00000000 --- a/tools/openapi2uswds/as-sexp.rkt +++ /dev/null @@ -1,5259 +0,0 @@ -'#hasheq((basePath . "/") - (consumes - . - ("application/json" "application/vnd.pgrst.object+json" "text/csv")) - (definitions - . - #hasheq((vw_auditee - . - #hasheq((description - . - "Information about the entity undergoing the audit") - (properties - . - #hasheq((auditee_certify_name - . - #hasheq((description - . - "Name of Auditee Certifying Official Data sources: SF-SAC 1997-2000: I/6/g; SF-SAC 2001-2003: I/6/g; SF-SAC 2004-2007: I/6/g; SF-SAC 2008-2009: I/5/g; SF-SAC 2010-2012: I/5/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEECERTIFYNAME") - (format . "character varying") - (maxLength . 50) - (type . "string"))) - (auditee_certify_title - . - #hasheq((description - . - "Title of Auditee Certifying Official Data sources: SF-SAC 1997-2000: I/6/g; SF-SAC 2001-2003: I/6/g; SF-SAC 2004-2007: I/6/g; SF-SAC 2008-2009: I/5/g; SF-SAC 2010-2012: I/5/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEECERTIFYTITLE") - (format . "character varying") - (maxLength . 50) - (type . "string"))) - (auditee_city - . - #hasheq((description - . - "Auditee City Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, CITY") - (format . "character varying") - (maxLength . 30) - (type . "string"))) - (auditee_contact - . - #hasheq((description - . - "Name of Auditee Contact Data sources: SF-SAC 1997-2000: I/6/c; SF-SAC 2001-2003: I/6/c; SF-SAC 2004-2007: I/6/c; SF-SAC 2008-2009: I/5/c; SF-SAC 2010-2012: I/5/c; SF-SAC 2013-2015: I/5/c; SF-SAC 2016-2018: I/5/c; SF-SAC 2019-2021: I/5/c; SF-SAC 2022: I/5/c Census mapping: GENERAL, AUDITEECONTACT") - (format . "character varying") - (maxLength . 50) - (type . "string"))) - (auditee_email - . - #hasheq((description - . - "Auditee Email address Data sources: SF-SAC 1997-2000: I/6/f; SF-SAC 2001-2003: I/6/f; SF-SAC 2004-2007: I/6/f; SF-SAC 2008-2009: I/5/f; SF-SAC 2010-2012: I/5/f; SF-SAC 2013-2015: I/5/f; SF-SAC 2016-2018: I/5/e; SF-SAC 2019-2021: I/5/e; SF-SAC 2022: I/5/e Census mapping: GENERAL, AUDITEEEMAIL") - (format . "character varying") - (maxLength . 60) - (type . "string"))) - (auditee_fax - . - #hasheq((description - . - "Auditee Fax Number (optional) Data sources: SF-SAC 1997-2000: I/6/e; SF-SAC 2001-2003: I/6/e; SF-SAC 2004-2007: I/6/e; SF-SAC 2008-2009: I/5/e; SF-SAC 2010-2012: I/5/e; SF-SAC 2013-2015: I/5/e Census mapping: GENERAL, AUDITEEFAX") - (format . "bigint") - (type . "integer"))) - (auditee_name - . - #hasheq((description - . - "Name of the Auditee Data sources: SF-SAC 1997-2000: I/6/a; SF-SAC 2001-2003: I/6/a; SF-SAC 2004-2007: I/6/a; SF-SAC 2008-2009: I/5/a; SF-SAC 2010-2012: I/5/a; SF-SAC 2013-2015: I/5/a; SF-SAC 2016-2018: I/5/a; SF-SAC 2019-2021: I/5/a; SF-SAC 2022: I/5/a Census mapping: GENERAL, AUDITEENAME") - (format . "character varying") - (maxLength . 70) - (type . "string"))) - (auditee_name_title - . - #hasheq((description - . - "Title of Auditee Certifying Official Data sources: SF-SAC 1997-2000: I/6/g; SF-SAC 2001-2003: I/6/g; SF-SAC 2004-2007: I/6/g; SF-SAC 2008-2009: I/5/g; SF-SAC 2010-2012: I/5/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEENAMETITLE") - (format . "character varying") - (maxLength . 70) - (type . "string"))) - (auditee_phone - . - #hasheq((description - . - "Auditee Phone Number Data sources: SF-SAC 1997-2000: I/6/d; SF-SAC 2001-2003: I/6/d; SF-SAC 2004-2007: I/6/d; SF-SAC 2008-2009: I/5/d; SF-SAC 2010-2012: I/5/d; SF-SAC 2013-2015: I/5/d; SF-SAC 2016-2018: I/5/d; SF-SAC 2019-2021: I/5/d; SF-SAC 2022: I/5/d Census mapping: GENERAL, AUDITEEPHONE") - (format . "bigint") - (type . "integer"))) - (auditee_state - . - #hasheq((description - . - "Auditee State Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, STATE") - (format . "character varying") - (maxLength . 2) - (type . "string"))) - (auditee_street1 - . - #hasheq((description - . - "Auditee Street Address Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, STREET1") - (format . "character varying") - (maxLength . 45) - (type . "string"))) - (auditee_street2 - . - #hasheq((description - . - "Auditee Street Address Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, STREET2") - (format . "character varying") - (maxLength . 45) - (type . "string"))) - (auditee_title - . - #hasheq((description - . - "Title of Auditee Contact Data sources: SF-SAC 1997-2000: I/6/c; SF-SAC 2001-2003: I/6/c; SF-SAC 2004-2007: I/6/c; SF-SAC 2008-2009: I/5/c; SF-SAC 2010-2012: I/5/c; SF-SAC 2013-2015: I/5/c; SF-SAC 2016-2018: I/5/c; SF-SAC 2019-2021: I/5/c; SF-SAC 2022: I/5/c Census mapping: GENERAL, AUDITEETITLE") - (format . "character varying") - (maxLength . 40) - (type . "string"))) - (auditee_zip_code - . - #hasheq((description - . - "Auditee Zip Code Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, ZIPCODE") - (format . "character varying") - (maxLength . 12) - (type . "string"))) - (dbkey - . - #hasheq((format . "character varying[]") - (items - . - #hasheq((type . "string"))) - (type . "array"))) - (duns_list - . - #hasheq((description . "duns list ") - (format . "integer[]") - (items - . - #hasheq((type . "integer"))) - (type . "array"))) - (ein_list - . - #hasheq((description . "ein list ") - (format . "integer[]") - (items - . - #hasheq((type . "integer"))) - (type . "array"))) - (ein_subcode - . - #hasheq((description - . - "Subcode assigned to the EIN. Census mapping: GENERAL, EINSUBCODE") - (format . "integer") - (type . "integer"))) - (general_id - . - #hasheq((format . "bigint[]") - (items - . - #hasheq((type . "integer"))) - (type . "array"))) - (id - . - #hasheq((description - . - "ID \n\nNote:\nThis is a Primary Key.") - (format . "bigint") - (type . "integer"))) - (is_public - . - #hasheq((description - . - "True if appears in a public record ") - (format . "boolean") - (type . "boolean"))) - (uei_list - . - #hasheq((description . "uei list ") - (format . "character varying[]") - (items - . - #hasheq((type . "string"))) - (type . "array"))))) - (type . "object"))) - (vw_auditor - . - #hasheq((description - . - "Information about the Auditing CPA firm conducting the audit") - (properties - . - #hasheq((cpa_city - . - #hasheq((description - . - "CPA City Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPACITY (AND) Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/d; SF-SAC 2016-2018: I/8/d; SF-SAC 2019-2021: I/6/h/iv; SF-SAC 2022: I/6/h/iv Census mapping: MULTIPLE CPAS INFO, CPACITY") - (format . "character varying") - (maxLength . 30) - (type . "string"))) - (cpa_contact - . - #hasheq((description - . - "Name of CPA Contact Data sources: SF-SAC 1997-2000: I/7/c; SF-SAC 2001-2003: I/7/c; SF-SAC 2004-2007: I/7/c; SF-SAC 2008-2009: I/6/c; SF-SAC 2010-2012: I/6/c; SF-SAC 2013-2015: I/6/d; SF-SAC 2016-2018: I/6/d; SF-SAC 2019-2021: I/6/d; SF-SAC 2022: I/6/d Census mapping: GENERAL, CPACONTACT (AND) Data sources: SF-SAC 2008-2009: I/8/c; SF-SAC 2010-2012: I/8/c; SF-SAC 2013-2015: I/8/g; SF-SAC 2016-2018: I/8/g; SF-SAC 2019-2021: I/6/h/vii; SF-SAC 2022: I/6/h/vii Census mapping: MULTIPLE CPAS INFO, CPACONTACT") - (format . "character varying") - (maxLength . 50) - (type . "string"))) - (cpa_country - . - #hasheq((description - . - "CPA Country Data sources: SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPACOUNTRY") - (format . "character varying") - (maxLength . 6) - (type . "string"))) - (cpa_ein - . - #hasheq((description - . - "CPA Firm EIN (only available for audit years 2013 and beyond) Data sources: SF-SAC 2013-2015: I/6/b; SF-SAC 2016-2018: I/6/b; SF-SAC 2019-2021: I/6/b; SF-SAC 2022: I/6/b Census mapping: GENERAL, AUDITOR_EIN (AND) Data sources: SF-SAC 2013-2015: I/8/b; SF-SAC 2016-2018: I/8/b; SF-SAC 2019-2021: I/6/h/ii; SF-SAC 2022: I/6/h/ii Census mapping: MULTIPLE CPAS INFO, CPAEIN") - (format . "integer") - (type . "integer"))) - (cpa_email - . - #hasheq((description - . - "CPA mail address (optional) Data sources: SF-SAC 1997-2000: I/7/f; SF-SAC 2001-2003: I/7/f; SF-SAC 2004-2007: I/7/f; SF-SAC 2008-2009: I/6/f; SF-SAC 2010-2012: I/6/f; SF-SAC 2013-2015: I/6/g; SF-SAC 2016-2018: I/6/f; SF-SAC 2019-2021: I/6/f; SF-SAC 2022: I/6/f Census mapping: GENERAL, CPAEMAIL (AND) Data sources: SF-SAC 2008-2009: I/8/f; SF-SAC 2010-2012: I/8/f; SF-SAC 2013-2015: I/8/k; SF-SAC 2016-2018: I/8/k; SF-SAC 2019-2021: I/6/h/x; SF-SAC 2022: I/6/h/x Census mapping: MULTIPLE CPAS INFO, CPAEMAIL") - (format . "character varying") - (maxLength . 60) - (type . "string"))) - (cpa_fax - . - #hasheq((description - . - "CPA fax number (optional) Data sources: SF-SAC 1997-2000: I/7/e; SF-SAC 2001-2003: I/7/e; SF-SAC 2004-2007: I/7/e; SF-SAC 2008-2009: I/6/e; SF-SAC 2010-2012: I/6/e; SF-SAC 2013-2015: I/6/f Census mapping: GENERAL, CPAFAX (AND) Data sources: SF-SAC 2008-2009: I/8/e; SF-SAC 2010-2012: I/8/e; SF-SAC 2013-2015: I/8/j; SF-SAC 2016-2018: I/8/j Census mapping: MULTIPLE CPAS INFO, CPAFAX") - (format . "bigint") - (type . "integer"))) - (cpa_firm_name - . - #hasheq((description - . - "CPA Firm Name Data sources: SF-SAC 1997-2000: I/7/a; SF-SAC 2001-2003: I/7/a; SF-SAC 2004-2007: I/7/a; SF-SAC 2008-2009: I/6/a; SF-SAC 2010-2012: I/6/a; SF-SAC 2013-2015: I/6/a; SF-SAC 2016-2018: I/6/a; SF-SAC 2019-2021: I/6/a; SF-SAC 2022: I/6/a Census mapping: GENERAL, CPAFIRMNAME (AND) Data sources: SF-SAC 2008-2009: I/8/a; SF-SAC 2010-2012: I/8/a; SF-SAC 2013-2015: I/8/a; SF-SAC 2016-2018: I/8/a; SF-SAC 2019-2021: I/6/h/i; SF-SAC 2022: I/6/h/i Census mapping: MULTIPLE CPAS INFO, CPAFIRMNAME") - (format . "character varying") - (maxLength . 64) - (type . "string"))) - (cpa_foreign - . - #hasheq((description - . - "CPA Address - if international Data sources: SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPAFOREIGN") - (format . "character varying") - (maxLength . 200) - (type . "string"))) - (cpa_phone - . - #hasheq((description - . - "CPA phone number Data sources: SF-SAC 1997-2000: I/7/d; SF-SAC 2001-2003: I/7/d; SF-SAC 2004-2007: I/7/d; SF-SAC 2008-2009: I/6/d; SF-SAC 2010-2012: I/6/d; SF-SAC 2013-2015: I/6/e; SF-SAC 2016-2018: I/6/e; SF-SAC 2019-2021: I/6/e; SF-SAC 2022: I/6/e Census mapping: GENERAL, CPAPHONE (AND) Data sources: SF-SAC 2008-2009: I/8/d; SF-SAC 2010-2012: I/8/d; SF-SAC 2013-2015: I/8/i; SF-SAC 2016-2018: I/8/i; SF-SAC 2019-2021: I/6/h/ix; SF-SAC 2022: I/6/h/ix Census mapping: MULTIPLE CPAS INFO, CPAPHONE") - (format . "bigint") - (type . "integer"))) - (cpa_state - . - #hasheq((description - . - "CPA State Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPASTATE (AND) Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/e; SF-SAC 2016-2018: I/8/e; SF-SAC 2019-2021: I/6/h/v; SF-SAC 2022: I/6/h/v Census mapping: MULTIPLE CPAS INFO, CPASTATE") - (format . "character varying") - (maxLength . 2) - (type . "string"))) - (cpa_street1 - . - #hasheq((description - . - "CPA Street Address Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPASTREET1 (AND) Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/c; SF-SAC 2016-2018: I/8/c; SF-SAC 2019-2021: I/6/h/iii; SF-SAC 2022: I/6/h/iii Census mapping: MULTIPLE CPAS INFO, CPASTREET1") - (format . "character varying") - (maxLength . 45) - (type . "string"))) - (cpa_street2 - . - #hasheq((description - . - "CPA Street Address, line 2 Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPASTREET2") - (format . "character varying") - (maxLength . 45) - (type . "string"))) - (cpa_title - . - #hasheq((description - . - "Title of CPA Contact Data sources: SF-SAC 1997-2000: I/7/c; SF-SAC 2001-2003: I/7/c; SF-SAC 2004-2007: I/7/c; SF-SAC 2008-2009: I/6/c; SF-SAC 2010-2012: I/6/c; SF-SAC 2013-2015: I/6/d; SF-SAC 2016-2018: I/6/d; SF-SAC 2019-2021: I/6/d; SF-SAC 2022: I/6/d Census mapping: GENERAL, CPATITLE (AND) Data sources: SF-SAC 2008-2009: I/8/c; SF-SAC 2010-2012: I/8/c; SF-SAC 2013-2015: I/8/h; SF-SAC 2016-2018: I/8/h; SF-SAC 2019-2021: I/6/h/viii; SF-SAC 2022: I/6/h/viii Census mapping: MULTIPLE CPAS INFO, CPATITLE") - (format . "character varying") - (maxLength . 40) - (type . "string"))) - (cpa_zip_code - . - #hasheq((description - . - "CPA Zip Code Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPAZIPCODE (AND) Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/f; SF-SAC 2016-2018: I/8/f; SF-SAC 2019-2021: I/6/h/vi; SF-SAC 2022: I/6/h/vi Census mapping: MULTIPLE CPAS INFO, CPAZIPCODE") - (format . "character varying") - (maxLength . 12) - (type . "string"))) - (general_id - . - #hasheq((format . "bigint[]") - (items - . - #hasheq((type . "integer"))) - (type . "array"))) - (id - . - #hasheq((description - . - "ID \n\nNote:\nThis is a Primary Key.") - (format . "bigint") - (type . "integer"))) - (is_public - . - #hasheq((description - . - "True if appears in a public record ") - (format . "boolean") - (type . "boolean"))) - (secondary_auditor_general_id - . - #hasheq((format . "bigint[]") - (items - . - #hasheq((type . "integer"))) - (type . "array"))) - (sequence_number - . - #hasheq((description - . - "Order that Auditors were reported on page 5 of SF-SAC (only for secondary_auditors) Census mapping: GENERAL, SEQNUM (AND) Census mapping: MULTIPLE CPAS INFO, SEQNUM") - (format . "integer") - (type . "integer"))))) - (type . "object"))) - (vw_cap_text - . - #hasheq((properties - . - #hasheq((audit_year - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))) - (auditee_ein - . - #hasheq((format . "integer") - (type . "integer"))) - (auditee_uei - . - #hasheq((format . "character varying") - (type . "string"))) - (cap_text - . - #hasheq((format . "text") - (type . "string"))) - (charts_tables - . - #hasheq((format . "boolean") - (type . "boolean"))) - (finding_ref_number - . - #hasheq((format . "character varying") - (maxLength . 100) - (type . "string"))) - (fy_end_date - . - #hasheq((format . "date") - (type . "string"))) - (fy_start_date - . - #hasheq((format . "date") - (type . "string"))) - (id - . - #hasheq((description - . - "Note:\nThis is a Primary Key.") - (format . "bigint") - (type . "integer"))) - (report_id - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))))) - (type . "object"))) - (vw_federal_award - . - #hasheq((properties - . - #hasheq((additional_award_identification - . - #hasheq((format . "character varying") - (maxLength . 50) - (type . "string"))) - (amount_expended - . - #hasheq((format . "bigint") - (type . "integer"))) - (audit_year - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))) - (auditee_ein - . - #hasheq((format . "integer") - (type . "integer"))) - (auditee_uei - . - #hasheq((format . "character varying") - (type . "string"))) - (award_seq_number - . - #hasheq((format . "integer") - (type . "integer"))) - (cluster_name - . - #hasheq((format . "character varying") - (maxLength . 75) - (type . "string"))) - (cluster_total - . - #hasheq((format . "bigint") - (type . "integer"))) - (federal_agency_prefix - . - #hasheq((format . "character varying") - (maxLength . 2) - (type . "string"))) - (federal_award_extension - . - #hasheq((format . "character varying") - (maxLength . 3) - (type . "string"))) - (federal_program_name - . - #hasheq((format . "character varying") - (maxLength . 300) - (type . "string"))) - (federal_program_total - . - #hasheq((format . "bigint") - (type . "integer"))) - (findings_count - . - #hasheq((format . "integer") - (type . "integer"))) - (fy_end_date - . - #hasheq((format . "date") - (type . "string"))) - (fy_start_date - . - #hasheq((format . "date") - (type . "string"))) - (id - . - #hasheq((description - . - "Note:\nThis is a Primary Key.") - (format . "bigint") - (type . "integer"))) - (is_direct - . - #hasheq((format . "boolean") - (type . "boolean"))) - (is_loan - . - #hasheq((format . "boolean") - (type . "boolean"))) - (is_major - . - #hasheq((format . "boolean") - (type . "boolean"))) - (loan_balance_at_audit_period_end - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))) - (mp_audit_report_type - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))) - (other_cluster_name - . - #hasheq((format . "character varying") - (maxLength . 75) - (type . "string"))) - (passthrough_amount - . - #hasheq((format . "bigint") - (type . "integer"))) - (passthrough_award - . - #hasheq((format . "boolean") - (type . "boolean"))) - (report_id - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))) - (state_cluster_name - . - #hasheq((format . "character varying") - (maxLength . 75) - (type . "string"))) - (type_requirement - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))))) - (type . "object"))) - (vw_finding - . - #hasheq((properties - . - #hasheq((audit_year - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))) - (auditee_ein - . - #hasheq((format . "integer") - (type . "integer"))) - (auditee_uei - . - #hasheq((format . "character varying") - (type . "string"))) - (award_seq_number - . - #hasheq((format . "integer") - (type . "integer"))) - (federal_agency_prefix - . - #hasheq((format . "character varying") - (maxLength . 2) - (type . "string"))) - (federal_award_extension - . - #hasheq((format . "character varying") - (maxLength . 3) - (type . "string"))) - (finding_ref_number - . - #hasheq((format . "character varying") - (maxLength . 100) - (type . "string"))) - (finding_seq_number - . - #hasheq((format . "integer") - (type . "integer"))) - (fy_end_date - . - #hasheq((format . "date") - (type . "string"))) - (fy_start_date - . - #hasheq((format . "date") - (type . "string"))) - (id - . - #hasheq((description - . - "Note:\nThis is a Primary Key.") - (format . "bigint") - (type . "integer"))) - (is_material_weakness - . - #hasheq((format . "boolean") - (type . "boolean"))) - (is_significant_deficiency - . - #hasheq((format . "boolean") - (type . "boolean"))) - (modified_opinion - . - #hasheq((format . "boolean") - (type . "boolean"))) - (other_findings - . - #hasheq((format . "boolean") - (type . "boolean"))) - (other_non_compliance - . - #hasheq((format . "boolean") - (type . "boolean"))) - (prior_finding_ref_numbers - . - #hasheq((format . "character varying") - (maxLength . 100) - (type . "string"))) - (questioned_costs - . - #hasheq((format . "boolean") - (type . "boolean"))) - (repeat_finding - . - #hasheq((format . "boolean") - (type . "boolean"))) - (report_id - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))) - (type_requirement - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))))) - (type . "object"))) - (vw_finding_text - . - #hasheq((properties - . - #hasheq((audit_year - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))) - (auditee_ein - . - #hasheq((format . "integer") - (type . "integer"))) - (auditee_uei - . - #hasheq((format . "character varying") - (type . "string"))) - (charts_tables - . - #hasheq((format . "boolean") - (type . "boolean"))) - (finding_ref_number - . - #hasheq((format . "character varying") - (maxLength . 100) - (type . "string"))) - (finding_text - . - #hasheq((format . "text") - (type . "string"))) - (fy_end_date - . - #hasheq((format . "date") - (type . "string"))) - (fy_start_date - . - #hasheq((format . "date") - (type . "string"))) - (id - . - #hasheq((description - . - "Note:\nThis is a Primary Key.") - (format . "bigint") - (type . "integer"))) - (report_id - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))))) - (type . "object"))) - (vw_findings - . - #hasheq((description . "A finding from the audit") - (properties - . - #hasheq((audit_findings_id - . - #hasheq((description - . - "FAC system generated sequence number for finding Census mapping: FINDINGS, ELECAUDITFINDINGSID") - (format . "integer") - (type . "integer"))) - (audit_id - . - #hasheq((description - . - "FAC system generated sequence number used to link to Findings data between CFDA Info and Findings Census mapping: FINDINGS, ELECAUDITSID") - (format . "integer") - (type . "integer"))) - (audit_year - . - #hasheq((description - . - "Audit Year and DBKEY (database key) combined make up the primary key. Census mapping: FINDINGS, AUDITYEAR") - (format . "character varying") - (maxLength . 40) - (type . "string"))) - (dbkey - . - #hasheq((description - . - "Audit Year and DBKEY (database key) combined make up the primary key. Census mapping: FINDINGS, DBKEY") - (format . "character varying") - (maxLength . 40) - (type . "string"))) - (finding_ref_number - . - #hasheq((description - . - "Findings Reference Numbers Data sources: SF-SAC 2013-2015: III/7/d; SF-SAC 2016-2018: III/4/e; SF-SAC 2019-2021: III/4/e; SF-SAC 2022: III/4/e Census mapping: FINDINGS, FINDINGSREFNUMS") - (format . "character varying") - (maxLength . 100) - (type . "string"))) - (findings_text_id - . - #hasheq((format . "bigint[]") - (items - . - #hasheq((type . "integer"))) - (type . "array"))) - (general_id - . - #hasheq((format . "bigint[]") - (items - . - #hasheq((type . "integer"))) - (type . "array"))) - (id - . - #hasheq((description - . - "ID \n\nNote:\nThis is a Primary Key.") - (format . "bigint") - (type . "integer"))) - (is_public - . - #hasheq((description - . - "True for public records, False for non-public records ") - (format . "boolean") - (type . "boolean"))) - (material_weakness - . - #hasheq((description - . - "Material Weakness finding Data sources: SF-SAC 2013-2015: III/7/h; SF-SAC 2016-2018: III/4/i; SF-SAC 2019-2021: III/4/i; SF-SAC 2022: III/4/i Census mapping: FINDINGS, MATERIALWEAKNESS") - (format . "boolean") - (type . "boolean"))) - (modified_opinion - . - #hasheq((description - . - "Modified Opinion finding Data sources: SF-SAC 2013-2015: III/7/f; SF-SAC 2016-2018: III/4/g; SF-SAC 2019-2021: III/4/g; SF-SAC 2022: III/4/g Census mapping: FINDINGS, MODIFIEDOPINION") - (format . "boolean") - (type . "boolean"))) - (other_findings - . - #hasheq((description - . - "Other findings Data sources: SF-SAC 2013-2015: III/7/j; SF-SAC 2016-2018: III/4/k; SF-SAC 2019-2021: III/4/k; SF-SAC 2022: III/4/k Census mapping: FINDINGS, OTHERFINDINGS") - (format . "boolean") - (type . "boolean"))) - (other_non_compliance - . - #hasheq((description - . - "Other Noncompliance finding Data sources: SF-SAC 2013-2015: III/7/g; SF-SAC 2016-2018: III/4/h; SF-SAC 2019-2021: III/4/h; SF-SAC 2022: III/4/h Census mapping: FINDINGS, OTHERNONCOMPLIANCE") - (format . "boolean") - (type . "boolean"))) - (prior_finding_ref_numbers - . - #hasheq((description - . - "Audit finding reference numbers from the immediate prior audit Data sources: SF-SAC 2016-2018: III/4/n; SF-SAC 2019-2021: III/4/n; SF-SAC 2022: III/4/n Census mapping: FINDINGS, PRIORFINDINGREFNUMS") - (format . "character varying") - (maxLength . 100) - (type . "string"))) - (questioned_costs - . - #hasheq((description - . - "Questioned Costs Data sources: SF-SAC 2013-2015: III/7/k; SF-SAC 2016-2018: III/4/l; SF-SAC 2019-2021: III/4/l; SF-SAC 2022: III/4/l Census mapping: FINDINGS, QCOSTS") - (format . "boolean") - (type . "boolean"))) - (repeat_finding - . - #hasheq((description - . - "Indicates whether or not the audit finding was a repeat of an audit finding in the immediate prior audit Data sources: SF-SAC 2016-2018: III/4/m; SF-SAC 2019-2021: III/4/m; SF-SAC 2022: III/4/m Census mapping: FINDINGS, REPEATFINDING") - (format . "boolean") - (type . "boolean"))) - (significant_deficiency - . - #hasheq((description - . - "Significant Deficiency finding Data sources: SF-SAC 1997-2000: II/3; SF-SAC 2001-2003: II/3; SF-SAC 2004-2007: II/3; SF-SAC 2008-2009: II/3; SF-SAC 2010-2012: II/3; SF-SAC 2013-2015: II/3; SF-SAC 2016-2018: III/2/c; SF-SAC 2019-2021: III/2/c; SF-SAC 2022: III/2/c Census mapping: FINDINGS, SIGNIFICANTDEFICIENCY") - (format . "boolean") - (type . "boolean"))) - (type_requirement - . - #hasheq((description - . - "Type Requirement Failure Data sources: SF-SAC 2013-2015: III/7/e; SF-SAC 2016-2018: III/4/f; SF-SAC 2019-2021: III/4/f; SF-SAC 2022: III/4/f Census mapping: FINDINGS, TYPEREQUIREMENT") - (format . "character varying") - (maxLength . 40) - (type . "string"))))) - (type . "object"))) - (vw_findings_text - . - #hasheq((description . "Specific findings details") - (properties - . - #hasheq((audit_year - . - #hasheq((description - . - "Audit Year and DBKEY (database key) combined make up the primary key. Census mapping: FINDINGSTEXT, AUDITYEAR") - (format . "character varying") - (maxLength . 40) - (type . "string"))) - (charts_tables - . - #hasheq((description - . - "Indicates whether or not the text contained charts or tables that could not be entered due to formatting restrictions Census mapping: FINDINGSTEXT, CHARTSTABLES") - (format . "boolean") - (type . "boolean"))) - (dbkey - . - #hasheq((description - . - "Audit Year and DBKEY (database key) combined make up the primary key. Census mapping: FINDINGSTEXT, DBKEY") - (format . "character varying") - (maxLength . 40) - (type . "string"))) - (finding_ref_number - . - #hasheq((description - . - "Audit Finding Reference Number Data sources: SF-SAC 2019-2021: III/5/a; SF-SAC 2022: III/5/a Census mapping: FINDINGSTEXT, FINDINGREFNUMS") - (format . "character varying") - (maxLength . 100) - (type . "string"))) - (general_id - . - #hasheq((format . "bigint[]") - (items - . - #hasheq((type . "integer"))) - (type . "array"))) - (id - . - #hasheq((description - . - "ID \n\nNote:\nThis is a Primary Key.") - (format . "bigint") - (type . "integer"))) - (is_public - . - #hasheq((description - . - "True for public records, False for non-public records ") - (format . "boolean") - (type . "boolean"))) - (sequence_number - . - #hasheq((description - . - "Order that the findings text was reported Census mapping: FINDINGSTEXT, SEQ_NUMBER") - (format . "integer") - (type . "integer"))) - (text - . - #hasheq((description - . - "Content of the finding text Data sources: SF-SAC 2019-2021: III/5/b; SF-SAC 2022: III/5/b Census mapping: FINDINGSTEXT, TEXT") - (format . "text") - (type . "string"))))) - (type . "object"))) - (vw_general - . - #hasheq((properties - . - #hasheq((audit_period_covered - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))) - (audit_type - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))) - (audit_year - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))) - (auditee_addl_duns_list - . - #hasheq((format . "character varying[]") - (items - . - #hasheq((type . "string"))) - (type . "array"))) - (auditee_addl_ein_list - . - #hasheq((format . "integer[]") - (items - . - #hasheq((type . "integer"))) - (type . "array"))) - (auditee_addl_uei_list - . - #hasheq((format . "character varying[]") - (items - . - #hasheq((type . "string"))) - (type . "array"))) - (auditee_address_line_1 - . - #hasheq((format . "character varying") - (maxLength . 45) - (type . "string"))) - (auditee_certified_date - . - #hasheq((format . "date") - (type . "string"))) - (auditee_certify_name - . - #hasheq((format . "character varying") - (maxLength . 50) - (type . "string"))) - (auditee_certify_title - . - #hasheq((format . "character varying") - (maxLength . 50) - (type . "string"))) - (auditee_city - . - #hasheq((format . "character varying") - (maxLength . 30) - (type . "string"))) - (auditee_contact_name - . - #hasheq((format . "character varying") - (maxLength . 50) - (type . "string"))) - (auditee_contact_title - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))) - (auditee_duns - . - #hasheq((format . "character varying[]") - (items - . - #hasheq((type . "string"))) - (type . "array"))) - (auditee_ein - . - #hasheq((format . "integer") - (type . "integer"))) - (auditee_email - . - #hasheq((format . "character varying") - (maxLength . 60) - (type . "string"))) - (auditee_name - . - #hasheq((format . "character varying") - (maxLength . 70) - (type . "string"))) - (auditee_phone - . - #hasheq((format . "bigint") - (type . "integer"))) - (auditee_state - . - #hasheq((format . "character varying") - (maxLength . 2) - (type . "string"))) - (auditee_uei - . - #hasheq((format . "character varying") - (type . "string"))) - (auditee_zip - . - #hasheq((format . "character varying") - (maxLength . 12) - (type . "string"))) - (auditor_address_line_1 - . - #hasheq((format . "character varying") - (maxLength . 45) - (type . "string"))) - (auditor_certified_date - . - #hasheq((format . "date") - (type . "string"))) - (auditor_city - . - #hasheq((format . "character varying") - (maxLength . 30) - (type . "string"))) - (auditor_contact_name - . - #hasheq((format . "character varying") - (maxLength . 50) - (type . "string"))) - (auditor_contact_title - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))) - (auditor_country - . - #hasheq((format . "character varying") - (maxLength . 45) - (type . "string"))) - (auditor_ein - . - #hasheq((format . "integer") - (type . "integer"))) - (auditor_email - . - #hasheq((format . "character varying") - (maxLength . 60) - (type . "string"))) - (auditor_firm_name - . - #hasheq((format . "character varying") - (maxLength . 64) - (type . "string"))) - (auditor_foreign_addr - . - #hasheq((format . "character varying") - (maxLength . 200) - (type . "string"))) - (auditor_phone - . - #hasheq((format . "bigint") - (type . "integer"))) - (auditor_state - . - #hasheq((format . "character varying") - (maxLength . 2) - (type . "string"))) - (auditor_zip - . - #hasheq((format . "character varying") - (maxLength . 12) - (type . "string"))) - (cfac_report_id - . - #hasheq((format . "character varying") - (type . "string"))) - (cfac_version - . - #hasheq((format . "character varying") - (type . "string"))) - (cognizant_agency - . - #hasheq((format . "character varying") - (maxLength . 2) - (type . "string"))) - (condition_or_deficiency_major_program - . - #hasheq((format . "boolean") - (type . "boolean"))) - (create_date - . - #hasheq((format - . - "timestamp with time zone") - (type . "string"))) - (current_or_former_findings - . - #hasheq((format . "boolean") - (type . "boolean"))) - (data_source - . - #hasheq((format . "character varying") - (maxLength . 25) - (type . "string"))) - (date_published - . - #hasheq((format . "date") - (type . "string"))) - (date_received - . - #hasheq((format . "date") - (type . "string"))) - (dbkey - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))) - (dollar_threshold - . - #hasheq((format . "double precision") - (type . "number"))) - (ein_subcode - . - #hasheq((format . "integer") - (type . "integer"))) - (entity_type - . - #hasheq((format . "character varying") - (maxLength . 50) - (type . "string"))) - (fac_accepted_date - . - #hasheq((format . "date") - (type . "string"))) - (federal_agency_prefix - . - #hasheq((format . "character varying") - (maxLength . 2) - (type . "string"))) - (federal_award_extension - . - #hasheq((format . "character varying") - (maxLength . 3) - (type . "string"))) - (form_date_received - . - #hasheq((format . "date") - (type . "string"))) - (fy_end_date - . - #hasheq((format . "date") - (type . "string"))) - (fy_start_date - . - #hasheq((format . "date") - (type . "string"))) - (hist_auditee_address_line_2 - . - #hasheq((format . "character varying") - (maxLength . 45) - (type . "string"))) - (hist_auditee_fax - . - #hasheq((format . "bigint") - (type . "integer"))) - (hist_auditor_address_line_2 - . - #hasheq((format . "character varying") - (maxLength . 45) - (type . "string"))) - (hist_auditor_fax - . - #hasheq((format . "bigint") - (type . "integer"))) - (hist_completed_date - . - #hasheq((format . "date") - (type . "string"))) - (hist_component_date_received - . - #hasheq((format . "date") - (type . "string"))) - (hist_previous_completed_on - . - #hasheq((format . "date") - (type . "string"))) - (hist_previous_date_published - . - #hasheq((format . "date") - (type . "string"))) - (hist_reportable_condition - . - #hasheq((format . "boolean") - (type . "boolean"))) - (hist_type_of_entity - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))) - (id - . - #hasheq((description - . - "Note:\nThis is a Primary Key.") - (format . "bigint") - (type . "integer"))) - (initial_date_received - . - #hasheq((format . "date") - (type . "string"))) - (is_duplicate_reports - . - #hasheq((format . "boolean") - (type . "boolean"))) - (is_going_concern - . - #hasheq((format . "boolean") - (type . "boolean"))) - (is_low_risk - . - #hasheq((format . "boolean") - (type . "boolean"))) - (is_material_noncompliance - . - #hasheq((format . "boolean") - (type . "boolean"))) - (is_material_weakness - . - #hasheq((format . "boolean") - (type . "boolean"))) - (is_public - . - #hasheq((format . "boolean") - (type . "boolean"))) - (is_significant_deficiency - . - #hasheq((format . "boolean") - (type . "boolean"))) - (is_special_framework_required - . - #hasheq((format . "boolean") - (type . "boolean"))) - (material_weakness - . - #hasheq((format . "boolean") - (type . "boolean"))) - (material_weakness_major_program - . - #hasheq((format . "boolean") - (type . "boolean"))) - (modified_date - . - #hasheq((format - . - "timestamp with time zone") - (type . "string"))) - (multiple_auditors - . - #hasheq((format . "boolean") - (type . "boolean"))) - (multiple_duns - . - #hasheq((format . "boolean") - (type . "boolean"))) - (multiple_ein - . - #hasheq((format . "boolean") - (type . "boolean"))) - (multiple_uei - . - #hasheq((format . "boolean") - (type . "boolean"))) - (number_months - . - #hasheq((format . "integer") - (type . "integer"))) - (oversight_agency - . - #hasheq((format . "integer") - (type . "integer"))) - (pdf_url - . - #hasheq((format . "character varying[]") - (items - . - #hasheq((type . "string"))) - (type . "array"))) - (prior_year_schedule - . - #hasheq((format . "boolean") - (type . "boolean"))) - (questioned_costs - . - #hasheq((format . "boolean") - (type . "boolean"))) - (report_id - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))) - (report_required - . - #hasheq((format . "boolean") - (type . "boolean"))) - (special_framework - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))) - (suppression_code - . - #hasheq((format . "character varying") - (type . "string"))) - (total_fed_expenditures - . - #hasheq((format . "bigint") - (type . "integer"))) - (type_audit_code - . - #hasheq((format . "character varying") - (type . "string"))) - (type_report_financial_statements - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))) - (type_report_major_program - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))) - (type_report_special_purpose_framework - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))))) - (type . "object"))) - (vw_note - . - #hasheq((properties - . - #hasheq((audit_year - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))) - (auditee_ein - . - #hasheq((format . "integer") - (type . "integer"))) - (auditee_uei - . - #hasheq((format . "character varying") - (type . "string"))) - (content - . - #hasheq((format . "text") - (type . "string"))) - (fy_end_date - . - #hasheq((format . "date") - (type . "string"))) - (fy_start_date - . - #hasheq((format . "date") - (type . "string"))) - (id - . - #hasheq((description - . - "Note:\nThis is a Primary Key.") - (format . "bigint") - (type . "integer"))) - (note_index - . - #hasheq((format . "integer") - (type . "integer"))) - (note_seq_number - . - #hasheq((format . "integer") - (type . "integer"))) - (note_title - . - #hasheq((format . "character varying") - (maxLength . 75) - (type . "string"))) - (report_id - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))) - (type_id - . - #hasheq((format . "character varying") - (maxLength . 1) - (type . "string"))))) - (type . "object"))) - (vw_passthrough - . - #hasheq((description - . - "The pass-through entity information, when it is not a direct federal award") - (properties - . - #hasheq((audit_id - . - #hasheq((format . "integer") - (type . "integer"))) - (audit_year - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))) - (dbkey - . - #hasheq((format . "character varying") - (maxLength . 40) - (type . "string"))) - (general_id - . - #hasheq((format . "bigint[]") - (items - . - #hasheq((type . "integer"))) - (type . "array"))) - (id - . - #hasheq((description - . - "Note:\nThis is a Primary Key.") - (format . "bigint") - (type . "integer"))) - (is_public - . - #hasheq((format . "boolean") - (type . "boolean"))) - (passthrough_id - . - #hasheq((format . "character varying") - (maxLength . 70) - (type . "string"))) - (passthrough_name - . - #hasheq((format . "character varying") - (maxLength . 150) - (type . "string"))))) - (type . "object"))) - (vw_revision - . - #hasheq((description - . - "Documents what was revised on the associated form from the previous version") - (properties - . - #hasheq((audit_info - . - #hasheq((description - . - "Indicates what items on the Audit Info page were edited during the revision Census mapping: REVISIONS, AUDITINFO") - (format . "character varying") - (maxLength . 200) - (type . "string"))) - (audit_info_explain - . - #hasheq((description - . - "Explanation of what items on the Audit Info page were edited during the revision Census mapping: REVISIONS, AUDITINFO_EXPLAIN") - (format . "text") - (type . "string"))) - (audit_year - . - #hasheq((description - . - "Audit Year and DBKEY (database key) combined make up the primary key. Census mapping: REVISIONS, AUDITYEAR") - (format . "character varying") - (maxLength . 40) - (type . "string"))) - (cap - . - #hasheq((description - . - "Indicates what items on the CAP Text page were edited during the revision Census mapping: REVISIONS, CAP") - (format . "character varying") - (maxLength . 6) - (type . "string"))) - (cap_explain - . - #hasheq((description - . - "Explanation of what items on the CAP Text page were edited during the revision Census mapping: REVISIONS, CAP_EXPLAIN") - (format . "text") - (type . "string"))) - (dbkey - . - #hasheq((description - . - "Audit Year and DBKEY (database key) combined make up the primary key. Census mapping: REVISIONS, DBKEY") - (format . "character varying") - (maxLength . 40) - (type . "string"))) - (federal_awards - . - #hasheq((description - . - "Indicates what items on the Federal Awards page were edited during the revision Census mapping: REVISIONS, FEDERALAWARDS") - (format . "character varying") - (maxLength . 140) - (type . "string"))) - (federal_awards_explain - . - #hasheq((description - . - "Explanation of what items on the Federal Awards page were edited during the revision Census mapping: REVISIONS, FEDERALAWARDS_EXPLAIN") - (format . "text") - (type . "string"))) - (findings - . - #hasheq((description - . - "Indicates what items on the Findings page were edited during the revision Census mapping: REVISIONS, FINDINGS") - (format . "character varying") - (maxLength . 110) - (type . "string"))) - (findings_explain - . - #hasheq((description - . - "Explanation of what items on the Findings page were edited during the revision Census mapping: REVISIONS, FINDINGS_EXPLAIN") - (format . "text") - (type . "string"))) - (findings_text - . - #hasheq((description - . - "Indicates what items on the Text of the Audit Findings page were edited during the revision Census mapping: REVISIONS, FINDINGSTEXT") - (format . "character varying") - (maxLength . 6) - (type . "string"))) - (findings_text_explain - . - #hasheq((description - . - "Explanation of what items on the Text of the Audit Findings page were edited during the revision Census mapping: REVISIONS, FINDINGSTEXT_EXPLAIN") - (format . "text") - (type . "string"))) - (general_id - . - #hasheq((format . "bigint[]") - (items - . - #hasheq((type . "integer"))) - (type . "array"))) - (general_info - . - #hasheq((description - . - "Indicates what items on the General Info page were edited during the revision Census mapping: REVISIONS, GENINFO") - (format . "character varying") - (maxLength . 75) - (type . "string"))) - (general_info_explain - . - #hasheq((description - . - "Explanation of what items on the General Info page were edited during the revision Census mapping: REVISIONS, GENINFO_EXPLAIN") - (format . "text") - (type . "string"))) - (id - . - #hasheq((description - . - "ID \n\nNote:\nThis is a Primary Key.") - (format . "bigint") - (type . "integer"))) - (is_public - . - #hasheq((description - . - "True for public records, False for non-public records ") - (format . "boolean") - (type . "boolean"))) - (notes_to_sefa - . - #hasheq((description - . - "Indicates what items on the Notes to Schedule of Expenditures of Federal Awards (SEFA) page were edited during the revision Census mapping: REVISIONS, NOTESTOSEFA") - (format . "character varying") - (maxLength . 50) - (type . "string"))) - (notes_to_sefa_explain - . - #hasheq((description - . - "Explanation of what items on the Notes to Schedule of Expenditures of Federal Awards (SEFA) page were edited during the revision Census mapping: REVISIONS, NOTESTOSEFA_EXPLAIN") - (format . "text") - (type . "string"))) - (other - . - #hasheq((description - . - "Indicates what other miscellaneous items were edited during the revision Census mapping: REVISIONS, OTHER") - (format . "character varying") - (maxLength . 65) - (type . "string"))) - (other_explain - . - #hasheq((description - . - "Explanation of what other miscellaneous items were edited during the revision Census mapping: REVISIONS, OTHER_EXPLAIN") - (format . "text") - (type . "string"))) - (revision_id - . - #hasheq((description - . - "Internal Unique Identifier for the record Census mapping: REVISIONS, ELECRPTREVISIONID") - (format . "integer") - (type . "integer"))))) - (type . "object"))))) - (externalDocs - . - #hasheq((description . "PostgREST Documentation") - (url . "https://postgrest.org/en/v11.0/api.html"))) - (host . "0.0.0.0:3000") - (info - . - #hasheq((description - . - "This is a dynamic API generated by PostgREST") - (title . "PostgREST API") - (version . "11.0.1"))) - (parameters - . - #hasheq((body.vw_auditee - . - #hasheq((description . "vw_auditee") - (in . "body") - (name . "vw_auditee") - (required . #f) - (schema - . - #hasheq(($ref . "#/definitions/vw_auditee"))))) - (body.vw_auditor - . - #hasheq((description . "vw_auditor") - (in . "body") - (name . "vw_auditor") - (required . #f) - (schema - . - #hasheq(($ref . "#/definitions/vw_auditor"))))) - (body.vw_cap_text - . - #hasheq((description . "vw_cap_text") - (in . "body") - (name . "vw_cap_text") - (required . #f) - (schema - . - #hasheq(($ref . "#/definitions/vw_cap_text"))))) - (body.vw_federal_award - . - #hasheq((description . "vw_federal_award") - (in . "body") - (name . "vw_federal_award") - (required . #f) - (schema - . - #hasheq(($ref - . - "#/definitions/vw_federal_award"))))) - (body.vw_finding - . - #hasheq((description . "vw_finding") - (in . "body") - (name . "vw_finding") - (required . #f) - (schema - . - #hasheq(($ref . "#/definitions/vw_finding"))))) - (body.vw_finding_text - . - #hasheq((description . "vw_finding_text") - (in . "body") - (name . "vw_finding_text") - (required . #f) - (schema - . - #hasheq(($ref - . - "#/definitions/vw_finding_text"))))) - (body.vw_findings - . - #hasheq((description . "vw_findings") - (in . "body") - (name . "vw_findings") - (required . #f) - (schema - . - #hasheq(($ref . "#/definitions/vw_findings"))))) - (body.vw_findings_text - . - #hasheq((description . "vw_findings_text") - (in . "body") - (name . "vw_findings_text") - (required . #f) - (schema - . - #hasheq(($ref - . - "#/definitions/vw_findings_text"))))) - (body.vw_general - . - #hasheq((description . "vw_general") - (in . "body") - (name . "vw_general") - (required . #f) - (schema - . - #hasheq(($ref . "#/definitions/vw_general"))))) - (body.vw_note - . - #hasheq((description . "vw_note") - (in . "body") - (name . "vw_note") - (required . #f) - (schema - . - #hasheq(($ref . "#/definitions/vw_note"))))) - (body.vw_passthrough - . - #hasheq((description . "vw_passthrough") - (in . "body") - (name . "vw_passthrough") - (required . #f) - (schema - . - #hasheq(($ref . "#/definitions/vw_passthrough"))))) - (body.vw_revision - . - #hasheq((description . "vw_revision") - (in . "body") - (name . "vw_revision") - (required . #f) - (schema - . - #hasheq(($ref . "#/definitions/vw_revision"))))) - (limit - . - #hasheq((description . "Limiting and Pagination") - (in . "query") - (name . "limit") - (required . #f) - (type . "string"))) - (offset - . - #hasheq((description . "Limiting and Pagination") - (in . "query") - (name . "offset") - (required . #f) - (type . "string"))) - (on_conflict - . - #hasheq((description . "On Conflict") - (in . "query") - (name . "on_conflict") - (required . #f) - (type . "string"))) - (order - . - #hasheq((description . "Ordering") - (in . "query") - (name . "order") - (required . #f) - (type . "string"))) - (preferCount - . - #hasheq((description . "Preference") - (enum . ("count=none")) - (in . "header") - (name . "Prefer") - (required . #f) - (type . "string"))) - (preferParams - . - #hasheq((description . "Preference") - (enum . ("params=single-object")) - (in . "header") - (name . "Prefer") - (required . #f) - (type . "string"))) - (preferPost - . - #hasheq((description . "Preference") - (enum - . - ("return=representation" - "return=minimal" - "return=none" - "resolution=ignore-duplicates" - "resolution=merge-duplicates")) - (in . "header") - (name . "Prefer") - (required . #f) - (type . "string"))) - (preferReturn - . - #hasheq((description . "Preference") - (enum - . - ("return=representation" - "return=minimal" - "return=none")) - (in . "header") - (name . "Prefer") - (required . #f) - (type . "string"))) - (range - . - #hasheq((description . "Limiting and Pagination") - (in . "header") - (name . "Range") - (required . #f) - (type . "string"))) - (rangeUnit - . - #hasheq((default . "items") - (description . "Limiting and Pagination") - (in . "header") - (name . "Range-Unit") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditee.auditee_certify_name - . - #hasheq((description - . - "Name of Auditee Certifying Official Data sources: SF-SAC 1997-2000: I/6/g; SF-SAC 2001-2003: I/6/g; SF-SAC 2004-2007: I/6/g; SF-SAC 2008-2009: I/5/g; SF-SAC 2010-2012: I/5/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEECERTIFYNAME") - (format . "character varying") - (in . "query") - (name . "auditee_certify_name") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditee.auditee_certify_title - . - #hasheq((description - . - "Title of Auditee Certifying Official Data sources: SF-SAC 1997-2000: I/6/g; SF-SAC 2001-2003: I/6/g; SF-SAC 2004-2007: I/6/g; SF-SAC 2008-2009: I/5/g; SF-SAC 2010-2012: I/5/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEECERTIFYTITLE") - (format . "character varying") - (in . "query") - (name . "auditee_certify_title") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditee.auditee_city - . - #hasheq((description - . - "Auditee City Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, CITY") - (format . "character varying") - (in . "query") - (name . "auditee_city") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditee.auditee_contact - . - #hasheq((description - . - "Name of Auditee Contact Data sources: SF-SAC 1997-2000: I/6/c; SF-SAC 2001-2003: I/6/c; SF-SAC 2004-2007: I/6/c; SF-SAC 2008-2009: I/5/c; SF-SAC 2010-2012: I/5/c; SF-SAC 2013-2015: I/5/c; SF-SAC 2016-2018: I/5/c; SF-SAC 2019-2021: I/5/c; SF-SAC 2022: I/5/c Census mapping: GENERAL, AUDITEECONTACT") - (format . "character varying") - (in . "query") - (name . "auditee_contact") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditee.auditee_email - . - #hasheq((description - . - "Auditee Email address Data sources: SF-SAC 1997-2000: I/6/f; SF-SAC 2001-2003: I/6/f; SF-SAC 2004-2007: I/6/f; SF-SAC 2008-2009: I/5/f; SF-SAC 2010-2012: I/5/f; SF-SAC 2013-2015: I/5/f; SF-SAC 2016-2018: I/5/e; SF-SAC 2019-2021: I/5/e; SF-SAC 2022: I/5/e Census mapping: GENERAL, AUDITEEEMAIL") - (format . "character varying") - (in . "query") - (name . "auditee_email") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditee.auditee_fax - . - #hasheq((description - . - "Auditee Fax Number (optional) Data sources: SF-SAC 1997-2000: I/6/e; SF-SAC 2001-2003: I/6/e; SF-SAC 2004-2007: I/6/e; SF-SAC 2008-2009: I/5/e; SF-SAC 2010-2012: I/5/e; SF-SAC 2013-2015: I/5/e Census mapping: GENERAL, AUDITEEFAX") - (format . "bigint") - (in . "query") - (name . "auditee_fax") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditee.auditee_name - . - #hasheq((description - . - "Name of the Auditee Data sources: SF-SAC 1997-2000: I/6/a; SF-SAC 2001-2003: I/6/a; SF-SAC 2004-2007: I/6/a; SF-SAC 2008-2009: I/5/a; SF-SAC 2010-2012: I/5/a; SF-SAC 2013-2015: I/5/a; SF-SAC 2016-2018: I/5/a; SF-SAC 2019-2021: I/5/a; SF-SAC 2022: I/5/a Census mapping: GENERAL, AUDITEENAME") - (format . "character varying") - (in . "query") - (name . "auditee_name") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditee.auditee_name_title - . - #hasheq((description - . - "Title of Auditee Certifying Official Data sources: SF-SAC 1997-2000: I/6/g; SF-SAC 2001-2003: I/6/g; SF-SAC 2004-2007: I/6/g; SF-SAC 2008-2009: I/5/g; SF-SAC 2010-2012: I/5/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEENAMETITLE") - (format . "character varying") - (in . "query") - (name . "auditee_name_title") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditee.auditee_phone - . - #hasheq((description - . - "Auditee Phone Number Data sources: SF-SAC 1997-2000: I/6/d; SF-SAC 2001-2003: I/6/d; SF-SAC 2004-2007: I/6/d; SF-SAC 2008-2009: I/5/d; SF-SAC 2010-2012: I/5/d; SF-SAC 2013-2015: I/5/d; SF-SAC 2016-2018: I/5/d; SF-SAC 2019-2021: I/5/d; SF-SAC 2022: I/5/d Census mapping: GENERAL, AUDITEEPHONE") - (format . "bigint") - (in . "query") - (name . "auditee_phone") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditee.auditee_state - . - #hasheq((description - . - "Auditee State Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, STATE") - (format . "character varying") - (in . "query") - (name . "auditee_state") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditee.auditee_street1 - . - #hasheq((description - . - "Auditee Street Address Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, STREET1") - (format . "character varying") - (in . "query") - (name . "auditee_street1") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditee.auditee_street2 - . - #hasheq((description - . - "Auditee Street Address Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, STREET2") - (format . "character varying") - (in . "query") - (name . "auditee_street2") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditee.auditee_title - . - #hasheq((description - . - "Title of Auditee Contact Data sources: SF-SAC 1997-2000: I/6/c; SF-SAC 2001-2003: I/6/c; SF-SAC 2004-2007: I/6/c; SF-SAC 2008-2009: I/5/c; SF-SAC 2010-2012: I/5/c; SF-SAC 2013-2015: I/5/c; SF-SAC 2016-2018: I/5/c; SF-SAC 2019-2021: I/5/c; SF-SAC 2022: I/5/c Census mapping: GENERAL, AUDITEETITLE") - (format . "character varying") - (in . "query") - (name . "auditee_title") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditee.auditee_zip_code - . - #hasheq((description - . - "Auditee Zip Code Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, ZIPCODE") - (format . "character varying") - (in . "query") - (name . "auditee_zip_code") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditee.dbkey - . - #hasheq((format . "character varying[]") - (in . "query") - (name . "dbkey") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditee.duns_list - . - #hasheq((description . "duns list ") - (format . "integer[]") - (in . "query") - (name . "duns_list") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditee.ein_list - . - #hasheq((description . "ein list ") - (format . "integer[]") - (in . "query") - (name . "ein_list") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditee.ein_subcode - . - #hasheq((description - . - "Subcode assigned to the EIN. Census mapping: GENERAL, EINSUBCODE") - (format . "integer") - (in . "query") - (name . "ein_subcode") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditee.general_id - . - #hasheq((format . "bigint[]") - (in . "query") - (name . "general_id") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditee.id - . - #hasheq((description . "ID ") - (format . "bigint") - (in . "query") - (name . "id") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditee.is_public - . - #hasheq((description - . - "True if appears in a public record ") - (format . "boolean") - (in . "query") - (name . "is_public") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditee.uei_list - . - #hasheq((description . "uei list ") - (format . "character varying[]") - (in . "query") - (name . "uei_list") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditor.cpa_city - . - #hasheq((description - . - "CPA City Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPACITY (AND) Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/d; SF-SAC 2016-2018: I/8/d; SF-SAC 2019-2021: I/6/h/iv; SF-SAC 2022: I/6/h/iv Census mapping: MULTIPLE CPAS INFO, CPACITY") - (format . "character varying") - (in . "query") - (name . "cpa_city") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditor.cpa_contact - . - #hasheq((description - . - "Name of CPA Contact Data sources: SF-SAC 1997-2000: I/7/c; SF-SAC 2001-2003: I/7/c; SF-SAC 2004-2007: I/7/c; SF-SAC 2008-2009: I/6/c; SF-SAC 2010-2012: I/6/c; SF-SAC 2013-2015: I/6/d; SF-SAC 2016-2018: I/6/d; SF-SAC 2019-2021: I/6/d; SF-SAC 2022: I/6/d Census mapping: GENERAL, CPACONTACT (AND) Data sources: SF-SAC 2008-2009: I/8/c; SF-SAC 2010-2012: I/8/c; SF-SAC 2013-2015: I/8/g; SF-SAC 2016-2018: I/8/g; SF-SAC 2019-2021: I/6/h/vii; SF-SAC 2022: I/6/h/vii Census mapping: MULTIPLE CPAS INFO, CPACONTACT") - (format . "character varying") - (in . "query") - (name . "cpa_contact") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditor.cpa_country - . - #hasheq((description - . - "CPA Country Data sources: SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPACOUNTRY") - (format . "character varying") - (in . "query") - (name . "cpa_country") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditor.cpa_ein - . - #hasheq((description - . - "CPA Firm EIN (only available for audit years 2013 and beyond) Data sources: SF-SAC 2013-2015: I/6/b; SF-SAC 2016-2018: I/6/b; SF-SAC 2019-2021: I/6/b; SF-SAC 2022: I/6/b Census mapping: GENERAL, AUDITOR_EIN (AND) Data sources: SF-SAC 2013-2015: I/8/b; SF-SAC 2016-2018: I/8/b; SF-SAC 2019-2021: I/6/h/ii; SF-SAC 2022: I/6/h/ii Census mapping: MULTIPLE CPAS INFO, CPAEIN") - (format . "integer") - (in . "query") - (name . "cpa_ein") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditor.cpa_email - . - #hasheq((description - . - "CPA mail address (optional) Data sources: SF-SAC 1997-2000: I/7/f; SF-SAC 2001-2003: I/7/f; SF-SAC 2004-2007: I/7/f; SF-SAC 2008-2009: I/6/f; SF-SAC 2010-2012: I/6/f; SF-SAC 2013-2015: I/6/g; SF-SAC 2016-2018: I/6/f; SF-SAC 2019-2021: I/6/f; SF-SAC 2022: I/6/f Census mapping: GENERAL, CPAEMAIL (AND) Data sources: SF-SAC 2008-2009: I/8/f; SF-SAC 2010-2012: I/8/f; SF-SAC 2013-2015: I/8/k; SF-SAC 2016-2018: I/8/k; SF-SAC 2019-2021: I/6/h/x; SF-SAC 2022: I/6/h/x Census mapping: MULTIPLE CPAS INFO, CPAEMAIL") - (format . "character varying") - (in . "query") - (name . "cpa_email") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditor.cpa_fax - . - #hasheq((description - . - "CPA fax number (optional) Data sources: SF-SAC 1997-2000: I/7/e; SF-SAC 2001-2003: I/7/e; SF-SAC 2004-2007: I/7/e; SF-SAC 2008-2009: I/6/e; SF-SAC 2010-2012: I/6/e; SF-SAC 2013-2015: I/6/f Census mapping: GENERAL, CPAFAX (AND) Data sources: SF-SAC 2008-2009: I/8/e; SF-SAC 2010-2012: I/8/e; SF-SAC 2013-2015: I/8/j; SF-SAC 2016-2018: I/8/j Census mapping: MULTIPLE CPAS INFO, CPAFAX") - (format . "bigint") - (in . "query") - (name . "cpa_fax") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditor.cpa_firm_name - . - #hasheq((description - . - "CPA Firm Name Data sources: SF-SAC 1997-2000: I/7/a; SF-SAC 2001-2003: I/7/a; SF-SAC 2004-2007: I/7/a; SF-SAC 2008-2009: I/6/a; SF-SAC 2010-2012: I/6/a; SF-SAC 2013-2015: I/6/a; SF-SAC 2016-2018: I/6/a; SF-SAC 2019-2021: I/6/a; SF-SAC 2022: I/6/a Census mapping: GENERAL, CPAFIRMNAME (AND) Data sources: SF-SAC 2008-2009: I/8/a; SF-SAC 2010-2012: I/8/a; SF-SAC 2013-2015: I/8/a; SF-SAC 2016-2018: I/8/a; SF-SAC 2019-2021: I/6/h/i; SF-SAC 2022: I/6/h/i Census mapping: MULTIPLE CPAS INFO, CPAFIRMNAME") - (format . "character varying") - (in . "query") - (name . "cpa_firm_name") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditor.cpa_foreign - . - #hasheq((description - . - "CPA Address - if international Data sources: SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPAFOREIGN") - (format . "character varying") - (in . "query") - (name . "cpa_foreign") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditor.cpa_phone - . - #hasheq((description - . - "CPA phone number Data sources: SF-SAC 1997-2000: I/7/d; SF-SAC 2001-2003: I/7/d; SF-SAC 2004-2007: I/7/d; SF-SAC 2008-2009: I/6/d; SF-SAC 2010-2012: I/6/d; SF-SAC 2013-2015: I/6/e; SF-SAC 2016-2018: I/6/e; SF-SAC 2019-2021: I/6/e; SF-SAC 2022: I/6/e Census mapping: GENERAL, CPAPHONE (AND) Data sources: SF-SAC 2008-2009: I/8/d; SF-SAC 2010-2012: I/8/d; SF-SAC 2013-2015: I/8/i; SF-SAC 2016-2018: I/8/i; SF-SAC 2019-2021: I/6/h/ix; SF-SAC 2022: I/6/h/ix Census mapping: MULTIPLE CPAS INFO, CPAPHONE") - (format . "bigint") - (in . "query") - (name . "cpa_phone") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditor.cpa_state - . - #hasheq((description - . - "CPA State Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPASTATE (AND) Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/e; SF-SAC 2016-2018: I/8/e; SF-SAC 2019-2021: I/6/h/v; SF-SAC 2022: I/6/h/v Census mapping: MULTIPLE CPAS INFO, CPASTATE") - (format . "character varying") - (in . "query") - (name . "cpa_state") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditor.cpa_street1 - . - #hasheq((description - . - "CPA Street Address Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPASTREET1 (AND) Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/c; SF-SAC 2016-2018: I/8/c; SF-SAC 2019-2021: I/6/h/iii; SF-SAC 2022: I/6/h/iii Census mapping: MULTIPLE CPAS INFO, CPASTREET1") - (format . "character varying") - (in . "query") - (name . "cpa_street1") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditor.cpa_street2 - . - #hasheq((description - . - "CPA Street Address, line 2 Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPASTREET2") - (format . "character varying") - (in . "query") - (name . "cpa_street2") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditor.cpa_title - . - #hasheq((description - . - "Title of CPA Contact Data sources: SF-SAC 1997-2000: I/7/c; SF-SAC 2001-2003: I/7/c; SF-SAC 2004-2007: I/7/c; SF-SAC 2008-2009: I/6/c; SF-SAC 2010-2012: I/6/c; SF-SAC 2013-2015: I/6/d; SF-SAC 2016-2018: I/6/d; SF-SAC 2019-2021: I/6/d; SF-SAC 2022: I/6/d Census mapping: GENERAL, CPATITLE (AND) Data sources: SF-SAC 2008-2009: I/8/c; SF-SAC 2010-2012: I/8/c; SF-SAC 2013-2015: I/8/h; SF-SAC 2016-2018: I/8/h; SF-SAC 2019-2021: I/6/h/viii; SF-SAC 2022: I/6/h/viii Census mapping: MULTIPLE CPAS INFO, CPATITLE") - (format . "character varying") - (in . "query") - (name . "cpa_title") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditor.cpa_zip_code - . - #hasheq((description - . - "CPA Zip Code Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPAZIPCODE (AND) Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/f; SF-SAC 2016-2018: I/8/f; SF-SAC 2019-2021: I/6/h/vi; SF-SAC 2022: I/6/h/vi Census mapping: MULTIPLE CPAS INFO, CPAZIPCODE") - (format . "character varying") - (in . "query") - (name . "cpa_zip_code") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditor.general_id - . - #hasheq((format . "bigint[]") - (in . "query") - (name . "general_id") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditor.id - . - #hasheq((description . "ID ") - (format . "bigint") - (in . "query") - (name . "id") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditor.is_public - . - #hasheq((description - . - "True if appears in a public record ") - (format . "boolean") - (in . "query") - (name . "is_public") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditor.secondary_auditor_general_id - . - #hasheq((format . "bigint[]") - (in . "query") - (name . "secondary_auditor_general_id") - (required . #f) - (type . "string"))) - (rowFilter.vw_auditor.sequence_number - . - #hasheq((description - . - "Order that Auditors were reported on page 5 of SF-SAC (only for secondary_auditors) Census mapping: GENERAL, SEQNUM (AND) Census mapping: MULTIPLE CPAS INFO, SEQNUM") - (format . "integer") - (in . "query") - (name . "sequence_number") - (required . #f) - (type . "string"))) - (rowFilter.vw_cap_text.audit_year - . - #hasheq((format . "character varying") - (in . "query") - (name . "audit_year") - (required . #f) - (type . "string"))) - (rowFilter.vw_cap_text.auditee_ein - . - #hasheq((format . "integer") - (in . "query") - (name . "auditee_ein") - (required . #f) - (type . "string"))) - (rowFilter.vw_cap_text.auditee_uei - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditee_uei") - (required . #f) - (type . "string"))) - (rowFilter.vw_cap_text.cap_text - . - #hasheq((format . "text") - (in . "query") - (name . "cap_text") - (required . #f) - (type . "string"))) - (rowFilter.vw_cap_text.charts_tables - . - #hasheq((format . "boolean") - (in . "query") - (name . "charts_tables") - (required . #f) - (type . "string"))) - (rowFilter.vw_cap_text.finding_ref_number - . - #hasheq((format . "character varying") - (in . "query") - (name . "finding_ref_number") - (required . #f) - (type . "string"))) - (rowFilter.vw_cap_text.fy_end_date - . - #hasheq((format . "date") - (in . "query") - (name . "fy_end_date") - (required . #f) - (type . "string"))) - (rowFilter.vw_cap_text.fy_start_date - . - #hasheq((format . "date") - (in . "query") - (name . "fy_start_date") - (required . #f) - (type . "string"))) - (rowFilter.vw_cap_text.id - . - #hasheq((format . "bigint") - (in . "query") - (name . "id") - (required . #f) - (type . "string"))) - (rowFilter.vw_cap_text.report_id - . - #hasheq((format . "character varying") - (in . "query") - (name . "report_id") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.additional_award_identification - . - #hasheq((format . "character varying") - (in . "query") - (name . "additional_award_identification") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.amount_expended - . - #hasheq((format . "bigint") - (in . "query") - (name . "amount_expended") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.audit_year - . - #hasheq((format . "character varying") - (in . "query") - (name . "audit_year") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.auditee_ein - . - #hasheq((format . "integer") - (in . "query") - (name . "auditee_ein") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.auditee_uei - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditee_uei") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.award_seq_number - . - #hasheq((format . "integer") - (in . "query") - (name . "award_seq_number") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.cluster_name - . - #hasheq((format . "character varying") - (in . "query") - (name . "cluster_name") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.cluster_total - . - #hasheq((format . "bigint") - (in . "query") - (name . "cluster_total") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.federal_agency_prefix - . - #hasheq((format . "character varying") - (in . "query") - (name . "federal_agency_prefix") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.federal_award_extension - . - #hasheq((format . "character varying") - (in . "query") - (name . "federal_award_extension") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.federal_program_name - . - #hasheq((format . "character varying") - (in . "query") - (name . "federal_program_name") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.federal_program_total - . - #hasheq((format . "bigint") - (in . "query") - (name . "federal_program_total") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.findings_count - . - #hasheq((format . "integer") - (in . "query") - (name . "findings_count") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.fy_end_date - . - #hasheq((format . "date") - (in . "query") - (name . "fy_end_date") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.fy_start_date - . - #hasheq((format . "date") - (in . "query") - (name . "fy_start_date") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.id - . - #hasheq((format . "bigint") - (in . "query") - (name . "id") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.is_direct - . - #hasheq((format . "boolean") - (in . "query") - (name . "is_direct") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.is_loan - . - #hasheq((format . "boolean") - (in . "query") - (name . "is_loan") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.is_major - . - #hasheq((format . "boolean") - (in . "query") - (name . "is_major") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.loan_balance_at_audit_period_end - . - #hasheq((format . "character varying") - (in . "query") - (name . "loan_balance_at_audit_period_end") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.mp_audit_report_type - . - #hasheq((format . "character varying") - (in . "query") - (name . "mp_audit_report_type") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.other_cluster_name - . - #hasheq((format . "character varying") - (in . "query") - (name . "other_cluster_name") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.passthrough_amount - . - #hasheq((format . "bigint") - (in . "query") - (name . "passthrough_amount") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.passthrough_award - . - #hasheq((format . "boolean") - (in . "query") - (name . "passthrough_award") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.report_id - . - #hasheq((format . "character varying") - (in . "query") - (name . "report_id") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.state_cluster_name - . - #hasheq((format . "character varying") - (in . "query") - (name . "state_cluster_name") - (required . #f) - (type . "string"))) - (rowFilter.vw_federal_award.type_requirement - . - #hasheq((format . "character varying") - (in . "query") - (name . "type_requirement") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding.audit_year - . - #hasheq((format . "character varying") - (in . "query") - (name . "audit_year") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding.auditee_ein - . - #hasheq((format . "integer") - (in . "query") - (name . "auditee_ein") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding.auditee_uei - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditee_uei") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding.award_seq_number - . - #hasheq((format . "integer") - (in . "query") - (name . "award_seq_number") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding.federal_agency_prefix - . - #hasheq((format . "character varying") - (in . "query") - (name . "federal_agency_prefix") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding.federal_award_extension - . - #hasheq((format . "character varying") - (in . "query") - (name . "federal_award_extension") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding.finding_ref_number - . - #hasheq((format . "character varying") - (in . "query") - (name . "finding_ref_number") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding.finding_seq_number - . - #hasheq((format . "integer") - (in . "query") - (name . "finding_seq_number") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding.fy_end_date - . - #hasheq((format . "date") - (in . "query") - (name . "fy_end_date") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding.fy_start_date - . - #hasheq((format . "date") - (in . "query") - (name . "fy_start_date") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding.id - . - #hasheq((format . "bigint") - (in . "query") - (name . "id") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding.is_material_weakness - . - #hasheq((format . "boolean") - (in . "query") - (name . "is_material_weakness") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding.is_significant_deficiency - . - #hasheq((format . "boolean") - (in . "query") - (name . "is_significant_deficiency") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding.modified_opinion - . - #hasheq((format . "boolean") - (in . "query") - (name . "modified_opinion") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding.other_findings - . - #hasheq((format . "boolean") - (in . "query") - (name . "other_findings") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding.other_non_compliance - . - #hasheq((format . "boolean") - (in . "query") - (name . "other_non_compliance") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding.prior_finding_ref_numbers - . - #hasheq((format . "character varying") - (in . "query") - (name . "prior_finding_ref_numbers") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding.questioned_costs - . - #hasheq((format . "boolean") - (in . "query") - (name . "questioned_costs") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding.repeat_finding - . - #hasheq((format . "boolean") - (in . "query") - (name . "repeat_finding") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding.report_id - . - #hasheq((format . "character varying") - (in . "query") - (name . "report_id") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding.type_requirement - . - #hasheq((format . "character varying") - (in . "query") - (name . "type_requirement") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding_text.audit_year - . - #hasheq((format . "character varying") - (in . "query") - (name . "audit_year") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding_text.auditee_ein - . - #hasheq((format . "integer") - (in . "query") - (name . "auditee_ein") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding_text.auditee_uei - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditee_uei") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding_text.charts_tables - . - #hasheq((format . "boolean") - (in . "query") - (name . "charts_tables") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding_text.finding_ref_number - . - #hasheq((format . "character varying") - (in . "query") - (name . "finding_ref_number") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding_text.finding_text - . - #hasheq((format . "text") - (in . "query") - (name . "finding_text") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding_text.fy_end_date - . - #hasheq((format . "date") - (in . "query") - (name . "fy_end_date") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding_text.fy_start_date - . - #hasheq((format . "date") - (in . "query") - (name . "fy_start_date") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding_text.id - . - #hasheq((format . "bigint") - (in . "query") - (name . "id") - (required . #f) - (type . "string"))) - (rowFilter.vw_finding_text.report_id - . - #hasheq((format . "character varying") - (in . "query") - (name . "report_id") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings.audit_findings_id - . - #hasheq((description - . - "FAC system generated sequence number for finding Census mapping: FINDINGS, ELECAUDITFINDINGSID") - (format . "integer") - (in . "query") - (name . "audit_findings_id") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings.audit_id - . - #hasheq((description - . - "FAC system generated sequence number used to link to Findings data between CFDA Info and Findings Census mapping: FINDINGS, ELECAUDITSID") - (format . "integer") - (in . "query") - (name . "audit_id") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings.audit_year - . - #hasheq((description - . - "Audit Year and DBKEY (database key) combined make up the primary key. Census mapping: FINDINGS, AUDITYEAR") - (format . "character varying") - (in . "query") - (name . "audit_year") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings.dbkey - . - #hasheq((description - . - "Audit Year and DBKEY (database key) combined make up the primary key. Census mapping: FINDINGS, DBKEY") - (format . "character varying") - (in . "query") - (name . "dbkey") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings.finding_ref_number - . - #hasheq((description - . - "Findings Reference Numbers Data sources: SF-SAC 2013-2015: III/7/d; SF-SAC 2016-2018: III/4/e; SF-SAC 2019-2021: III/4/e; SF-SAC 2022: III/4/e Census mapping: FINDINGS, FINDINGSREFNUMS") - (format . "character varying") - (in . "query") - (name . "finding_ref_number") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings.findings_text_id - . - #hasheq((format . "bigint[]") - (in . "query") - (name . "findings_text_id") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings.general_id - . - #hasheq((format . "bigint[]") - (in . "query") - (name . "general_id") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings.id - . - #hasheq((description . "ID ") - (format . "bigint") - (in . "query") - (name . "id") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings.is_public - . - #hasheq((description - . - "True for public records, False for non-public records ") - (format . "boolean") - (in . "query") - (name . "is_public") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings.material_weakness - . - #hasheq((description - . - "Material Weakness finding Data sources: SF-SAC 2013-2015: III/7/h; SF-SAC 2016-2018: III/4/i; SF-SAC 2019-2021: III/4/i; SF-SAC 2022: III/4/i Census mapping: FINDINGS, MATERIALWEAKNESS") - (format . "boolean") - (in . "query") - (name . "material_weakness") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings.modified_opinion - . - #hasheq((description - . - "Modified Opinion finding Data sources: SF-SAC 2013-2015: III/7/f; SF-SAC 2016-2018: III/4/g; SF-SAC 2019-2021: III/4/g; SF-SAC 2022: III/4/g Census mapping: FINDINGS, MODIFIEDOPINION") - (format . "boolean") - (in . "query") - (name . "modified_opinion") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings.other_findings - . - #hasheq((description - . - "Other findings Data sources: SF-SAC 2013-2015: III/7/j; SF-SAC 2016-2018: III/4/k; SF-SAC 2019-2021: III/4/k; SF-SAC 2022: III/4/k Census mapping: FINDINGS, OTHERFINDINGS") - (format . "boolean") - (in . "query") - (name . "other_findings") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings.other_non_compliance - . - #hasheq((description - . - "Other Noncompliance finding Data sources: SF-SAC 2013-2015: III/7/g; SF-SAC 2016-2018: III/4/h; SF-SAC 2019-2021: III/4/h; SF-SAC 2022: III/4/h Census mapping: FINDINGS, OTHERNONCOMPLIANCE") - (format . "boolean") - (in . "query") - (name . "other_non_compliance") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings.prior_finding_ref_numbers - . - #hasheq((description - . - "Audit finding reference numbers from the immediate prior audit Data sources: SF-SAC 2016-2018: III/4/n; SF-SAC 2019-2021: III/4/n; SF-SAC 2022: III/4/n Census mapping: FINDINGS, PRIORFINDINGREFNUMS") - (format . "character varying") - (in . "query") - (name . "prior_finding_ref_numbers") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings.questioned_costs - . - #hasheq((description - . - "Questioned Costs Data sources: SF-SAC 2013-2015: III/7/k; SF-SAC 2016-2018: III/4/l; SF-SAC 2019-2021: III/4/l; SF-SAC 2022: III/4/l Census mapping: FINDINGS, QCOSTS") - (format . "boolean") - (in . "query") - (name . "questioned_costs") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings.repeat_finding - . - #hasheq((description - . - "Indicates whether or not the audit finding was a repeat of an audit finding in the immediate prior audit Data sources: SF-SAC 2016-2018: III/4/m; SF-SAC 2019-2021: III/4/m; SF-SAC 2022: III/4/m Census mapping: FINDINGS, REPEATFINDING") - (format . "boolean") - (in . "query") - (name . "repeat_finding") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings.significant_deficiency - . - #hasheq((description - . - "Significant Deficiency finding Data sources: SF-SAC 1997-2000: II/3; SF-SAC 2001-2003: II/3; SF-SAC 2004-2007: II/3; SF-SAC 2008-2009: II/3; SF-SAC 2010-2012: II/3; SF-SAC 2013-2015: II/3; SF-SAC 2016-2018: III/2/c; SF-SAC 2019-2021: III/2/c; SF-SAC 2022: III/2/c Census mapping: FINDINGS, SIGNIFICANTDEFICIENCY") - (format . "boolean") - (in . "query") - (name . "significant_deficiency") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings.type_requirement - . - #hasheq((description - . - "Type Requirement Failure Data sources: SF-SAC 2013-2015: III/7/e; SF-SAC 2016-2018: III/4/f; SF-SAC 2019-2021: III/4/f; SF-SAC 2022: III/4/f Census mapping: FINDINGS, TYPEREQUIREMENT") - (format . "character varying") - (in . "query") - (name . "type_requirement") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings_text.audit_year - . - #hasheq((description - . - "Audit Year and DBKEY (database key) combined make up the primary key. Census mapping: FINDINGSTEXT, AUDITYEAR") - (format . "character varying") - (in . "query") - (name . "audit_year") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings_text.charts_tables - . - #hasheq((description - . - "Indicates whether or not the text contained charts or tables that could not be entered due to formatting restrictions Census mapping: FINDINGSTEXT, CHARTSTABLES") - (format . "boolean") - (in . "query") - (name . "charts_tables") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings_text.dbkey - . - #hasheq((description - . - "Audit Year and DBKEY (database key) combined make up the primary key. Census mapping: FINDINGSTEXT, DBKEY") - (format . "character varying") - (in . "query") - (name . "dbkey") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings_text.finding_ref_number - . - #hasheq((description - . - "Audit Finding Reference Number Data sources: SF-SAC 2019-2021: III/5/a; SF-SAC 2022: III/5/a Census mapping: FINDINGSTEXT, FINDINGREFNUMS") - (format . "character varying") - (in . "query") - (name . "finding_ref_number") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings_text.general_id - . - #hasheq((format . "bigint[]") - (in . "query") - (name . "general_id") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings_text.id - . - #hasheq((description . "ID ") - (format . "bigint") - (in . "query") - (name . "id") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings_text.is_public - . - #hasheq((description - . - "True for public records, False for non-public records ") - (format . "boolean") - (in . "query") - (name . "is_public") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings_text.sequence_number - . - #hasheq((description - . - "Order that the findings text was reported Census mapping: FINDINGSTEXT, SEQ_NUMBER") - (format . "integer") - (in . "query") - (name . "sequence_number") - (required . #f) - (type . "string"))) - (rowFilter.vw_findings_text.text - . - #hasheq((description - . - "Content of the finding text Data sources: SF-SAC 2019-2021: III/5/b; SF-SAC 2022: III/5/b Census mapping: FINDINGSTEXT, TEXT") - (format . "text") - (in . "query") - (name . "text") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.audit_period_covered - . - #hasheq((format . "character varying") - (in . "query") - (name . "audit_period_covered") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.audit_type - . - #hasheq((format . "character varying") - (in . "query") - (name . "audit_type") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.audit_year - . - #hasheq((format . "character varying") - (in . "query") - (name . "audit_year") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditee_addl_duns_list - . - #hasheq((format . "character varying[]") - (in . "query") - (name . "auditee_addl_duns_list") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditee_addl_ein_list - . - #hasheq((format . "integer[]") - (in . "query") - (name . "auditee_addl_ein_list") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditee_addl_uei_list - . - #hasheq((format . "character varying[]") - (in . "query") - (name . "auditee_addl_uei_list") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditee_address_line_1 - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditee_address_line_1") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditee_certified_date - . - #hasheq((format . "date") - (in . "query") - (name . "auditee_certified_date") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditee_certify_name - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditee_certify_name") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditee_certify_title - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditee_certify_title") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditee_city - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditee_city") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditee_contact_name - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditee_contact_name") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditee_contact_title - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditee_contact_title") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditee_duns - . - #hasheq((format . "character varying[]") - (in . "query") - (name . "auditee_duns") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditee_ein - . - #hasheq((format . "integer") - (in . "query") - (name . "auditee_ein") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditee_email - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditee_email") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditee_name - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditee_name") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditee_phone - . - #hasheq((format . "bigint") - (in . "query") - (name . "auditee_phone") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditee_state - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditee_state") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditee_uei - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditee_uei") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditee_zip - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditee_zip") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditor_address_line_1 - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditor_address_line_1") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditor_certified_date - . - #hasheq((format . "date") - (in . "query") - (name . "auditor_certified_date") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditor_city - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditor_city") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditor_contact_name - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditor_contact_name") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditor_contact_title - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditor_contact_title") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditor_country - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditor_country") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditor_ein - . - #hasheq((format . "integer") - (in . "query") - (name . "auditor_ein") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditor_email - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditor_email") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditor_firm_name - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditor_firm_name") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditor_foreign_addr - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditor_foreign_addr") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditor_phone - . - #hasheq((format . "bigint") - (in . "query") - (name . "auditor_phone") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditor_state - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditor_state") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.auditor_zip - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditor_zip") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.cfac_report_id - . - #hasheq((format . "character varying") - (in . "query") - (name . "cfac_report_id") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.cfac_version - . - #hasheq((format . "character varying") - (in . "query") - (name . "cfac_version") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.cognizant_agency - . - #hasheq((format . "character varying") - (in . "query") - (name . "cognizant_agency") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.condition_or_deficiency_major_program - . - #hasheq((format . "boolean") - (in . "query") - (name . "condition_or_deficiency_major_program") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.create_date - . - #hasheq((format . "timestamp with time zone") - (in . "query") - (name . "create_date") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.current_or_former_findings - . - #hasheq((format . "boolean") - (in . "query") - (name . "current_or_former_findings") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.data_source - . - #hasheq((format . "character varying") - (in . "query") - (name . "data_source") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.date_published - . - #hasheq((format . "date") - (in . "query") - (name . "date_published") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.date_received - . - #hasheq((format . "date") - (in . "query") - (name . "date_received") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.dbkey - . - #hasheq((format . "character varying") - (in . "query") - (name . "dbkey") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.dollar_threshold - . - #hasheq((format . "double precision") - (in . "query") - (name . "dollar_threshold") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.ein_subcode - . - #hasheq((format . "integer") - (in . "query") - (name . "ein_subcode") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.entity_type - . - #hasheq((format . "character varying") - (in . "query") - (name . "entity_type") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.fac_accepted_date - . - #hasheq((format . "date") - (in . "query") - (name . "fac_accepted_date") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.federal_agency_prefix - . - #hasheq((format . "character varying") - (in . "query") - (name . "federal_agency_prefix") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.federal_award_extension - . - #hasheq((format . "character varying") - (in . "query") - (name . "federal_award_extension") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.form_date_received - . - #hasheq((format . "date") - (in . "query") - (name . "form_date_received") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.fy_end_date - . - #hasheq((format . "date") - (in . "query") - (name . "fy_end_date") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.fy_start_date - . - #hasheq((format . "date") - (in . "query") - (name . "fy_start_date") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.hist_auditee_address_line_2 - . - #hasheq((format . "character varying") - (in . "query") - (name . "hist_auditee_address_line_2") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.hist_auditee_fax - . - #hasheq((format . "bigint") - (in . "query") - (name . "hist_auditee_fax") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.hist_auditor_address_line_2 - . - #hasheq((format . "character varying") - (in . "query") - (name . "hist_auditor_address_line_2") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.hist_auditor_fax - . - #hasheq((format . "bigint") - (in . "query") - (name . "hist_auditor_fax") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.hist_completed_date - . - #hasheq((format . "date") - (in . "query") - (name . "hist_completed_date") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.hist_component_date_received - . - #hasheq((format . "date") - (in . "query") - (name . "hist_component_date_received") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.hist_previous_completed_on - . - #hasheq((format . "date") - (in . "query") - (name . "hist_previous_completed_on") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.hist_previous_date_published - . - #hasheq((format . "date") - (in . "query") - (name . "hist_previous_date_published") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.hist_reportable_condition - . - #hasheq((format . "boolean") - (in . "query") - (name . "hist_reportable_condition") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.hist_type_of_entity - . - #hasheq((format . "character varying") - (in . "query") - (name . "hist_type_of_entity") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.id - . - #hasheq((format . "bigint") - (in . "query") - (name . "id") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.initial_date_received - . - #hasheq((format . "date") - (in . "query") - (name . "initial_date_received") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.is_duplicate_reports - . - #hasheq((format . "boolean") - (in . "query") - (name . "is_duplicate_reports") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.is_going_concern - . - #hasheq((format . "boolean") - (in . "query") - (name . "is_going_concern") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.is_low_risk - . - #hasheq((format . "boolean") - (in . "query") - (name . "is_low_risk") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.is_material_noncompliance - . - #hasheq((format . "boolean") - (in . "query") - (name . "is_material_noncompliance") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.is_material_weakness - . - #hasheq((format . "boolean") - (in . "query") - (name . "is_material_weakness") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.is_public - . - #hasheq((format . "boolean") - (in . "query") - (name . "is_public") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.is_significant_deficiency - . - #hasheq((format . "boolean") - (in . "query") - (name . "is_significant_deficiency") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.is_special_framework_required - . - #hasheq((format . "boolean") - (in . "query") - (name . "is_special_framework_required") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.material_weakness - . - #hasheq((format . "boolean") - (in . "query") - (name . "material_weakness") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.material_weakness_major_program - . - #hasheq((format . "boolean") - (in . "query") - (name . "material_weakness_major_program") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.modified_date - . - #hasheq((format . "timestamp with time zone") - (in . "query") - (name . "modified_date") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.multiple_auditors - . - #hasheq((format . "boolean") - (in . "query") - (name . "multiple_auditors") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.multiple_duns - . - #hasheq((format . "boolean") - (in . "query") - (name . "multiple_duns") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.multiple_ein - . - #hasheq((format . "boolean") - (in . "query") - (name . "multiple_ein") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.multiple_uei - . - #hasheq((format . "boolean") - (in . "query") - (name . "multiple_uei") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.number_months - . - #hasheq((format . "integer") - (in . "query") - (name . "number_months") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.oversight_agency - . - #hasheq((format . "integer") - (in . "query") - (name . "oversight_agency") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.pdf_url - . - #hasheq((format . "character varying[]") - (in . "query") - (name . "pdf_url") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.prior_year_schedule - . - #hasheq((format . "boolean") - (in . "query") - (name . "prior_year_schedule") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.questioned_costs - . - #hasheq((format . "boolean") - (in . "query") - (name . "questioned_costs") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.report_id - . - #hasheq((format . "character varying") - (in . "query") - (name . "report_id") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.report_required - . - #hasheq((format . "boolean") - (in . "query") - (name . "report_required") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.special_framework - . - #hasheq((format . "character varying") - (in . "query") - (name . "special_framework") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.suppression_code - . - #hasheq((format . "character varying") - (in . "query") - (name . "suppression_code") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.total_fed_expenditures - . - #hasheq((format . "bigint") - (in . "query") - (name . "total_fed_expenditures") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.type_audit_code - . - #hasheq((format . "character varying") - (in . "query") - (name . "type_audit_code") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.type_report_financial_statements - . - #hasheq((format . "character varying") - (in . "query") - (name . "type_report_financial_statements") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.type_report_major_program - . - #hasheq((format . "character varying") - (in . "query") - (name . "type_report_major_program") - (required . #f) - (type . "string"))) - (rowFilter.vw_general.type_report_special_purpose_framework - . - #hasheq((format . "character varying") - (in . "query") - (name . "type_report_special_purpose_framework") - (required . #f) - (type . "string"))) - (rowFilter.vw_note.audit_year - . - #hasheq((format . "character varying") - (in . "query") - (name . "audit_year") - (required . #f) - (type . "string"))) - (rowFilter.vw_note.auditee_ein - . - #hasheq((format . "integer") - (in . "query") - (name . "auditee_ein") - (required . #f) - (type . "string"))) - (rowFilter.vw_note.auditee_uei - . - #hasheq((format . "character varying") - (in . "query") - (name . "auditee_uei") - (required . #f) - (type . "string"))) - (rowFilter.vw_note.content - . - #hasheq((format . "text") - (in . "query") - (name . "content") - (required . #f) - (type . "string"))) - (rowFilter.vw_note.fy_end_date - . - #hasheq((format . "date") - (in . "query") - (name . "fy_end_date") - (required . #f) - (type . "string"))) - (rowFilter.vw_note.fy_start_date - . - #hasheq((format . "date") - (in . "query") - (name . "fy_start_date") - (required . #f) - (type . "string"))) - (rowFilter.vw_note.id - . - #hasheq((format . "bigint") - (in . "query") - (name . "id") - (required . #f) - (type . "string"))) - (rowFilter.vw_note.note_index - . - #hasheq((format . "integer") - (in . "query") - (name . "note_index") - (required . #f) - (type . "string"))) - (rowFilter.vw_note.note_seq_number - . - #hasheq((format . "integer") - (in . "query") - (name . "note_seq_number") - (required . #f) - (type . "string"))) - (rowFilter.vw_note.note_title - . - #hasheq((format . "character varying") - (in . "query") - (name . "note_title") - (required . #f) - (type . "string"))) - (rowFilter.vw_note.report_id - . - #hasheq((format . "character varying") - (in . "query") - (name . "report_id") - (required . #f) - (type . "string"))) - (rowFilter.vw_note.type_id - . - #hasheq((format . "character varying") - (in . "query") - (name . "type_id") - (required . #f) - (type . "string"))) - (rowFilter.vw_passthrough.audit_id - . - #hasheq((format . "integer") - (in . "query") - (name . "audit_id") - (required . #f) - (type . "string"))) - (rowFilter.vw_passthrough.audit_year - . - #hasheq((format . "character varying") - (in . "query") - (name . "audit_year") - (required . #f) - (type . "string"))) - (rowFilter.vw_passthrough.dbkey - . - #hasheq((format . "character varying") - (in . "query") - (name . "dbkey") - (required . #f) - (type . "string"))) - (rowFilter.vw_passthrough.general_id - . - #hasheq((format . "bigint[]") - (in . "query") - (name . "general_id") - (required . #f) - (type . "string"))) - (rowFilter.vw_passthrough.id - . - #hasheq((format . "bigint") - (in . "query") - (name . "id") - (required . #f) - (type . "string"))) - (rowFilter.vw_passthrough.is_public - . - #hasheq((format . "boolean") - (in . "query") - (name . "is_public") - (required . #f) - (type . "string"))) - (rowFilter.vw_passthrough.passthrough_id - . - #hasheq((format . "character varying") - (in . "query") - (name . "passthrough_id") - (required . #f) - (type . "string"))) - (rowFilter.vw_passthrough.passthrough_name - . - #hasheq((format . "character varying") - (in . "query") - (name . "passthrough_name") - (required . #f) - (type . "string"))) - (rowFilter.vw_revision.audit_info - . - #hasheq((description - . - "Indicates what items on the Audit Info page were edited during the revision Census mapping: REVISIONS, AUDITINFO") - (format . "character varying") - (in . "query") - (name . "audit_info") - (required . #f) - (type . "string"))) - (rowFilter.vw_revision.audit_info_explain - . - #hasheq((description - . - "Explanation of what items on the Audit Info page were edited during the revision Census mapping: REVISIONS, AUDITINFO_EXPLAIN") - (format . "text") - (in . "query") - (name . "audit_info_explain") - (required . #f) - (type . "string"))) - (rowFilter.vw_revision.audit_year - . - #hasheq((description - . - "Audit Year and DBKEY (database key) combined make up the primary key. Census mapping: REVISIONS, AUDITYEAR") - (format . "character varying") - (in . "query") - (name . "audit_year") - (required . #f) - (type . "string"))) - (rowFilter.vw_revision.cap - . - #hasheq((description - . - "Indicates what items on the CAP Text page were edited during the revision Census mapping: REVISIONS, CAP") - (format . "character varying") - (in . "query") - (name . "cap") - (required . #f) - (type . "string"))) - (rowFilter.vw_revision.cap_explain - . - #hasheq((description - . - "Explanation of what items on the CAP Text page were edited during the revision Census mapping: REVISIONS, CAP_EXPLAIN") - (format . "text") - (in . "query") - (name . "cap_explain") - (required . #f) - (type . "string"))) - (rowFilter.vw_revision.dbkey - . - #hasheq((description - . - "Audit Year and DBKEY (database key) combined make up the primary key. Census mapping: REVISIONS, DBKEY") - (format . "character varying") - (in . "query") - (name . "dbkey") - (required . #f) - (type . "string"))) - (rowFilter.vw_revision.federal_awards - . - #hasheq((description - . - "Indicates what items on the Federal Awards page were edited during the revision Census mapping: REVISIONS, FEDERALAWARDS") - (format . "character varying") - (in . "query") - (name . "federal_awards") - (required . #f) - (type . "string"))) - (rowFilter.vw_revision.federal_awards_explain - . - #hasheq((description - . - "Explanation of what items on the Federal Awards page were edited during the revision Census mapping: REVISIONS, FEDERALAWARDS_EXPLAIN") - (format . "text") - (in . "query") - (name . "federal_awards_explain") - (required . #f) - (type . "string"))) - (rowFilter.vw_revision.findings - . - #hasheq((description - . - "Indicates what items on the Findings page were edited during the revision Census mapping: REVISIONS, FINDINGS") - (format . "character varying") - (in . "query") - (name . "findings") - (required . #f) - (type . "string"))) - (rowFilter.vw_revision.findings_explain - . - #hasheq((description - . - "Explanation of what items on the Findings page were edited during the revision Census mapping: REVISIONS, FINDINGS_EXPLAIN") - (format . "text") - (in . "query") - (name . "findings_explain") - (required . #f) - (type . "string"))) - (rowFilter.vw_revision.findings_text - . - #hasheq((description - . - "Indicates what items on the Text of the Audit Findings page were edited during the revision Census mapping: REVISIONS, FINDINGSTEXT") - (format . "character varying") - (in . "query") - (name . "findings_text") - (required . #f) - (type . "string"))) - (rowFilter.vw_revision.findings_text_explain - . - #hasheq((description - . - "Explanation of what items on the Text of the Audit Findings page were edited during the revision Census mapping: REVISIONS, FINDINGSTEXT_EXPLAIN") - (format . "text") - (in . "query") - (name . "findings_text_explain") - (required . #f) - (type . "string"))) - (rowFilter.vw_revision.general_id - . - #hasheq((format . "bigint[]") - (in . "query") - (name . "general_id") - (required . #f) - (type . "string"))) - (rowFilter.vw_revision.general_info - . - #hasheq((description - . - "Indicates what items on the General Info page were edited during the revision Census mapping: REVISIONS, GENINFO") - (format . "character varying") - (in . "query") - (name . "general_info") - (required . #f) - (type . "string"))) - (rowFilter.vw_revision.general_info_explain - . - #hasheq((description - . - "Explanation of what items on the General Info page were edited during the revision Census mapping: REVISIONS, GENINFO_EXPLAIN") - (format . "text") - (in . "query") - (name . "general_info_explain") - (required . #f) - (type . "string"))) - (rowFilter.vw_revision.id - . - #hasheq((description . "ID ") - (format . "bigint") - (in . "query") - (name . "id") - (required . #f) - (type . "string"))) - (rowFilter.vw_revision.is_public - . - #hasheq((description - . - "True for public records, False for non-public records ") - (format . "boolean") - (in . "query") - (name . "is_public") - (required . #f) - (type . "string"))) - (rowFilter.vw_revision.notes_to_sefa - . - #hasheq((description - . - "Indicates what items on the Notes to Schedule of Expenditures of Federal Awards (SEFA) page were edited during the revision Census mapping: REVISIONS, NOTESTOSEFA") - (format . "character varying") - (in . "query") - (name . "notes_to_sefa") - (required . #f) - (type . "string"))) - (rowFilter.vw_revision.notes_to_sefa_explain - . - #hasheq((description - . - "Explanation of what items on the Notes to Schedule of Expenditures of Federal Awards (SEFA) page were edited during the revision Census mapping: REVISIONS, NOTESTOSEFA_EXPLAIN") - (format . "text") - (in . "query") - (name . "notes_to_sefa_explain") - (required . #f) - (type . "string"))) - (rowFilter.vw_revision.other - . - #hasheq((description - . - "Indicates what other miscellaneous items were edited during the revision Census mapping: REVISIONS, OTHER") - (format . "character varying") - (in . "query") - (name . "other") - (required . #f) - (type . "string"))) - (rowFilter.vw_revision.other_explain - . - #hasheq((description - . - "Explanation of what other miscellaneous items were edited during the revision Census mapping: REVISIONS, OTHER_EXPLAIN") - (format . "text") - (in . "query") - (name . "other_explain") - (required . #f) - (type . "string"))) - (rowFilter.vw_revision.revision_id - . - #hasheq((description - . - "Internal Unique Identifier for the record Census mapping: REVISIONS, ELECRPTREVISIONID") - (format . "integer") - (in . "query") - (name . "revision_id") - (required . #f) - (type . "string"))) - (select - . - #hasheq((description . "Filtering Columns") - (in . "query") - (name . "select") - (required . #f) - (type . "string"))))) - (paths - . - #hasheq((/ - . - #hasheq((get - . - #hasheq((produces - . - ("application/openapi+json" - "application/json")) - (responses - . - #hasheq((|200| - . - #hasheq((description . "OK"))))) - (summary - . - "OpenAPI description (this document)") - (tags . ("Introspection")))))) - (/vw_auditee - . - #hasheq((get - . - #hasheq((parameters - . - (#hasheq(($ref - . - "#/parameters/rowFilter.vw_auditee.id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditee.auditee_certify_name")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditee.auditee_certify_title")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditee.auditee_contact")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditee.auditee_email")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditee.auditee_fax")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditee.auditee_name")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditee.auditee_name_title")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditee.auditee_phone")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditee.auditee_title")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditee.auditee_street1")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditee.auditee_street2")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditee.auditee_city")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditee.auditee_state")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditee.auditee_zip_code")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditee.duns_list")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditee.uei_list")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditee.is_public")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditee.ein_subcode")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditee.ein_list")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditee.general_id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditee.dbkey")) - #hasheq(($ref . "#/parameters/select")) - #hasheq(($ref . "#/parameters/order")) - #hasheq(($ref . "#/parameters/range")) - #hasheq(($ref - . - "#/parameters/rangeUnit")) - #hasheq(($ref . "#/parameters/offset")) - #hasheq(($ref . "#/parameters/limit")) - #hasheq(($ref - . - "#/parameters/preferCount")))) - (responses - . - #hasheq((|200| - . - #hasheq((description . "OK") - (schema - . - #hasheq((items - . - #hasheq(($ref - . - "#/definitions/vw_auditee"))) - (type - . - "array"))))) - (|206| - . - #hasheq((description - . - "Partial Content"))))) - (summary - . - "Information about the entity undergoing the audit") - (tags . ("vw_auditee")))))) - (/vw_auditor - . - #hasheq((get - . - #hasheq((parameters - . - (#hasheq(($ref - . - "#/parameters/rowFilter.vw_auditor.id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditor.cpa_phone")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditor.cpa_fax")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditor.cpa_state")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditor.cpa_city")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditor.cpa_title")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditor.cpa_street1")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditor.cpa_street2")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditor.cpa_zip_code")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditor.cpa_contact")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditor.cpa_email")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditor.cpa_firm_name")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditor.cpa_ein")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditor.sequence_number")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditor.is_public")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditor.cpa_country")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditor.cpa_foreign")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditor.general_id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_auditor.secondary_auditor_general_id")) - #hasheq(($ref . "#/parameters/select")) - #hasheq(($ref . "#/parameters/order")) - #hasheq(($ref . "#/parameters/range")) - #hasheq(($ref - . - "#/parameters/rangeUnit")) - #hasheq(($ref . "#/parameters/offset")) - #hasheq(($ref . "#/parameters/limit")) - #hasheq(($ref - . - "#/parameters/preferCount")))) - (responses - . - #hasheq((|200| - . - #hasheq((description . "OK") - (schema - . - #hasheq((items - . - #hasheq(($ref - . - "#/definitions/vw_auditor"))) - (type - . - "array"))))) - (|206| - . - #hasheq((description - . - "Partial Content"))))) - (summary - . - "Information about the Auditing CPA firm conducting the audit") - (tags . ("vw_auditor")))))) - (/vw_cap_text - . - #hasheq((get - . - #hasheq((parameters - . - (#hasheq(($ref - . - "#/parameters/rowFilter.vw_cap_text.auditee_uei")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_cap_text.auditee_ein")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_cap_text.fy_start_date")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_cap_text.fy_end_date")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_cap_text.audit_year")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_cap_text.id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_cap_text.report_id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_cap_text.finding_ref_number")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_cap_text.charts_tables")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_cap_text.cap_text")) - #hasheq(($ref . "#/parameters/select")) - #hasheq(($ref . "#/parameters/order")) - #hasheq(($ref . "#/parameters/range")) - #hasheq(($ref - . - "#/parameters/rangeUnit")) - #hasheq(($ref . "#/parameters/offset")) - #hasheq(($ref . "#/parameters/limit")) - #hasheq(($ref - . - "#/parameters/preferCount")))) - (responses - . - #hasheq((|200| - . - #hasheq((description . "OK") - (schema - . - #hasheq((items - . - #hasheq(($ref - . - "#/definitions/vw_cap_text"))) - (type - . - "array"))))) - (|206| - . - #hasheq((description - . - "Partial Content"))))) - (tags . ("vw_cap_text")))))) - (/vw_federal_award - . - #hasheq((get - . - #hasheq((parameters - . - (#hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.auditee_uei")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.auditee_ein")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.fy_start_date")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.fy_end_date")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.audit_year")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.report_id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.award_seq_number")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.federal_agency_prefix")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.federal_award_extension")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.additional_award_identification")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.federal_program_name")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.amount_expended")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.cluster_name")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.state_cluster_name")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.other_cluster_name")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.cluster_total")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.federal_program_total")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.is_loan")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.loan_balance_at_audit_period_end")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.is_direct")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.is_major")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.mp_audit_report_type")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.findings_count")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.passthrough_award")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.passthrough_amount")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_federal_award.type_requirement")) - #hasheq(($ref . "#/parameters/select")) - #hasheq(($ref . "#/parameters/order")) - #hasheq(($ref . "#/parameters/range")) - #hasheq(($ref - . - "#/parameters/rangeUnit")) - #hasheq(($ref . "#/parameters/offset")) - #hasheq(($ref . "#/parameters/limit")) - #hasheq(($ref - . - "#/parameters/preferCount")))) - (responses - . - #hasheq((|200| - . - #hasheq((description . "OK") - (schema - . - #hasheq((items - . - #hasheq(($ref - . - "#/definitions/vw_federal_award"))) - (type - . - "array"))))) - (|206| - . - #hasheq((description - . - "Partial Content"))))) - (tags . ("vw_federal_award")))))) - (/vw_finding - . - #hasheq((get - . - #hasheq((parameters - . - (#hasheq(($ref - . - "#/parameters/rowFilter.vw_finding.auditee_uei")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding.auditee_ein")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding.fy_start_date")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding.fy_end_date")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding.audit_year")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding.federal_agency_prefix")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding.federal_award_extension")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding.id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding.report_id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding.award_seq_number")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding.finding_seq_number")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding.finding_ref_number")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding.prior_finding_ref_numbers")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding.modified_opinion")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding.other_non_compliance")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding.is_material_weakness")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding.is_significant_deficiency")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding.other_findings")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding.questioned_costs")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding.repeat_finding")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding.type_requirement")) - #hasheq(($ref . "#/parameters/select")) - #hasheq(($ref . "#/parameters/order")) - #hasheq(($ref . "#/parameters/range")) - #hasheq(($ref - . - "#/parameters/rangeUnit")) - #hasheq(($ref . "#/parameters/offset")) - #hasheq(($ref . "#/parameters/limit")) - #hasheq(($ref - . - "#/parameters/preferCount")))) - (responses - . - #hasheq((|200| - . - #hasheq((description . "OK") - (schema - . - #hasheq((items - . - #hasheq(($ref - . - "#/definitions/vw_finding"))) - (type - . - "array"))))) - (|206| - . - #hasheq((description - . - "Partial Content"))))) - (tags . ("vw_finding")))))) - (/vw_finding_text - . - #hasheq((get - . - #hasheq((parameters - . - (#hasheq(($ref - . - "#/parameters/rowFilter.vw_finding_text.auditee_uei")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding_text.auditee_ein")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding_text.fy_start_date")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding_text.fy_end_date")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding_text.audit_year")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding_text.id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding_text.report_id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding_text.finding_ref_number")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding_text.charts_tables")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_finding_text.finding_text")) - #hasheq(($ref . "#/parameters/select")) - #hasheq(($ref . "#/parameters/order")) - #hasheq(($ref . "#/parameters/range")) - #hasheq(($ref - . - "#/parameters/rangeUnit")) - #hasheq(($ref . "#/parameters/offset")) - #hasheq(($ref . "#/parameters/limit")) - #hasheq(($ref - . - "#/parameters/preferCount")))) - (responses - . - #hasheq((|200| - . - #hasheq((description . "OK") - (schema - . - #hasheq((items - . - #hasheq(($ref - . - "#/definitions/vw_finding_text"))) - (type - . - "array"))))) - (|206| - . - #hasheq((description - . - "Partial Content"))))) - (tags . ("vw_finding_text")))))) - (/vw_findings - . - #hasheq((get - . - #hasheq((parameters - . - (#hasheq(($ref - . - "#/parameters/rowFilter.vw_findings.id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings.modified_opinion")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings.other_non_compliance")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings.material_weakness")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings.significant_deficiency")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings.other_findings")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings.questioned_costs")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings.repeat_finding")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings.finding_ref_number")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings.prior_finding_ref_numbers")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings.type_requirement")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings.audit_id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings.audit_findings_id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings.audit_year")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings.dbkey")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings.is_public")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings.findings_text_id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings.general_id")) - #hasheq(($ref . "#/parameters/select")) - #hasheq(($ref . "#/parameters/order")) - #hasheq(($ref . "#/parameters/range")) - #hasheq(($ref - . - "#/parameters/rangeUnit")) - #hasheq(($ref . "#/parameters/offset")) - #hasheq(($ref . "#/parameters/limit")) - #hasheq(($ref - . - "#/parameters/preferCount")))) - (responses - . - #hasheq((|200| - . - #hasheq((description . "OK") - (schema - . - #hasheq((items - . - #hasheq(($ref - . - "#/definitions/vw_findings"))) - (type - . - "array"))))) - (|206| - . - #hasheq((description - . - "Partial Content"))))) - (summary . "A finding from the audit") - (tags . ("vw_findings")))))) - (/vw_findings_text - . - #hasheq((get - . - #hasheq((parameters - . - (#hasheq(($ref - . - "#/parameters/rowFilter.vw_findings_text.id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings_text.charts_tables")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings_text.finding_ref_number")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings_text.sequence_number")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings_text.text")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings_text.dbkey")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings_text.audit_year")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings_text.is_public")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_findings_text.general_id")) - #hasheq(($ref . "#/parameters/select")) - #hasheq(($ref . "#/parameters/order")) - #hasheq(($ref . "#/parameters/range")) - #hasheq(($ref - . - "#/parameters/rangeUnit")) - #hasheq(($ref . "#/parameters/offset")) - #hasheq(($ref . "#/parameters/limit")) - #hasheq(($ref - . - "#/parameters/preferCount")))) - (responses - . - #hasheq((|200| - . - #hasheq((description . "OK") - (schema - . - #hasheq((items - . - #hasheq(($ref - . - "#/definitions/vw_findings_text"))) - (type - . - "array"))))) - (|206| - . - #hasheq((description - . - "Partial Content"))))) - (summary . "Specific findings details") - (tags . ("vw_findings_text")))))) - (/vw_general - . - #hasheq((get - . - #hasheq((parameters - . - (#hasheq(($ref - . - "#/parameters/rowFilter.vw_general.id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.report_id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditee_certify_name")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditee_certify_title")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditee_contact_name")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditee_email")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.hist_auditee_fax")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditee_name")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditee_phone")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditee_contact_title")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditee_address_line_1")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.hist_auditee_address_line_2")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditee_city")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditee_state")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditee_ein")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.multiple_ein")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditee_duns")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.multiple_duns")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditee_uei")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.multiple_uei")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditee_addl_uei_list")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditee_addl_ein_list")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditee_addl_duns_list")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.ein_subcode")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditee_zip")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditor_phone")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.hist_auditor_fax")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditor_state")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditor_city")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditor_contact_title")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditor_address_line_1")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.hist_auditor_address_line_2")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditor_zip")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditor_country")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditor_contact_name")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditor_email")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditor_firm_name")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditor_foreign_addr")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditor_ein")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.multiple_auditors")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.pdf_url")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.cognizant_agency")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.oversight_agency")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditee_certified_date")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.auditor_certified_date")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.date_published")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.fac_accepted_date")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.form_date_received")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.initial_date_received")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.date_received")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.fy_end_date")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.fy_start_date")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.hist_previous_completed_on")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.hist_previous_date_published")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.hist_completed_date")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.hist_component_date_received")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.audit_year")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.audit_type")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.hist_reportable_condition")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.is_significant_deficiency")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.is_material_weakness")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.condition_or_deficiency_major_program")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.current_or_former_findings")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.dollar_threshold")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.is_duplicate_reports")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.entity_type")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.is_going_concern")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.is_low_risk")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.is_material_noncompliance")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.material_weakness")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.material_weakness_major_program")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.number_months")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.audit_period_covered")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.prior_year_schedule")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.questioned_costs")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.report_required")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.special_framework")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.is_special_framework_required")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.total_fed_expenditures")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.hist_type_of_entity")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.type_report_financial_statements")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.type_report_major_program")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.type_report_special_purpose_framework")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.suppression_code")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.type_audit_code")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.cfac_report_id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.cfac_version")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.dbkey")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.is_public")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.modified_date")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.create_date")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.data_source")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.federal_agency_prefix")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_general.federal_award_extension")) - #hasheq(($ref . "#/parameters/select")) - #hasheq(($ref . "#/parameters/order")) - #hasheq(($ref . "#/parameters/range")) - #hasheq(($ref - . - "#/parameters/rangeUnit")) - #hasheq(($ref . "#/parameters/offset")) - #hasheq(($ref . "#/parameters/limit")) - #hasheq(($ref - . - "#/parameters/preferCount")))) - (responses - . - #hasheq((|200| - . - #hasheq((description . "OK") - (schema - . - #hasheq((items - . - #hasheq(($ref - . - "#/definitions/vw_general"))) - (type - . - "array"))))) - (|206| - . - #hasheq((description - . - "Partial Content"))))) - (tags . ("vw_general")))))) - (/vw_note - . - #hasheq((get - . - #hasheq((parameters - . - (#hasheq(($ref - . - "#/parameters/rowFilter.vw_note.auditee_uei")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_note.auditee_ein")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_note.fy_start_date")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_note.fy_end_date")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_note.audit_year")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_note.id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_note.report_id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_note.note_seq_number")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_note.type_id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_note.note_index")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_note.content")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_note.note_title")) - #hasheq(($ref . "#/parameters/select")) - #hasheq(($ref . "#/parameters/order")) - #hasheq(($ref . "#/parameters/range")) - #hasheq(($ref - . - "#/parameters/rangeUnit")) - #hasheq(($ref . "#/parameters/offset")) - #hasheq(($ref . "#/parameters/limit")) - #hasheq(($ref - . - "#/parameters/preferCount")))) - (responses - . - #hasheq((|200| - . - #hasheq((description . "OK") - (schema - . - #hasheq((items - . - #hasheq(($ref - . - "#/definitions/vw_note"))) - (type - . - "array"))))) - (|206| - . - #hasheq((description - . - "Partial Content"))))) - (tags . ("vw_note")))))) - (/vw_passthrough - . - #hasheq((get - . - #hasheq((parameters - . - (#hasheq(($ref - . - "#/parameters/rowFilter.vw_passthrough.id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_passthrough.passthrough_name")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_passthrough.passthrough_id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_passthrough.audit_id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_passthrough.audit_year")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_passthrough.dbkey")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_passthrough.is_public")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_passthrough.general_id")) - #hasheq(($ref . "#/parameters/select")) - #hasheq(($ref . "#/parameters/order")) - #hasheq(($ref . "#/parameters/range")) - #hasheq(($ref - . - "#/parameters/rangeUnit")) - #hasheq(($ref . "#/parameters/offset")) - #hasheq(($ref . "#/parameters/limit")) - #hasheq(($ref - . - "#/parameters/preferCount")))) - (responses - . - #hasheq((|200| - . - #hasheq((description . "OK") - (schema - . - #hasheq((items - . - #hasheq(($ref - . - "#/definitions/vw_passthrough"))) - (type - . - "array"))))) - (|206| - . - #hasheq((description - . - "Partial Content"))))) - (summary - . - "The pass-through entity information, when it is not a direct federal award") - (tags . ("vw_passthrough")))))) - (/vw_revision - . - #hasheq((get - . - #hasheq((parameters - . - (#hasheq(($ref - . - "#/parameters/rowFilter.vw_revision.id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_revision.findings")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_revision.revision_id")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_revision.federal_awards")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_revision.general_info_explain")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_revision.federal_awards_explain")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_revision.notes_to_sefa_explain")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_revision.audit_info_explain")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_revision.findings_explain")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_revision.findings_text_explain")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_revision.cap_explain")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_revision.other_explain")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_revision.audit_info")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_revision.notes_to_sefa")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_revision.findings_text")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_revision.cap")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_revision.other")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_revision.general_info")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_revision.audit_year")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_revision.dbkey")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_revision.is_public")) - #hasheq(($ref - . - "#/parameters/rowFilter.vw_revision.general_id")) - #hasheq(($ref . "#/parameters/select")) - #hasheq(($ref . "#/parameters/order")) - #hasheq(($ref . "#/parameters/range")) - #hasheq(($ref - . - "#/parameters/rangeUnit")) - #hasheq(($ref . "#/parameters/offset")) - #hasheq(($ref . "#/parameters/limit")) - #hasheq(($ref - . - "#/parameters/preferCount")))) - (responses - . - #hasheq((|200| - . - #hasheq((description . "OK") - (schema - . - #hasheq((items - . - #hasheq(($ref - . - "#/definitions/vw_revision"))) - (type - . - "array"))))) - (|206| - . - #hasheq((description - . - "Partial Content"))))) - (summary - . - "Documents what was revised on the associated form from the previous version") - (tags . ("vw_revision")))))))) - (produces - . - ("application/json" "application/vnd.pgrst.object+json" "text/csv")) - (schemes . ("http")) - (swagger . "2.0")) diff --git a/tools/openapi2uswds/base.rkt b/tools/openapi2uswds/base.rkt deleted file mode 100644 index 80e053b6..00000000 --- a/tools/openapi2uswds/base.rkt +++ /dev/null @@ -1,39 +0,0 @@ -#lang racket -(require racket/generator - net/http-easy - json) - -(provide (all-defined-out)) - - -(struct Endpoint (name description fields) - #:transparent) -(struct Field (name description type format max_length) - #:transparent) -(struct empty-string ()) - - -(define (endpoints-in-order loe) - (sort loe (lambda (a b) (string hash? (and/c hash? immutable?)) -(define (hash->immutable-hash table) - (if (immutable? table) - table ;; If hash is already immutable, just return it - (for/hash ([(k v) (in-mutable-hash table)]) (values k v)))) - -(define (get-metadata url api-version key #:default [default "unknown"]) - (define headers (make-hash)) - (when api-version - (hash-set! headers 'Accept-Profile api-version)) - (define res (get (format "~a/metadata?key=eq.~a" url key) #:headers (hash->immutable-hash headers))) - (define arr (bytes->jsexpr (response-body res))) - (define h (cond [(empty? arr) (make-hash)] [(list? arr) (first arr)] [else (make-hash)])) - (hash-ref h 'value default)) diff --git a/tools/openapi2uswds/main.rkt b/tools/openapi2uswds/main.rkt deleted file mode 100644 index 2db47fb6..00000000 --- a/tools/openapi2uswds/main.rkt +++ /dev/null @@ -1,254 +0,0 @@ -#lang racket -(require "base.rkt" - "template.rkt") -(require - data/order - json - net/http-easy - racket/pretty - xml) - -;; -;; json->tree :: JSON object (as native Racket data typeS) -;; -;; Returns a list of Endpoint structures. -(define (json->tree json) - (for/list ([(endpoint properties) (hash-ref json 'definitions)]) - (Endpoint (symbol->string endpoint) - (hash-ref properties 'description (empty-string)) - (filter Field? - (for/list ([(field-name field-properties) (hash-ref properties 'properties)]) - (when (hash? field-properties) - (Field (symbol->string field-name) - (hash-ref field-properties 'description (empty-string)) - (hash-ref field-properties 'type (empty-string)) - (hash-ref field-properties 'format (empty-string)) - (hash-ref field-properties 'max-length (empty-string))))))))) - -;; -;; process-file-or-url :: url filename -;; -;; Consumes a JSON OpenAPI spec (either as a URL or a file in the filesystem) -;; and returns a representation of that JSON object as native Racket data structures -;; -(define (process-file-or-url url - json-file - #:input-directory input-directory - #:api-version api-version - #:jwt-token jwt-token - #:api-key api-key - ) - (cond - [json-file - (define fp (open-input-file (build-path - input-directory - json-file))) - (read-json fp)] - [url - (define headers (make-hash)) - (when api-version - (hash-set! headers 'Accept-Profile api-version)) - (when jwt-token - (hash-set! headers 'Authorization (format "Bearer ~a" jwt-token))) - (when api-key - (hash-set! headers 'X-API-Key api-key)) - - (define res (get url #:headers (hash->immutable-hash headers))) - - (cond - [(= 200 (response-status-code res)) - 'continue] - [(= 400 (response-status-code res)) - (printf "Bad response: 400~n") - (exit 1)]) - - (define body (response-body res)) - (response-close! res) - (with-input-from-string (bytes->string/utf-8 body) - (λ () (read-json)))])) - -(define (write-documentation-to-html #:title title - #:version version - #:document assembled-document - #:input-directory input-directory - #:output-directory output-directory - #:destination-filename destination-filename - #:template-filename [template-filename false]) - - - (define outfp (open-output-file (build-path - output-directory - destination-filename) #:mode 'text #:exists 'replace)) - - - - (cond - [template-filename - (define templatep (open-input-file (build-path - input-directory - template-filename))) - (display "" outfp) - (for ([line (port->lines templatep)]) - (cond - [(regexp-match "" line) - (displayln (format title version) outfp)] - [(regexp-match "" line) - (displayln (format title version) outfp)] - [(regexp-match "" line) - (display-xml/content (xexpr->xml assembled-document) - outfp - #:indentation 'classic)] - [else (displayln line outfp)]))] - [else - (display-xml/content (xexpr->xml assembled-document) - outfp - #:indentation 'classic)]) - - - (close-output-port outfp) - ) - -;; -;; process-openapi -;; -;; -(define (process-openapi #:url url - #:file json-file - #:title [title "FAC API version ~a documentation"] - #:version [version "1.0.0"] - #:destination-filename destination-filename - #:template-filename template-filename - #:input-directory input-directory - #:output-directory output-directory - #:api-version api-version - #:jwt-token [jwt-token false] - #:api-key [api-key false] - ) - - ;; Takes a file or URL for an OpenAPI JSON spec - ;; and turns it into a list of Endpoint objects. - (define json (process-file-or-url url - json-file - #:input-directory input-directory - #:api-version api-version - #:jwt-token jwt-token - #:api-key api-key - )) - (define tree (json->tree json)) - - ;; Assembles the tree of documentation that will - ;; then be embedded into the template. - (define full - (render #:endpoints tree - #:title title - #:version version)) - - (define body - (render-body #:endpoints tree - #:title title - #:version version - )) - - (define nav - (render-nav #:endpoints tree - #:title title - #:version version - )) - - - ;; Embeds content into the template and writes it out to a file. - (write-documentation-to-html #:document full - #:title title - #:version version - #:destination-filename (format "~a.html" destination-filename) - #:template-filename template-filename - #:input-directory input-directory - #:output-directory output-directory) - - (write-documentation-to-html #:document body - #:title title - #:version version - #:destination-filename (format "~a-body.html" destination-filename) - #:input-directory input-directory - #:output-directory output-directory) - (write-documentation-to-html #:document nav - #:title title - #:version version - #:destination-filename (format "~a-nav.html" destination-filename) - #:input-directory input-directory - #:output-directory output-directory) - - ) - -;; Need to provide this for the submod below. -(provide process-openapi) - -;; The CLI module makes composing the -;; command-line interface straight-forward. -(module* main cli - (require (submod "..")) - (require "base.rkt") - - ;; If they user doesn't provide these, we will. - (define default-destination "api-documentation") - (define default-template "template.html") - (define default-output-directory ".") - (define default-input-directory ".") - - - (flag (openapi-url url) - ("-u" "--url" "OpenAPI URL") - (openapi-url url)) - - (flag (openapi-file fname) - ("-f" "--file" "OpenAPI file (JSON)") - (openapi-file fname)) - - (flag (destination-file fname) - ("-o" "--outfile" "Output filename base") - (destination-file fname)) - - (flag (template-file tfname) - ("-t" "--template" "Template filename") - (template-file tfname)) - - (flag (output-directory od) - ("-d" "--output-directory" "Output directory") - (output-directory od)) - (flag (input-directory id) - ("-i" "--input-directory" "Input directory") - (input-directory id)) - - - (flag (api-version apiv) - ("-a" "--api-version" "API version") - (api-version apiv)) - - (flag (jwt-token jwt) - ("-j" "--jwt-token" "JWT Token") - (jwt-token jwt)) - - (flag (api-key apikey) - ("-k" "--api-key" "api.data.gov key") - (api-key apikey)) - - (program (openapi-to-uswds) - (cond - [(or (openapi-file) (openapi-url)) - (process-openapi - #:url (openapi-url) - #:file (openapi-file) - #:version (or (api-version) (get-metadata (openapi-url) (api-version) "version" #:default "1.0.0")) - #:destination-filename (or (destination-file) default-destination) - #:template-filename (or (template-file) default-template) - #:output-directory (or (output-directory) default-output-directory) - #:input-directory (or (input-directory) default-input-directory) - #:api-version (api-version) - #:jwt-token (jwt-token) - #:api-key (api-key) - )] - [else - (printf "You must provide an OpenAPI spec, either as a filename or URL. Exiting.~n")]) - ) - - (run openapi-to-uswds)) diff --git a/tools/openapi2uswds/template.html b/tools/openapi2uswds/template.html deleted file mode 100644 index 7ef2bfcd..00000000 --- a/tools/openapi2uswds/template.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - <!-- TITLE --> - - - - - - - \ No newline at end of file diff --git a/tools/openapi2uswds/template.rkt b/tools/openapi2uswds/template.rkt deleted file mode 100644 index 1bdb1e29..00000000 --- a/tools/openapi2uswds/template.rkt +++ /dev/null @@ -1,125 +0,0 @@ -#lang racket -(require "base.rkt" - gregor) -(provide render) - -(provide (all-defined-out)) - -(define (render #:endpoints [endpoints '()] - ;;#:definitions [definitions (hash)] - #:title title - #:version version - ) - ` (div ([class "usa-section "]) - (div ([class "grid-row grid-gap"]) - (div ([class "grid-col-2 margin-bottom-4 tablet:margin-bottom-0 padding-2"]) - (h2 ([class "padding-1"]) - "Endpoints") - ,(endpoints->sidenav (endpoints-in-order endpoints)) - (p ([class "padding-1"]) - (em - ,(format "Last renedered ~a" (~t (today #:tz "America/New_York") - "E, MMMM d, y")) - ))) - (main ([class "desktop:grid-col-10 usa-prose usa-layout-docs__main"] ;; usa-layout-docs - [id "main-content"]) - (h1 ,(format title version)) - (h2 ([id "api-endpoints"]) - "API endpoints") - ,(render-endpoints (endpoints-in-order endpoints)) - )) - )) - -(define (render-body #:endpoints [endpoints '()] - ;;#:definitions [definitions (hash)] - #:title title - #:version version - ) - `(main ([class "usa-prose usa-layout-docs__main"] ;; usa-layout-docs - [id "main-content"]) - ,(render-endpoints (endpoints-in-order endpoints)) - )) - -(define (render-nav #:endpoints [endpoints '()] - ;;#:definitions [definitions (hash)] - #:title title - #:version version - ) - (endpoints->sidenav (endpoints-in-order endpoints))) - -;;;;; - -(define (->s o) - (cond - [(empty-string? o) ""] - [else - (~a o)])) - -;; -;; Navigation -;; -(define (endpoints->index endpoints) - `(ul - ,@(for/list ([endpoint endpoints]) - `(li (a ([href ,(format "#endpoint-~a" (Endpoint-name endpoint))]) - ,(~a (Endpoint-name endpoint))))))) - -(define (endpoints->sidenav endpoints) - `(nav ([aria-label "Side navigation"]) - (ul ([class "usa-sidenav"]) - ,@(for/list ([endpoint endpoints]) - `(li ([class "usa-sidenav__item"]) - (a ([href ,(format "#endpoint-~a" (Endpoint-name endpoint))]) - ,(->s (Endpoint-name endpoint)))))))) - - -(define (render-endpoints endpoints) - (define column-widths '(3 2 2 5)) - (define (grid-col ndx) - (~a (format "grid-col-~a" (list-ref column-widths ndx)))) - - (define pieces - (for/list ([endpoint endpoints] - [ndx (length endpoints)]) - (define toggle-target (format "accordion-endpoint-~a" ndx)) - `(div - (a ([name ,(format "endpoint-~a" (Endpoint-name endpoint))])) - ;; Endpoint name - (h3 ,(->s (Endpoint-name endpoint))) - ;; Collapse the parameters - (h4 ([class "usa-accordion__heading"] - ) - (button ([type "button"] - [class "usa-accordion__button"] - [aria-expanded "false"] - [aria-controls ,toggle-target] - ) - ,(->s (format "Query params on the ~a endpoint" - (Endpoint-name endpoint) - )))) - (div ([id ,toggle-target] - [class "usa-accordion__content usa-prose"]) - (p ,(->s (Endpoint-description endpoint))) - (h3 "Fields") - (div ([class "grid-row"]) - (div ([class ,(grid-col 0)]) "Field name") - (div ([class ,(grid-col 1)]) "Type") - (div ([class ,(grid-col 2)]) "Format") - (div ([class ,(grid-col 3)]) "Description")) - ,@(for/list ([field (fieldnames-in-order (Endpoint-fields endpoint))]) - `(div ([class "grid-row"]) - (div ([class ,(grid-col 0)]) - (h4 ,(->s (Field-name field)))) - (div ([class ,(grid-col 1)]) - (br) - (span ([class "usa-tag"]) - ,(->s (Field-type field)))) - (div ([class ,(grid-col 2)]) - ,(->s (Field-format field))) - (div ([class ,(grid-col 3)]) - (p ,(->s (Field-description field))))) - ))))) - - `(div ([class "usa-accordion padding-4"]) - ,@pieces - )) From 5428617945717015b8aa87e687772f5762105c6e Mon Sep 17 00:00:00 2001 From: John Jediny Date: Fri, 16 Feb 2024 13:34:17 -0500 Subject: [PATCH 08/13] Create SECURITY.md --- SECURITY.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 SECURITY.md diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000..effd2b21 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,32 @@ +# Security Policy + +As a U.S. Government agency, the General Services Administration (GSA) takes +seriously our responsibility to protect the public's information, including +financial and personal information, from unwarranted disclosure. + +## Reporting a Vulnerability + +Services operated by the U.S. General Services Administration (GSA) +are covered by the **GSA Vulnerability Disclosure Program (VDP)**. + +See the [GSA Vulnerability Disclosure Policy](https://gsa.gov/vulnerability-disclosure-policy) +at for details including: + +* How to submit a report if you believe you have discovered a vulnerability. +* Bug bounty scope. +* GSA's coordinated disclosure policy. +* Information on how you may conduct security research on GSA developed + software and systems. +* Important legal and policy guidance. + +## Supported Versions + +Please note that only certain branches are supported with security updates. + +| Version (Branch) | Supported | +| ---------------- | ------------------ | +| main | :white_check_mark: | +| other | :x: | + +When using this code or reporting vulnerabilities please only use supported +versions. From 306d69b6e387aff953765f4e1919219a35028536 Mon Sep 17 00:00:00 2001 From: Matt Jadud Date: Fri, 1 Mar 2024 09:00:45 -0500 Subject: [PATCH 09/13] Update draft for Mar 1. --- assets/img/updates/submissions-in-2016.png | Bin 0 -> 17475 bytes assets/img/updates/submissions-in-2017.png | Bin 0 -> 16588 bytes assets/img/updates/submissions-in-2018.png | Bin 0 -> 17495 bytes assets/img/updates/submissions-in-2019.png | Bin 0 -> 15203 bytes assets/img/updates/submissions-in-2020.png | Bin 0 -> 16728 bytes assets/img/updates/submissions-in-2021.png | Bin 0 -> 16585 bytes assets/img/updates/submissions-in-2022.png | Bin 0 -> 17837 bytes assets/img/updates/submissions-in-2023.png | Bin 0 -> 13454 bytes src/info/updates/archive.md | 90 ++++++++++++++++++++- src/info/updates/index.md | 84 ++++++++----------- 10 files changed, 123 insertions(+), 51 deletions(-) create mode 100644 assets/img/updates/submissions-in-2016.png create mode 100644 assets/img/updates/submissions-in-2017.png create mode 100644 assets/img/updates/submissions-in-2018.png create mode 100644 assets/img/updates/submissions-in-2019.png create mode 100644 assets/img/updates/submissions-in-2020.png create mode 100644 assets/img/updates/submissions-in-2021.png create mode 100644 assets/img/updates/submissions-in-2022.png create mode 100644 assets/img/updates/submissions-in-2023.png diff --git a/assets/img/updates/submissions-in-2016.png b/assets/img/updates/submissions-in-2016.png new file mode 100644 index 0000000000000000000000000000000000000000..fea67c75f6d4068bd01d330030b99f970924832f GIT binary patch literal 17475 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 F{{ZG-(NO>Z literal 0 HcmV?d00001 diff --git a/assets/img/updates/submissions-in-2018.png b/assets/img/updates/submissions-in-2018.png new file mode 100644 index 0000000000000000000000000000000000000000..913814d3b2ff61ceb425a5e919f8b6a7e032e651 GIT binary patch literal 17495 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≧UsueVs8rx_q-JNAnCaRdCvxJs<(H3zJ&e4( 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 literal 0 HcmV?d00001 diff --git a/assets/img/updates/submissions-in-2019.png b/assets/img/updates/submissions-in-2019.png new file mode 100644 index 0000000000000000000000000000000000000000..73bb308f5c6e5cd29cd145b3b8da2020460cc12c GIT binary patch literal 15203 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 literal 0 HcmV?d00001 diff --git a/assets/img/updates/submissions-in-2021.png b/assets/img/updates/submissions-in-2021.png new file mode 100644 index 0000000000000000000000000000000000000000..6cecdb7d4866a63399fbb0192325392ed14675f6 GIT binary patch literal 16585 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 literal 0 HcmV?d00001 diff --git a/assets/img/updates/submissions-in-2022.png b/assets/img/updates/submissions-in-2022.png new file mode 100644 index 0000000000000000000000000000000000000000..1c67d12686c11785bcd20e4fd090255d64360e07 GIT binary patch literal 17837 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 literal 0 HcmV?d00001 diff --git a/src/info/updates/archive.md b/src/info/updates/archive.md index 094e54df..508a92dd 100644 --- a/src/info/updates/archive.md +++ b/src/info/updates/archive.md @@ -10,12 +10,100 @@ meta: The FAC is committed to working transparently and openly. In addition to [our regular updates](https://www.fac.gov/info/updates/), you can find historical updates below. + +
+

+ +

+
+ +The team has been focused on completing a migration of data from Census to GSA. This update covers mid-December to the current week. + +### Historic data transfer + +**Single Audit submissions from 2016–present are now available from the GSA FAC, and the Census Bureau is shutting down their data distribution.** Single Audits from prior years will appear in our search results. This is a major milestone, and future work will involve documenting the data migration, our continued curation of this data, and improvements to how this data is queried and used. + +The migration caused some disruptions to service. With 10 times more data, our system has struggled to keep up with volume for some of our search filters. The most affected filter is the ALN search. Results for this filter show whether an audit contains findings (“Findings My ALN/Findings Other ALN”). Before the migration, this filter applied to small amounts of data, but after adding prior years, this began crashing the system. We've removed this feature to resolve the system strain. Our team is working on a replacement feature to handle the larger amount of data. + + +### What we delivered + +We work in [an agile manner](https://asana.com/resources/agile-methodology). That means we have a long-term strategy, medium-term features we work to deliver, and make continuous improvement and bug fixes to the existing product. + +#### Customer experience +We achieved “helpdesk zero” in the last week of January. We had no questions come in on a workday, and we emptied our queue so we had no support questions left to answer. We have continued to empty our question queue on a near-daily basis. + +The team currently replies to a ticket within 1.5 hours of receipt, and closes 75% of tickets within 8 hours. The helpdesk remains an excellent place to get timely support. + +#### UX/Design + +We completed user testing on navigation changes for [FAC.gov]({{ config.baseUrl }}). This validated a new site structure that will be easier for users to navigate. + +The team finalized a research plan around audit resolution work. We began interviews with audit resolution officials, IG offices, and other users. + +#### Submission improvements + +We made multiple improvements to the submission experience. We use research and interviews with our users, as well as issues reported in the helpdesk, to guide this work. + +- Added an SF-SAC summary report, allowing users to review the form data for in-progress and completed audits (PR [3025](https://github.com/GSA-TTS/FAC/pull/3025)). + +- Significantly sped up PDF validation (PR [3057](https://github.com/GSA-TTS/FAC/pull/3057)). + +- Submitters can now unlock an in-progress audit anytime up to the time of final submission (PR [3136](https://github.com/GSA-TTS/FAC/pull/3136)). + +- Synchronization fixes between the audit state and submission checklist (PR [3144](https://github.com/GSA-TTS/FAC/pull/3144)). + +- Users no longer have to log out and back in for changes to user access (e.g. changing the Auditee Certifying Official email address) to take effect. (PR [3194](https://github.com/GSA-TTS/FAC/pull/3194)). + +- Simplified the submission checklist after an audit is validated and locked for certification. (PR [3197](https://github.com/GSA-TTS/FAC/pull/3197)). + +- Improved validations regarding reference numbers (PR [3221](https://github.com/GSA-TTS/FAC/pull/3221)). + +- Added the ability to download Audit Report Packages and the SF-SAC for in-progress review (PR [3212](https://github.com/GSA-TTS/FAC/pull/3212)). + +- Many search performance improvements (PR [3283](https://github.com/GSA-TTS/FAC/pull/3283)). + +- Fixes around our new “testing” banner and pre-certification report generation (PRs [3261](https://github.com/GSA-TTS/FAC/pull/3261), [3326](https://github.com/GSA-TTS/FAC/pull/3326), [3333](https://github.com/GSA-TTS/FAC/pull/3333)). + +- Improved validation error reporting around ALNs (PR [3230](https://github.com/GSA-TTS/FAC/pull/3230)). + +- Improved validation and error reporting around empty/zero loan balances (PR [3335](https://github.com/GSA-TTS/FAC/pull/3335)). + +#### Intake, Search, and API + +We also made multiple improvements to the audit search experience. + +- A small update to SF-SAC summary exports (PR [3296](https://github.com/GSA-TTS/FAC/pull/3296)) that adds ALNs to the Federal Awards sheet. + +- Fixed a performance bug within the FAC API (PR [3355](https://github.com/GSA-TTS/FAC/pull/3355)). + +### What's next? + +We're anticipating March to be a busy month. To support this, we'll be: + +- **Focusing on performance improvements** and growing our team’s capacity for user support so that the auditors and auditees are well-supported during this time. + +- **Providing documentation** regarding the migration of Census data to GSA and how to use it effectively. + +- **Improving search**, both to support Federal oversight work as well as the public’s experience with FAC data. + +- **Adding Tribal data access to the API** (PR [3359](https://github.com/GSA-TTS/FAC/pull/3359)) and writing documentation and legal agreements to accompany it. + +
+