# Model

The PASS data model is represented using [JSON API](https://jsonapi.org/).

## Model Objects

* [Deposit](https://github.com/eclipse-pass/pass-documentation/blob/main/developer-documentation/pass-core/model/model/Deposit.md): An attempt to push a publication to a repository.
* [File](https://github.com/eclipse-pass/pass-documentation/blob/main/developer-documentation/pass-core/model/model/File.md): File being sent to a repository.
* [Funder](https://github.com/eclipse-pass/pass-documentation/blob/main/developer-documentation/pass-core/model/model/Funder.md): The sponsor of a grant.
* [Grant](https://github.com/eclipse-pass/pass-documentation/blob/main/developer-documentation/pass-core/model/model/Grant.md): Associates an award at the insitution with funders and principal investigators.
* [Journal](https://github.com/eclipse-pass/pass-documentation/blob/main/developer-documentation/pass-core/model/model/Journal.md): The journal of a publication
* [Policy](https://github.com/eclipse-pass/pass-documentation/blob/main/developer-documentation/pass-core/model/model/Policy.md): The institutional requirements to publish to certain repositories.
* [Publication](https://github.com/eclipse-pass/pass-documentation/blob/main/developer-documentation/pass-core/model/model/Publication.md): The publication being sent to a repository
* [Repository](https://github.com/eclipse-pass/pass-documentation/blob/main/developer-documentation/pass-core/model/model/Repository.md): The destination of a deposit
* [RepositoryCopy](https://github.com/eclipse-pass/pass-documentation/blob/main/developer-documentation/pass-core/model/model/RepositoryCopy.md): A publication in a repository.
* [Submission](https://github.com/eclipse-pass/pass-documentation/blob/main/developer-documentation/pass-core/model/model/Submission.md): The submission of a publication to a set of repositories.
* [SubmissionEvent](https://github.com/eclipse-pass/pass-documentation/blob/main/developer-documentation/pass-core/model/model/SubmissionEvent.md): An event performed by a user on a submission.
* [User](https://github.com/eclipse-pass/pass-documentation/blob/main/developer-documentation/pass-core/model/model/User.md): A PASS user.

## Model Diagram

<figure><img src="https://4168414097-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FuPWt2iUWSnjkzuTJXi97%2Fuploads%2Fgit-blob-d0962ec06c511a4dfbaedf284b65b0d4a9096489%2Fpass_data_model.png?alt=media" alt="Data Model Diagram"><figcaption><p>Data Model Diagram</p></figcaption></figure>

## Notes

### Identifiers

An object is uniquely identified by a tuple consisting of its id attribute and its type.

### DateTime attributes

DateTime attributes are strings formatted as per the Java DateTimeFormatter with pattern `yyyy-MM-dd'T'HH:mm:ss.SSSX`.
