IRI Object Model Reference
This page provides an architectural view of the principal representation types defined by the IRI Facility API v2.
It is not intended to duplicate every OpenAPI property. The OpenAPI specification remains authoritative for exact property names, types, requiredness, formats, request bodies, and response schemas.
1. Object Categories
OpenAPI contains several kinds of schemas.
Independent API representations
Facility, Site, Resource, Incident, Event, Capability, Project,
ProjectAllocation, UserAllocation, Job, Task
Resource specialization
Resource + resource_type + Resource Definition Profile + attributes
Operation request/response objects
Job specifications, filesystem/storage requests, submit responses, etc.
Supporting schemas
enums, Problem Details, nested values, reusable helper structures
Only independently meaningful representations need architectural identity and representation profiles by default.
A helper schema does not become an IRI Resource merely because it appears under
components/schemas.
2. Representation Relationships
flowchart TB
Facility["Facility"]
Site["Site"]
Resource["Resource"]
Incident["Incident"]
Event["Event"]
Capability["Capability"]
Project["Project"]
ProjectAllocation["ProjectAllocation"]
UserAllocation["UserAllocation"]
Job["Job"]
Task["Task"]
Facility -->|"iri:has-site"| Site
Site -->|"iri:has-resource"| Resource
Resource -->|"iri:has-capability"| Capability
Incident -->|"iri:has-event"| Event
Incident -->|"iri:may-impact"| Resource
Event -->|"iri:impacts"| Resource
Event -->|"iri:generated-by"| Incident
ProjectAllocation -->|"iri:has-project"| Project
ProjectAllocation -->|"iri:has-capability"| Capability
UserAllocation -->|"iri:has-project-allocation"| ProjectAllocation
Resource -. "operation affordance" .-> Job
Job -. "async work may use" .-> Task
The registered relation definitions remain authoritative for exact source, target, cardinality, visibility, and stability semantics.
3. Facility
Purpose
Represents the facility exposing the IRI API.
API role
The Facility is a singleton top-level representation:
GET /api/v2/facility
Profile
https://iri.science/profiles/facility
Architectural responsibilities
The Facility provides facility-level metadata and navigation, including access to associated Sites and support information.
Typical navigation includes:
iri:has-site
help
self
service-desc
where applicable.
4. Site
Purpose
Represents a facility Site.
API role
Current v2 examples include:
GET /api/v2/facility/sites
GET /api/v2/facility/sites/{site_id}
Profile
https://iri.science/profiles/facility/site
Architectural responsibilities
A Site provides an organizational/physical context for IRI Resources.
A Site can advertise:
iri:has-resource
to navigate to Resources associated with the Site.
A Resource can advertise:
iri:located-at
to navigate back to its associated Site.
5. Resource
Purpose
Resource is the common representation for physical, logical, virtual, and
service-oriented infrastructure exposed by a facility.
API role
Current v2 examples include:
GET /api/v2/status/resources
GET /api/v2/status/resources/{resource_id}
Common profile
https://iri.science/profiles/status/resource
Core architectural properties
| Concept | Role |
|---|---|
id |
Facility-local instance identity. |
name / description |
Human-readable metadata. |
current_status |
Current Resource status according to the common Resource contract. |
resource_type |
Registered semantic Resource classification. |
attributes |
Type-specific data interpreted using the applicable Resource Definition Profile. |
_links |
Related Resources, topology, capabilities, operations, and service descriptions. |
Specialization
Resource
+
resource_type
+
Resource Definition Profile
+
attributes
allows one common API representation to describe heterogeneous infrastructure.
6. Incident
Purpose
Represents an incident that may affect one or more IRI Resources.
Profile
https://iri.science/profiles/status/incident
Important relations
iri:has-event
iri:may-impact
The Incident expresses the broader condition; Events capture individual event records associated with it.
7. Event
Purpose
Represents an event applying to a Resource, optionally associated with an Incident.
Profile
https://iri.science/profiles/status/event
Important relations
iri:impacts
iri:generated-by
iri:impacts identifies the Resource to which the Event applies.
iri:generated-by identifies the Incident with which the Event is associated,
when present.
8. Capability
Purpose
Represents a facility capability that may be associated with Resources and allocations.
Profile
https://iri.science/profiles/account/capability
Important relation use
A Resource can expose:
iri:has-capability
A ProjectAllocation can use the same semantic relation to identify the
Capability to which that allocation applies.
9. Project
Purpose
Represents a project recognized by the facility/accounting model.
Profile
https://iri.science/profiles/account/project
Relationship role
A ProjectAllocation identifies its Project using:
iri:has-project
10. ProjectAllocation
Purpose
Represents a project’s allocation of a facility Capability.
Profile
https://iri.science/profiles/account/project-allocation
Important relations
iri:has-project
iri:has-capability
This lets a client navigate from the allocation to both the Project and the Capability to which the allocation applies.
11. UserAllocation
Purpose
Represents the allocation context for a user within a ProjectAllocation.
Profile
https://iri.science/profiles/account/user-allocation
Important relation
iri:has-project-allocation
This preserves the allocation hierarchy as explicit navigation rather than requiring URI construction.
12. Job
Purpose
Represents a compute job and its lifecycle/state according to the current compute API contract.
Profile
https://iri.science/profiles/compute/job
Architectural distinction
The Job representation is not the same thing as the job-submission operation entry point.
iri:submit-job
target = operation entry point
Job profile
target = Job representation
A HAL link to a submit operation therefore does not use the Job representation profile merely because invoking that operation produces a Job.
13. Task
Purpose
Represents asynchronous API work or a result that can be monitored.
Profile
https://iri.science/profiles/task
Navigation
A submit response can use the standard Web Linking relation:
monitor
to identify the Task used to monitor asynchronous progress.
The Task representation itself can expose:
self
for its canonical identity.
monitor and self have different semantics even if their href values happen
to be equal.
14. Resource Definition Types
The following are not separate OpenAPI top-level Resource classes. They are
semantic specializations of the common Resource representation.
Compute
| Resource Type | Resource Definition Profile |
|---|---|
urn:doe-iri:resource:compute:system |
https://iri.science/profiles/resource-definition/compute/system |
urn:doe-iri:resource:compute:node |
https://iri.science/profiles/resource-definition/compute/node |
urn:doe-iri:resource:compute:cpu |
https://iri.science/profiles/resource-definition/compute/cpu |
urn:doe-iri:resource:compute:gpu |
https://iri.science/profiles/resource-definition/compute/gpu |
Topology is represented with relations such as:
iri:has-node
iri:has-cpu
iri:has-gpu
Storage
| Resource Type | Resource Definition Profile |
|---|---|
urn:doe-iri:resource:storage:system |
https://iri.science/profiles/resource-definition/storage/system |
urn:doe-iri:resource:storage:filesystem |
https://iri.science/profiles/resource-definition/storage/filesystem |
urn:doe-iri:resource:storage:mount |
https://iri.science/profiles/resource-definition/storage/mount |
urn:doe-iri:resource:storage:block |
https://iri.science/profiles/resource-definition/storage/block |
urn:doe-iri:resource:storage:object |
https://iri.science/profiles/resource-definition/storage/object |
Typical topology includes:
storage system
└── iri:provides-filesystem → filesystem
└── iri:has-mount → mount
└── iri:mounted-on → compute system
Block storage can use:
iri:attached-to
to identify consuming compute infrastructure.
Services
| Resource Type | Resource Definition Profile |
|---|---|
urn:doe-iri:resource:service:dtn |
https://iri.science/profiles/resource-definition/service/dtn |
urn:doe-iri:resource:service:inference |
https://iri.science/profiles/resource-definition/service/inference |
Service topology can include:
iri:hosted-on
iri:accesses-mount
A service Resource remains distinct from the compute infrastructure on which it is hosted.
15. Supporting OpenAPI Schemas
The OpenAPI specification also defines schemas used to invoke operations or compose representations.
Examples include categories such as:
operation request bodies
operation response bodies
nested attribute/value objects
enums
pagination/filter structures
Problem Details
These schemas remain important structural contracts.
However:
Presence under
components/schemasdoes not automatically imply independent IRI identity.
A helper object generally should not receive:
a Resource Type URN
a Resource Definition Profile
a self link
an IRI link relation
unless an interoperability use case requires independent identity, lifecycle, navigation, or semantic constraints beyond the containing representation.
16. Where to Find Exact Details
| Question | Authority |
|---|---|
| Exact JSON fields/types | OpenAPI v2 |
| Exact paths/methods | OpenAPI v2 |
| Resource Type assignment | DOE-IRI Resource Type Registry |
| Controlled attribute values | DOE-IRI Controlled Attribute Registry |
| Common representation semantics | Representation Profile |
| Type-specific Resource semantics | Resource Definition Profile |
| Relation semantics | IRI Link Relation Registry |
Repository:
https://github.com/doe-iri/iri-facility-api-docs
See also: