All Projects → adobe → Xdm

adobe / Xdm

Licence: cc-by-4.0
Experience Data Model

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Xdm

Npoint
JSON storage bins with schema validation
Stars: ✭ 116 (-27.5%)
Mutual labels:  json-schema
Libvirt Hook Qemu
Libvirt hook for setting up iptables port-forwarding rules when using NAT-ed networking.
Stars: ✭ 137 (-14.37%)
Mutual labels:  json-schema
Jsonschema2db
Generate tables dynamically from a JSON Schema and insert data
Stars: ✭ 152 (-5%)
Mutual labels:  json-schema
Typedload
Python library to load dynamically typed data into statically typed data structures
Stars: ✭ 120 (-25%)
Mutual labels:  json-schema
React Json Schema
Configure and build views using JSON schemas mapped to React components
Stars: ✭ 131 (-18.12%)
Mutual labels:  json-schema
Dms
基于Json Schema的动态Json数据配置平台
Stars: ✭ 142 (-11.25%)
Mutual labels:  json-schema
Liform
PHP library to render Symfony Forms to JSON Schema
Stars: ✭ 113 (-29.37%)
Mutual labels:  json-schema
Ngx Formly
JSON powered / Dynamic forms for Angular
Stars: ✭ 2,109 (+1218.13%)
Mutual labels:  json-schema
Json Schema To Typescript
Compile JSONSchema to TypeScript type declarations
Stars: ✭ 1,917 (+1098.13%)
Mutual labels:  json-schema
Ajv Cli
Use 'Another Json Validator' (ajv) from the command line
Stars: ✭ 148 (-7.5%)
Mutual labels:  json-schema
Lurker
📖 The ultimate tool for documenting and testing APIs in Rails
Stars: ✭ 120 (-25%)
Mutual labels:  json-schema
Xsd2json
Translate XML Schema into equivalent JSON Schema
Stars: ✭ 124 (-22.5%)
Mutual labels:  json-schema
Aptos
☀️ A tool for validating data using JSON Schema and converting JSON Schema documents into different data-interchange formats
Stars: ✭ 144 (-10%)
Mutual labels:  json-schema
Class Validator Jsonschema
Convert class-validator-decorated classes into JSON schema
Stars: ✭ 118 (-26.25%)
Mutual labels:  json-schema
Skillset
✨ Intuitive job-candidate skill visualization, taking advantage of D3.js and JSONResume.
Stars: ✭ 152 (-5%)
Mutual labels:  json-schema
Hypothesis Jsonschema
Tools to generate test data from JSON schemata with Hypothesis
Stars: ✭ 112 (-30%)
Mutual labels:  json-schema
Kubernetes Json Schema
Schemas for every version of every object in every version of Kubernetes
Stars: ✭ 140 (-12.5%)
Mutual labels:  json-schema
Raml Server
run a mocked server JUST based on a RAML API's definition .. zero coding
Stars: ✭ 158 (-1.25%)
Mutual labels:  json-schema
Cfworker
A collection of packages optimized for Cloudflare Workers and service workers.
Stars: ✭ 152 (-5%)
Mutual labels:  json-schema
Json Schema Viewer
JavaScript tool for visualizing json-schemas
Stars: ✭ 147 (-8.12%)
Mutual labels:  json-schema

Experience Data Model (XDM) Schema

CircleCI Greenkeeper badge

The Experience Data Model (XDM) is the language of digital experiences. XDM is a publicly documented specification, driven by Adobe to improve the interoperability, expressiveness, and power of digital experiences. This repository contains the source code for the formal specification of the XDM model, using the JSON Schema language.

Current Version

XDM is at version 1.13.3.

You can find more about our versioning in docs/introduction.md

XDM Visualization

See visualization of the master branch, which is refreshed every 12 hours.

Read the XDM Spec

Project Layout

The project is laid out in the following way:

  • docs: Markdown files that contain front-matter, introduction, and non-normative parts of XDM
  • schemas: JSON schema files that define out of the box cross user schemas
  • components: JSON schema files that define the AEP components used in the composition model to create schemas usable within UPS
  • extensions: JSON schema files that define vendor or solution specific components used within the composition model of AEP
  • package.json: a build file for npm that allows the generation of Markdown from the JSON Schema source files and (later) the generation of an AEM package to be deployed on the Adobe I/O Website
  • README.md: this file
  • CONTRIBUTING.md: guidelines for contributors, covering process, conventions and design guidelines

File Types

  • *.schema.json is the schema file, e.g. profile.schema.json – we pick the .json file extension for easy syntax highlighting in editors
  • *.example.*.json is an example file that will be validated against the *.schema.json file, and if successful, merged into the *.schema.json file as an "example" field at the root of the schema before it is converted into Markdown or published
  • *.invalid.*.json is an invalid example file that will be validated against the *.schema.json file. If the invalid file validates (false positive), the schema is too lax and the overall build will fail. invalid files will not be merged into documentation.

Tooling

The tooling project (e.g. for generating Markdown documentation, example validation, JSON Schema documentation inlining) is located in the adobe/jsonschema2md git repository.

Dependencies

You need:

  1. Node.js and npm
  2. curl

Validation of local changes prior to creating any Pull Requests to adobe/xdm

This project contains a minimal validation script that depends on NPM. You can use it to validate the JSON example files against the JSON Schema files after making changes to either.

From the root directory of the local repository run:

$ npm install
$ npm test

> [email protected] test /Users/fmeschbe/src/platform/xdm
> mocha
...

$ npm run lint
...

If you see warnings or error messages (or an non-zero exit code), fix them before making a pull request.

Naming Conventions

AEM Package Generation (optional)

With all dependencies installed, run the following commands from the root directory of the local repository:

$ npm install
$ npm run package

This will fetch all dependencies, then generate Markdown in the docs/reference directory and then generate an AEM package under xdm-docs.zip. The package can be uploaded using the command

$ npm run upload

upload will upload to the Adobe I/O Staging instance. To upload to production, use upload:prod instead.

The AEM password is not saved in this repository (of course), but you can set it using this command:

$ npm config set xdm-models:aem_password $AEM_PASSWORD

This is assuming $AEM_PASSWORD has been provided to your Continuous Integration system or set on the command line beforehand.

Running upload will only make the documentation visible on the "author" instance, this means visitors to the site cannot see any of the documentation. To publish it, run the npm run activate or npm run activate:prod commands.

A full process would then look like this:

$ npm config set xdm-models:aem_password $AEM_PASSWORD
$ npm install
$ npm test
$ npm run package
$ npm run upload
$ npm run activate

This will generate documentation, create an AEM package, install it on (stage) author, and activate it from there, so that visitors can read the documentation.

A Note on Dependencies

The package.json script will fetch a released version of the AEM Markdown Importer JAR using curl.

Links

Specifications

Vocabularies/Ontologies

License/Copyright

Copyright 2017 Adobe Systems Incorporated. All rights reserved. This work is licensed under a Creative Commons Attribution 4.0 International (CC BY 4.0) license.

You are free to:

  • Share — copy and redistribute the material in any medium or format.
  • Adapt — remix, transform, and build upon the material for any purpose, even commercially.

This license is acceptable for Free Cultural Works.

The licensor cannot revoke these freedoms as long as you follow the license terms.

Under the following terms:

  • Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
  • No additional restrictions — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].