# Diffo v0.2.1 - Table of Contents

TMF Service and Resource Manager with a difference

## Pages

- [Guide](readme.md)
- [License](mit.md)

- DSLs
  - [DSL: Diffo.Provider.Instance.Extension](dsl-diffo-provider-instance-extension.md)
  - [DSL: Diffo.Provider.Party.Extension](dsl-diffo-provider-party-extension.md)

## Modules

- [Diffo](Diffo.md): Diffo - TMF Service and Resource Management with a difference
- [Diffo.Provider](Diffo.Provider.md): Provider API endpoint
- [Diffo.Provider.AssignableValue](Diffo.Provider.AssignableValue.md): Ash Typed Struct for Assignable Characteristic Value
- [Diffo.Provider.Assigner](Diffo.Provider.Assigner.md): Helper to perform Assignment maintaining AssignableValue

- [Diffo.Provider.Assignment](Diffo.Provider.Assignment.md): Ash Typed Struct for Assignment
- [Diffo.Provider.BaseInstance](Diffo.Provider.BaseInstance.md): Ash Resource Fragment which is the point of extension for your TMF Service or Resource Instance.
- [Diffo.Provider.BaseParty](Diffo.Provider.BaseParty.md): Ash Resource Fragment which is a the point of extension for your TMF Party
- [Diffo.Provider.BasePlace](Diffo.Provider.BasePlace.md): Ash Resource Fragment which is the point of extension for your TMF Place.
- [Diffo.Provider.Characteristic](Diffo.Provider.Characteristic.md): Ash Resource for a TMF Characteristic
- [Diffo.Provider.Entity](Diffo.Provider.Entity.md): Ash Resource for a TMF Entity
- [Diffo.Provider.EntityRef](Diffo.Provider.EntityRef.md): Ash Resource for a TMF Entity Reference
- [Diffo.Provider.Event](Diffo.Provider.Event.md): Ash Resource for a TMF Event
- [Diffo.Provider.ExternalIdentifier](Diffo.Provider.ExternalIdentifier.md): Ash Resource for a TMF ExternalIdentifier
- [Diffo.Provider.Feature](Diffo.Provider.Feature.md): Ash Resource for a TMF Feature
- [Diffo.Provider.Instance](Diffo.Provider.Instance.md): Ash Resource for a TMF Service or Resource Instance
- [Diffo.Provider.Instance.Extension](Diffo.Provider.Instance.Extension.md): DSL Extension customising an Instance.
- [Diffo.Provider.Instance.Extension.Info](Diffo.Provider.Instance.Extension.Info.md)
- [Diffo.Provider.Instance.Extension.PartyDeclaration](Diffo.Provider.Instance.Extension.PartyDeclaration.md): PartyDeclaration - DSL entity declaring a party role on an Instance

- [Diffo.Provider.Instance.Extension.Persisters.PersistCharacteristics](Diffo.Provider.Instance.Extension.Persisters.PersistCharacteristics.md): Persists characteristic declarations and bakes characteristics/0
- [Diffo.Provider.Instance.Extension.Persisters.PersistFeatures](Diffo.Provider.Instance.Extension.Persisters.PersistFeatures.md): Persists feature declarations and bakes features/0
- [Diffo.Provider.Instance.Extension.Persisters.PersistParties](Diffo.Provider.Instance.Extension.Persisters.PersistParties.md): Persists party declarations and bakes parties/0
- [Diffo.Provider.Instance.Extension.Persisters.PersistPlaces](Diffo.Provider.Instance.Extension.Persisters.PersistPlaces.md): Persists place declarations and bakes places/0
- [Diffo.Provider.Instance.Extension.Persisters.PersistSpecification](Diffo.Provider.Instance.Extension.Persisters.PersistSpecification.md): Normalises specification DSL options, persists them, and bakes specification/0
- [Diffo.Provider.Instance.Extension.PlaceDeclaration](Diffo.Provider.Instance.Extension.PlaceDeclaration.md): PlaceDeclaration - DSL entity declaring a place role on an Instance

- [Diffo.Provider.Instance.Extension.Transformers.TransformBehaviour](Diffo.Provider.Instance.Extension.Transformers.TransformBehaviour.md): Generates build_before/1 and build_after/2, and injects build arguments into declared create actions
- [Diffo.Provider.Instance.Extension.Verifiers.VerifyBehaviour](Diffo.Provider.Instance.Extension.Verifiers.VerifyBehaviour.md): Verifies that actions declared in behaviour do exist as Ash actions of the correct type
- [Diffo.Provider.Instance.Extension.Verifiers.VerifyCharacteristics](Diffo.Provider.Instance.Extension.Verifiers.VerifyCharacteristics.md): Verifies that characteristic names are unique and value_type modules exist
- [Diffo.Provider.Instance.Extension.Verifiers.VerifyFeatures](Diffo.Provider.Instance.Extension.Verifiers.VerifyFeatures.md): Verifies that feature names are unique, feature characteristic names are unique, and value_type modules exist
- [Diffo.Provider.Instance.Extension.Verifiers.VerifyParties](Diffo.Provider.Instance.Extension.Verifiers.VerifyParties.md): Verifies party role declarations — no duplicates, party_type modules must exist
- [Diffo.Provider.Instance.Extension.Verifiers.VerifySpecification](Diffo.Provider.Instance.Extension.Verifiers.VerifySpecification.md): Verifies that the specification DSL values satisfy the Specification resource's attribute constraints
- [Diffo.Provider.Instance.Info](Diffo.Provider.Instance.Info.md): Public introspection API for resources extending Diffo.Provider.BaseInstance
- [Diffo.Provider.Note](Diffo.Provider.Note.md): Ash Resource for a TMF Note
- [Diffo.Provider.Party](Diffo.Provider.Party.md): Ash Resource for a TMF Party
- [Diffo.Provider.Party.Extension](Diffo.Provider.Party.Extension.md): DSL Extension customising a Party.
- [Diffo.Provider.Party.Extension.Info](Diffo.Provider.Party.Extension.Info.md)
- [Diffo.Provider.Party.Extension.InstanceRole](Diffo.Provider.Party.Extension.InstanceRole.md): InstanceRole - DSL entity declaring a role this Party kind plays with respect to Instances

- [Diffo.Provider.Party.Extension.PartyRole](Diffo.Provider.Party.Extension.PartyRole.md): PartyRole - DSL entity declaring a role this Party kind plays with respect to other Parties

- [Diffo.Provider.Party.Extension.Persisters.PersistInstances](Diffo.Provider.Party.Extension.Persisters.PersistInstances.md): Persists instance role declarations and bakes instances/0
- [Diffo.Provider.Party.Extension.Persisters.PersistParties](Diffo.Provider.Party.Extension.Persisters.PersistParties.md): Persists party role declarations and bakes parties/0
- [Diffo.Provider.Party.Extension.Persisters.PersistPlaces](Diffo.Provider.Party.Extension.Persisters.PersistPlaces.md): Persists place role declarations and bakes places/0
- [Diffo.Provider.Party.Extension.PlaceRole](Diffo.Provider.Party.Extension.PlaceRole.md): PlaceRole - DSL entity declaring a role this Party kind plays with respect to Places

- [Diffo.Provider.Party.Extension.Verifiers.VerifyRoles](Diffo.Provider.Party.Extension.Verifiers.VerifyRoles.md): Verifies role declarations across instances, parties, and places sections
- [Diffo.Provider.PartyRef](Diffo.Provider.PartyRef.md): Ash Resource for a TMF PartyRef
- [Diffo.Provider.Place](Diffo.Provider.Place.md): Ash Resource for a TMF Place
- [Diffo.Provider.Place.Extension](Diffo.Provider.Place.Extension.md): DSL Extension customising a Place.
- [Diffo.Provider.Place.Extension.Info](Diffo.Provider.Place.Extension.Info.md)
- [Diffo.Provider.Place.Extension.InstanceRole](Diffo.Provider.Place.Extension.InstanceRole.md): InstanceRole - DSL entity declaring a role this Place kind plays with respect to Instances

- [Diffo.Provider.Place.Extension.PartyRole](Diffo.Provider.Place.Extension.PartyRole.md): PartyRole - DSL entity declaring a role this Place kind plays with respect to Parties

- [Diffo.Provider.Place.Extension.Persisters.PersistInstances](Diffo.Provider.Place.Extension.Persisters.PersistInstances.md): Persists instance role declarations and bakes instances/0
- [Diffo.Provider.Place.Extension.Persisters.PersistParties](Diffo.Provider.Place.Extension.Persisters.PersistParties.md): Persists party role declarations and bakes parties/0
- [Diffo.Provider.Place.Extension.Persisters.PersistPlaces](Diffo.Provider.Place.Extension.Persisters.PersistPlaces.md): Persists place role declarations and bakes places/0
- [Diffo.Provider.Place.Extension.PlaceRole](Diffo.Provider.Place.Extension.PlaceRole.md): PlaceRole - DSL entity declaring a role this Place kind plays with respect to other Places

- [Diffo.Provider.Place.Extension.Verifiers.VerifyRoles](Diffo.Provider.Place.Extension.Verifiers.VerifyRoles.md): Verifies role declarations across instances, parties, and places sections
- [Diffo.Provider.PlaceRef](Diffo.Provider.PlaceRef.md): Ash Resource for a TMF Place Reference
- [Diffo.Provider.ProcessStatus](Diffo.Provider.ProcessStatus.md): Ash Resource for a TMF ProcessStatus
- [Diffo.Provider.Relationship](Diffo.Provider.Relationship.md): 
Ash Resource for a TMF Service or Resource Relationship
- [Diffo.Provider.Specification](Diffo.Provider.Specification.md): Ash Resource for a TMF Service or Resource Specification.
- [Diffo.Type.Dynamic](Diffo.Type.Dynamic.md): `Diffo.Type.Dynamic` is an `Ash.Type.NewType` for values whose exact type is not known until
runtime. The `:type` field holds the `Ash.Type.NewType` module and `:value` holds the cast value.
- [Diffo.Type.Primitive](Diffo.Type.Primitive.md): `Diffo.Type.Primitive` is a discriminated union of primitive types: string, integer, float,
boolean, date, time, datetime, and duration.
- [Diffo.Type.Value](Diffo.Type.Value.md): `Diffo.Type.Value` is an `Ash.Type.NewType` union that holds either a `Diffo.Type.Primitive`
or a `Diffo.Type.Dynamic` value.
- [Diffo.Unwrap](Diffo.Unwrap.md): `Diffo.Unwrap` is a protocol for extracting the underlying Elixir value from Diffo and Ash
wrapper types. It is defined with `@fallback_to_any true`, so any value without an explicit
implementation is returned unchanged.
- [Diffo.Util](Diffo.Util.md): Utility methods

- [Diffo.Uuid](Diffo.Uuid.md): Validate and/or create Uuid

