Skip to content

Commit a689a76

Browse files
committed
Add json schema docs
1 parent ef7fe2a commit a689a76

32 files changed

Lines changed: 307 additions & 24 deletions

docs/api/JsonSchema.rst

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
2+
.. automodule:: synapseclient.services.json_schema
3+
:members:
4+
5+
.. .. autoclass:: synapseclient.services.json_schema.JsonSchemaVersion
6+
.. :members:
7+
8+
.. .. autoclass:: synapseclient.services.json_schema.JsonSchemaOrganization
9+
.. :members:
10+
11+
.. .. autoclass:: synapseclient.services.json_schema.JsonSchemaService
12+
.. :members:
13+
14+
.. .. autoclass:: synapseclient.services.json_schema.JsonSchemaService
15+
.. :members:
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
********************
2+
Validate Annotations
3+
********************
4+
5+
Validate annotations on your Synapse entities by leveraging the JSON schema services.
6+
Here are the steps you must take to set up the JSON Schema service.
7+
8+
Create a JSON Schema organization
9+
=================================
10+
11+
Set up Synapse client and JSON Schema service::
12+
13+
import synapseclient
14+
syn = synapseclient.login()
15+
syn.get_available_services() # Output: ['json_schema']
16+
js = syn.service("json_schema")
17+
18+
Create, manage, and delete a JSON Schema organization::
19+
20+
my_org = js.JsonSchemaOrganization("test.new")
21+
my_org # Output: JsonSchemaOrganization(name='test.new')
22+
my_org.create()
23+
my_org.get_acl()
24+
my_org.set_acl([3413689])
25+
my_org.update_acl([3324230])
26+
my_org.delete()
27+
28+
Retrieve existing organization and associated JSON schemas::
29+
30+
orgs = js.list_organizations()
31+
sage_org = js.JsonSchemaOrganization("sage.annotations")
32+
schemas = sage_org.list_json_schemas()
33+
schema1 = next(schemas)
34+
schema2 = sage_org.get_json_schema(schema1.name)
35+
assert schema1 is schema2 # True
36+
schema1 # Output: JsonSchema(org='sage.annotations', name='analysis.alignmentMethod')
37+
38+
Manage a specific version of a JSON schema::
39+
40+
versions = schema1.list_versions()
41+
version1 = next(versions)
42+
raw_body = version1.body
43+
full_body = version1.expand()
44+
version1 # Output: JsonSchemaVersion(org='sage.annotations', name='analysis.alignmentMethod', version='0.0.2')
45+
46+
47+
Create a new JSON schema version for an existing organization::
48+
from random import randint
49+
rint = randint(0, 100000)
50+
org_name = "bgrande.test"
51+
schema_name = "my.schema"
52+
53+
# Method 1
54+
my_org = js.JsonSchemaOrganization(org_name)
55+
new_version1 = my_org.create_json_schema(raw_body, schema_name, f"0.{rint}.1")
56+
57+
# Method 2
58+
my_schema = js.JsonSchema(my_org, schema_name)
59+
new_version2 = my_schema.create(raw_body, f"0.{rint}.2")
60+
61+
# Method 3
62+
my_version = js.JsonSchemaVersion(my_org, schema_name, f"0.{rint}.3")
63+
new_version3 = my_version.create(raw_body)
64+
65+
Test validation on a Synapse entity::
66+
67+
from time import sleep
68+
synapse_id = "syn25922647"
69+
js.bind_json_schema(new_version1.uri, synapse_id)
70+
js.get_json_schema(synapse_id)
71+
sleep(3)
72+
js.validate(synapse_id)
73+
js.validate_children(synapse_id)
74+
js.validation_stats(synapse_id)
75+
js.unbind_json_schema(synapse_id)
76+
77+
# Access to low-level API functions
78+
# js.create_organization(organization_name)
79+
# js.get_organization(organization_name)
80+
# js.list_organizations()
81+
# js.delete_organization(organization_id)
82+
# js.get_organization_acl(organization_id)
83+
# js.update_organization_acl(organization_id, resource_access, etag)
84+
# js.list_json_schemas(organization_name)
85+
# js.list_json_schema_versions(organization_name, json_schema_name)
86+
# js.create_json_schema(json_schema_body, dry_run)
87+
# js.get_json_schema_body(json_schema_uri)
88+
# js.delete_json_schema(json_schema_uri)
89+
# js.json_schema_validation(json_schema_uri)
90+
# js.bind_json_schema_to_entity(synapse_id, json_schema_uri)
91+
# js.get_json_schema_from_entity(synapse_id)
92+
# js.delete_json_schema_from_entity(synapse_id)
93+
# js.validate_entity_with_json_schema(synapse_id)
94+
# js.get_json_schema_validation_statistics(synapse_id)
95+
# js.get_invalid_json_schema_validation(synapse_id)

docs/build/html/api/Activity.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
<li class="toctree-l1"><a class="reference internal" href="../articles/cli.html">Command Line Client</a></li>
5959
<li class="toctree-l1"><a class="reference internal" href="../articles/data_storage.html">Data Storage</a></li>
6060
<li class="toctree-l1"><a class="reference internal" href="../articles/synapseutils.html">Synapse Utils</a></li>
61+
<li class="toctree-l1"><a class="reference internal" href="../articles/validate_annotations.html">Validate Annotations</a></li>
6162
<li class="toctree-l1"><a class="reference internal" href="../articles/api.html">Accessing the API</a></li>
6263
</ul>
6364
<p class="caption" role="heading"><span class="caption-text">Python API</span></p>
@@ -78,6 +79,7 @@
7879
<li class="toctree-l1"><a class="reference internal" href="Table.html">Tables</a></li>
7980
<li class="toctree-l1"><a class="reference internal" href="Team.html">Teams</a></li>
8081
<li class="toctree-l1"><a class="reference internal" href="Views.html">Views</a></li>
82+
<li class="toctree-l1"><a class="reference internal" href="JsonSchema.html">JSON Schema</a></li>
8183
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
8284
</ul>
8385
<p class="caption" role="heading"><span class="caption-text">News</span></p>

docs/build/html/api/Annotations.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
<li class="toctree-l1"><a class="reference internal" href="../articles/cli.html">Command Line Client</a></li>
5959
<li class="toctree-l1"><a class="reference internal" href="../articles/data_storage.html">Data Storage</a></li>
6060
<li class="toctree-l1"><a class="reference internal" href="../articles/synapseutils.html">Synapse Utils</a></li>
61+
<li class="toctree-l1"><a class="reference internal" href="../articles/validate_annotations.html">Validate Annotations</a></li>
6162
<li class="toctree-l1"><a class="reference internal" href="../articles/api.html">Accessing the API</a></li>
6263
</ul>
6364
<p class="caption" role="heading"><span class="caption-text">Python API</span></p>
@@ -76,6 +77,7 @@
7677
<li class="toctree-l1"><a class="reference internal" href="Table.html">Tables</a></li>
7778
<li class="toctree-l1"><a class="reference internal" href="Team.html">Teams</a></li>
7879
<li class="toctree-l1"><a class="reference internal" href="Views.html">Views</a></li>
80+
<li class="toctree-l1"><a class="reference internal" href="JsonSchema.html">JSON Schema</a></li>
7981
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
8082
</ul>
8183
<p class="caption" role="heading"><span class="caption-text">News</span></p>

docs/build/html/api/Client.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
<li class="toctree-l1"><a class="reference internal" href="../articles/cli.html">Command Line Client</a></li>
5959
<li class="toctree-l1"><a class="reference internal" href="../articles/data_storage.html">Data Storage</a></li>
6060
<li class="toctree-l1"><a class="reference internal" href="../articles/synapseutils.html">Synapse Utils</a></li>
61+
<li class="toctree-l1"><a class="reference internal" href="../articles/validate_annotations.html">Validate Annotations</a></li>
6162
<li class="toctree-l1"><a class="reference internal" href="../articles/api.html">Accessing the API</a></li>
6263
</ul>
6364
<p class="caption" role="heading"><span class="caption-text">Python API</span></p>
@@ -75,6 +76,7 @@
7576
<li class="toctree-l1"><a class="reference internal" href="Table.html">Tables</a></li>
7677
<li class="toctree-l1"><a class="reference internal" href="Team.html">Teams</a></li>
7778
<li class="toctree-l1"><a class="reference internal" href="Views.html">Views</a></li>
79+
<li class="toctree-l1"><a class="reference internal" href="JsonSchema.html">JSON Schema</a></li>
7880
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
7981
</ul>
8082
<p class="caption" role="heading"><span class="caption-text">News</span></p>

docs/build/html/api/Entity.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
<li class="toctree-l1"><a class="reference internal" href="../articles/cli.html">Command Line Client</a></li>
5959
<li class="toctree-l1"><a class="reference internal" href="../articles/data_storage.html">Data Storage</a></li>
6060
<li class="toctree-l1"><a class="reference internal" href="../articles/synapseutils.html">Synapse Utils</a></li>
61+
<li class="toctree-l1"><a class="reference internal" href="../articles/validate_annotations.html">Validate Annotations</a></li>
6162
<li class="toctree-l1"><a class="reference internal" href="../articles/api.html">Accessing the API</a></li>
6263
</ul>
6364
<p class="caption" role="heading"><span class="caption-text">Python API</span></p>
@@ -84,6 +85,7 @@
8485
<li class="toctree-l1"><a class="reference internal" href="Table.html">Tables</a></li>
8586
<li class="toctree-l1"><a class="reference internal" href="Team.html">Teams</a></li>
8687
<li class="toctree-l1"><a class="reference internal" href="Views.html">Views</a></li>
88+
<li class="toctree-l1"><a class="reference internal" href="JsonSchema.html">JSON Schema</a></li>
8789
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
8890
</ul>
8991
<p class="caption" role="heading"><span class="caption-text">News</span></p>

docs/build/html/api/Evaluation.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
<li class="toctree-l1"><a class="reference internal" href="../articles/cli.html">Command Line Client</a></li>
5959
<li class="toctree-l1"><a class="reference internal" href="../articles/data_storage.html">Data Storage</a></li>
6060
<li class="toctree-l1"><a class="reference internal" href="../articles/synapseutils.html">Synapse Utils</a></li>
61+
<li class="toctree-l1"><a class="reference internal" href="../articles/validate_annotations.html">Validate Annotations</a></li>
6162
<li class="toctree-l1"><a class="reference internal" href="../articles/api.html">Accessing the API</a></li>
6263
</ul>
6364
<p class="caption" role="heading"><span class="caption-text">Python API</span></p>
@@ -76,6 +77,7 @@
7677
<li class="toctree-l1"><a class="reference internal" href="Table.html">Tables</a></li>
7778
<li class="toctree-l1"><a class="reference internal" href="Team.html">Teams</a></li>
7879
<li class="toctree-l1"><a class="reference internal" href="Views.html">Views</a></li>
80+
<li class="toctree-l1"><a class="reference internal" href="JsonSchema.html">JSON Schema</a></li>
7981
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
8082
</ul>
8183
<p class="caption" role="heading"><span class="caption-text">News</span></p>

docs/build/html/api/Table.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
<li class="toctree-l1"><a class="reference internal" href="../articles/cli.html">Command Line Client</a></li>
5959
<li class="toctree-l1"><a class="reference internal" href="../articles/data_storage.html">Data Storage</a></li>
6060
<li class="toctree-l1"><a class="reference internal" href="../articles/synapseutils.html">Synapse Utils</a></li>
61+
<li class="toctree-l1"><a class="reference internal" href="../articles/validate_annotations.html">Validate Annotations</a></li>
6162
<li class="toctree-l1"><a class="reference internal" href="../articles/api.html">Accessing the API</a></li>
6263
</ul>
6364
<p class="caption" role="heading"><span class="caption-text">Python API</span></p>
@@ -89,6 +90,7 @@
8990
</li>
9091
<li class="toctree-l1"><a class="reference internal" href="Team.html">Teams</a></li>
9192
<li class="toctree-l1"><a class="reference internal" href="Views.html">Views</a></li>
93+
<li class="toctree-l1"><a class="reference internal" href="JsonSchema.html">JSON Schema</a></li>
9294
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
9395
</ul>
9496
<p class="caption" role="heading"><span class="caption-text">News</span></p>

docs/build/html/api/Team.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
<li class="toctree-l1"><a class="reference internal" href="../articles/cli.html">Command Line Client</a></li>
5959
<li class="toctree-l1"><a class="reference internal" href="../articles/data_storage.html">Data Storage</a></li>
6060
<li class="toctree-l1"><a class="reference internal" href="../articles/synapseutils.html">Synapse Utils</a></li>
61+
<li class="toctree-l1"><a class="reference internal" href="../articles/validate_annotations.html">Validate Annotations</a></li>
6162
<li class="toctree-l1"><a class="reference internal" href="../articles/api.html">Accessing the API</a></li>
6263
</ul>
6364
<p class="caption" role="heading"><span class="caption-text">Python API</span></p>
@@ -71,6 +72,7 @@
7172
<li class="toctree-l1"><a class="reference internal" href="Table.html">Tables</a></li>
7273
<li class="toctree-l1 current"><a class="current reference internal" href="#">Teams</a></li>
7374
<li class="toctree-l1"><a class="reference internal" href="Views.html">Views</a></li>
75+
<li class="toctree-l1"><a class="reference internal" href="JsonSchema.html">JSON Schema</a></li>
7476
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
7577
</ul>
7678
<p class="caption" role="heading"><span class="caption-text">News</span></p>

docs/build/html/api/Views.html

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<script src="../_static/js/theme.js"></script>
2121
<link rel="index" title="Index" href="../genindex.html" />
2222
<link rel="search" title="Search" href="../search.html" />
23-
<link rel="next" title="Core" href="core.html" />
23+
<link rel="next" title="JSON Schema" href="JsonSchema.html" />
2424
<link rel="prev" title="Teams" href="Team.html" />
2525
</head>
2626

@@ -58,6 +58,7 @@
5858
<li class="toctree-l1"><a class="reference internal" href="../articles/cli.html">Command Line Client</a></li>
5959
<li class="toctree-l1"><a class="reference internal" href="../articles/data_storage.html">Data Storage</a></li>
6060
<li class="toctree-l1"><a class="reference internal" href="../articles/synapseutils.html">Synapse Utils</a></li>
61+
<li class="toctree-l1"><a class="reference internal" href="../articles/validate_annotations.html">Validate Annotations</a></li>
6162
<li class="toctree-l1"><a class="reference internal" href="../articles/api.html">Accessing the API</a></li>
6263
</ul>
6364
<p class="caption" role="heading"><span class="caption-text">Python API</span></p>
@@ -75,6 +76,7 @@
7576
<li class="toctree-l2"><a class="reference internal" href="#updating-annotations-using-view">Updating Annotations using View</a></li>
7677
</ul>
7778
</li>
79+
<li class="toctree-l1"><a class="reference internal" href="JsonSchema.html">JSON Schema</a></li>
7880
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
7981
</ul>
8082
<p class="caption" role="heading"><span class="caption-text">News</span></p>
@@ -191,7 +193,7 @@ <h2>Updating Annotations using View<a class="headerlink" href="#updating-annotat
191193
</div>
192194
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
193195
<a href="Team.html" class="btn btn-neutral float-left" title="Teams" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
194-
<a href="core.html" class="btn btn-neutral float-right" title="Core" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
196+
<a href="JsonSchema.html" class="btn btn-neutral float-right" title="JSON Schema" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
195197
</div>
196198

197199
<hr/>

0 commit comments

Comments
 (0)