diff --git a/fm/federation-manager-message-formats.adoc b/fm/federation-manager-message-formats.adoc new file mode 100644 index 0000000..54b765a --- /dev/null +++ b/fm/federation-manager-message-formats.adoc @@ -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: ?  { 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: ?  { 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) +** \ No newline at end of file