Utility for validating COAR Notify payloads.
Project description
coar-notify-validator
Installation
pip install coar-notify-validator
Usage
validate()
Validate a COAR Notify payload against a schema determined by the payload's type
value:
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(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(valid_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"
# }
#
# ]
validate_by_shape_file()
Validate a COAR Notify payload against a specified schema:
from coar_notify_validator.shape_files import ShapefileType
from coar_notify_validator.validate import validate_by_shape_file
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_by_shape_file(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_by_shape_file(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"
# }
#
# ]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for coar_notify_validator-0.0.4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a5f376c04f7f15836c874248ef7db6ad07d411c691a6bbdbd3f4f702006a732 |
|
MD5 | 8c10fcfd849847dc9efe1b8f76ca533c |
|
BLAKE2b-256 | 5055d9fe06a6936380b770fc43f08f9af5ef826d3c7f89b47c2ae1a0b39378b3 |
Close
Hashes for coar_notify_validator-0.0.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f08a951cb77a6cc6efd497a07eacde67dc64b46f1d5615ef5b2104e26e22ecdf |
|
MD5 | 66959555569ad97bc5ae57672edb7245 |
|
BLAKE2b-256 | fa96853ae2d746bb4e0de56f0afaad22842d41af813f8f32164f10f25afa6012 |