Skip to main content

Pydantic models for GitLab webhook payloads

Project description

Pydantic models for GitLab Webhooks

PyPI - Version PyPI - Python Version GitHub Release Test suite status

Module containing Pydantic models for validating bodies from GitLab webhook requests.

Usage

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_header_and_body, validate_event_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(
    "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("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_dict(event_body)
assert parsed_event.group.full_path == "twitter"

# Individual event models are available from the `pydantic_gitlab_webhooks.events` module. For
# example:
from pydantic_gitlab_webhooks.events import GroupAccessTokenEvent

parsed_event = GroupAccessTokenEvent.model_validate(event_body)

The available event models are:

  • CommitNoteEvent
  • DeploymentEvent
  • EmojiEvent
  • FeatureFlagEvent
  • GroupAccessTokenEvent
  • GroupMemberEvent
  • IssueEvent
  • IssueNoteEvent
  • JobEvent
  • MergeRequestEvent
  • MergeRequestNoteEvent
  • PipelineEvent
  • ProjectAccessTokenEvent
  • ProjectEvent
  • PushEvent
  • ReleaseEvent
  • SnippetNoteEvent
  • SubgroupEvent
  • TagPushEvent
  • WikiPageEvent

Making a release

Manually trigger the release workflow.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydantic_gitlab_webhooks-0.1.13.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

pydantic_gitlab_webhooks-0.1.13-py3-none-any.whl (12.2 kB view details)

Uploaded Python 3

File details

Details for the file pydantic_gitlab_webhooks-0.1.13.tar.gz.

File metadata

File hashes

Hashes for pydantic_gitlab_webhooks-0.1.13.tar.gz
Algorithm Hash digest
SHA256 212c4c665fec77f8876ba601fc363e24a57cc59bb1b11ffef83f27818a5f66fa
MD5 d7ae35666aab3370c293b5ef81a0104d
BLAKE2b-256 ec4fbb1d17c46a162d1f7a8b219626147ddf489166db090939e7aeb15730e627

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydantic_gitlab_webhooks-0.1.13.tar.gz:

Publisher: main.yml on rjw57/pydantic-gitlab-webhooks

Attestations:

File details

Details for the file pydantic_gitlab_webhooks-0.1.13-py3-none-any.whl.

File metadata

File hashes

Hashes for pydantic_gitlab_webhooks-0.1.13-py3-none-any.whl
Algorithm Hash digest
SHA256 42c2bf2689fd3b828fb59765778f86a699b2e0d2f1de091184c4495053f51d82
MD5 8163c0a9c35fddb6a0801d74f7d4a428
BLAKE2b-256 f509bec275b24c1380371e7838d2f3d426692d4a34b2360deabc9746ef8df3cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydantic_gitlab_webhooks-0.1.13-py3-none-any.whl:

Publisher: main.yml on rjw57/pydantic-gitlab-webhooks

Attestations:

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page