From 885e634ee13e5eba73a6f02ea5186f0887ae65dd Mon Sep 17 00:00:00 2001
From: Keith Hazelton <khazelton@gmail.com>
Date: Thu, 9 Apr 2020 19:55:10 -0500
Subject: [PATCH] xps upload

---
 README.adoc                         |  36 ++
 attributes/attributeClasses.adoc    |  63 +++
 data/person1.json                   |  13 +
 data/person2.json                   |  21 +
 issues.adoc                         |   4 +
 references.adoc                     |  21 +
 schema/bannerSoMattributes.adoc     | 109 ++++
 schema/bannerSoMattributes.json     |  94 ++++
 schema/bannerSoMattributes.yaml     |  76 +++
 schema/bannerSoMjsonSchema.json     | 768 ++++++++++++++++++++++++++++
 schema/bannerSoMschema.adoc         | 159 ++++++
 schema/card.schema.json             |  99 ++++
 schema/card.schema.yml              |  71 +++
 schema/foo.json                     |   1 +
 schema/gaborMinimalPersonSchema.yml | 111 ++++
 schema/minimalRegistryPerson.json   |  83 +++
 schema/tools.adoc                   |   5 +
 17 files changed, 1734 insertions(+)
 create mode 100644 README.adoc
 create mode 100644 attributes/attributeClasses.adoc
 create mode 100644 data/person1.json
 create mode 100644 data/person2.json
 create mode 100644 issues.adoc
 create mode 100644 references.adoc
 create mode 100644 schema/bannerSoMattributes.adoc
 create mode 100644 schema/bannerSoMattributes.json
 create mode 100644 schema/bannerSoMattributes.yaml
 create mode 100644 schema/bannerSoMjsonSchema.json
 create mode 100644 schema/bannerSoMschema.adoc
 create mode 100644 schema/card.schema.json
 create mode 100644 schema/card.schema.yml
 create mode 100644 schema/foo.json
 create mode 100644 schema/gaborMinimalPersonSchema.yml
 create mode 100644 schema/minimalRegistryPerson.json
 create mode 100644 schema/tools.adoc

diff --git a/README.adoc b/README.adoc
new file mode 100644
index 0000000..d421ca6
--- /dev/null
+++ b/README.adoc
@@ -0,0 +1,36 @@
+= Internet2 Trust and Identity Schema
+
+:Email:     hazelton@internet2.edu
+:Date:      2020-04-08
+:Revision:  04
+:SelfLink:  https://github.internet2.edu/TIER/schema
+:Editor:    Keith Hazelton
+:Email:     hazelton@internet2.edu
+
+[NOTE]
+====
+Revision: {Revision} +
+{Date} +
+Self-link: {SelfLink} +
+Editor: {Editor}, {Email}
+====
+
+==== Person Schema
+
+Draft Minimal Registry Person Schema from InCommon Trusted Access Platform link:schema/minimalRegistryPerson.json[(json)] +
+SOR-Registry Core Person Schema link:https://spaces.at.internet2.edu/display/cifer/SOR-Registry+Core+Schema+Specification[(wiki)]
+
+
+==== Colorado School of Mines Banner-derived Person Schema and examples
+
+Example Banner Person Data Example in SPML link:schema/bannerSoMschema.adoc[(adoc)] +
+Example Banner Person Data Example simplified link:schema/bannerSoMattributes.adoc[(adoc)] +
+Example Banner Person Data Example in yaml link:schema/bannerSoMattributes.yaml[(yaml)] +
+Example Banner Person Data Example in json link:schema/bannerSoMattributes.json[(json)] +
+Derived JSON Schema for Banner Person Instances link:schema/bannerSoMjsonSchema.json[(json)]
+
+==== References link:references.adoc[(adoc)]
+
+==== Issues link:issues.adoc[(adoc)]
+
+
diff --git a/attributes/attributeClasses.adoc b/attributes/attributeClasses.adoc
new file mode 100644
index 0000000..b707b50
--- /dev/null
+++ b/attributes/attributeClasses.adoc
@@ -0,0 +1,63 @@
+Attribute Classes
+
+AccessibilityProfile +
+Account +
+Address +
+Affiliation +
+Age +
+Anniversary +
+Application +
+Assurance +
+BirthPlace +
+Birthdate +
+Certification +
+Citizenship +
+Clearance +
+Contact +
+Country +
+Course +
+DN +
+Date +
+DeathDate +
+Description +
+Email +
+EmailMetadata +
+Entitlement +
+Ethnicity +
+Format +
+Gender +
+Group +
+HostName +
+Identifier +
+Jurisdiction +
+Language +
+Link +
+Locale +
+Location +
+Manager +
+Name +
+Note +
+Operational +
+Organization +
+Password +
+Phone +
+Photo +
+PhysicalCharacteristic +
+Pointer +
+Position +
+Preference +
+Presence +
+Privacy +
+Profile +
+Relationship +
+Residency +
+Role +
+Salutation +
+Search +
+StateOrProvince +
+StatusMessage +
+SuperiorNode +
+Tag +
+Timezone +
+URL +
+VitalEvent +
diff --git a/data/person1.json b/data/person1.json
new file mode 100644
index 0000000..c412598
--- /dev/null
+++ b/data/person1.json
@@ -0,0 +1,13 @@
+{
+"name": {
+ "lastName": "Johnson",
+ "firstName": "Joe"
+ },
+"birthDate": "1965-08-10",
+"username": "jjohnson",
+"institutionalId": "34-765554",
+"email": {
+ "emailAddress": "jjohnson@goo.edu",
+ "emailType": "primary"
+ }
+}
diff --git a/data/person2.json b/data/person2.json
new file mode 100644
index 0000000..f995680
--- /dev/null
+++ b/data/person2.json
@@ -0,0 +1,21 @@
+{
+"name": {
+ "lastName": "Jansen",
+ "firstName": "Jo"
+ },
+"birthDate": "1955-12-10",
+"username": "jjansen",
+"institutionalId": "34-546877",
+"identifier": [
+ {"id": "357A225",
+  "source": "SIS"
+ },
+ { 
+  "id": "jansen121",
+  "source": "HR"
+ } ],             
+"email": {
+ "emailAddress": "jjansen@goo.edu",
+ "emailType": "primary"
+ }
+}
diff --git a/issues.adoc b/issues.adoc
new file mode 100644
index 0000000..99c0831
--- /dev/null
+++ b/issues.adoc
@@ -0,0 +1,4 @@
+Current Issues
+--------------
+- Create db schema to carry Banner person instances
+- Choose approach for ConnID connector that inputs person JSON and provisions to LDAP
diff --git a/references.adoc b/references.adoc
new file mode 100644
index 0000000..0a31284
--- /dev/null
+++ b/references.adoc
@@ -0,0 +1,21 @@
+References
+====
+This Repository
+=====
+*  link:README.adoc[] 
+*  link:attributes/attributeClasses.adoc[Attribute Classes that can be used to categorize individual attributes] 
+
+External Links
+=====
+* https://json-schema.org/[Latest JSON Schema Specification link]
+* https://spacetelescope.github.io/understanding-json-schema/UnderstandingJSONSchema.pdf[Understanding JSON Schema]; Good intro but somewhat dated: Refers to Draft 4, current is Draft 7
+* Phil Sturgeon’s https://philsturgeon.uk/api/2018/04/13/openapi-and-json-schema-divergence-solved/[two-part article] on 
+the convergence between http://json-schema.org/[JSON Schema] and https://www.openapis.org/[OAI 3]
+* A little https://github.com/wework/json-schema-to-openapi-schema[NodeJS package] to convert JSON Schema to OpenAPI Schema Objects
+* https://blog.readme.io/an-example-filled-guide-to-swagger-3-2/[A Visual Guide to What's New in OAI 3.0]; A good starting point
+* https://editor.swagger.io/[Swagger Editor]
+* https://app.swaggerhub.com/home[SWAGGERhub]: A good place to work collaboratively on schema; take the rendered server-side javacript and remove the Swagger branding
+* Community-maintained https://github.com/OpenAPITools/openapi-generator/releases/tag/v3.0.0[Codegen packages] for OAI 3 API specifications; On Twitter as https://twitter.com/oas_generator[]
+* link:schema/card.schema.json[] 
+* link:schema/card.schema.yml[] 
+* link:schema/gaborMinimalPersonSchema.yml[] +
diff --git a/schema/bannerSoMattributes.adoc b/schema/bannerSoMattributes.adoc
new file mode 100644
index 0000000..aaf2146
--- /dev/null
+++ b/schema/bannerSoMattributes.adoc
@@ -0,0 +1,109 @@
+=== bannerSoMattributes.adoc
+
+- - -
+_2020-04-08 10:10 attribute list
+
+FROM bannerSchema.adoc
+
+body
+
+addRequest
+
+  executionMode: ?
+  requestID: ?
+  returnData: ?
+  targetID: ?
+
+  psoID
+    ID: ALPHA
+    targetID: ?
+    containerID/
+
+  containerID
+    ID: ?
+    targetID: ?
+    containerID/
+
+data:
+
+UDCIdentity
+UDCIdentifier: E286607965E09B09BC1183030991013099
+
+PersonIdentity
+  PUBLISHER_NAME: Banner
+  action: UPDATE
+
+  PersonName
+    FormattedName: given family
+    GivenName
+    FamilyName
+    Affix type:formOfAddress: Mr.
+    Affix type:qualification: Sr.
+
+  Gender: Mmmm
+
+  Birthdate
+    BirthDay: 1
+    BirthMonth: 1
+    BirthYear: 1997
+
+PersonIdentity/
+
+InstitutionalRoles
+
+  institutionalrole
+    role: UGRAD
+    context: INTCOMP
+  institutionalrole/
+
+    institutionalrole
+      role: INTACCEPT
+      context: INTCOMP
+    institutionalrole/
+
+Institutional Roles/
+
+Extension
+
+  Attribute
+    name: CWID
+    value: 1075463499
+
+  Attribute
+    name: PIDM
+    value: 44396499
+
+  Attribute
+    name: PIDM
+    value: 44396499
+
+  Attribute
+    name: APDC_CODE||'|'||APDC_DATE||'|'||TERM_CODE_ENTRY||'|'||LEVL_CODE||'|'||APPL_NO
+    value: CC|2015-07-28 14:32:49|202080|UG|1
+
+  Attribute
+    name: GOBTPAC_USER
+    value: GLEE
+
+  Attribute
+    name: GOBTPAC_USER
+    value: GLEE
+
+Extension/
+
+UDCIdentity/
+
+data/
+
+capabilityData
+  capabilityURI: ?
+  mustUnderstand: ?
+
+addRequest/
+
+body/
+
+
+
+- - -
+_2020-04-08 10:10 references and links_
diff --git a/schema/bannerSoMattributes.json b/schema/bannerSoMattributes.json
new file mode 100644
index 0000000..3c6e280
--- /dev/null
+++ b/schema/bannerSoMattributes.json
@@ -0,0 +1,94 @@
+{
+  "addRequest": {
+    "executionMode": "x",
+    "requestID": "x",
+    "returnData": "x",
+    "targetID": "x",
+    "psoID": {
+      "ID": "ALPHA",
+      "targetID": "x",
+      "psoContainerID": null
+    },
+    "containerID": {
+      "ID": "x",
+      "targetID": "x"
+    },
+    "data": {
+      "UDCIdentity": {
+        "UDCIdentifier": "E286607965E09B09BC1183030991013099"
+      },
+      "PersonIdentity": {
+        "PUBLISHER_NAME": "Banner",
+        "action": "UPDATE",
+        "PersonName": {
+          "FormattedName": "given family",
+          "GivenName": "x",
+          "FamilyName": "x",
+          "Affix typeFormOfAddress": "Mr.",
+          "Affix typeQualification": "Sr."
+        },
+        "Gender": "M",
+        "Birthdate": {
+          "BirthDay": 1,
+          "BirthMonth": 1,
+          "BirthYear": 1997
+        }
+      },
+      "InstitutionalRoles": [
+        {
+          "institutionalrole": {
+            "role": "UGRAD",
+            "context": "INTCOMP"
+          }
+        },
+        {
+          "institutionalrole": null,
+          "role": "INTACCEPT",
+          "context": "INTCOMP"
+        }
+      ],
+      "Extension": [
+        {
+          "Attribute": {
+            "name": "CWID",
+            "value": 1075463499
+          }
+        },
+        {
+          "Attribute": {
+            "name": "PIDM",
+            "value": 44396499
+          }
+        },
+        {
+          "Attribute": {
+            "name": "PIDM",
+            "value": 44396499
+          }
+        },
+        {
+          "Attribute": {
+            "name": "APDC_CODE||'|'||APDC_DATE||'|'||TERM_CODE_ENTRY||'|'||LEVL_CODE||'|'||APPL_NO",
+            "value": "CC|2015-07-28 14:32:49|202080|UG|1"
+          }
+        },
+        {
+          "Attribute": {
+            "name": "GOBTPAC_USER",
+            "value": "GLEE"
+          }
+        },
+        {
+          "Attribute": {
+            "name": "GOBTPAC_USER",
+            "value": "GLEE"
+          }
+        }
+      ]
+    },
+    "capabilityData": {
+      "capabilityURI": "x",
+      "mustUnderstand": "x"
+    }
+  }
+}
diff --git a/schema/bannerSoMattributes.yaml b/schema/bannerSoMattributes.yaml
new file mode 100644
index 0000000..afcc2cf
--- /dev/null
+++ b/schema/bannerSoMattributes.yaml
@@ -0,0 +1,76 @@
+addRequest:
+   executionMode: x
+   requestID: x
+   returnData: x
+   targetID: x
+
+   psoID:
+     ID: ALPHA
+     targetID: x
+     psoContainerID: NULL
+
+   containerID:
+     ID: x
+     targetID: x
+
+   data:
+
+     UDCIdentity:
+       UDCIdentifier: E286607965E09B09BC1183030991013099
+
+     PersonIdentity:
+       PUBLISHER_NAME: Banner
+       action: UPDATE
+
+       PersonName:
+         FormattedName: given family
+         GivenName: x
+         FamilyName: x
+         Affix typeFormOfAddress: Mr.
+         Affix typeQualification: Sr.
+
+       Gender: M
+
+       Birthdate:
+         BirthDay: 1
+         BirthMonth: 1
+         BirthYear: 1997
+
+     InstitutionalRoles:
+
+       - institutionalrole:
+           role: UGRAD
+           context: INTCOMP
+       - institutionalrole:
+         role: INTACCEPT
+         context: INTCOMP
+
+     Extension:
+
+       - Attribute:
+           name: CWID
+           value: 1075463499
+
+       - Attribute:
+           name: PIDM
+           value: 44396499
+
+       - Attribute:
+           name: PIDM
+           value: 44396499
+
+       - Attribute:
+           name: APDC_CODE||'|'||APDC_DATE||'|'||TERM_CODE_ENTRY||'|'||LEVL_CODE||'|'||APPL_NO
+           value: CC|2015-07-28 14:32:49|202080|UG|1
+
+       - Attribute:
+           name: GOBTPAC_USER
+           value: GLEE
+
+       - Attribute:
+           name: GOBTPAC_USER
+           value: GLEE
+
+   capabilityData:
+     capabilityURI: x
+     mustUnderstand: x
diff --git a/schema/bannerSoMjsonSchema.json b/schema/bannerSoMjsonSchema.json
new file mode 100644
index 0000000..52f6719
--- /dev/null
+++ b/schema/bannerSoMjsonSchema.json
@@ -0,0 +1,768 @@
+{
+    "$schema": "http://json-schema.org/draft-07/schema",
+    "$id": "http://id.internet2.edu/bannerSoM.json",
+    "type": "object",
+    "title": "Banner Person Schema",
+    "description": "This provides a JSON Schema 07 version of the implicit Banner Person Schema.",
+    "required": [
+        "addRequest"
+    ],
+    "properties": {
+        "addRequest": {
+            "$id": "#/properties/addRequest",
+            "type": "object",
+            "title": "The Addrequest Schema",
+            "description": "An explanation about the purpose of this instance.",
+            "default": {},
+            "examples": [
+                {
+                    "psoID": {
+                        "psoContainerID": null,
+                        "ID": "ALPHA",
+                        "targetID": "x"
+                    },
+                    "containerID": {
+                        "targetID": "x",
+                        "ID": "x"
+                    },
+                    "data": {
+                        "InstitutionalRoles": [
+                            {
+                                "institutionalrole": {
+                                    "context": "INTCOMP",
+                                    "role": "UGRAD"
+                                }
+                            },
+                            {
+                                "institutionalrole": null,
+                                "context": "INTCOMP",
+                                "role": "INTACCEPT"
+                            }
+                        ],
+                        "Extension": [
+                            {
+                                "Attribute": {
+                                    "name": "CWID",
+                                    "value": 1075463499.0
+                                }
+                            },
+                            {
+                                "Attribute": {
+                                    "name": "PIDM",
+                                    "value": 44396499.0
+                                }
+                            },
+                            {
+                                "Attribute": {
+                                    "name": "PIDM",
+                                    "value": 44396499.0
+                                }
+                            },
+                            {
+                                "Attribute": {
+                                    "name": "APDC_CODE||'|'||APDC_DATE||'|'||TERM_CODE_ENTRY||'|'||LEVL_CODE||'|'||APPL_NO",
+                                    "value": "CC|2015-07-28 14:32:49|202080|UG|1"
+                                }
+                            },
+                            {
+                                "Attribute": {
+                                    "name": "GOBTPAC_USER",
+                                    "value": "GLEE"
+                                }
+                            },
+                            {
+                                "Attribute": {
+                                    "name": "GOBTPAC_USER",
+                                    "value": "GLEE"
+                                }
+                            }
+                        ],
+                        "PersonIdentity": {
+                            "Gender": "M",
+                            "PUBLISHER_NAME": "Banner",
+                            "action": "UPDATE",
+                            "PersonName": {
+                                "FormattedName": "given family",
+                                "Affix typeFormOfAddress": "Mr.",
+                                "Affix typeQualification": "Sr.",
+                                "FamilyName": "x",
+                                "GivenName": "x"
+                            },
+                            "Birthdate": {
+                                "BirthDay": 1.0,
+                                "BirthMonth": 1.0,
+                                "BirthYear": 1997.0
+                            }
+                        },
+                        "UDCIdentity": {
+                            "UDCIdentifier": "E286607965E09B09BC1183030991013099"
+                        }
+                    },
+                    "targetID": "x",
+                    "executionMode": "x",
+                    "requestID": "x",
+                    "capabilityData": {
+                        "capabilityURI": "x",
+                        "mustUnderstand": "x"
+                    },
+                    "returnData": "x"
+                }
+            ],
+            "required": [
+                "executionMode",
+                "requestID",
+                "returnData",
+                "targetID",
+                "psoID",
+                "containerID",
+                "data",
+                "capabilityData"
+            ],
+            "properties": {
+                "executionMode": {
+                    "$id": "#/properties/addRequest/properties/executionMode",
+                    "type": "string",
+                    "title": "The Executionmode Schema",
+                    "description": "An explanation about the purpose of this instance.",
+                    "default": "",
+                    "examples": [
+                        "x"
+                    ]
+                },
+                "requestID": {
+                    "$id": "#/properties/addRequest/properties/requestID",
+                    "type": "string",
+                    "title": "The Requestid Schema",
+                    "description": "An explanation about the purpose of this instance.",
+                    "default": "",
+                    "examples": [
+                        "x"
+                    ]
+                },
+                "returnData": {
+                    "$id": "#/properties/addRequest/properties/returnData",
+                    "type": "string",
+                    "title": "The Returndata Schema",
+                    "description": "An explanation about the purpose of this instance.",
+                    "default": "",
+                    "examples": [
+                        "x"
+                    ]
+                },
+                "targetID": {
+                    "$id": "#/properties/addRequest/properties/targetID",
+                    "type": "string",
+                    "title": "The Targetid Schema",
+                    "description": "An explanation about the purpose of this instance.",
+                    "default": "",
+                    "examples": [
+                        "x"
+                    ]
+                },
+                "psoID": {
+                    "$id": "#/properties/addRequest/properties/psoID",
+                    "type": "object",
+                    "title": "The Psoid Schema",
+                    "description": "An explanation about the purpose of this instance.",
+                    "default": {},
+                    "examples": [
+                        {
+                            "ID": "ALPHA",
+                            "targetID": "x",
+                            "psoContainerID": null
+                        }
+                    ],
+                    "required": [
+                        "ID",
+                        "targetID",
+                        "psoContainerID"
+                    ],
+                    "properties": {
+                        "ID": {
+                            "$id": "#/properties/addRequest/properties/psoID/properties/ID",
+                            "type": "string",
+                            "title": "The Id Schema",
+                            "description": "An explanation about the purpose of this instance.",
+                            "default": "",
+                            "examples": [
+                                "ALPHA"
+                            ]
+                        },
+                        "targetID": {
+                            "$id": "#/properties/addRequest/properties/psoID/properties/targetID",
+                            "type": "string",
+                            "title": "The Targetid Schema",
+                            "description": "An explanation about the purpose of this instance.",
+                            "default": "",
+                            "examples": [
+                                "x"
+                            ]
+                        },
+                        "psoContainerID": {
+                            "$id": "#/properties/addRequest/properties/psoID/properties/psoContainerID",
+                            "title": "The Psocontainerid Schema",
+                            "description": "An explanation about the purpose of this instance.",
+                            "default": null,
+                            "examples": [
+                                null
+                            ]
+                        }
+                    }
+                },
+                "containerID": {
+                    "$id": "#/properties/addRequest/properties/containerID",
+                    "type": "object",
+                    "title": "The Containerid Schema",
+                    "description": "An explanation about the purpose of this instance.",
+                    "default": {},
+                    "examples": [
+                        {
+                            "ID": "x",
+                            "targetID": "x"
+                        }
+                    ],
+                    "required": [
+                        "ID",
+                        "targetID"
+                    ],
+                    "properties": {
+                        "ID": {
+                            "$id": "#/properties/addRequest/properties/containerID/properties/ID",
+                            "type": "string",
+                            "title": "The Id Schema",
+                            "description": "An explanation about the purpose of this instance.",
+                            "default": "",
+                            "examples": [
+                                "x"
+                            ]
+                        },
+                        "targetID": {
+                            "$id": "#/properties/addRequest/properties/containerID/properties/targetID",
+                            "type": "string",
+                            "title": "The Targetid Schema",
+                            "description": "An explanation about the purpose of this instance.",
+                            "default": "",
+                            "examples": [
+                                "x"
+                            ]
+                        }
+                    }
+                },
+                "data": {
+                    "$id": "#/properties/addRequest/properties/data",
+                    "type": "object",
+                    "title": "The Data Schema",
+                    "description": "An explanation about the purpose of this instance.",
+                    "default": {},
+                    "examples": [
+                        {
+                            "InstitutionalRoles": [
+                                {
+                                    "institutionalrole": {
+                                        "context": "INTCOMP",
+                                        "role": "UGRAD"
+                                    }
+                                },
+                                {
+                                    "institutionalrole": null,
+                                    "context": "INTCOMP",
+                                    "role": "INTACCEPT"
+                                }
+                            ],
+                            "Extension": [
+                                {
+                                    "Attribute": {
+                                        "name": "CWID",
+                                        "value": 1075463499.0
+                                    }
+                                },
+                                {
+                                    "Attribute": {
+                                        "name": "PIDM",
+                                        "value": 44396499.0
+                                    }
+                                },
+                                {
+                                    "Attribute": {
+                                        "name": "PIDM",
+                                        "value": 44396499.0
+                                    }
+                                },
+                                {
+                                    "Attribute": {
+                                        "name": "APDC_CODE||'|'||APDC_DATE||'|'||TERM_CODE_ENTRY||'|'||LEVL_CODE||'|'||APPL_NO",
+                                        "value": "CC|2015-07-28 14:32:49|202080|UG|1"
+                                    }
+                                },
+                                {
+                                    "Attribute": {
+                                        "name": "GOBTPAC_USER",
+                                        "value": "GLEE"
+                                    }
+                                },
+                                {
+                                    "Attribute": {
+                                        "name": "GOBTPAC_USER",
+                                        "value": "GLEE"
+                                    }
+                                }
+                            ],
+                            "PersonIdentity": {
+                                "Birthdate": {
+                                    "BirthYear": 1997.0,
+                                    "BirthDay": 1.0,
+                                    "BirthMonth": 1.0
+                                },
+                                "Gender": "M",
+                                "PUBLISHER_NAME": "Banner",
+                                "action": "UPDATE",
+                                "PersonName": {
+                                    "GivenName": "x",
+                                    "FormattedName": "given family",
+                                    "Affix typeFormOfAddress": "Mr.",
+                                    "Affix typeQualification": "Sr.",
+                                    "FamilyName": "x"
+                                }
+                            },
+                            "UDCIdentity": {
+                                "UDCIdentifier": "E286607965E09B09BC1183030991013099"
+                            }
+                        }
+                    ],
+                    "required": [
+                        "UDCIdentity",
+                        "PersonIdentity",
+                        "InstitutionalRoles",
+                        "Extension"
+                    ],
+                    "properties": {
+                        "UDCIdentity": {
+                            "$id": "#/properties/addRequest/properties/data/properties/UDCIdentity",
+                            "type": "object",
+                            "title": "The Udcidentity Schema",
+                            "description": "An explanation about the purpose of this instance.",
+                            "default": {},
+                            "examples": [
+                                {
+                                    "UDCIdentifier": "E286607965E09B09BC1183030991013099"
+                                }
+                            ],
+                            "required": [
+                                "UDCIdentifier"
+                            ],
+                            "properties": {
+                                "UDCIdentifier": {
+                                    "$id": "#/properties/addRequest/properties/data/properties/UDCIdentity/properties/UDCIdentifier",
+                                    "type": "string",
+                                    "title": "The Udcidentifier Schema",
+                                    "description": "An explanation about the purpose of this instance.",
+                                    "default": "",
+                                    "examples": [
+                                        "E286607965E09B09BC1183030991013099"
+                                    ]
+                                }
+                            }
+                        },
+                        "PersonIdentity": {
+                            "$id": "#/properties/addRequest/properties/data/properties/PersonIdentity",
+                            "type": "object",
+                            "title": "The Personidentity Schema",
+                            "description": "An explanation about the purpose of this instance.",
+                            "default": {},
+                            "examples": [
+                                {
+                                    "Birthdate": {
+                                        "BirthDay": 1.0,
+                                        "BirthMonth": 1.0,
+                                        "BirthYear": 1997.0
+                                    },
+                                    "Gender": "M",
+                                    "PUBLISHER_NAME": "Banner",
+                                    "action": "UPDATE",
+                                    "PersonName": {
+                                        "Affix typeQualification": "Sr.",
+                                        "FamilyName": "x",
+                                        "GivenName": "x",
+                                        "FormattedName": "given family",
+                                        "Affix typeFormOfAddress": "Mr."
+                                    }
+                                }
+                            ],
+                            "required": [
+                                "PUBLISHER_NAME",
+                                "action",
+                                "PersonName",
+                                "Gender",
+                                "Birthdate"
+                            ],
+                            "properties": {
+                                "PUBLISHER_NAME": {
+                                    "$id": "#/properties/addRequest/properties/data/properties/PersonIdentity/properties/PUBLISHER_NAME",
+                                    "type": "string",
+                                    "title": "The Publisher_name Schema",
+                                    "description": "An explanation about the purpose of this instance.",
+                                    "default": "",
+                                    "examples": [
+                                        "Banner"
+                                    ]
+                                },
+                                "action": {
+                                    "$id": "#/properties/addRequest/properties/data/properties/PersonIdentity/properties/action",
+                                    "type": "string",
+                                    "title": "The Action Schema",
+                                    "description": "An explanation about the purpose of this instance.",
+                                    "default": "",
+                                    "examples": [
+                                        "UPDATE"
+                                    ]
+                                },
+                                "PersonName": {
+                                    "$id": "#/properties/addRequest/properties/data/properties/PersonIdentity/properties/PersonName",
+                                    "type": "object",
+                                    "title": "The Personname Schema",
+                                    "description": "An explanation about the purpose of this instance.",
+                                    "default": {},
+                                    "examples": [
+                                        {
+                                            "GivenName": "x",
+                                            "FormattedName": "given family",
+                                            "Affix typeFormOfAddress": "Mr.",
+                                            "Affix typeQualification": "Sr.",
+                                            "FamilyName": "x"
+                                        }
+                                    ],
+                                    "required": [
+                                        "FormattedName",
+                                        "GivenName",
+                                        "FamilyName",
+                                        "Affix typeFormOfAddress",
+                                        "Affix typeQualification"
+                                    ],
+                                    "properties": {
+                                        "FormattedName": {
+                                            "$id": "#/properties/addRequest/properties/data/properties/PersonIdentity/properties/PersonName/properties/FormattedName",
+                                            "type": "string",
+                                            "title": "The Formattedname Schema",
+                                            "description": "An explanation about the purpose of this instance.",
+                                            "default": "",
+                                            "examples": [
+                                                "given family"
+                                            ]
+                                        },
+                                        "GivenName": {
+                                            "$id": "#/properties/addRequest/properties/data/properties/PersonIdentity/properties/PersonName/properties/GivenName",
+                                            "type": "string",
+                                            "title": "The Givenname Schema",
+                                            "description": "An explanation about the purpose of this instance.",
+                                            "default": "",
+                                            "examples": [
+                                                "x"
+                                            ]
+                                        },
+                                        "FamilyName": {
+                                            "$id": "#/properties/addRequest/properties/data/properties/PersonIdentity/properties/PersonName/properties/FamilyName",
+                                            "type": "string",
+                                            "title": "The Familyname Schema",
+                                            "description": "An explanation about the purpose of this instance.",
+                                            "default": "",
+                                            "examples": [
+                                                "x"
+                                            ]
+                                        },
+                                        "Affix typeFormOfAddress": {
+                                            "$id": "#/properties/addRequest/properties/data/properties/PersonIdentity/properties/PersonName/properties/Affix typeFormOfAddress",
+                                            "type": "string",
+                                            "title": "The Affix typeformofaddress Schema",
+                                            "description": "An explanation about the purpose of this instance.",
+                                            "default": "",
+                                            "examples": [
+                                                "Mr."
+                                            ]
+                                        },
+                                        "Affix typeQualification": {
+                                            "$id": "#/properties/addRequest/properties/data/properties/PersonIdentity/properties/PersonName/properties/Affix typeQualification",
+                                            "type": "string",
+                                            "title": "The Affix typequalification Schema",
+                                            "description": "An explanation about the purpose of this instance.",
+                                            "default": "",
+                                            "examples": [
+                                                "Sr."
+                                            ]
+                                        }
+                                    }
+                                },
+                                "Gender": {
+                                    "$id": "#/properties/addRequest/properties/data/properties/PersonIdentity/properties/Gender",
+                                    "type": "string",
+                                    "title": "The Gender Schema",
+                                    "description": "An explanation about the purpose of this instance.",
+                                    "default": "",
+                                    "examples": [
+                                        "M"
+                                    ]
+                                },
+                                "Birthdate": {
+                                    "$id": "#/properties/addRequest/properties/data/properties/PersonIdentity/properties/Birthdate",
+                                    "type": "object",
+                                    "title": "The Birthdate Schema",
+                                    "description": "An explanation about the purpose of this instance.",
+                                    "default": {},
+                                    "examples": [
+                                        {
+                                            "BirthDay": 1.0,
+                                            "BirthMonth": 1.0,
+                                            "BirthYear": 1997.0
+                                        }
+                                    ],
+                                    "required": [
+                                        "BirthDay",
+                                        "BirthMonth",
+                                        "BirthYear"
+                                    ],
+                                    "properties": {
+                                        "BirthDay": {
+                                            "$id": "#/properties/addRequest/properties/data/properties/PersonIdentity/properties/Birthdate/properties/BirthDay",
+                                            "type": "integer",
+                                            "title": "The Birthday Schema",
+                                            "description": "An explanation about the purpose of this instance.",
+                                            "default": 0,
+                                            "examples": [
+                                                1
+                                            ]
+                                        },
+                                        "BirthMonth": {
+                                            "$id": "#/properties/addRequest/properties/data/properties/PersonIdentity/properties/Birthdate/properties/BirthMonth",
+                                            "type": "integer",
+                                            "title": "The Birthmonth Schema",
+                                            "description": "An explanation about the purpose of this instance.",
+                                            "default": 0,
+                                            "examples": [
+                                                1
+                                            ]
+                                        },
+                                        "BirthYear": {
+                                            "$id": "#/properties/addRequest/properties/data/properties/PersonIdentity/properties/Birthdate/properties/BirthYear",
+                                            "type": "integer",
+                                            "title": "The Birthyear Schema",
+                                            "description": "An explanation about the purpose of this instance.",
+                                            "default": 0,
+                                            "examples": [
+                                                1997
+                                            ]
+                                        }
+                                    }
+                                }
+                            }
+                        },
+                        "InstitutionalRoles": {
+                            "$id": "#/properties/addRequest/properties/data/properties/InstitutionalRoles",
+                            "type": "array",
+                            "title": "The Institutionalroles Schema",
+                            "description": "An explanation about the purpose of this instance.",
+                            "default": [],
+                            "items": {
+                                "$id": "#/properties/addRequest/properties/data/properties/InstitutionalRoles/items",
+                                "type": "object",
+                                "title": "The Items Schema",
+                                "description": "An explanation about the purpose of this instance.",
+                                "default": {},
+                                "examples": [
+                                    {
+                                        "institutionalrole": {
+                                            "context": "INTCOMP",
+                                            "role": "UGRAD"
+                                        }
+                                    },
+                                    {
+                                        "institutionalrole": null,
+                                        "context": "INTCOMP",
+                                        "role": "INTACCEPT"
+                                    }
+                                ],
+                                "required": [
+                                    "institutionalrole"
+                                ],
+                                "properties": {
+                                    "institutionalrole": {
+                                        "$id": "#/properties/addRequest/properties/data/properties/InstitutionalRoles/items/properties/institutionalrole",
+                                        "type": "object",
+                                        "title": "The Institutionalrole Schema",
+                                        "description": "An explanation about the purpose of this instance.",
+                                        "default": {},
+                                        "examples": [
+                                            {
+                                                "context": "INTCOMP",
+                                                "role": "UGRAD"
+                                            }
+                                        ],
+                                        "required": [
+                                            "role",
+                                            "context"
+                                        ],
+                                        "properties": {
+                                            "role": {
+                                                "$id": "#/properties/addRequest/properties/data/properties/InstitutionalRoles/items/properties/institutionalrole/properties/role",
+                                                "type": "string",
+                                                "title": "The Role Schema",
+                                                "description": "An explanation about the purpose of this instance.",
+                                                "default": "",
+                                                "examples": [
+                                                    "UGRAD"
+                                                ]
+                                            },
+                                            "context": {
+                                                "$id": "#/properties/addRequest/properties/data/properties/InstitutionalRoles/items/properties/institutionalrole/properties/context",
+                                                "type": "string",
+                                                "title": "The Context Schema",
+                                                "description": "An explanation about the purpose of this instance.",
+                                                "default": "",
+                                                "examples": [
+                                                    "INTCOMP"
+                                                ]
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        },
+                        "Extension": {
+                            "$id": "#/properties/addRequest/properties/data/properties/Extension",
+                            "type": "array",
+                            "title": "The Extension Schema",
+                            "description": "An explanation about the purpose of this instance.",
+                            "default": [],
+                            "items": {
+                                "$id": "#/properties/addRequest/properties/data/properties/Extension/items",
+                                "type": "object",
+                                "title": "The Items Schema",
+                                "description": "An explanation about the purpose of this instance.",
+                                "default": {},
+                                "examples": [
+                                    {
+                                        "Attribute": {
+                                            "name": "CWID",
+                                            "value": 1075463499.0
+                                        }
+                                    },
+                                    {
+                                        "Attribute": {
+                                            "name": "PIDM",
+                                            "value": 44396499.0
+                                        }
+                                    },
+                                    {
+                                        "Attribute": {
+                                            "name": "PIDM",
+                                            "value": 44396499.0
+                                        }
+                                    },
+                                    {
+                                        "Attribute": {
+                                            "name": "APDC_CODE||'|'||APDC_DATE||'|'||TERM_CODE_ENTRY||'|'||LEVL_CODE||'|'||APPL_NO",
+                                            "value": "CC|2015-07-28 14:32:49|202080|UG|1"
+                                        }
+                                    },
+                                    {
+                                        "Attribute": {
+                                            "name": "GOBTPAC_USER",
+                                            "value": "GLEE"
+                                        }
+                                    },
+                                    {
+                                        "Attribute": {
+                                            "name": "GOBTPAC_USER",
+                                            "value": "GLEE"
+                                        }
+                                    }
+                                ],
+                                "required": [
+                                    "Attribute"
+                                ],
+                                "properties": {
+                                    "Attribute": {
+                                        "$id": "#/properties/addRequest/properties/data/properties/Extension/items/properties/Attribute",
+                                        "type": "object",
+                                        "title": "The Attribute Schema",
+                                        "description": "An explanation about the purpose of this instance.",
+                                        "default": {},
+                                        "examples": [
+                                            {
+                                                "name": "CWID",
+                                                "value": 1075463499.0
+                                            }
+                                        ],
+                                        "required": [
+                                            "name",
+                                            "value"
+                                        ],
+                                        "properties": {
+                                            "name": {
+                                                "$id": "#/properties/addRequest/properties/data/properties/Extension/items/properties/Attribute/properties/name",
+                                                "type": "string",
+                                                "title": "The Name Schema",
+                                                "description": "An explanation about the purpose of this instance.",
+                                                "default": "",
+                                                "examples": [
+                                                    "CWID"
+                                                ]
+                                            },
+                                            "value": {
+                                                "$id": "#/properties/addRequest/properties/data/properties/Extension/items/properties/Attribute/properties/value",
+                                                "type": "integer",
+                                                "title": "The Value Schema",
+                                                "description": "An explanation about the purpose of this instance.",
+                                                "default": 0,
+                                                "examples": [
+                                                    1075463499
+                                                ]
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                },
+                "capabilityData": {
+                    "$id": "#/properties/addRequest/properties/capabilityData",
+                    "type": "object",
+                    "title": "The Capabilitydata Schema",
+                    "description": "An explanation about the purpose of this instance.",
+                    "default": {},
+                    "examples": [
+                        {
+                            "mustUnderstand": "x",
+                            "capabilityURI": "x"
+                        }
+                    ],
+                    "required": [
+                        "capabilityURI",
+                        "mustUnderstand"
+                    ],
+                    "properties": {
+                        "capabilityURI": {
+                            "$id": "#/properties/addRequest/properties/capabilityData/properties/capabilityURI",
+                            "type": "string",
+                            "title": "The Capabilityuri Schema",
+                            "description": "An explanation about the purpose of this instance.",
+                            "default": "",
+                            "examples": [
+                                "x"
+                            ]
+                        },
+                        "mustUnderstand": {
+                            "$id": "#/properties/addRequest/properties/capabilityData/properties/mustUnderstand",
+                            "type": "string",
+                            "title": "The Mustunderstand Schema",
+                            "description": "An explanation about the purpose of this instance.",
+                            "default": "",
+                            "examples": [
+                                "x"
+                            ]
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/schema/bannerSoMschema.adoc b/schema/bannerSoMschema.adoc
new file mode 100644
index 0000000..5f5a490
--- /dev/null
+++ b/schema/bannerSoMschema.adoc
@@ -0,0 +1,159 @@
+=== bannerSoMschema.adoc
+
+From Matt Brookover on slack, March 31
+
+This is Banner SPML for an accepted student
+
+```
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:oasis:names:tc:SPML:2:0" xmlns:urn1="urn:sungardhe:enterprise:domain:identity:1.0">
+<soapenv:Header/>
+
+<soapenv:Body>
+
+<urn:addRequest executionMode="?" requestID="?" returnData="?" targetID="?">
+<urn:psoID ID="ALPHA" targetID="?">
+<urn:containerID/>
+</urn:psoID>
+<urn:containerID ID="?" targetID="?">
+<urn:containerID/>
+</urn:containerID>
+
+<urn:data>
+
+<UDCIdentity PUBLISHER_NAME="Banner" action="UPDATE" xmlns="urn:sungardhe:enterprise:domain:identity:1.0">
+<UDCIdentifier>E286607965E09B09BC1183030991013099</UDCIdentifier>
+
+<PersonIdentity>
+<PersonName>
+<FormattedName>Alpha Trainee</FormattedName>
+<GivenName>Alpha</GivenName>
+<FamilyName>Trainee</FamilyName>
+<Affix type="formOfAddress">Mr.</Affix>
+<Affix type="qualification">Sr.</Affix>
+</PersonName>
+
+<Gender>M</Gender>
+<Birthdate>
+<BirthDay>1</BirthDay>
+<BirthMonth>1</BirthMonth>
+<BirthYear>1997</BirthYear>
+</Birthdate>
+</PersonIdentity>
+<InstitutionRoles>
+<institutionrole>
+<role>UGRAD</role>
+<context>INTCOMP</context>
+</institutionrole>
+<institutionrole>
+<role>INTACCEPT</role>
+<context>INTCOMP</context>
+</institutionrole>
+</InstitutionRoles>
+
+<Extension>
+
+<Attribute>
+<name>CWID</name>
+<value>1075463499</value>
+</Attribute>
+<Attribute>
+<name>PIDM</name>
+<value>44396499</value>
+</Attribute>
+<Attribute>
+<name>APDC_CODE||'|'||APDC_DATE||'|'||TERM_CODE_ENTRY||'|'||LEVL_CODE||'|'||APPL_NO</name>
+<value>CC|2015-07-28 14:32:49|202080|UG|1</value>
+</Attribute> <Attribute>
+<name>GOBTPAC_USER</name>
+<value>GLEE</value>
+</Attribute>
+</Extension>
+
+</UDCIdentity>
+
+</urn:data>
+
+<urn:capabilityData capabilityURI="?" mustUnderstand="?"/>
+</urn:addRequest>
+</soapenv:Body>
+
+</soapenv:Envelope>
+```
+
+This is a student that was accepted, signaled their intent to enroll and registered an account:
+
+```
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:oasis:names:tc:SPML:2:0" xmlns:urn1="urn:sungardhe:enterprise:domain:identity:1.0">
+<soapenv:Header/>
+
+<soapenv:Body>
+<urn:addRequest executionMode="?" requestID="?" returnData="?" targetID="?">
+<urn:psoID ID="ALPHA" targetID="?">
+<urn:containerID/>
+</urn:psoID>
+<urn:containerID ID="?" targetID="?">
+<urn:containerID/>
+</urn:containerID>
+<urn:data>
+<UDCIdentity PUBLISHER_NAME="Banner" action="UPDATE" xmlns="urn:sungardhe:enterprise:domain:identity:1.0">
+<UDCIdentifier>E286607965E09B09BC1183030991013099</UDCIdentifier>
+<PersonIdentity>
+<PersonName>
+<FormattedName>Alpha Trainee</FormattedName>
+<GivenName>Alpha</GivenName>
+<FamilyName>Trainee</FamilyName>
+<Affix type="formOfAddress">Mr.</Affix>
+<Affix type="qualification">Sr.</Affix>
+</PersonName>
+<Gender>M</Gender>
+<Birthdate>
+<BirthDay>1</BirthDay>
+<BirthMonth>1</BirthMonth>
+<BirthYear>1997</BirthYear>
+</Birthdate>
+</PersonIdentity>
+<InstitutionRoles>
+<institutionrole>
+<role>UGRAD</role>
+<context>INTCOMP</context>
+</institutionrole>
+<institutionrole>
+<role>STUDENT</role>
+<context>INTCOMP</context>
+</institutionrole>
+</InstitutionRoles>
+<Extension>
+<Attribute>
+<name>CWID</name>
+<value>1075463499</value>
+</Attribute>
+<Attribute>
+<name>PIDM</name>
+<value>44396499</value>
+</Attribute>
+<Attribute>
+<name>APDC_CODE||'|'||APDC_DATE||'|'||TERM_CODE_ENTRY||'|'||LEVL_CODE||'|'||APPL_NO</name>
+<value>IE|2015-07-28 14:33:39|202080|UG|1</value>
+</Attribute>
+<Attribute>
+<name>APDC_CODE||'|'||APDC_DATE||'|'||TERM_CODE_ENTRY||'|'||LEVL_CODE||'|'||APPL_NO</name>
+<value>CC|2015-07-28 14:32:49|202080|UG|1</value>
+</Attribute>
+<Attribute>
+<name>EXT_ID</name>
+<value>alphatrainee</value>
+</Attribute>
+<Attribute>
+<name>GOBTPAC_USER</name>
+<value>GLEE</value>
+</Attribute>
+</Extension>
+</UDCIdentity>
+</urn:data>
+<urn:capabilityData capabilityURI="?" mustUnderstand="?"/>
+</urn:addRequest>
+
+</soapenv:Body>
+
+</soapenv:Envelope>
+```
diff --git a/schema/card.schema.json b/schema/card.schema.json
new file mode 100644
index 0000000..7740a8b
--- /dev/null
+++ b/schema/card.schema.json
@@ -0,0 +1,99 @@
+{
+  "$id": "https://example.com/address.schema.json",
+  "$schema": "http://json-schema.org/draft-07/schema#",
+  "description": "A representation of a person, company, organization, or place",
+  "type": "object",
+  "required": [ "familyName", "givenName" ],
+  "properties": {
+    "fn": {
+      "description": "Formatted Name",
+      "type": "string"
+    },
+    "familyName": {
+      "type": "string"
+    },
+    "givenName": {
+      "type": "string"
+    },
+    "additionalName": {
+      "type": "array",
+      "items": {
+        "type": "string"
+      }
+    },
+    "honorificPrefix": {
+      "type": "array",
+      "items": {
+        "type": "string"
+      }
+    },
+    "honorificSuffix": {
+      "type": "array",
+      "items": {
+        "type": "string"
+      }
+    },
+    "nickname": {
+      "type": "string"
+    },
+    "url": {
+      "type": "string"
+    },
+    "email": {
+      "type": "object",
+      "properties": {
+        "type": {
+          "type": "string"
+        },
+        "value": {
+          "type": "string"
+        }
+      }
+    },
+    "tel": {
+      "type": "object",
+      "properties": {
+        "type": {
+          "type": "string"
+        },
+        "value": {
+          "type": "string"
+        }
+      }
+    },
+    "adr": { "$ref": "http://example.com/address.schema.json" },
+    "geo": { "$ref": "http://example.com/geographical-location.schema.json" },
+    "tz": {
+      "type": "string"
+    },
+    "photo": {
+      "type": "string"
+    },
+    "logo": {
+      "type": "string"
+    },
+    "sound": {
+      "type": "string"
+    },
+    "bday": {
+      "type": "string"
+    },
+    "title": {
+      "type": "string"
+    },
+    "role": {
+      "type": "string"
+    },
+    "org": {
+      "type": "object",
+      "properties": {
+        "organizationName": {
+          "type": "string"
+        },
+        "organizationUnit": {
+          "type": "string"
+        }
+      }
+    }
+  }
+}
diff --git a/schema/card.schema.yml b/schema/card.schema.yml
new file mode 100644
index 0000000..0f5c31a
--- /dev/null
+++ b/schema/card.schema.yml
@@ -0,0 +1,71 @@
+---
+"$id": https://example.com/address.schema.json
+"$schema": http://json-schema.org/draft-07/schema#
+description: A representation of a person, company, organization, or place
+type: object
+required:
+- familyName
+- givenName
+properties:
+  fn:
+    description: Formatted Name
+    type: string
+  familyName:
+    type: string
+  givenName:
+    type: string
+  additionalName:
+    type: array
+    items:
+      type: string
+  honorificPrefix:
+    type: array
+    items:
+      type: string
+  honorificSuffix:
+    type: array
+    items:
+      type: string
+  nickname:
+    type: string
+  url:
+    type: string
+  email:
+    type: object
+    properties:
+      type:
+        type: string
+      value:
+        type: string
+  tel:
+    type: object
+    properties:
+      type:
+        type: string
+      value:
+        type: string
+  adr:
+    "$ref": http://example.com/address.schema.json
+  geo:
+    "$ref": http://example.com/geographical-location.schema.json
+  tz:
+    type: string
+  photo:
+    type: string
+  logo:
+    type: string
+  sound:
+    type: string
+  bday:
+    type: string
+  title:
+    type: string
+  role:
+    type: string
+  org:
+    type: object
+    properties:
+      organizationName:
+        type: string
+      organizationUnit:
+        type: string
diff --git a/schema/foo.json b/schema/foo.json
new file mode 100644
index 0000000..e3a74cf
--- /dev/null
+++ b/schema/foo.json
@@ -0,0 +1 @@
+foo.json placeholder for JSON Schema specs for T&I resources
diff --git a/schema/gaborMinimalPersonSchema.yml b/schema/gaborMinimalPersonSchema.yml
new file mode 100644
index 0000000..9fd4bf2
--- /dev/null
+++ b/schema/gaborMinimalPersonSchema.yml
@@ -0,0 +1,111 @@
+---
+"$schema": http://json-schema.org/draft-07/schema#
+definitions: {}
+id: "http://id.internet2.edu/schemas/minPerson/v1"
+properties:
+  beginTimestamp:
+    id: "/properties/beginTimestamp"
+    type: string
+  emails:
+    id: "/properties/emails"
+    items:
+      id: "/properties/emails/items"
+      properties:
+        value:
+          id: "/properties/emails/items/properties/value"
+          type: string
+        type:
+          id: "/properties/emails/items/properties/type"
+          type: string
+      type: object
+    type: array
+  phoneNumbers:
+    id: "/properties/phoneNumbers"
+    items:
+      id: "/properties/phoneNumbers/items"
+      properties:
+        value:
+          id: "/properties/phoneNumbers/items/properties/value"
+          type: string
+        primary:
+          id: "/properties/phoneNumbers/items/properties/primary"
+          type: boolean
+        type:
+          id: "/properties/phoneNumbers/items/properties/type"
+          type: string
+      type: object
+    type: array
+  dateCreated:
+    id: "/properties/dateCreated"
+    type: string
+  dateInactivated:
+    id: "/properties/dateInactivated"
+    type: string
+  endTimestamp:
+    id: "/properties/endTimestamp"
+    type: string
+  entityObjectId:
+    id: "/properties/entityObjectId"
+    type: string
+  entityType:
+    id: "/properties/entityType"
+    type: string
+  friendlyName:
+    description: A common name the entity, suitable for display purposes.
+    id: "/properties/friendlyName"
+    type: string
+  identifiers:
+    id: "/properties/identifiers"
+    items:
+      id: "/properties/identifiers/items"
+      properties:
+        userName:
+          description: A handle by which the person is known in
+            contexts of gaining access to services.
+          id: "/properties/identifiers/items/properties/userName"
+          type: string
+      type: object
+    type: array
+  names:
+    id: "/properties/names"
+    items:
+      id: "/properties/names/items"
+      properties:
+        givenName:
+          id: "/properties/names/items/properties/givenName"
+          type: string
+        formatted:
+          id: "/properties/names/items/properties/formatted"
+          type: string
+        familyName:
+          id: "/properties/names/items/properties/familyName"
+          type: string
+        middleName:
+          id: "/properties/names/items/properties/middleName"
+          type: string
+        honorificPrefix:
+          id: "/properties/names/items/properties/honorificPrefix"
+          type: string
+        honorificSuffix:
+          id: "/properties/names/items/properties/honorificSuffix"
+          type: string
+        type:
+          id: "/properties/names/items/properties/type"
+          type: string
+      type: object
+    type: array
+  protect:
+    id: "/properties/protect"
+    type: boolean
+  status:
+    description: This is used to track the lifecycle of an entity
+      through a series of states.
+    id: "/properties/status"
+    title: Status of entry
+    type: string
+  updatingEntityId:
+    id: "/properties/updatingEntityId" 
+    type: string
+  updatingSOR:
+    id: "/properties/updatingSOR"
+    type: string
diff --git a/schema/minimalRegistryPerson.json b/schema/minimalRegistryPerson.json
new file mode 100644
index 0000000..42fdc58
--- /dev/null
+++ b/schema/minimalRegistryPerson.json
@@ -0,0 +1,83 @@
+{"title": "Minimal Registry Person Schema from Internet2 T&I",
+"$schema": "http://json-schema.org/draft-07/schema#",
+"description": "Minimal Registry Person Schema from Internet2 T&I",
+"type": "object",
+
+"properties": {
+
+        "name": {
+            "type": "object",
+            "properties": {
+                "familyName": {"type": "string"},
+                "givenName": {"type": "string"},
+                "middleName": {"type": "string"},
+                "nameType": {"type": "string"}
+            }
+        },
+
+        "logonId": {
+            "type": "string",
+            "description": "same as identifier/network in Core Attribute Specification. Mapped to target system ID, (__NAME__, in ConnID)"
+        },
+
+        "iamId": {
+            "type": "string",
+            "description": "same as identifier/enterprise in Core Attribute Specification; created on inbound mapping(?)"
+        },
+
+        "priorId": {
+            "type": "array",
+            "items": {
+                "type": "string"
+            }
+        },
+
+        "sorId": {
+            "type": "array",
+            "items": {
+                "type": "object",
+                "properties": {
+                    "source": {"type": "string"},
+                    "id": {"type": "string"}
+                }
+              }
+            },
+
+        "subjId": {
+            "type": "string",
+            "description": "Preferred personal pronoun"
+            },
+
+        "dateOfBirth": {
+            "type": "string",
+            "description": "Date of birth, string representtion of dateOfBirth in Core Attribute Specification"
+          },
+
+        "email": {
+            "type": "array",
+            "items": {
+                "type": "object",
+                "properties": {
+                    "emailAddress": {"type": "string"},
+                    "emailType": {"type": "string"}                    }
+            }
+        },
+
+        "phone": {
+            "type": "array",
+            "description": "same as telephoneNumber in Core Attribute Specification",
+            "items": {
+                "type": "object",
+                "properties": {
+                    "phoneNumber": {"type": "string"},
+                    "phoneType": {"type": "string"}
+                }
+            }
+        },
+
+        "personalPronoun": {
+            "type": "string",
+            "description": "Preferred personal pronoun"}
+  
+    }
+  }
diff --git a/schema/tools.adoc b/schema/tools.adoc
new file mode 100644
index 0000000..5c970c1
--- /dev/null
+++ b/schema/tools.adoc
@@ -0,0 +1,5 @@
+Schema Tools
+============
+
+- https://www.npmjs.com/package/ajv-cli[ajv-cli]: npm-installable CLI tool to validate JSON Schema specifications
+- https://www.jsonschemavalidator.net[Online JSON Schema validator]