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.14.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for pydantic_gitlab_webhooks-0.1.14.tar.gz
Algorithm Hash digest
SHA256 24ad1b59c6b0ed304f8935b1619a490b36cd876b4630cce604cdca65c1781f4a
MD5 ae14a694fa9859f795198d5e6fa5b45c
BLAKE2b-256 f85d04730aec6c199f09e6e855072c16d9504357a28303b6d358669a2581f458

See more details on using hashes here.

Provenance

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

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

Attestations:

File details

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

File metadata

File hashes

Hashes for pydantic_gitlab_webhooks-0.1.14-py3-none-any.whl
Algorithm Hash digest
SHA256 c8279c10f23e954cae462e804a020e835bcaa4408485e20f56e30aa98d172d11
MD5 e74e71412c92a57717d79d90f76b2b17
BLAKE2b-256 e63215e6f76a195c4430bc1fcc3c69e52942df4a17f52851a2fd7b860c5e3e45

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydantic_gitlab_webhooks-0.1.14-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