diff --git a/docs/accordproject-template.md b/docs/accordproject-template.md index fb7c2543..3d970507 100644 --- a/docs/accordproject-template.md +++ b/docs/accordproject-template.md @@ -207,6 +207,8 @@ Let's look at each component of the template triangle, starting with the text. Build your first smart legal contract templates, either [online](tutorial-studio.md) with Template Studio, or by [installing Cicero](started-installation.md). +Learn about composing full contracts (advanced markup, modularity, embedded expressions) in [Full Contracts](full-contracts.md). + Explore [sample templates](started-resources.md) and other resources in the rest of this documentation. If some of technical words are unfamiliar, please consult the [Glossary](ref-glossary.md) for more detailed explanations. diff --git a/docs/full-contracts.md b/docs/full-contracts.md new file mode 100644 index 00000000..56153adf --- /dev/null +++ b/docs/full-contracts.md @@ -0,0 +1,58 @@ +--- +id: full-contracts +title: Full Contracts +--- + +This page summarizes support for building full contracts using Accord Project templates, with pointers to detailed guides. + +## Advanced Template Markup + +Templatemark lets you structure rich, parameterized legal text: + +- Variables and formatting using `{{ variable }}` +- Conditionals and branches using `{{#if}}...{{/if}}` +- Lists and repetition using `{{#ulist}}`, `{{#olist}}`, and `{{#each}}` +- Subclauses/sections using block constructs + +See: +- Markup preliminaries: `docs/markup-preliminaries.md` +- Templatemark reference: `docs/markup-templatemark.md` +- CiceroMark/markdown semantics: `docs/markup-ciceromark.md`, `docs/markup-commonmark.md` + +## Contract Modularity + +Break large agreements into reusable parts: + +- Import models across namespaces in `.cto` files +- Compose templates via subclauses and include patterns +- Package reusable clauses/templates in libraries + +See: +- Template overview: `docs/accordproject-template.md` +- Tutorial and library: `docs/tutorial-templates.md`, `docs/tutorial-library.md` + +## Embedded Expressions in Templates + +Embed Ergo expressions to compute values at render or execution time using `{{% ... %}}` blocks: + +- Inline calculations (e.g., dates, amounts) +- Conditional text and derived fields + +See: +- Ergo logic: `docs/logic-ergo.md`, `docs/logic-simple-expr.md`, `docs/logic-advanced-expr.md` +- Statements and modules: `docs/logic-stmt.md`, `docs/logic-module.md` + +## End-to-end: From Model to Executable Contract + +Typical workflow: + +1. Define data with Concerto models (`.cto`) +2. Author the template text with Templatemark (variables, lists, conditionals) +3. Implement logic in Ergo (embedded expressions and/or separate modules) +4. Package and test with Cicero CLI/API + +See getting started and tutorials: +- Installation and hello world: `docs/started-installation.md`, `docs/started-hello.md` +- Create and run templates: `docs/tutorial-templates.md`, `docs/tutorial-create.md`, `docs/tutorial-nodejs.md` + + diff --git a/docs/ref-migrate-concerto-0.82-1.0.md b/docs/ref-migrate-concerto-0.82-1.0.md new file mode 100644 index 00000000..cae57589 --- /dev/null +++ b/docs/ref-migrate-concerto-0.82-1.0.md @@ -0,0 +1,248 @@ +--- +id: ref-migrate-concerto-0.82-1.0 +title: Concerto 0.82 to 1.0 +--- + +Concerto `1.0` delivers fundamental improvements over previous releases, whilst maintaining a high-degree (though not total!) of backwards compatibility with `0.82`. In particular all of the `0.82` Concerto syntax remains valid in `1.0`. + +:::note +The Accord Project stack migration to Concerto v1.0 has been completed. Concerto v1.0 is now stable and is used in Cicero `0.22` and later versions. +::: + +## Summary of Breaking Changes + +- Systems models are no longer supported +- DateTime values do not preserve the timezone offset and are always converted to UTC +- Validation has been made stricter, which means some previously allowed instances will now fail validation +- The syntax and semantic of relationships has been changed + +## Removal of System Models + +See: [#62](https://github.com/accordproject/concerto/issues/62) + +An advanced feature of prior versions of Concerto was the ability to add a _system model_ to the `ModelManager`, which functioned as an implicit set of base types for concepts, assets, participants etc within the scope of the `ModelManager`. This feature complicated the APIs considerably, and it had the effect of making CTO models non-portable, in as far as they could only be loaded into a `ModelManager` that used the same set of system models. + +System models have therefore been removed from Concerto v1 — any base types should now be imported and referenced explicitly into model files. + +## Strict Validation + +See: [#157](https://github.com/accordproject/concerto/issues/158) [#158](https://github.com/accordproject/concerto/issues/158) + +Prior to Concerto v1 validation suffered from some side-effects of JavaScript type-coercion. For example, `"NaN"` would be a valid value for a `Double` field. These edge cases have now been tightened up, so some instances that were valid prior to v1 may now fail validation. + +## Identifiers and Relationships + +See: [#181](https://github.com/accordproject/concerto/issues/181) + +Prior to v1 a relationship could only be declared to an asset, participant, transaction or event (as these must be `identified by`). In v1 two new capabilities have been added: + +1. Concepts can now be declared to be `identified by` an identifying field, allowing them to be used with relationships +2. Any type can be declared as `identified` — to automatically create a system `$identifier` field. + +The model below is valid with Concerto v1. + +``` +namespace org.accordproject + +concept Address { + o String country +} + +concept Product identified by sku { + o String sku +} + +concept Order identified { + o Double ammount + o Address address + --> Product product +} +``` + +## Root of Type Hierarchy + +See: [#180](https://github.com/accordproject/concerto/issues/180) + +All declared types now have `concerto.Concept` as their super type, and the `concerto` namespace is reserved. Note that the super type for `concerto.Concept` is null. + +## Functional API + +See: [#188](https://github.com/accordproject/concerto/issues/188) + +A new streamlined `Concerto` API has been added, to replace some of the existing runtime APIs. Existing runtime APIs have been preserved, but will be progressively removed. + +The `Concerto` API is much more functional in nature, and allows plain-old-JavaScript objects to be validated using a `ModelManager` — removing the need to use the `Factory` API to create JS objects prior to validation, or to use the `Serializer` to convert them back to plain-old-JavaScript objects. This should reduce the learning-curve for the library and improve performance. + +``` +const { ModelManager, Concerto } = require('@accordproject/concerto-core'); +const modelManager = new ModelManager(); + +modelManager.addModelFile( `namespace org.acme.address +concept PostalAddress { + o String streetAddress optional + o String postalCode optional + o String postOfficeBoxNumber optional + o String addressRegion optional + o String addressLocality optional + o String addressCountry optional +}`, 'model.cto'); + +const postalAddress = { + $class : 'org.acme.address.PostalAddress', + streetAddress : '1 Maine Street' +}; + +const concerto = new Concerto(modelManager); +concerto.validate(postalAddress); +``` + +## API Changes + +API additions are prefix by a `>` character, while API removals are prefixed by a `<`. + +:::note +A new simplified `Concerto` class has been created to validate JSON data against a Concerto model. The `Concerto` class wraps a `ModelManager` and allows JS objects to be validates without using the `Factory` or `Serializer` classes. +::: + +``` +> class Concerto { +> + void constructor() +> + void validate(undefined) throws Error +> + void getModelManager() +> + boolean isObject() +> + void getTypeDeclaration() +> + string getIdentifier() +> + boolean isIdentifiable() +> + boolean isRelationship() +> + void setIdentifier(string) +> + string getFullyQualifiedIdentifier() +> + string toURI() +> + void fromURI(string) throws Error +> + string getType() +> + string getNamespace() +> + boolean instanceOf(String) +> } +``` + +:::note +`AssetDeclaration` and other stereotypes now extend `IdentifiedDeclaration` rather than `ClassDeclaration`. Methods relating to whether the type can be the target of a relationship have been removed as all types can now be used with relationships, and methods have been added to denote whether a type has an automatic (system) identifying field (primary key), no identifying field, or is using an explicitly defined identifying field. +::: + +``` +< class AssetDeclaration extends ClassDeclaration { +> class AssetDeclaration extends IdentifiedDeclaration { +< + boolean isRelationshipTarget() +< + string getSystemType() +< + boolean isRelationshipTarget() +< + boolean isSystemRelationshipTarget() +< + boolean isSystemType() +< + boolean isSystemCoreType() +> + Boolean isIdentified() +> + Boolean isSystemIdentified() +> + Boolean isExplicitlyIdentified() +``` + +``` +< class EventDeclaration extends ClassDeclaration { +> class EventDeclaration extends IdentifiedDeclaration { +< + string getSystemType() +``` + +``` +> class IdentifiedDeclaration extends ClassDeclaration { +> + void constructor(ModelFile,Object) throws IllegalModelException +> + boolean hasInstance(object) +> } +``` + +``` +< class ParticipantDeclaration extends ClassDeclaration { +> class ParticipantDeclaration extends IdentifiedDeclaration { +< + boolean isRelationshipTarget() +< + string getSystemType() +``` + +``` +< class TransactionDeclaration extends ClassDeclaration { +> class TransactionDeclaration extends IdentifiedDeclaration { +< + string getSystemType() +``` + +:::note +`ModelFile` has been updated to remove system model files. +::: + +``` +class ModelFile { +< + void constructor(ModelManager,string,string,boolean) throws IllegalModelException +> + void constructor(ModelManager,string,string) throws IllegalModelException +< + ClassDeclaration[] getDeclarations(Function,Boolean) +> + ClassDeclaration[] getDeclarations(Function) +< + boolean isSystemModelFile() +} +``` + +:::note +`Concept` has been removed, as all types are now identifiable and now extend `Resource`. +::: + +``` +< class Concept extends Typed { +< + boolean isConcept() +< } +``` + +:::note +`Resource` has extended to capture that some resources are concepts, and are identifiable. +::: + +``` +class Resource extends Identifiable { +> + boolean isConcept() +> + boolean isIdentifiable() +} +``` + +:::note +`ValidatedConcept` has been removed. Users should now call the `validate` method explicitly to validate data. +::: + +``` +< class ValidatedConcept extends Concept { +< + void setPropertyValue(string,string) throws Error +< + void addArrayValue(string,string) throws Error +< + void validate() throws Error +< } +``` + +:::note +`ModelLoader` constructor has been updated to remove system models. +::: + +``` +class ModelLoader { +< + object loadModelManager(string,string[],object,boolean) +< + object loadModelManagerFromModelFiles(string,object[],undefined,object,boolean) +> + object loadModelManager(string[],object,boolean) +> + object loadModelManagerFromModelFiles(object[],undefined,object,boolean) +} +``` + +:::note +`ModelManager` has been updated to remove system models. These are non-breaking changes that remove the last argument to method calls. +::: + +``` +class ModelManager { +< + Object addModelFile(string,string,boolean,boolean) throws IllegalModelException +> + Object addModelFile(string,string,boolean) throws IllegalModelException +< + Object[] addModelFiles(object[],undefined,boolean,boolean) +> + Object[] addModelFiles(object[],undefined,boolean) +< + void writeModelsToFileSystem(String,Object,boolean,boolean) +< + Object[] getModels(Object,boolean,boolean) +> + void writeModelsToFileSystem(String,Object,boolean) +> + Object[] getModels(Object,boolean) +< + ClassDeclaration[] getSystemTypes() +} +``` + diff --git a/website/babel.config.js b/website/babel.config.js new file mode 100644 index 00000000..56bc3598 --- /dev/null +++ b/website/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [require.resolve('@docusaurus/core/lib/babel/preset')], +}; + + diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js new file mode 100644 index 00000000..703a58c8 --- /dev/null +++ b/website/docusaurus.config.js @@ -0,0 +1,67 @@ +// Docusaurus v2 configuration migrated from v1 siteConfig.js +// Minimal viable config; follow-ups: Algolia, custom highlight, users page + +/** @type {import('@docusaurus/types').Config} */ +const config = { + title: 'Accord Project', + tagline: 'Documentation', + url: 'https://docs.accordproject.org', + baseUrl: '/', + favicon: 'img/favicon.png', + organizationName: 'accordproject', + projectName: 'techdocs', + + i18n: { defaultLocale: 'en', locales: ['en'] }, + + presets: [ + [ + 'classic', + /** @type {import('@docusaurus/preset-classic').Options} */ ( + { + docs: { + path: '../docs', + routeBasePath: '/', + sidebarPath: require.resolve('./sidebars.js'), + editUrl: 'https://github.com/accordproject/techdocs/edit/main/website/', + showLastUpdateTime: true, + }, + blog: false, + theme: { + customCss: require.resolve('./static/css/main.css'), + }, + } + ), + ], + ], + + themeConfig: /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ ({ + colorMode: { respectPrefersColorScheme: true }, + navbar: { + title: 'Accord Project', + logo: { alt: 'Accord Project', src: 'img/A-MARK-ACCORDPROJECT-ONELINE-white.svg' }, + items: [ + { to: '/', label: 'Documentation', position: 'left' }, + { href: 'https://studio.accordproject.org', label: 'Try Online!', position: 'left' }, + { href: 'https://github.com/accordproject', label: 'GitHub', position: 'right' }, + { type: 'search', position: 'right' }, + ], + }, + footer: { + style: 'dark', + copyright: `Copyright © 2018-${new Date().getFullYear()} Accord Project, LLC.`, + }, + prism: { + theme: require('prism-react-renderer/themes/dracula'), + }, + algolia: { + // Placeholder; requires v2 index/app settings + appId: 'auto', + apiKey: '1679802ddfc315329d6b5f4616b30e51', + indexName: 'accordproject_api', + }, + }), +}; + +module.exports = config; + + diff --git a/website/package.json b/website/package.json index 5d4d1a8a..6b786abb 100644 --- a/website/package.json +++ b/website/package.json @@ -1,25 +1,26 @@ { - "scripts": { - "examples": "docusaurus-examples", - "start": "docusaurus-start", - "build": "docusaurus-build", - "build:api": "./scripts/build_api_md.sh", - "publish-gh-pages": "docusaurus-publish", - "write-translations": "docusaurus-write-translations", - "version": "docusaurus-version", - "rename-version": "docusaurus-rename-version" - }, + "name": "accordproject-techdocs", + "private": true, "description": "Technical Documentation for the Accord Project", "license": "Apache-2.0", "repository": { "type": "git", "url": "https://github.com/accordproject/techdocs.git" }, + "scripts": { + "start": "docusaurus start", + "build": "docusaurus build", + "serve": "docusaurus serve", + "swizzle": "docusaurus swizzle", + "build:api": "./scripts/build_api_md.sh" + }, "dependencies": { + "@docusaurus/core": "^2.4.3", + "@docusaurus/preset-classic": "^2.4.3", + "react": "^18.2.0", + "react-dom": "^18.2.0", "axios": "^0.21.2", - "docusaurus": "^1.14.7", - "qs": "^6.9.6", - "remarkable-admonitions": "^0.2.2" + "qs": "^6.9.6" }, "devDependencies": { "jsdoc-to-markdown": "^7.1.1" diff --git a/website/sidebars.js b/website/sidebars.js new file mode 100644 index 00000000..7abd2f52 --- /dev/null +++ b/website/sidebars.js @@ -0,0 +1,8 @@ +/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ +const sidebars = { + docs: [{ type: 'autogenerated', dirName: '.' }], +}; + +module.exports = sidebars; + + diff --git a/website/src/pages/index.js b/website/src/pages/index.js new file mode 100644 index 00000000..d66d5602 --- /dev/null +++ b/website/src/pages/index.js @@ -0,0 +1,21 @@ +import React from 'react'; +import Layout from '@theme/Layout'; +import Link from '@docusaurus/Link'; + +export default function Home() { + return ( + +
+

Accord Project Documentation

+

Welcome! Explore the docs using the sidebar or start here:

+

+ + Go to Overview + +

+
+
+ ); +} + + diff --git a/website/versioned_docs/version-0.12/accordproject-resources.md b/website/versioned_docs/version-0.12/accordproject-resources.md index 658ba6dd..627e8080 100644 --- a/website/versioned_docs/version-0.12/accordproject-resources.md +++ b/website/versioned_docs/version-0.12/accordproject-resources.md @@ -9,17 +9,17 @@ original_id: accordproject-resources - The Main Web site includes latest news, links to working groups, organizational announcements, etc. : https://www.accordproject.org - This Technical Documentation: https://docs.accordproject.org - Recording of Working Group discussions, Tutorial Videos are on available on Vimeo: https://vimeo.com/accordproject -- Accord Project's [Slack](https://accord-project.slack.com/) +- Accord Project's [Discord](https://discord.gg/Zm99SKhhtA) ## Cicero Resources - GitHub: https://github.com/accordproject/cicero -- Slack [Channel](https://accord-project.slack.com/messages/CA08NAHQS/details/) +- Join our Cicero discussions on [Discord](https://discord.gg/Zm99SKhhtA) - Technical Questions and Answers on [Stack Overflow](https://stackoverflow.com/questions/tagged/cicero) ## Ergo Resources - GitHub: https://github.com/accordproject/ergo - The [Ergo Language Guide](logic-ergo) is a good place to get started with Ergo. -- Slack [Channel](https://accord-project.slack.com/messages/C9HLJHREG/details/) +- Join our Ergo discussions on [Discord](https://discord.gg/Zm99SKhhtA) diff --git a/website/versioned_docs/version-0.12/accordproject-tooling.md b/website/versioned_docs/version-0.12/accordproject-tooling.md index be961aff..7d3f8ed9 100644 --- a/website/versioned_docs/version-0.12/accordproject-tooling.md +++ b/website/versioned_docs/version-0.12/accordproject-tooling.md @@ -27,7 +27,7 @@ A simple Emacs mode for Ergo can be found in the [ergo-mode](https://github.com/ A simple VIM mode for Ergo can be found in the [ergo.vim](https://github.com/accordproject/ergo/tree/master/ergo.vim) directory in the Ergo source code on GitHub. -> Those are not maintained as actively as the rest of the Accord Project. If you know emacs lisp or are a VIM user and would like to contribute, please contact us on the Accord Project Slack or directly through GitHub! +> Those are not maintained as actively as the rest of the Accord Project. If you know emacs lisp or are a VIM user and would like to contribute, please contact us on the Accord Project Discord or directly through GitHub! ## Template Studio diff --git a/website/versioned_docs/version-0.12/accordproject.md b/website/versioned_docs/version-0.12/accordproject.md index eef71b32..2d0d4449 100644 --- a/website/versioned_docs/version-0.12/accordproject.md +++ b/website/versioned_docs/version-0.12/accordproject.md @@ -74,7 +74,7 @@ Several tools are also available to facilitate authoring of Accord Project templ The Accord Project technology is being developed as open source. All the software packages are being actively maintained on [GitHub](https://github.com/accordproject) and we encourage organizations and individuals to contribute requirements, documentation, issues, new templates, and code. -Join the Accord Project Technology Working Group Slack channel to get involved! +Join the Accord Project Technology Working Group on Discord to get involved! ## Try Accord Project Online diff --git a/website/versioned_docs/version-0.20/accordproject-business.md b/website/versioned_docs/version-0.20/accordproject-business.md index 0e8469e7..d9034068 100644 --- a/website/versioned_docs/version-0.20/accordproject-business.md +++ b/website/versioned_docs/version-0.20/accordproject-business.md @@ -27,6 +27,6 @@ If your organization wants to become a member of the Accord Project, please [joi If you are new to the Accord Project, the best place to start is our [Online Tour](started-studio). This video is a great way to see the Accord Project in action! If you want to read more about the key concepts behind the Accord Project technology (or learn more about the template model), please read the [Key Concepts](accordproject-concepts) page. This will allow you to understand the three components of a template (text, model, and logic) and how they work together. -If any of the technical terms are confusing or hard to understand, we have a [Glossary](ref-glossary) page that may help you. If there are any concepts or terms that you want to include in the Glossary, please join our [slack channel](https://accord-project-slack-signup.herokuapp.com/) and make suggestions! +If any of the technical terms are confusing or hard to understand, we have a [Glossary](ref-glossary) page that may help you. If there are any concepts or terms that you want to include in the Glossary, please join our [Discord server](https://discord.gg/Zm99SKhhtA) and make suggestions! If you want to create a template yourself, please see [Authoring in Template Studio](tutorial-latedelivery) for a step-by-step guide on how to create your first template. The tutorial will provide an accessible starting point for those without significant development experience to begin building smart legal contracts using the Accord Project technology. diff --git a/website/versioned_docs/version-0.20/accordproject-developers.md b/website/versioned_docs/version-0.20/accordproject-developers.md index e1b191af..7be468c7 100644 --- a/website/versioned_docs/version-0.20/accordproject-developers.md +++ b/website/versioned_docs/version-0.20/accordproject-developers.md @@ -10,7 +10,7 @@ The Accord Project provides a universal format for smart legal contracts, and th Developers can contribute by converting legal text into corresponding computer code, creating Accord Project templates to be used by lawyers and businesses. In addition, developers can provide input on the development of its technology stack: language, models, templating, and other tools. -If this interests you, please visit our [Technology Working Group](https://www.accordproject.org/working-groups/technology) page, and join our [slack channel](https://accord-project-slack-signup.herokuapp.com/)! +If this interests you, please visit our [Technology Working Group](https://www.accordproject.org/working-groups/technology) page, and join our [Discord server](https://discord.gg/Zm99SKhhtA)! ## How to navigate this documentation? diff --git a/website/versioned_docs/version-0.20/model-api.md b/website/versioned_docs/version-0.20/model-api.md index 2a1200cb..4b9c8640 100644 --- a/website/versioned_docs/version-0.20/model-api.md +++ b/website/versioned_docs/version-0.20/model-api.md @@ -13,6 +13,8 @@ npm install @accordproject/concerto-core@0.20 --save Below are examples of API use. +> Note: The Concerto "functional API" is not available in Concerto 0.20.x. Use the class-based APIs illustrated in this page. References you may see to a functional API apply to later 1.x alpha builds and not to 0.20.x. + ## Create a Concerto File ```js diff --git a/website/versioned_docs/version-0.20/model-relationships.md b/website/versioned_docs/version-0.20/model-relationships.md index abc0eaff..d965bae8 100644 --- a/website/versioned_docs/version-0.20/model-relationships.md +++ b/website/versioned_docs/version-0.20/model-relationships.md @@ -20,7 +20,7 @@ Relationships must be resolved to retrieve an instance of the object being refer A property of a class may be declared as a relationship using the `-->` syntax instead of the `o` syntax. The `o` syntax declares that the class contains (has-a) property of that type, whereas the `-->` syntax declares a typed pointer to an external identifiable instance. -In this example, the model declares that an `Order` has-an array of reference to `OrderLines`. Deleting the `Order` has no impact on the `OrderLine`. When the `Order` is serialized the JSON only the IDs of the `OrderLines` are stored within the `Order`, not the `OrderLines` themselves. +In this example, the model declares that an `Order` has an array of references to `OrderLines`. Deleting the `Order` has no impact on the `OrderLine`. When the `Order` is serialized to JSON, only the IDs of the `OrderLines` are stored within the `Order`, not the `OrderLines` themselves. ```js asset OrderLine identified by orderLineId { diff --git a/website/versioned_docs/version-0.20/started-resources.md b/website/versioned_docs/version-0.20/started-resources.md index 823f7a2d..f61803d3 100644 --- a/website/versioned_docs/version-0.20/started-resources.md +++ b/website/versioned_docs/version-0.20/started-resources.md @@ -9,7 +9,7 @@ original_id: started-resources - The Main Web site includes latest news, links to working groups, organizational announcements, etc. : https://www.accordproject.org - This Technical Documentation: https://docs.accordproject.org - Recording of Working Group discussions, Tutorial Videos are available on Vimeo: https://vimeo.com/accordproject -- Join the [Accord Project Slack](https://accord-project-slack-signup.herokuapp.com) to get involved! +- Join the [Accord Project Discord](https://discord.gg/Zm99SKhhtA) to get involved! ## User Content @@ -38,16 +38,16 @@ Accord Project is also developing tools to help with authoring, testing and runn All the Accord Project technology is being developed as open source. The software packages are being actively maintained on [GitHub](https://github.com/accordproject) and we encourage organizations and individuals to contribute requirements, documentation, issues, new templates, and code. -Join us on the [#technology-wg Slack channel](https://accord-project-slack-signup.herokuapp.com) for technical discussions and weekly updates. +Join us on the [#technology-wg Discord channel](https://discord.gg/Zm99SKhhtA) for technical discussions and weekly updates. ### Cicero - GitHub: https://github.com/accordproject/cicero -- [Cicero Slack Channel](https://accord-project.slack.com/messages/CA08NAHQS/details/) +- Join our Cicero discussions on [Discord](https://discord.gg/Zm99SKhhtA) - Technical Questions and Answers on [Stack Overflow](https://stackoverflow.com/questions/tagged/cicero) ### Ergo - GitHub: https://github.com/accordproject/ergo - The [Ergo Language Guide](logic-ergo) is a good place to get started with Ergo. -- [Ergo Slack Channel](https://accord-project.slack.com/messages/C9HLJHREG/details/) +- Join our Ergo discussions on [Discord](https://discord.gg/Zm99SKhhtA) diff --git a/website/versioned_docs/version-0.21/accordproject-faq.md b/website/versioned_docs/version-0.21/accordproject-faq.md index a792922c..6d39218b 100644 --- a/website/versioned_docs/version-0.21/accordproject-faq.md +++ b/website/versioned_docs/version-0.21/accordproject-faq.md @@ -47,7 +47,7 @@ The purpose of the Accord Project is to establish and maintain a common and cons ### How can I get involved? -The Accord Project Community is developing several working groups focusing on different applications of smart contracts. The working groups have frequent calls and use the Accord Project’s Slack group chat application (join by clicking [here](https://accord-project-slack-signup.herokuapp.com/)) for discussion. The dates, dial-in instructions, and agendas for the working groups are all listed in the Project’s public calendar and typically also in working group’s respective slack channels. +The Accord Project Community is developing several working groups focusing on different applications of smart contracts. The working groups have frequent calls and use the Accord Project’s Discord group chat application (join by clicking [here](https://discord.gg/Zm99SKhhtA)) for discussion. The dates, dial-in instructions, and agendas for the working groups are all listed in the Project’s public calendar and typically also in working groups’ respective Discord channels. A primary purpose of the working groups is to develop a universally accessible and widely used open source library of modular, smart legal contracts, smart templates and models that reflect input from the community. Smart legal contract templates are built according to the Project’s [Cicero Specification](https://github.com/accordproject/cicero). diff --git a/website/versioned_docs/version-0.21/accordproject.md b/website/versioned_docs/version-0.21/accordproject.md index 8d4aad3e..08433624 100644 --- a/website/versioned_docs/version-0.21/accordproject.md +++ b/website/versioned_docs/version-0.21/accordproject.md @@ -41,7 +41,7 @@ The Accord Project provides a universal format for smart legal contracts, and th The Accord Project is developing tools including a [Visual Studio Code plugin](https://marketplace.visualstudio.com/items?itemName=accordproject.cicero-vscode-extension), [React based web components](https://github.com/accordproject/web-components) and a command line interface for working with Accord Project Contracts. You can integrate contracts into existing applications, create new applications or simply assist lawyers with developing applications with the Ergo language. -There is a welcoming community on Slack that is eager to help. [Join our Community](https://www.accordproject.org/membership/) +There is a welcoming community on Discord that is eager to help. [Join our Community](https://discord.gg/Zm99SKhhtA) ## About this documentation diff --git a/website/versioned_docs/version-0.21/model-api.md b/website/versioned_docs/version-0.21/model-api.md index 615e041d..d041ffb6 100644 --- a/website/versioned_docs/version-0.21/model-api.md +++ b/website/versioned_docs/version-0.21/model-api.md @@ -13,6 +13,8 @@ npm install @accordproject/concerto-core --save Below are examples of API use. +> Note: The Concerto "functional API" discussed in some materials was experimental around the 1.0.0-alpha releases. For Concerto 0.21.x, use the class-based APIs shown below. If you are using a 1.x alpha with the functional API, refer to the matching versioned documentation for that release. + ## Validating JSON data using a Model ```js diff --git a/website/versioned_docs/version-0.21/model-relationships.md b/website/versioned_docs/version-0.21/model-relationships.md index a78271e3..e3f9a10d 100644 --- a/website/versioned_docs/version-0.21/model-relationships.md +++ b/website/versioned_docs/version-0.21/model-relationships.md @@ -22,7 +22,7 @@ Relationships must be resolved to retrieve an instance of the object being refer A property of a class may be declared as a relationship using the `-->` syntax instead of the `o` syntax. The `o` syntax declares that the class contains (has-a) property of that type, whereas the `-->` syntax declares a typed pointer to an external identifiable instance. -In this example, the model declares that an `Order` has-an array of reference to `OrderLines`. Deleting the `Order` has no impact on the `OrderLine`. When the `Order` is serialized the JSON only the IDs of the `OrderLines` are stored within the `Order`, not the `OrderLines` themselves. +In this example, the model declares that an `Order` has an array of references to `OrderLines`. Deleting the `Order` has no impact on the `OrderLine`. When the `Order` is serialized to JSON, only the IDs of the `OrderLines` are stored within the `Order`, not the `OrderLines` themselves. ```js asset OrderLine identified by orderLineId { diff --git a/website/versioned_docs/version-0.21/ref-migrate-concerto-0.82-1.0.md b/website/versioned_docs/version-0.21/ref-migrate-concerto-0.82-1.0.md index 0702d9c8..bff0037c 100644 --- a/website/versioned_docs/version-0.21/ref-migrate-concerto-0.82-1.0.md +++ b/website/versioned_docs/version-0.21/ref-migrate-concerto-0.82-1.0.md @@ -7,7 +7,7 @@ original_id: ref-migrate-concerto-0.82-1.0 Concerto `1.0` delivers fundamental improvements over previous releases, whilst maintaining a high-degree (though not total!) of backwards compatibility with `0.82`. In particular all of the `0.82` Concerto syntax remains valid in `1.0`. :::note -We are currently in the process of migrating the Accord Project stack to Concero v1.0. Until the migration is complete Concero v1 is tagged as an `alpha` and may undergo minor additional changes and fixes. +The Accord Project stack migration to Concerto v1.0 has been completed. Concerto v1.0 is now stable and is used in Cicero `0.22` and later versions. ::: ## Summary of Breaking Changes diff --git a/website/versioned_docs/version-0.21/started-resources.md b/website/versioned_docs/version-0.21/started-resources.md index 51fba9de..ba5fc0f5 100644 --- a/website/versioned_docs/version-0.21/started-resources.md +++ b/website/versioned_docs/version-0.21/started-resources.md @@ -9,7 +9,7 @@ original_id: started-resources - The Main Web site includes latest news, links to working groups, organizational announcements, etc. : https://www.accordproject.org - This Technical Documentation: https://docs.accordproject.org - Recording of Working Group discussions, Tutorial Videos are available on Vimeo: https://vimeo.com/accordproject -- Join the [Accord Project Slack](https://accord-project-slack-signup.herokuapp.com) to get involved! +- Join the [Accord Project Discord](https://discord.gg/Zm99SKhhtA) to get involved! ## User Content @@ -38,16 +38,16 @@ Accord Project is also developing tools to help with authoring, testing and runn All the Accord Project technology is being developed as open source. The software packages are being actively maintained on [GitHub](https://github.com/accordproject) and we encourage organizations and individuals to contribute requirements, documentation, issues, new templates, and code. -Join us on the [#technology-wg Slack channel](https://accord-project-slack-signup.herokuapp.com) for technical discussions and weekly updates. +Join us on the [#technology-wg Discord channel](https://discord.gg/Zm99SKhhtA) for technical discussions and weekly updates. ### Cicero - GitHub: https://github.com/accordproject/cicero -- [Cicero Slack Channel](https://accord-project.slack.com/messages/CA08NAHQS/details/) +- Join our Cicero discussions on [Discord](https://discord.gg/Zm99SKhhtA) - Technical Questions and Answers on [Stack Overflow](https://stackoverflow.com/questions/tagged/cicero) ### Ergo - GitHub: https://github.com/accordproject/ergo - The [Ergo Language Guide](logic-ergo) is a good place to get started with Ergo. -- [Ergo Slack Channel](https://accord-project.slack.com/messages/C9HLJHREG/details/) +- Join our Ergo discussions on [Discord](https://discord.gg/Zm99SKhhtA) diff --git a/website/versioned_docs/version-0.30.0/model-api.md b/website/versioned_docs/version-0.30.0/model-api.md index 00ab86a7..ed012a03 100644 --- a/website/versioned_docs/version-0.30.0/model-api.md +++ b/website/versioned_docs/version-0.30.0/model-api.md @@ -13,6 +13,8 @@ npm install @accordproject/concerto-core --save Below are examples of API use. +> Note: If you are using a Concerto 1.x release line that exposes a "functional API", ensure you are consulting the matching versioned docs for that alpha/stable version. This page documents the class-based API for the 0.30.x docs set. + ## Validating JSON data using a Model ```js