Pydantic models for GitLab webhook payloads
Project description
Pydantic models for GitLab Webhooks
Module containing Pydantic models for validating bodies from GitLab webhook requests.
Documentation
The project documentation including an API reference can be found at https://rjw57.github.io/pydantic-gitlab-webhooks/.
Usage example
Intended usage is via a single validate_event_header_and_body
function which will
validate an incoming webhook's X-Gitlab-Event
header and the body after being parsed
into a Python dict.
from pydantic import ValidationError
from pydantic_gitlab_webhooks import (
validate_event_body_dict,
validate_event_header_and_body_dict,
)
event_body = {
"object_kind": "access_token",
"group": {
"group_name": "Twitter",
"group_path": "twitter",
"group_id": 35,
"full_path": "twitter"
},
"object_attributes": {
"user_id": 90,
"created_at": "2024-01-24 16:27:40 UTC",
"id": 25,
"name": "acd",
"expires_at": "2024-01-26"
},
"event_name": "expiring_access_token"
}
# Use the value of the "X-Gitlab-Event" header and event body to validate
# the incoming event.
parsed_event = validate_event_header_and_body_dict(
"Resource Access Token Hook",
event_body
)
assert parsed_event.group.full_path == "twitter"
# Invalid event bodies or hook headers raise Pydantic validation errors
try:
validate_event_header_and_body_dict("invalid hook", event_body)
except ValidationError:
pass # ok - expected error raised
else:
assert False, "ValidationError was not raised"
# Event bodies can be parsed without the header hook if necessary although using
# the hook header is more efficient.
parsed_event = validate_event_body_dict(event_body)
assert parsed_event.group.full_path == "twitter"
# Event models may be imported individually. For example:
from pydantic_gitlab_webhooks.events import GroupAccessTokenEvent
parsed_event = GroupAccessTokenEvent.model_validate(event_body)
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
File details
Details for the file pydantic_gitlab_webhooks-0.3.5.tar.gz
.
File metadata
- Download URL: pydantic_gitlab_webhooks-0.3.5.tar.gz
- Upload date:
- Size: 9.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 950518e72a560327d8323567f3398387ed821d4cac3eec8577eacd1995c1a009 |
|
MD5 | 297d52317a8049e12541b8cd28fa589b |
|
BLAKE2b-256 | d4690585f5408cb5d949c507c5923f744d378bbadf1872a04977c0bc0c683f94 |
Provenance
The following attestation bundles were made for pydantic_gitlab_webhooks-0.3.5.tar.gz
:
Publisher:
main.yml
on rjw57/pydantic-gitlab-webhooks
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
pydantic_gitlab_webhooks-0.3.5.tar.gz
- Subject digest:
950518e72a560327d8323567f3398387ed821d4cac3eec8577eacd1995c1a009
- Sigstore transparency entry: 150741566
- Sigstore integration time:
- Predicate type:
File details
Details for the file pydantic_gitlab_webhooks-0.3.5-py3-none-any.whl
.
File metadata
- Download URL: pydantic_gitlab_webhooks-0.3.5-py3-none-any.whl
- Upload date:
- Size: 12.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 22f66f1917429a0c99a3e9705973a937f1058c450f11d701cb9010b152043fe7 |
|
MD5 | 85adb4789ce6c17fa2a9ce6f059989da |
|
BLAKE2b-256 | 2c333e30f8c3e45fc3d86a291323d258999e8181f5ed993a69ea973fb789647d |
Provenance
The following attestation bundles were made for pydantic_gitlab_webhooks-0.3.5-py3-none-any.whl
:
Publisher:
main.yml
on rjw57/pydantic-gitlab-webhooks
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
pydantic_gitlab_webhooks-0.3.5-py3-none-any.whl
- Subject digest:
22f66f1917429a0c99a3e9705973a937f1058c450f11d701cb9010b152043fe7
- Sigstore transparency entry: 150741568
- Sigstore integration time:
- Predicate type: