Created: | |
---|---|
Author: | Abraham Epton |
Status: | Draft |
Definition of the Campaign Finance Filing type and associated other types to model campaign finance filings with a regulator.
- Campaign Finance Regulator (Regulator)
- Any government agency in charge of gathering information and enforcing transparency laws against political committees (Committees).
- Campaign Finance Filing (Filing)
- Any single document filed with a Regulator.
- Jurisdiction
- OCD Jurisdiction indicating the region covered by an office, or for which an Election is being held.
- Section
- A container for a unit of meaning inside a Filing, that isn't inherent to the basic process of filing a document with an agency.
- Ballot Measure
A proposition or question with two or more predetermined options that voters may select as part of an election. These include:
- The enactment or repeal of a statute, constitutional amendment or other form of law.
- Approval or rejection of a new tax or additional spending of public funds.
- The recall or retention of a previously elected public office holder.
- Candidacy
- The condition of a person competing to hold a public office for defined term of office.
- Contest
- A specific decision with a set of predetermined options put before voters in an election. These contests include the selection of a person from a list of candidates to hold a public office or the approval or rejection of a ballot measure.
Political committees file statements with their regulators in order to disclose funders, expenditures, organizational ties and other financial details. Filings encapsulate some number of possible specific disclosures, and some filings can contain more than one type of disclosure, so this proposed option is to consider each actual filing as an object and then each specific disclosed piece of information as associated with that object. So a committee name change would be associated with a Filing, along with a committee address change and a committee officer addition. A series of committee contributions and committee expenses would be attached to one Filing. This way we don't need to model the specific disclosure forms in each state, and just directly extract the most meaningful parts of the filing.
We want to make it easy for people to do manipulations on top of this data, while ensuring that this system itself does as little manipulation as possible to the underlying data from reports filed. For instance, many records include Person entities - these are deterministically extracted from just the available filing data, e.g. an address, employer, occupation and name are all extracted for each contribution. Deduplication can then happen with each of these entities, but they are themselves totally reproducible from just the filing information.
This model entails that Filings have Sections - a Filing can, and often will, have multiple Sections. As much of the specific logic as possible should be pushed down into Sections, which offer flexibility by allowing us to compose them together to reproduce the data from state-specific reports. We can model a particular state filing form as a Filing with a specific set of expected Sections to be present. Some attributes that might make sense as properties of a Filing, such as Amendments, are here presented as Sections; the line between the two is muddy, but this proposal tries to keep Filings as minimal as possible.
Finally, the different entity types presented here present either current or likely future conflicts with other entities in the Open Civic Data namespace, so this proposal doesn't make any attempt to resolve those conflicts since they seem ancillary for now.
How to model Committee Status and Committee Purpose inside of OCD Organization models?
Just add additional fields for those. Not sure why this was ever a question.
How to reconcile multiple reports that describe the same contribution, expenditure or other event?
Same transactions should have same IDs. Multiple filings can point to one transaction. How to handle this for jurisdictions where no transaction IDs are provided by the regulator will be...very dependent on that jurisdiction.
How should amendments work? Should there be some notion of versions of filings? Should all data from a given filing, even if 99% is redundant with a prior version of same filing, be stored, or should we store a diff?
We should use filings and filing_actions for this. The implementing system is responsible for determining what's current, using the is_current and supersedes_prior_versions fields of the Filing filing_action.
Should we make/preserve the distinction FEC makes between contributions and receipts (every contribution is a receipt; not every receipt is a contribution)? How do we handle presumably-unique transaction IDs that nevertheless have to get versioned somehow?
This is handled acceptably by Transactions and specifically, the classification field. Versioning is tricky - we could pack it into the transaction ID somehow; or use the filing_action; or not care about versions at all and just represent the current state of the world. I vote for using the filing_action for this - makes it easy to find all versions of a given transaction, and does the least-weird thing.
- id
- Open Civic Data-style ID in the format
ocd-campaign-finance-filing/{{uuid}}
. - identifiers
- optional Upstream IDs of the disclosure if any exist, such as the filing ID assigned by the Senate Office of Public Record.
- classification
- optional Filing Type (jurisdiction-specific).
- filer
- Committee making the Filing.
- coverage_start_date
- optional Date (and possibly time) when filing period of coverage begins.
- coverage_end_date
- optional Date (and possibly time) when filing period of coverage ends.
- recipient
- OCD Organization indicating the regulator to which the Filing was submitted.
- sources
optional repeated List of sources used in assembling this object. Has the following properties:
- url
- URL of the resource.
- note
- optional Description of what this source was used for.
- actions
A list of objects representing individual actions that take place on a filing, such as initial filing, amendments, withdrawals, etc. Actions consist of the following properties:
- id
- Open Civic Data-style ID in the format
ocd-campaign-finance-filing-action/{{uuid}}
. - description
- Description of the action.
- date
- The date the action occurred.
- classification
- repeated A list of classifications for this action, such as "amendment" or "revocation" - allows for consolidating different jurisdictional amendment schemes into standard types.
- agent
- optional repeated Person responsible for the action, usually the filer of the amendment or withdrawal. Theoretically this could be an Organization of some kind as well.
- supersedes_prior_versions
- Boolean indicating whether this action renders everything contained in previous versions of this Filing invalid.
- transactions
- List of the Transactions attached to this version of the Filing.
- is_current
- Boolean indicating whether data from this action (primarily the transaction list) should be considered current or not.
- election
- repeated optional Election(s) relevant to this filing. This is the upcoming Election for which a donation is being disclosed, say, or a recently-passed Election for which a Committee is announcing the closing of its books.
- created_at
- Time that this object was created at in the system, not to be confused with the date of introduction.
- updated_at
- Time that this object was last updated in the system, not to be confused with the last action.
- extras
- Common to all Open Civic Data types, the value is a key-value store suitable for storing arbitrary information not covered elsewhere.
Subclass of Popolo Organization.
- id
- Open Civic Data-style ID in the format
ocd-campaign-finance-committee/{{uuid}}
. - committee_type
- Committee Type.
- statuses
Current status of the Committee. List of date ranges and status types (active, inactive, contesting election, not contesting election, etc) describing the time period at which a given status applied to the Committee.
- start_date
- First date at which the status applied (inclusive).
- end_date
- optional Last date at which the status applied (inclusive). In many cases, the current status won't have a known end_date associated with it, so this is optional to reflect that.
- note
- Description of the status.
- classification
- repeated A list of classifications for this status, such as "active" or "contesting election" - allows for consolidating different jurisdictional status schemes into standard types.
- candidacy_designations
optional repeated List of the candidacies for which the committee has declared a position (e.g., support or oppose) or has otherwise focused its activity. Has the following properties:
- candidacy_id
- Reference to an OCD
Candidacy
. - designation
- Enumerated among "supports", "opposes", "primary vehicle for", "surplus account for", "independent expenditure" and other relationship types.
- ballot_measure_options_supported
optional repeated List of the ballot measure contests in which the committee has declared support for a specific option. Has the following properties:
- ballot_measure_contest_id
- Reference to an OCD
BallotMeasureContest
. - option
- The specific ballot measure option supported by the committee, which are enumerated in
BallotMeasureContest.options
.
- id
- Open Civic Data-style ID in the format
ocd-campaign-finance-committee-type/{{uuid}}
. - name
- Name of the Committee Type.
- jurisdiction
- An OCD Jurisdiction.
- id
- Open Civic Data-style ID in the format
ocd-campaign-finance-filing-type/{{uuid}}
. - name
- Name of filing type - "Last Minute Contributions", etc.
- code
- Code for the form associated with the Filing - "A1", etc.
- jurisdiction
- OCD Jurisdiction for which the Filing Type is relevant.
- id
- Open Civic Data-style ID in the format
ocd-campaign-finance-transaction/{{uuid}}
. - filing_action
- Reference to the
Filing.action.id
that a transaction is reported in. - identifier
- optional In some jurisdictions, the original jurisdictionally-assigned ID of a Transaction may be meaningful, so preserve it here.
- sources
optional repeated List of sources used in assembling this object. Has the following properties:
- url
- URL of the resource.
- note
- optional Description of what this source was used for.
- classification
- Type of transaction - contribution, expenditure, loan, transfer, other receipt, etc. Enumerated field based on the jurisdiction of the Committee filing the Transaction.
- amount
Amount of transaction.
- value
- Actual decimal amount of transaction.
- currency
- Currency denomination of transaction.
- is_in_kind
- Boolean indicating whether transaction is in-kind or not (in which case, it's probably cash).
- sender
This can be a person or some kind of organization or committee.
- entity_type
- Indicates whether this is an "organization" or "person".
- organization
- OCD Organization committing ("sending") this transaction (only if entity_type is "organization").
- person
- OCD Person making contribution, or paying for expenditure, etc. (only if entity_type is "person").
- recipient
This can be a person or some kind of organization or committee.
- entity_type
- Indicates whether this is an "organization" or "person".
- organization
- OCD Organization receiving this transaction (only if entity_type is "organization").
- person
- OCD Person receiving contribution, or being paid for an expenditure, etc. (only if entity_type is "person").
- date
- Date reported for transaction.
- description
- String (may simply need repeated "notes" fields for items of this type).
- note
- String (may simply need repeated "notes" fields for items of this type).
This includes updates in which committees are becoming active, inactive or indicating whether they're participating in the Election or not.
- id
- Open Civic Data-style ID in the format
ocd-campaign-finance-committee-attribute-update/{{uuid}}
. - property
- Attribute in the Committee object to change.
- value
- Value to set for the attribute in the Committee object.
- description
- String containing whatever associated text we got along with the attribute change.