Giter Site home page Giter Site logo

open-cap-table-coalition / open-cap-format-ocf Goto Github PK

View Code? Open in Web Editor NEW
132.0 32.0 24.0 7.82 MB

Open Cap Format (OCF) - The Open Source Company Capitalization Data Standard. OCF can be used to structure and track the complex data structures necessary to build and maintain accurate capitalization (cap) tables.

Home Page: https://opencaptablecoalition.com

License: Other

Shell 0.13% JavaScript 17.90% TypeScript 81.97%
fintech legal legaltech

open-cap-format-ocf's Introduction

Open Cap Table Format (OCF)

What is OCF?

OCF (or Open Cap Table Format) is an open source data standard for company capitalization data developed by the Open Cap Table Coalition to enable the easy and accurate exchange and use of company capitalization information through a standardized format.

OCF is a JSON-based format, wherein individual objects required to describe a company cap table are stored in JSONs that match our OCF JSON Schemas. Our reference implementation suggests storing these JSONs in a specific set of files in a zip archive, but OCF-compatible data could be provided via API as well. Please see our documentation for more details on JSON Schema, OCF's schemas or how to use them.

Useful links
Primary Website Sharable landing site for OCF and the Coalition
Medium Page Past announcements related to OCF and the Coalition
PROJECTS.md Collection of public projects in the OCF ecosystem listed in

Documentation

We have extensive, auto-generated documentation available on our documentation page. The documents are automatically updated with every update to OCF.

You an find samples in our repo in the samples folder, or, check out our tutorials (again, through the documentation) to see how to get started with OCF and download complete, sample OCF cap tables.

OCF Schema

OCF's schema is defined in our JSON Schemas, which can be found in the /schema folder of our repository. All of our documentation is automatically generated from these source files, so they should remain in sync.

Contributors (alphabetical)

Please see the Open Cap Table Coalition Website or our GitHub Code Contributors List.

open-cap-format-ocf's People

Contributors

arthur-clara avatar ctaymor avatar dan-pulley avatar dependabot[bot] avatar harryplumer avatar jacobyavis avatar jsv4 avatar kedder avatar lavens avatar naveedn avatar osis avatar pjohnmeyer avatar robwise avatar sachin-shrestha avatar sumukh avatar tmccnnll avatar xudiera avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

open-cap-format-ocf's Issues

Define "Security" formally

Most transaction objects reference something, called "security id" (defined as "Identifier for the security which the transaction applies to"). For example: Stock Issuance Transaction. However, I can't find the formal definition of what this "Security" is or what fields it consists of. I'd find it useful to have some kind of pointer to the definition of "Security" in the descriptions of fields, referencing it.

The `anyOf` block related to the `compensation_type` field in `PlanSecurityIssuance.schema.json` is not working

The following anyOf block found in the PlanSecurityIssuance.schema.json file is trying to impose:

  • if the compensation_type is "OPTION", then the option_grant_type field must be set
  • otherwise, if the compensation_type is "RSU", then no additional requirements are needed

"anyOf": [
{
"properties": {
"compensation_type": {
"const": "OPTION"
}
},
"required": ["option_grant_type"]
},
{
"properties": {
"compensation_type": {
"const": "RSU"
}
}
}
],

This doesn't seem to work as intended. In #66, I tried adding an example TX_PLAN_SECURITY_ISSUANCE transaction object that had "compensation_type" : "OPTION" and "option_grant_type": "ISO" but this failed validation.

Add License

We should have a license, at least for when we go public?

Add Transaction Examples Back in New Style OCF Format

We need to add back the examples that Tyler and Patrick put in, into the new multi-file structure. Right now the example transactions file (Transactions.ocf.json) does not have a TX_CONVERTIBLE_ISSUANCE to verify this.

Should we use regex pattern for ratio type?

Jake's question in issue #58 got me thinking we might want to use a regex pattern or ratios too? Our regex string types are very easy work with, and, right now, ratio requires a JSON with two properties - antecedent and consequent. Do we just want to have a regex that's essentially two numeric strings with a dividing slash?

Better Docs

The current jsonschema2md output is verbose and therefore less useful. @JSv4 has some ideas for how to make simpler that are formulaic in nature. We can explore a post-process of jsonschema2md output to conform to his ideas.

Refactor Python-based Document Generator to JavaScript

Rather than reverse engineer JsonSchema2Md, which is designed to handle any possible, valid JSONSchema, it turns out it's a lot easier to just build our documentation by traversing our schemas. We know how our schemas are constructed, so we can just build a purpose-built crawler to extract schema features and create documentation exactly as we want it. Need to refactor to JS, however.

Explore Composition-based Approach

Due to how JSONSchema validates schemas, we need to repeat all of the "inherited" properties. We want to explore flattening this so that intermediate objects would also repeat all of the properties incorporated via allOf. Also, we'd like to look at listing all of the primitives incorporated at each level rather than just the immediately preceding parent.

Add validations against ISO enumerations?

Where we specify certain ISO formats, do we want to preload an enum type with all matching values (or, if possible, reference a remote schema so we don't have to update the list) so that we can make sure valid values are provided?

Change the naming convention for $id to match file names

Discussed in #117

Originally posted by pjohnmeyer March 8, 2022
Some schema loaders support loading schemas from a "prefix":

https://opis.io/json-schema/2.x/php-loader.html#registerprefix-method

Currently, our IDs and our filenames don't match, e.g.:

file: .../schema/enums/CompensationType.schema.json
$id: https://opencaptablecoalition.com/schema/enums/compensation_type

If we make the $id values match the file path, in this case https://opencaptablecoalition.com/schema/enums/CompensationType.schema.json, it will enable simpler schema loading.

Rewrite old sample security objects as issuances.

Our old sample cap table file had arrays of sample warrants, plan issuances, convertibles and stock. These are no longer valid OCF, so the sample wouldn't validate. I removed these for now, but we'll want to go in and rewrite these as issuance transaction objects.

Fix Typos in Base Issuance

There are a couple references to "convertibles" in the base schema that are being carried through all of the documentation as a result. Please fix.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.