Skip to content

[BUG]: Pull request opened event JSON schema doesn't pass validation with AJV #900

@edraven-dev

Description

@edraven-dev

What happened?

I'm using fastify with AJV with following configuration:

ajv: {
    customOptions: {
      keywords: ['tsAdditionalProperties'],
      strict: true,
      useDefaults: false,
      removeAdditional: false,
    },
    plugins: [ajvFormats],
}

I need to set removeAdditional: false in order to pass the validation of example Pull Request Opened payload from this repository. However even with that config the real payload coming from the github does not pass the validation.

Versions

Node: v20.11.0
@octokit/webhooks-schemas: v7.3.2
fastify: v4.26.1
ajv: 8.12.0

Relevant log output

{
    "statusCode": 400,
    "code": "FST_ERR_VALIDATION",
    "error": "Bad Request",
    "message": "body must have required property 'rule', body must have required property 'rule', body must have required property 'rule', body must match exactly one schema in oneOf, body must have required property 'check_run', body must have required property 'check_run', body must have required property 'check_run', body must have required property 'check_run', body must match exactly one schema in oneOf, body must have required property 'check_suite', body must have required property 'check_suite', body must have required property 'check_suite', body must match exactly one schema in oneOf, body must have required property 'alert', body must have required property 'alert', body must have required property 'alert', body must have required property 'alert', body must have required property 'alert', body must have required property 'alert', body must match exactly one schema in oneOf, body must have required property 'comment', body must match exactly one schema in oneOf, body must have required property 'ref', body must have required property 'ref', body must have required property 'alert', body must have required property 'alert', body must have required property 'alert', body must have required property 'alert', body must have required property 'alert', body must match exactly one schema in oneOf, body must have required property 'key', body must have required property 'key', body must match exactly one schema in oneOf, body must have required property 'deployment', body must match exactly one schema in oneOf, body must NOT have additional properties, body must match exactly one schema in oneOf, body must have required property 'workflow_run', body must have required property 'workflow_run', body must have required property 'environment', body must match exactly one schema in oneOf, body must have required property 'deployment_status', body must match exactly one schema in oneOf, body must have required property 'discussion', body must have required property 'changes', body must have required property 'discussion', body must have required property 'discussion', body must have required property 'discussion', body must have required property 'discussion', body must have required property 'discussion', body must have required property 'discussion', body must have required property 'changes', body must have required property 'discussion', body must have required property 'discussion', body must have required property 'discussion', body must have required property 'discussion', body must match exactly one schema in oneOf, body must have required property 'comment', body must have required property 'comment', body must have required property 'changes', body must match exactly one schema in oneOf, body must have required property 'forkee', body must NOT have additional properties, body must match exactly one schema in oneOf, body must have required property 'pages', body must NOT have additional properties, body must NOT have additional properties, body must NOT have additional properties, body must NOT have additional properties, body must NOT have additional properties, body must match exactly one schema in oneOf, body must have required property 'repository_selection', body must have required property 'repository_selection', body must match exactly one schema in oneOf, body must have required property 'target_type', body must match exactly one schema in oneOf, body must have required property 'issue', body must have required property 'issue', body must have required property 'changes', body must match exactly one schema in oneOf, body must have required property 'issue', body must have required property 'issue', body must have required property 'issue', body must have required property 'issue', body must have required property 'changes', body must have required property 'issue', body must have required property 'issue', body must have required property 'issue', body must have required property 'issue', body must have required property 'issue', body must have required property 'issue', body must have required property 'changes', body must have required property 'issue', body must have required property 'issue', body must have required property 'issue', body must have required property 'issue', body must match exactly one schema in oneOf, body must have required property 'label', body must have required property 'label', body must have required property 'label', body must match exactly one schema in oneOf, body must have required property 'effective_date', body must have required property 'effective_date', body must have required property 'effective_date', body must have required property 'effective_date', body must have required property 'effective_date', body must match exactly one schema in oneOf, body must have required property 'member', body must have required property 'changes', body must have required property 'member', body must match exactly one schema in oneOf, body must have required property 'scope', body must have required property 'scope', body must match exactly one schema in oneOf, body must have required property 'merge_group', body must match exactly one schema in oneOf, body must have required property 'hook_id', body must match exactly one schema in oneOf, body must have required property 'milestone', body must have required property 'milestone', body must have required property 'milestone', body must have required property 'changes', body must have required property 'milestone', body must match exactly one schema in oneOf, body must have required property 'blocked_user', body must have required property 'blocked_user', body must match exactly one schema in oneOf, body must NOT have additional properties, body must have required property 'membership', body must have required property 'invitation', body must have required property 'membership', body must have required property 'changes', body must match exactly one schema in oneOf, body must have required property 'package', body must have required property 'package', body must match exactly one schema in oneOf, body must have required property 'id', body must have required property 'zen', body must have required property 'project', body must have required property 'project', body must have required property 'project', body must have required property 'project', body must have required property 'project', body must match exactly one schema in oneOf, body must have required property 'changes', body must have required property 'project_card', body must have required property 'project_card', body must have required property 'changes', body must have required property 'project_card', body must match exactly one schema in oneOf, body must have required property 'project_column', body must have required property 'project_column', body must have required property 'changes', body must have required property 'project_column', body must match exactly one schema in oneOf, body must have required property 'changes', body must have required property 'changes', body must have required property 'projects_v2_item', body must have required property 'projects_v2_item', body must have required property 'changes', body must have required property 'changes', body must have required property 'changes', body must match exactly one schema in oneOf, body must NOT have additional properties, body must have required property 'assignee', body must have required property 'reason', body must have required property 'reason', body/action must be equal to one of the allowed values, body/action must be equal to one of the allowed values, body must have required property 'milestone', body must have required property 'reason', body must have required property 'changes', body/action must be equal to one of the allowed values, body must have required property 'label', body/action must be equal to one of the allowed values, body must have required property 'milestone', body/repository must NOT have additional properties, body/action must be equal to one of the allowed values, body/action must be equal to one of the allowed values, body must have required property 'requested_reviewer', body must have required property 'requested_team', body must match exactly one schema in oneOf, body must have required property 'requested_reviewer', body must have required property 'requested_team', body must match exactly one schema in oneOf, body must have required property 'before', body must have required property 'assignee', body must have required property 'label', body/action must be equal to one of the allowed values, body must match exactly one schema in oneOf, body must have required property 'review', body must have required property 'changes', body must have required property 'review', body must match exactly one schema in oneOf, body must have required property 'comment', body must have required property 'comment', body must have required property 'changes', body must match exactly one schema in oneOf, body must have required property 'thread', body must have required property 'thread', body must match exactly one schema in oneOf, body must have required property 'ref', body must have required property 'registry_package', body must have required property 'registry_package', body must match exactly one schema in oneOf, body must have required property 'release', body must have required property 'release', body must have required property 'changes', body must have required property 'release', body must have required property 'release', body must have required property 'release', body must have required property 'release', body must match exactly one schema in oneOf, body must NOT have additional properties, body must NOT have additional properties, body must NOT have additional properties, body must have required property 'changes', body must NOT have additional properties, body must NOT have additional properties, body must have required property 'changes', body must have required property 'changes', body must NOT have additional properties, body must match exactly one schema in oneOf, body must have required property 'branch', body must have required property 'status', body must have required property 'alert', body must have required property 'alert', body must have required property 'alert', body must have required property 'alert', body must match exactly one schema in oneOf, body must have required property 'alert', body must have required property 'alert', body must have required property 'alert', body must have required property 'alert', body must match exactly one schema in oneOf, body must have required property 'location', body must match exactly one schema in oneOf, body must have required property 'security_advisory', body must have required property 'security_advisory', body must have required property 'security_advisory', body must have required property 'security_advisory', body must match exactly one schema in oneOf, body must have required property 'sponsorship', body must have required property 'sponsorship', body must have required property 'changes', body must have required property 'sponsorship', body must have required property 'changes', body must have required property 'changes', body must match exactly one schema in oneOf, body must have required property 'starred_at', body must have required property 'starred_at', body must match exactly one schema in oneOf, body must have required property 'id', body must have required property 'team', body must have required property 'team', body must have required property 'team', body must have required property 'changes', body must have required property 'team', body must match exactly one schema in oneOf, body must have required property 'team', body must NOT have additional properties, body must match exactly one schema in oneOf, body must have required property 'inputs', body must have required property 'workflow_job', body must have required property 'workflow_job', body must have required property 'workflow_job', body must have required property 'workflow_job', body must match exactly one schema in oneOf, body must have required property 'workflow', body must have required property 'workflow', body must have required property 'workflow', body must match exactly one schema in oneOf, body must match exactly one schema in oneOf"
}

Code of Conduct

  • I agree to follow this project's Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type: BugSomething isn't working as documentedreleased

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status
    ✅ Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions