Metadata-Version: 2.1
Name: coar-notify-validator
Version: 0.0.1
Summary: Utility for validating COAR Notify payloads.
Home-page: https://github.com/seanwiseman/coar-notify-validator.git
Maintainer: Sean Wiseman
Maintainer-email: seanwiseman2012@gmail.com
License: MIT
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: kglab (==0.6.6)
Requires-Dist: rdflib (==6.3.2)
Requires-Dist: pyshacl (==0.23.0)

# coar-notify-validator


### Installation

```bash
pip install coar-notify-validator
```


### Usage

#### Validate a COAR Notify payload against the schema

```python
from coar_notify_validator.shape_files import ShapefileType
from coar_notify_validator.validate import validate

valid_payload = {
    "@context": [
        "https://www.w3.org/ns/activitystreams",
        "https://purl.org/coar/notify"
    ],
    "actor": {
        "id": "https://review-service.org/",
        "name": "Review Service",
        "type": "Service"
    },
    "context": {
        "id": "https://doi.org/10.1101/2022.10.06.511170"
    },
    "id": "urn:uuid:572b8e81-d92f-4ed5-8178-cc7f04f44cd1",
    "object": {
        "id": "https://review-service.org/reviews/1223155",
        "ietf:cite-as": "10.5072/zenodo.1223155",
        "type": [
            "Document",
            "sorg:Review"
        ]
    },
    "origin": {
        "id": "https://review-service.org/",
        "inbox": "https://review-service.org/inbox",
        "type": "Service"
    },
    "target": {
        "id": "https://preprint-repository.org/",
        "inbox": "https://preprint-repository.org/inbox",
        "type": "Service"
    },
    "type": [
        "Announce",
        "coar-notify:ReviewAction"
    ],
    "updated": "2022-10-06T15:00:00.000000"
}

conforms, errors = validate(ShapefileType.ANNOUNCE_REVIEW, valid_payload)

print(conforms)  # True
print(errors)  # []

invalid_payload = {
    "@context": [
        "https://www.w3.org/ns/activitystreams",
        "https://purl.org/coar/notify"
    ],
    "actor": {
        "id": "https://review-service.org/",
        "name": "Review Service",
        "type": "Service"
    },
    "context": {
        "id": "https://doi.org/10.1101/2022.10.06.511170"
    },
    "id": "urn:uuid:572b8e81-d92f-4ed5-8178-cc7f04f44cd1",
    "object": {
        "id": "https://review-service.org/reviews/1223155",
        "ietf:cite-as": "10.5072/zenodo.1223155",
        "type": [
            "Document",
            "sorg:Review"
        ]
    },
    "origin": {
        "id": "https://review-service.org/",
        "inbox": "https://review-service.org/inbox",
        "type": "Service"
    },
    "target": {
        "id": "https://preprint-repository.org/",
        # Missing inbox - should be required
        "type": "Service"
    },
    "type": [
        "Announce",
        "coar-notify:ReviewAction"
    ],
    "updated": "2022-10-06T15:00:00.000000"
}

conforms, errors = validate(ShapefileType.ANNOUNCE_REVIEW, invalid_payload)
print(conforms)  # False
print(errors)
# [
#     {
#         "focus_node": "<https://preprint-repository.org/",
#         "message": "Less than 1 values on <https://preprint-repository.org/-ldp:inbox",
#         "result_path": "ldp:inbox",
#         "severity": "sh:Violation",
#         "source_shape": "ex:InboxShape"
#     }
# 
# ]


```
