Comments (5)
Just FYI: I already documented our discussion from the sprint here: #89
from plone.restapi.
I've been working on implementing this in https://github.com/pyrenees/plone.dexterity/tree/master/plone/dexterity/serialize. Things need to be reorganized a bit, but most of it's there.
{
"@type": "Todo",
"parent": {
"@type": "Plone Site",
"@id": "/plone",
"title": "Demo Site",
"description": "Awww yeah..."
},
"@id": "/plone/obj1",
"schema": {
"properties": {
"invariants": [],
"created": {
"readonly": "False",
"type": "zope.schema.Datetime",
"description": "The date and time that an object is created. \nThis is normally set automatically.",
"required": "True",
"title": "Creation Date"
},
"fieldsets": {
"other": {
"properties": {
"assigned_to": {
"readonly": "False",
"type": "zope.schema.TextLine",
"description": "The person who needs to complete the task.",
"min_length": "0",
"title": "Assigned To",
"default": "",
"required": "False"
},
"notes": {
"readonly": "False",
"type": "zope.schema.Text",
"description": "Classified notes on about task",
"min_length": "0",
"title": "Notes",
"default": "",
"required": "False"
}
},
"label": "Additional Information"
}
},
"schemas": {
"IDublinCore": {
"based_on": [],
"invariants": "",
"fields": [
"created",
"modified"
],
"name": "IDublinCore"
},
"ITodo": {
"based_on": [
"plone.example.todo.IExampleBase"
],
"invariants": "",
"fields": [
"done",
"assigned_to",
"notes"
],
"name": "ITodo"
}
},
"done": {
"readonly": "False",
"type": "zope.schema.Bool",
"description": "Has the task been completed?",
"title": "Done",
"default": "False",
"required": "False"
},
"modified": {
"readonly": "False",
"type": "zope.schema.Datetime",
"description": "The date and time that the object was last modified in a\nmeaningful way.",
"required": "True",
"title": "Modification Date"
}
},
"title": "Todo",
"type": "object"
},
"created": null,
"assigned_to": "",
"done": false,
"title": "It's a todo!",
"modified": null,
"UID": "355b0b3789ca445c9090f7fb1fde8cec"
}
from plone.restapi.
@ebrehault Can you elaborate on the placeholders/help messages items? Are these currently exposed in dexterity/zope.schema?
from plone.restapi.
@esteele The help message is basically the description
attribute of our schema fields.
Placeholders are not managed in zope.schema nor dexterity. I guess we can skip it for now.
from plone.restapi.
Nested schemas are just custom properties of JSON Schemas which are available for referencing. But they are only seen as schemas if they are referenced. For example :
{
"nested": {
"type": "string",
"minLength": 2
},
"properties": {
"name": {"$ref":"#/nested"}
}
}
I propose to use the following structure as it would not interfere with the way JSON Schema is intended to be used.
{
"$schema": "http://json-schema.org/draft-04/hyper-schema#",
"type": "object",
"properties": {
"username": {
"type": "string"
},
"email": {
"type": "string",
"format": "email"
},
"creditCardNumber": {
"type": "string",
"pattern": "[0-9]{13,16}"
}
},
"fieldsets": [{
"id": "part_1",
"title": "Registration",
"fields": ["username", "email"]
},
{
"id": "part_2",
"title": "Payment",
"fields": ["creditCardNumber"]
}],
"required": ["username", "email", "creditCardNumber"],
"links": [{
"title": "Cancel",
"description": "Cancel the transaction",
"href": "test",
"rel": "action"
},
{
"title": "Cancel",
"description": "Cancel the transaction",
"href": "somewhere",
"rel": "action"
}]
}
Where fieldsets
is a custom property which will not be processed by validators.
from plone.restapi.
Related Issues (20)
- KeyError: 'portal' in tests with Python 3.12.1 HOT 10
- Translate validation error messages
- IBlocks SearchableText indexer bypasses plone.textindexer behavior HOT 2
- relatedItems field returns None in the serializer if the related item is deleted HOT 1
- Site Administrator cannot add user to group
- Add remote_url(getRemoteUrl) to link content-types in navigation HOT 4
- Include release notes in Plone 6 Documentation
- Authentication error messages from PAS Plugins aren't returned by the restapi HOT 1
- restapi double parameter is broking code. HOT 8
- In content that uses the plone.blocks behavior, it is not possible to add fields to SearchableText with "plone.app.dexterity.textindexer" HOT 6
- Community Forum App Icon Not Filling Correctly. HOT 1
- Add plone.app.discussion control panel
- Types control panel does not allow to enable/disable discussion for a content type
- Implement SummaryDiscussionListingTemplate to fix Discussion url in listings HOT 1
- Documentation of event content type does not return a timezone
- NoneType' object has no attribute 'getProperty': when searching users HOT 1
- @querystring shouldn't list userids
- Test with Plone 6.1 HOT 1
- Require plone.app.iterate on test extras
- Require plone.app.upgrade in test extras
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from plone.restapi.