diff --git a/README.md b/README.md index 7e773811..54ef11b4 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,6 @@ finance information. The project code is distributed across these repositories: - [fecfile-web-app](https://github.com/fecgov/fecfile-web-app): this is the browser-based front-end developed in Angular - [fecfile-web-api](https://github.com/fecgov/fecfile-web-api): RESTful endpoint supporting the front-end - [fecfile-validate](https://github.com/fecgov/fecfile-validate): data validation rules and engine -- [fecfile-image-generator](https://github.com/fecgov/fecfile-image-generator): provides competed FEC forms in PDF format The FEC validator is designed around the disemination of FEC defined data specifications using the [JSON Schema Specification](http://json-schema.org/). diff --git a/docs/F24.html b/docs/F24.html new file mode 100644 index 00000000..b24fdb1d --- /dev/null +++ b/docs/F24.html @@ -0,0 +1 @@ + FEC F24

FEC F24


FORM 24 - 24 / 48 HOUR NOTICE OF INDEPENDENT EXPENDITURE

Type: object

If the conditions in the "If" tab are respected, then the conditions in the "Then" tab should be respected. Otherwise, the conditions in the "Else" tab should be respected.

Type: object

Type: const
Specific value: "F24A"
Type: object

\ No newline at end of file diff --git a/docs/F24_spec.html b/docs/F24_spec.html new file mode 100644 index 00000000..274e55d3 --- /dev/null +++ b/docs/F24_spec.html @@ -0,0 +1,189 @@ +F24 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Specification for F24
COL SEQFIELD DESCRIPTIONTYPEREQUIREDSAMPLE DATAVALUE REFERENCERULE REFERENCEFIELD FORM ASSOCIATIONVALIDATION RULES
1FORM TYPEA/N-4X (error)F24NF24+[N|A]
  • REQUIRED
  • type: string
  • must be one of: ['F24N', 'F24A']
2FILER COMMITTEE ID NUMBERA/N-9X (error)C00123456this is the ID of the Committee Account the report/transaction is associated with
  • REQUIRED
  • type: string
  • min length: 9
  • max length: 9
  • regex: ^(?:[PC][0-9]{8}|[HS][0-9]{1}[A-Z]{2}[0-9]{5})$
3REPORT TYPE {24/48 Hour}A/N-2X (error)4824, 48Error if Code is missing; +Error if Coded incorrectly.
  • REQUIRED
  • must be one of: ['24', '48']
4ORIGINAL AMENDMENT DATENUM-8X (conditional error)20120729YYYYMMDDUse date of original report or of most recent amendment.
  • REQUIRED if FORM_TYPE equals F24A
  • type: ['string', 'null']
  • min length: 10
  • regex: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$
5COMMITTEE NAMEA/N-200X (warning)
  • REQUIRED
  • type: string
  • min length: 1
  • max length: 200
  • regex: ^[ -~]{0,200}$
6STREET 1A/N-34X (warning)
  • REQUIRED
  • type: string
  • min length: 1
  • max length: 34
  • regex: ^[ -~]{0,34}$
7STREET 2A/N-34
  • type: ['string', 'null']
  • min length: 0
  • max length: 34
  • regex: ^[ -~]{0,34}$
8CITYA/N-30X (warning)
  • REQUIRED
  • type: string
  • min length: 1
  • max length: 30
  • regex: ^[ -~]{0,30}$
9STATEA-2X (warning)Edit: ST
  • REQUIRED
  • type: string
  • min length: 2
  • max length: 2
  • regex: ^[ -~]{2}$
10ZIPA/N-9X (warning)20643[1234]
  • REQUIRED
  • type: string
  • min length: 1
  • max length: 9
  • regex: ^[ -~]{1,9}$
11TREASURER LAST NAMEA/N-30X (error)Smith
  • REQUIRED
  • type: string
  • min length: 1
  • max length: 30
  • regex: ^[ -~]{0,30}$
12TREASURER FIRST NAMEA/N-20X (error)Patrick
  • REQUIRED
  • type: string
  • min length: 1
  • max length: 20
  • regex: ^[ -~]{0,20}$
13TREASURER MIDDLE NAMEA/N-20Thomas
  • type: ['string', 'null']
  • min length: 0
  • max length: 20
  • regex: ^[ -~]{0,20}$
14TREASURER PREFIXA/N-10Mr.
  • type: ['string', 'null']
  • min length: 0
  • max length: 10
  • regex: ^[ -~]{0,10}$
15TREASURER SUFFIXA/N-10Jr.
  • type: ['string', 'null']
  • min length: 0
  • max length: 10
  • regex: ^[ -~]{0,10}$
16DATE SIGNEDNUM-8X (error)20120729YYYYMMDD
  • REQUIRED
  • type: string
  • min length: 10
  • regex: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$
diff --git a/docs/index.html b/docs/index.html index c08fcffe..e8d89e19 100644 --- a/docs/index.html +++ b/docs/index.html @@ -70,6 +70,19 @@
FORMS & SCHEDULES
+ + Form 24 + Form 24 report form + + + + + + + + + + Schedule A diff --git a/schema/F24.json b/schema/F24.json new file mode 100644 index 00000000..789f6cc6 --- /dev/null +++ b/schema/F24.json @@ -0,0 +1,381 @@ +{ + "$schema": "https://json-schema.org/draft-07/schema#", + "$id": "https://github.com/fecgov/fecfile-validate/blob/main/schema/F24.json", + "version": "8.3.0.1", + "title": "FEC F24", + "description": "FORM 24 - 24 / 48 HOUR NOTICE OF INDEPENDENT EXPENDITURE", + "type": "object", + "required": [ + "form_type", + "filer_committee_id_number", + "report_type_24_48", + "committee_name", + "street_1", + "city", + "state", + "zip", + "treasurer_last_name", + "treasurer_first_name", + "date_signed" + ], + "properties": { + "form_type": { + "title": "FORM TYPE", + "description": "", + "type": "string", + "enum": [ + "F24N", + "F24A" + ], + "examples": [ + "F24N" + ], + "fec_spec": { + "COL_SEQ": 1, + "FIELD_DESCRIPTION": "FORM TYPE", + "TYPE": "A/N-4", + "REQUIRED": "X (error)", + "SAMPLE_DATA": "F24N", + "VALUE_REFERENCE": "F24+[N|A]", + "RULE_REFERENCE": null, + "FIELD_FORM_ASSOCIATION": null + } + }, + "filer_committee_id_number": { + "title": "FILER COMMITTEE ID NUMBER", + "description": "", + "type": "string", + "minLength": 9, + "maxLength": 9, + "pattern": "^(?:[PC][0-9]{8}|[HS][0-9]{1}[A-Z]{2}[0-9]{5})$", + "examples": [ + "C00123456" + ], + "fec_spec": { + "COL_SEQ": 2, + "FIELD_DESCRIPTION": "FILER COMMITTEE ID NUMBER", + "TYPE": "A/N-9", + "REQUIRED": "X (error)", + "SAMPLE_DATA": "C00123456", + "VALUE_REFERENCE": null, + "RULE_REFERENCE": "this is the ID of the Committee Account the report/transaction is associated with", + "FIELD_FORM_ASSOCIATION": null + } + }, + "report_type_24_48": { + "title": "REPORT TYPE", + "description": "", + "enum":[ + "24", + "48" + ], + "examples": [ + 48 + ], + "fec_spec": { + "COL_SEQ": 3, + "FIELD_DESCRIPTION": "REPORT TYPE {24/48 Hour}", + "TYPE": "A/N-2", + "REQUIRED": "X (error)", + "SAMPLE_DATA": 48, + "VALUE_REFERENCE": "24, 48", + "RULE_REFERENCE": "Error if Code is missing;\nError if Coded incorrectly.", + "FIELD_FORM_ASSOCIATION": null + } + }, + "original_amendment_date": { + "title": "ORIGINAL AMENDMENT DATE", + "description": "", + "type": [ + "string", + "null" + ], + "minLength": 10, + "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$", + "examples": [ + 20120729 + ], + "fec_spec": { + "COL_SEQ": 4, + "FIELD_DESCRIPTION": "ORIGINAL AMENDMENT DATE", + "TYPE": "NUM-8", + "REQUIRED": "X (conditional error)", + "SAMPLE_DATA": 20120729, + "VALUE_REFERENCE": "YYYYMMDD", + "RULE_REFERENCE": "Use date of original report or of most recent amendment.", + "FIELD_FORM_ASSOCIATION": null + } + }, + "committee_name": { + "title": "COMMITTEE NAME", + "description": "", + "type": "string", + "minLength": 1, + "maxLength": 200, + "pattern": "^[ -~]{0,200}$", + "fec_spec": { + "COL_SEQ": 5, + "FIELD_DESCRIPTION": "COMMITTEE NAME", + "TYPE": "A/N-200", + "REQUIRED": "X (warning)", + "SAMPLE_DATA": null, + "VALUE_REFERENCE": null, + "RULE_REFERENCE": null, + "FIELD_FORM_ASSOCIATION": null + } + }, + "street_1": { + "title": "STREET 1", + "description": "", + "type": "string", + "minLength": 1, + "maxLength": 34, + "pattern": "^[ -~]{0,34}$", + "fec_spec": { + "COL_SEQ": 6, + "FIELD_DESCRIPTION": "STREET 1", + "TYPE": "A/N-34", + "REQUIRED": "X (warning)", + "SAMPLE_DATA": null, + "VALUE_REFERENCE": null, + "RULE_REFERENCE": null, + "FIELD_FORM_ASSOCIATION": null + } + }, + "street_2": { + "title": "STREET 2", + "description": "", + "type": [ + "string", + "null" + ], + "minLength": 0, + "maxLength": 34, + "pattern": "^[ -~]{0,34}$", + "fec_spec": { + "COL_SEQ": 7, + "FIELD_DESCRIPTION": "STREET 2", + "TYPE": "A/N-34", + "REQUIRED": null, + "SAMPLE_DATA": null, + "VALUE_REFERENCE": null, + "RULE_REFERENCE": null, + "FIELD_FORM_ASSOCIATION": null + } + }, + "city": { + "title": "CITY", + "description": "", + "type": "string", + "minLength": 1, + "maxLength": 30, + "pattern": "^[ -~]{0,30}$", + "fec_spec": { + "COL_SEQ": 8, + "FIELD_DESCRIPTION": "CITY", + "TYPE": "A/N-30", + "REQUIRED": "X (warning)", + "SAMPLE_DATA": null, + "VALUE_REFERENCE": null, + "RULE_REFERENCE": null, + "FIELD_FORM_ASSOCIATION": null + } + }, + "state": { + "title": "STATE", + "description": "", + "type": "string", + "minLength": 2, + "maxLength": 2, + "pattern": "^[ -~]{2}$", + "fec_spec": { + "COL_SEQ": 9, + "FIELD_DESCRIPTION": "STATE", + "TYPE": "A-2", + "REQUIRED": "X (warning)", + "SAMPLE_DATA": null, + "VALUE_REFERENCE": null, + "RULE_REFERENCE": "Edit: ST", + "FIELD_FORM_ASSOCIATION": null + } + }, + "zip": { + "title": "ZIP", + "description": "", + "type": "string", + "minLength": 1, + "maxLength": 9, + "pattern": "^[ -~]{1,9}$", + "examples": [ + "20643[1234]" + ], + "fec_spec": { + "COL_SEQ": 10, + "FIELD_DESCRIPTION": "ZIP", + "TYPE": "A/N-9", + "REQUIRED": "X (warning)", + "SAMPLE_DATA": "20643[1234]", + "VALUE_REFERENCE": null, + "RULE_REFERENCE": null, + "FIELD_FORM_ASSOCIATION": null + } + }, + "treasurer_last_name": { + "title": "TREASURER LAST NAME", + "description": "", + "type": "string", + "minLength": 1, + "maxLength": 30, + "pattern": "^[ -~]{0,30}$", + "examples": [ + "Smith" + ], + "fec_spec": { + "COL_SEQ": 11, + "FIELD_DESCRIPTION": "TREASURER LAST NAME", + "TYPE": "A/N-30", + "REQUIRED": "X (error)", + "SAMPLE_DATA": "Smith", + "VALUE_REFERENCE": null, + "RULE_REFERENCE": null, + "FIELD_FORM_ASSOCIATION": null + } + }, + "treasurer_first_name": { + "title": "TREASURER FIRST NAME", + "description": "", + "type": "string", + "minLength": 1, + "maxLength": 20, + "pattern": "^[ -~]{0,20}$", + "examples": [ + "Patrick" + ], + "fec_spec": { + "COL_SEQ": 12, + "FIELD_DESCRIPTION": "TREASURER FIRST NAME", + "TYPE": "A/N-20", + "REQUIRED": "X (error)", + "SAMPLE_DATA": "Patrick", + "VALUE_REFERENCE": null, + "RULE_REFERENCE": null, + "FIELD_FORM_ASSOCIATION": null + } + }, + "treasurer_middle_name": { + "title": "TREASURER MIDDLE NAME", + "description": "", + "type": [ + "string", + "null" + ], + "minLength": 0, + "maxLength": 20, + "pattern": "^[ -~]{0,20}$", + "examples": [ + "Thomas" + ], + "fec_spec": { + "COL_SEQ": 13, + "FIELD_DESCRIPTION": "TREASURER MIDDLE NAME", + "TYPE": "A/N-20", + "REQUIRED": null, + "SAMPLE_DATA": "Thomas", + "VALUE_REFERENCE": null, + "RULE_REFERENCE": null, + "FIELD_FORM_ASSOCIATION": null + } + }, + "treasurer_prefix": { + "title": "TREASURER PREFIX", + "description": "", + "type": [ + "string", + "null" + ], + "minLength": 0, + "maxLength": 10, + "pattern": "^[ -~]{0,10}$", + "examples": [ + "Mr." + ], + "fec_spec": { + "COL_SEQ": 14, + "FIELD_DESCRIPTION": "TREASURER PREFIX", + "TYPE": "A/N-10", + "REQUIRED": null, + "SAMPLE_DATA": "Mr.", + "VALUE_REFERENCE": null, + "RULE_REFERENCE": null, + "FIELD_FORM_ASSOCIATION": null + } + }, + "treasurer_suffix": { + "title": "TREASURER SUFFIX", + "description": "", + "type": [ + "string", + "null" + ], + "minLength": 0, + "maxLength": 10, + "pattern": "^[ -~]{0,10}$", + "examples": [ + "Jr." + ], + "fec_spec": { + "COL_SEQ": 15, + "FIELD_DESCRIPTION": "TREASURER SUFFIX", + "TYPE": "A/N-10", + "REQUIRED": null, + "SAMPLE_DATA": "Jr.", + "VALUE_REFERENCE": null, + "RULE_REFERENCE": null, + "FIELD_FORM_ASSOCIATION": null + } + }, + "date_signed": { + "title": "DATE SIGNED", + "description": "", + "type": "string", + "minLength": 10, + "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$", + "examples": [ + 20120729 + ], + "fec_spec": { + "COL_SEQ": 16, + "FIELD_DESCRIPTION": "DATE SIGNED", + "TYPE": "NUM-8", + "REQUIRED": "X (error)", + "SAMPLE_DATA": 20120729, + "VALUE_REFERENCE": "YYYYMMDD", + "RULE_REFERENCE": null, + "FIELD_FORM_ASSOCIATION": null + } + } + }, + "allOf": [ + { + "if":{ + "properties": { + "form_type": { + "const": "F24A" + } + }, + "required": ["form_type"] + }, + "then": { + "required": [ + "original_amendment_date" + ], + "properties": { + "original_amendment_date": { + "type": "string" + } + } + } + } + ], + "additionalProperties": false +} \ No newline at end of file