@startuml enum ActionType { add modify delete noChange } enum StateType { acknowledged rejected pending held inProgress cancelled completed failed partial } enum RelationshipType { reliesOn } enum EventType { ServiceOrderCreationNotification ServiceOrderStateChangeNotification ServiceOrderItemStateChangeNotification } enum SeverityMessage { information error } class ErrorRepresentation { code:int reason:string message:string status:string referenceError:string @type:string @schemaLocation:string } class ServiceRelationship ServiceRelationship --> "1-1" RelationshipType : type ServiceRelationship --> "1-1" Service : service class ServiceRef { id:string href:string } class ServiceCharacteristic { name:string valueType:string } ServiceCharacteristic --> "0-1" Value : value class RelatedParty { id:string href:string role:string name:string @referredType:string } class ServiceSpecificationRef { id:string href:string name:string version:string @type:string @schemaLocation:string @baseType:string } ServiceSpecificationRef --> "0-1" TargetServiceSchema : targetServiceSchema class Service { id:string href:string name:string serviceState:string @type:string @schemaLocation:string } Service --> "0-*" ServiceCharacteristic : serviceCharacteristic Service --> "0-*" ServiceRelationship : serviceRelationship Service --> "0-*" RelatedParty : relatedParty Service --> "0-1" ServiceSpecificationRef : serviceSpecification class OrderItemRelationship { id:string } OrderItemRelationship --> "1-1" RelationshipType : type class ServiceOrderItem { id:string percentProgress:string @type:string @schemaLocation:string @baseType:string } ServiceOrderItem --> "0-1" ActionType : action ServiceOrderItem --> "0-1" StateType : state ServiceOrderItem --> "0-*" OrderItemRelationship : orderItemRelationship ServiceOrderItem --> "1-1" Service : service ServiceOrderItem --> "0-*" OrderMessage : orderItemMessage class ServiceOrder { id:string href:string externalId:string priority:string description:string category:string orderDate:dateTime completionDateTime:dateTime requestedStartDate:dateTime requestedCompletionDate:dateTime expectedCompletionDate:dateTime startDate:dateTime @baseType:string @type:string @schemaLocation:string } ServiceOrder --> "0-1" StateType : state ServiceOrder --> "0-*" RelatedParty : relatedParty ServiceOrder --> "0-*" OrderRelationship : orderRelationship ServiceOrder --> "0-*" ServiceOrderItem : orderItem ServiceOrder --> "0-*" OrderMessage : orderMessage class OrderRelationship { type:string id:string href:string @referredType:string } class TargetServiceSchema { @type:string @schemaLocation:string } class Value { @type:string @schemaLocation:string serviceCharacteristicValue:string } class CreateServiceOrderItem { id:string @type:string @schemaLocation:string @baseType:string } CreateServiceOrderItem --> "0-1" ActionType : action CreateServiceOrderItem --> "0-*" OrderItemRelationship : orderItemRelationship CreateServiceOrderItem --> "1-1" Service : service class CreateServiceOrder { externalId:string priority:string description:string category:string requestedStartDate:dateTime requestedCompletionDate:dateTime @baseType:string @type:string @schemaLocation:string } CreateServiceOrder --> "0-*" RelatedParty : relatedParty CreateServiceOrder --> "0-*" OrderRelationship : orderRelationship CreateServiceOrder --> "0-*" CreateServiceOrderItem : orderItem class Hub { id:string query:string callback:string } class CreateHub { query:string callback:string } class ServiceOrderSummary { id:string href:string externalId:string orderDate:dateTime completionDateTime:dateTime } ServiceOrderSummary --> "0-1" StateType : state class ServiceOrderCreationNotification { eventId:string eventDate:dateTime eventType:string } ServiceOrderCreationNotification --> "1-1" ServiceOrderSummary : event class Notification class ServiceOrderStateChangeNotification { eventId:string eventDate:dateTime eventType:string } ServiceOrderStateChangeNotification --> "1-1" ServiceOrderSummary : event class ServiceOrderItemSummary { id:string } ServiceOrderItemSummary --> "0-1" ActionType : action ServiceOrderItemSummary --> "0-1" StateType : state ServiceOrderItemSummary --> "1-1" Service : service class ServiceOrderSummaryWithItem { id:string href:string externalId:string orderDate:dateTime completionDateTime:dateTime } ServiceOrderSummaryWithItem --> "0-1" StateType : state ServiceOrderSummaryWithItem --> "0-*" ServiceOrderItemSummary : orderItem class ServiceOrderItemStateChangeNotification { eventId:string eventDate:dateTime eventType:string } ServiceOrderItemStateChangeNotification --> "1-1" ServiceOrderSummaryWithItem : event class OrderMessage { code:string field:string messageInformation:string correctionRequired:boolean } OrderMessage --> "1-1" SeverityMessage : severity @enduml