Skip to content

Commit

Permalink
Added message formats
Browse files Browse the repository at this point in the history
  • Loading branch information
nckroy committed Aug 12, 2020
1 parent a0d553d commit 3e948e4
Showing 1 changed file with 98 additions and 0 deletions.
98 changes: 98 additions & 0 deletions fm/federation-manager-message-formats.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
**Title**: FM Message Schema

**Status**: Implementer’s Draft (I-D)

**Version**: 1.1

**Date**: 2020-07-29

**Prepared by**: Nic Roy, Internet2 Trust and Identity Services

**Contributors**: Nic Roy, David Shafer, Keith Hazelton, Shannon Roddy

=== Notes:

* ? == nullable field. Field must not contain null values if not prepended with “?”

* Null fields are represented in the JSON-standard way, with a non-quoted literal value of null.

* All values are strings unless otherwise specified in [ ] after the value

* “read” actions are in here specifically for situations where an object instance is included within a message for a different object type

* All eventTypes determine the behavior in the source system and do not dictate what the clients should do with them

== Object type: FMperson (person)

=== Attributes:

resourceTypeVersion: { string literal: “1.0.0” }

resourceType: { string literal: “FMperson” }

schemas: { collection of schema references for the message format(s) }

eventType: {create, read, update, delete}

sorID: ? {COmanage user identifier (COmanage-generated ePPN- this will be null at first, then we will start flowing it into FM user models from COmanage. Need to add this as an attribute on FM user model/database now)} Format should be according to: https://github.internet2.edu/api-schema/person/blob/master/schema/minimalRegistryPerson.json[https://github.internet2.edu/api-schema/person/blob/master/schema/minimalRegistryPerson.json] and “source” should be “icp-comanage” for COmanage-sourced identifiers. The FM primary int32 user record key should also be included as a “source” of “fm-user-pk”

lastModified: ?  { ISO 8601 date time stamp of object most recent modification }

email: ? { email address formatted according to https://github.internet2.edu/api-schema/person/blob/master/schema/minimalRegistryPerson.json[https://github.internet2.edu/api-schema/person/blob/master/schema/minimalRegistryPerson.json]} “emailType” should be “fm-user-email”

ePPN: ? { eduPersonPrincipalName/”username”}

name: ? { name element formatted according to https://github.internet2.edu/api-schema/person/blob/master/schema/minimalRegistryPerson.json[https://github.internet2.edu/api-schema/person/blob/master/schema/minimalRegistryPerson.json], including all properties that exist for this person in the FM database }

phone: ? { phone number(s) formatted according to https://github.internet2.edu/api-schema/person/blob/master/schema/minimalRegistryPerson.json[https://github.internet2.edu/api-schema/person/blob/master/schema/minimalRegistryPerson.json] containing zero or more phoneNumber/phoneType elements } 

fmIsIdentityProofed: ? {if LOA < 1, should be “false”; if LOA > 1, should be “true”} [bool]

== Object type: FMrole (role)

=== Attributes:

resourceTypeVersion: { string literal: “1.0.0” }

resourceType: { string literal: “FMrole” }

schemas: { collection of schema references for the message format(s) }

lastModified: ?&nbsp; { ISO 8601 date time stamp of object most recent modification }

eventType: {create, read, update, delete, personadd, personremove }

sorID: ? { FM role primary key [int32] } Format should be according to: https://github.internet2.edu/api-schema/person/blob/master/schema/minimalRegistryPerson.json[https://github.internet2.edu/api-schema/person/blob/master/schema/minimalRegistryPerson.json] and “source” should be “fm-role-pk”

roleName: {Name of role: {exec, site-admin, delegated-admin, registration-authority-admin, cert-rao, etc.}

FMorg: {embedded FMorg object that this role applies to, see below. Action should be “read” in the embedded FMorg in this case} [FMorg]

FMperson: ? {If message action is personadd or personremove, this value MUST NOT be null, and this attribute should contain a collection of one or more embedded FMperson objects that the change applies to, see above. Action should be “read” in the embedded FMperson in this case} [FMperson]

== Object type: FMorg (organization)

=== Attributes:

resourceTypeVersion: { string literal: “1.0.0” }

resourceType: { string literal: “FMorg” }

schemas: { collection of schema references for the message format(s) }

lastModified: ?&nbsp; { ISO 8601 date time stamp of object most recent modification }

eventType: {create, read, update, delete}

sorID: ? { FM role primary key [int32] } Format should be according to: https://github.internet2.edu/api-schema/person/blob/master/schema/minimalRegistryPerson.json[https://github.internet2.edu/api-schema/person/blob/master/schema/minimalRegistryPerson.json] and “source” should be “fm-org-pk”; Also include SalesForce org identifier with a “source” set to “fm-sf-id”

orgName: ? {FM organization name NOTE: These can include punctuation and other special characters that Grouper doesn’t like. Will need to post-normalize them in message consumers }

orgDisplayName: ? {FM organization display name}

orgURL: ? {FM organization URL}

== Object type: FederationMetadata

(CURRENTLY OUT OF SCOPE)
**

0 comments on commit 3e948e4

Please sign in to comment.