Skip to content

Commit

Permalink
Merge pull request #272 from fecgov/release/sprint-31
Browse files Browse the repository at this point in the history
Release/sprint 31
  • Loading branch information
mjtravers authored Oct 5, 2023
2 parents 278588e + bc4df65 commit 33e22da
Show file tree
Hide file tree
Showing 5 changed files with 584 additions and 1 deletion.
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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/).
Expand Down
1 change: 1 addition & 0 deletions docs/F24.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<!DOCTYPE html><html lang=en> <head><link rel=stylesheet type=text/css href="https://fonts.googleapis.com/css?family=Overpass:300,400,600,800"><script src=https://code.jquery.com/jquery-3.4.1.min.js integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin=anonymous></script><link href=https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css rel=stylesheet integrity=sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T crossorigin=anonymous><script src=https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js integrity=sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM crossorigin=anonymous></script><link rel=stylesheet type=text/css href=schema_doc.css><script src=schema_doc.min.js></script><meta charset=utf-8><title>FEC F24</title></head> <body onload=anchorOnLoad(); id=root><h1>FEC F24</h1> <div class=breadcrumbs></div><br> <span class=description><p>FORM 24 - 24 / 48 HOUR NOTICE OF INDEPENDENT EXPENDITURE</p> </span> <div class=breadcrumbs>root <svg width=1em height=1em viewbox="0 0 16 16" class="bi bi-arrow-right-short" fill=currentColor xmlns=http://www.w3.org/2000/svg> <path fill-rule=evenodd d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8z"/> </svg> <a href=#allOf onclick="anchorLink('allOf')">allOf</a> <svg width=1em height=1em viewbox="0 0 16 16" class="bi bi-arrow-right-short" fill=currentColor xmlns=http://www.w3.org/2000/svg> <path fill-rule=evenodd d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8z"/> </svg> <a href=#allOf_i0 onclick="anchorLink('allOf_i0')">item 0</a></div><span class="badge badge-dark value-type">Type: object</span><br> <h2 class=handle> <label>Conditional Subschema</label> </h2> <p>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.</p> <ul class="nav nav-tabs" id=allOf_i0_condition_tabs role=tablist> <li class=nav-item> <a class="nav-link active" id=allOf_i0_if data-toggle=tab href=#tab-pane_allOf_i0_if role=tab onclick="setAnchor('#allOf_i0_if')">If</a> </li> <li class=nav-item> <a class=nav-link id=allOf_i0_then data-toggle=tab href=#tab-pane_allOf_i0_then role=tab onclick="setAnchor('#allOf_i0_then')">Then</a> </li></ul> <div class="tab-content card"> <div class="tab-pane fade card-body active show" id=tab-pane_allOf_i0_if role=tabpanel> <div class=breadcrumbs>root <svg width=1em height=1em viewbox="0 0 16 16" class="bi bi-arrow-right-short" fill=currentColor xmlns=http://www.w3.org/2000/svg> <path fill-rule=evenodd d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8z"/> </svg> <a href=#allOf onclick="anchorLink('allOf')">allOf</a> <svg width=1em height=1em viewbox="0 0 16 16" class="bi bi-arrow-right-short" fill=currentColor xmlns=http://www.w3.org/2000/svg> <path fill-rule=evenodd d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8z"/> </svg> <a href=#allOf_i0 onclick="anchorLink('allOf_i0')">item 0</a> <svg width=1em height=1em viewbox="0 0 16 16" class="bi bi-arrow-right-short" fill=currentColor xmlns=http://www.w3.org/2000/svg> <path fill-rule=evenodd d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8z"/> </svg> <a href=#allOf_i0_if onclick="anchorLink('allOf_i0_if')">if</a></div><span class="badge badge-dark value-type">Type: object</span><br> <div class=accordion id=accordionallOf_i0_if_form_type> <div class=card> <div class=card-header id=headingallOf_i0_if_form_type> <h2 class=mb-0> <button class="btn btn-link property-name-button" type=button data-toggle=collapse data-target=#allOf_i0_if_form_type aria-expanded aria-controls=allOf_i0_if_form_type onclick="setAnchor('#allOf_i0_if_form_type')"><span class=property-name>form_type</span> <span class="badge badge-warning required-property">Required</span></button> </h2> </div> <div id=allOf_i0_if_form_type class="collapse property-definition-div" aria-labelledby=headingallOf_i0_if_form_type data-parent=#accordionallOf_i0_if_form_type> <div class="card-body pl-5"> <div class=breadcrumbs>root <svg width=1em height=1em viewbox="0 0 16 16" class="bi bi-arrow-right-short" fill=currentColor xmlns=http://www.w3.org/2000/svg> <path fill-rule=evenodd d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8z"/> </svg> <a href=#allOf onclick="anchorLink('allOf')">allOf</a> <svg width=1em height=1em viewbox="0 0 16 16" class="bi bi-arrow-right-short" fill=currentColor xmlns=http://www.w3.org/2000/svg> <path fill-rule=evenodd d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8z"/> </svg> <a href=#allOf_i0 onclick="anchorLink('allOf_i0')">item 0</a> <svg width=1em height=1em viewbox="0 0 16 16" class="bi bi-arrow-right-short" fill=currentColor xmlns=http://www.w3.org/2000/svg> <path fill-rule=evenodd d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8z"/> </svg> <a href=#allOf_i0_if onclick="anchorLink('allOf_i0_if')">if</a> <svg width=1em height=1em viewbox="0 0 16 16" class="bi bi-arrow-right-short" fill=currentColor xmlns=http://www.w3.org/2000/svg> <path fill-rule=evenodd d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8z"/> </svg> <a href=#allOf_i0_if_form_type onclick="anchorLink('allOf_i0_if_form_type')">form_type</a></div><span class="badge badge-dark value-type">Type: const</span><br> <span class=const-value id=allOf_i0_if_form_type_const>Specific value: <code>"F24A"</code></span> </div> </div> </div> </div> </div> <div class="tab-pane fade card-body" id=tab-pane_allOf_i0_then role=tabpanel> <div class=breadcrumbs>root <svg width=1em height=1em viewbox="0 0 16 16" class="bi bi-arrow-right-short" fill=currentColor xmlns=http://www.w3.org/2000/svg> <path fill-rule=evenodd d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8z"/> </svg> <a href=#allOf onclick="anchorLink('allOf')">allOf</a> <svg width=1em height=1em viewbox="0 0 16 16" class="bi bi-arrow-right-short" fill=currentColor xmlns=http://www.w3.org/2000/svg> <path fill-rule=evenodd d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8z"/> </svg> <a href=#allOf_i0 onclick="anchorLink('allOf_i0')">item 0</a> <svg width=1em height=1em viewbox="0 0 16 16" class="bi bi-arrow-right-short" fill=currentColor xmlns=http://www.w3.org/2000/svg> <path fill-rule=evenodd d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8z"/> </svg> <a href=#allOf_i0_then onclick="anchorLink('allOf_i0_then')">then</a></div><span class="badge badge-dark value-type">Type: object</span><br> <div class=accordion id=accordionallOf_i0_then_original_amendment_date> <div class=card> <div class=card-header id=headingallOf_i0_then_original_amendment_date> <h2 class=mb-0> <button class="btn btn-link property-name-button" type=button data-toggle=collapse data-target=#allOf_i0_then_original_amendment_date aria-expanded aria-controls=allOf_i0_then_original_amendment_date onclick="setAnchor('#allOf_i0_then_original_amendment_date')"><span class=property-name>original_amendment_date</span> <span class="badge badge-warning required-property">Required</span></button> </h2> </div> <div id=allOf_i0_then_original_amendment_date class="collapse property-definition-div" aria-labelledby=headingallOf_i0_then_original_amendment_date data-parent=#accordionallOf_i0_then_original_amendment_date> <div class="card-body pl-5"> <div class=breadcrumbs>root <svg width=1em height=1em viewbox="0 0 16 16" class="bi bi-arrow-right-short" fill=currentColor xmlns=http://www.w3.org/2000/svg> <path fill-rule=evenodd d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8z"/> </svg> <a href=#allOf onclick="anchorLink('allOf')">allOf</a> <svg width=1em height=1em viewbox="0 0 16 16" class="bi bi-arrow-right-short" fill=currentColor xmlns=http://www.w3.org/2000/svg> <path fill-rule=evenodd d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8z"/> </svg> <a href=#allOf_i0 onclick="anchorLink('allOf_i0')">item 0</a> <svg width=1em height=1em viewbox="0 0 16 16" class="bi bi-arrow-right-short" fill=currentColor xmlns=http://www.w3.org/2000/svg> <path fill-rule=evenodd d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8z"/> </svg> <a href=#allOf_i0_then onclick="anchorLink('allOf_i0_then')">then</a> <svg width=1em height=1em viewbox="0 0 16 16" class="bi bi-arrow-right-short" fill=currentColor xmlns=http://www.w3.org/2000/svg> <path fill-rule=evenodd d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8z"/> </svg> <a href=#allOf_i0_then_original_amendment_date onclick="anchorLink('allOf_i0_then_original_amendment_date')">original_amendment_date</a></div><span class="badge badge-dark value-type">Type: string</span><br> </div> </div> </div> </div> </div></div> <footer> <p class=generated-by-footer>Generated using <a href=https://github.com/coveooss/json-schema-for-humans>json-schema-for-humans</a> on 2023-09-18 at 10:39:45 -0400</p> </footer></body> </html>
189 changes: 189 additions & 0 deletions docs/F24_spec.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
<!DOCTYPE html><html lang="en"><head><title>F24</title><link rel="stylesheet" href="spec_table.css"></head><body><table><caption>Specification for F24</caption><tr>
<th>COL SEQ</th>
<th>FIELD DESCRIPTION</th>
<th>TYPE</th>
<th>REQUIRED</th>
<th>SAMPLE DATA</th>
<th>VALUE REFERENCE</th>
<th>RULE REFERENCE</th>
<th>FIELD FORM ASSOCIATION</th>
<th>VALIDATION RULES</th>
</tr>
<tr>
<td>1</td>
<td>FORM TYPE</td>
<td>A/N-4</td>
<td>X (error)</td>
<td>F24N</td>
<td>F24+[N|A]</td>
<td></td>
<td></td>
<td><ul><li>REQUIRED</li><li>type: string</li><li>must be one of: ['F24N', 'F24A']</li></td>
</tr>
<tr>
<td>2</td>
<td>FILER COMMITTEE ID NUMBER</td>
<td>A/N-9</td>
<td>X (error)</td>
<td>C00123456</td>
<td></td>
<td>this is the ID of the Committee Account the report/transaction is associated with</td>
<td></td>
<td><ul><li>REQUIRED</li><li>type: string</li><li>min length: 9</li><li>max length: 9</li><li>regex: ^(?:[PC][0-9]{8}|[HS][0-9]{1}[A-Z]{2}[0-9]{5})$</li></td>
</tr>
<tr>
<td>3</td>
<td>REPORT TYPE {24/48 Hour}</td>
<td>A/N-2</td>
<td>X (error)</td>
<td>48</td>
<td>24, 48</td>
<td>Error if Code is missing;
Error if Coded incorrectly.</td>
<td></td>
<td><ul><li>REQUIRED</li><li>must be one of: ['24', '48']</li></td>
</tr>
<tr>
<td>4</td>
<td>ORIGINAL AMENDMENT DATE</td>
<td>NUM-8</td>
<td>X (conditional error)</td>
<td>20120729</td>
<td>YYYYMMDD</td>
<td>Use date of original report or of most recent amendment.</td>
<td></td>
<td><ul><li>REQUIRED if FORM_TYPE equals F24A</li><li>type: ['string', 'null']</li><li>min length: 10</li><li>regex: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$</li></td>
</tr>
<tr>
<td>5</td>
<td>COMMITTEE NAME</td>
<td>A/N-200</td>
<td>X (warning)</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td><ul><li>REQUIRED</li><li>type: string</li><li>min length: 1</li><li>max length: 200</li><li>regex: ^[ -~]{0,200}$</li></td>
</tr>
<tr>
<td>6</td>
<td>STREET 1</td>
<td>A/N-34</td>
<td>X (warning)</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td><ul><li>REQUIRED</li><li>type: string</li><li>min length: 1</li><li>max length: 34</li><li>regex: ^[ -~]{0,34}$</li></td>
</tr>
<tr>
<td>7</td>
<td>STREET 2</td>
<td>A/N-34</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td><ul><li>type: ['string', 'null']</li><li>min length: 0</li><li>max length: 34</li><li>regex: ^[ -~]{0,34}$</li></td>
</tr>
<tr>
<td>8</td>
<td>CITY</td>
<td>A/N-30</td>
<td>X (warning)</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td><ul><li>REQUIRED</li><li>type: string</li><li>min length: 1</li><li>max length: 30</li><li>regex: ^[ -~]{0,30}$</li></td>
</tr>
<tr>
<td>9</td>
<td>STATE</td>
<td>A-2</td>
<td>X (warning)</td>
<td></td>
<td></td>
<td>Edit: ST</td>
<td></td>
<td><ul><li>REQUIRED</li><li>type: string</li><li>min length: 2</li><li>max length: 2</li><li>regex: ^[ -~]{2}$</li></td>
</tr>
<tr>
<td>10</td>
<td>ZIP</td>
<td>A/N-9</td>
<td>X (warning)</td>
<td>20643[1234]</td>
<td></td>
<td></td>
<td></td>
<td><ul><li>REQUIRED</li><li>type: string</li><li>min length: 1</li><li>max length: 9</li><li>regex: ^[ -~]{1,9}$</li></td>
</tr>
<tr>
<td>11</td>
<td>TREASURER LAST NAME</td>
<td>A/N-30</td>
<td>X (error)</td>
<td>Smith</td>
<td></td>
<td></td>
<td></td>
<td><ul><li>REQUIRED</li><li>type: string</li><li>min length: 1</li><li>max length: 30</li><li>regex: ^[ -~]{0,30}$</li></td>
</tr>
<tr>
<td>12</td>
<td>TREASURER FIRST NAME</td>
<td>A/N-20</td>
<td>X (error)</td>
<td>Patrick</td>
<td></td>
<td></td>
<td></td>
<td><ul><li>REQUIRED</li><li>type: string</li><li>min length: 1</li><li>max length: 20</li><li>regex: ^[ -~]{0,20}$</li></td>
</tr>
<tr>
<td>13</td>
<td>TREASURER MIDDLE NAME</td>
<td>A/N-20</td>
<td></td>
<td>Thomas</td>
<td></td>
<td></td>
<td></td>
<td><ul><li>type: ['string', 'null']</li><li>min length: 0</li><li>max length: 20</li><li>regex: ^[ -~]{0,20}$</li></td>
</tr>
<tr>
<td>14</td>
<td>TREASURER PREFIX</td>
<td>A/N-10</td>
<td></td>
<td>Mr.</td>
<td></td>
<td></td>
<td></td>
<td><ul><li>type: ['string', 'null']</li><li>min length: 0</li><li>max length: 10</li><li>regex: ^[ -~]{0,10}$</li></td>
</tr>
<tr>
<td>15</td>
<td>TREASURER SUFFIX</td>
<td>A/N-10</td>
<td></td>
<td>Jr.</td>
<td></td>
<td></td>
<td></td>
<td><ul><li>type: ['string', 'null']</li><li>min length: 0</li><li>max length: 10</li><li>regex: ^[ -~]{0,10}$</li></td>
</tr>
<tr>
<td>16</td>
<td>DATE SIGNED</td>
<td>NUM-8</td>
<td>X (error)</td>
<td>20120729</td>
<td>YYYYMMDD</td>
<td></td>
<td></td>
<td><ul><li>REQUIRED</li><li>type: string</li><li>min length: 10</li><li>regex: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$</li></td>
</tr>
</table></body></html>
13 changes: 13 additions & 0 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,19 @@ <h5>FORMS & SCHEDULES</h5>
<div class="link"><a href="F3X_spec.html" target="_blank" rel="noopener">spec</a></div>
</td>
</tr>
<tr>
<td>Form 24</td>
<td>Form 24 report form</td>
<td>
<div class="link"><a href="https://github.com/fecgov/fecfile-validate/blob/develop/schema/F24.json" target="_blank" rel="noopener">json</a></div>
</td>
<td>
<div class="link"><a href="F24.html" target="_blank" rel="noopener">doc</a></div>
</td>
<td>
<div class="link"><a href="F24_spec.html" target="_blank" rel="noopener">spec</a></div>
</td>
</tr>
<tr>
<td>Schedule A</td>
<td></td>
Expand Down
Loading

0 comments on commit 33e22da

Please sign in to comment.