BEGIN:VCALENDAR VERSION:2.0 PRODID:-//Meetup//Meetup Calendar 1.0//EN CALSCALE:GREGORIAN METHOD:PUBLISH NAME:PHPDX X-WR-CALNAME:PHPDX BEGIN:VTIMEZONE TZID:America/Los_Angeles TZURL:http://tzurl.org/zoneinfo-outlook/America/Los_Angeles X-LIC-LOCATION:America/Los_Angeles BEGIN:DAYLIGHT TZOFFSETFROM:-0800 TZOFFSETTO:-0700 TZNAME:PDT DTSTART:19700308T020000 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU END:DAYLIGHT BEGIN:STANDARD TZOFFSETFROM:-0700 TZOFFSETTO:-0800 TZNAME:PST DTSTART:19701101T020000 RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU END:STANDARD END:VTIMEZONE BEGIN:VEVENT UID:event_313763834@meetup.com SEQUENCE:1 DTSTAMP:20260324T051030Z DTSTART;TZID=America/Los_Angeles:20260409T163000 DTEND;TZID=America/Los_Angeles:20260409T183000 SUMMARY:Stop Guessing\, Start Verifying: A Modern API Documentation and Te sting Toolkit DESCRIPTION:PHPDX\nMergePHP meets IN PERSON on the second Thursday of ever y month at 16:30 Pacific with presentation starting at 17:00\n\n**This mon th Alena Holligan will be presenting in person for the PHPdx User group!** \n\nAPIs are only as good as the trust developers place in them. That trus t is built through clear documentation and rigorous testing — yet in man y teams\, both remain an afterthought. This session makes the case for tre ating your OpenAPI specification as the single source of truth for your en tire API lifecycle\, and demonstrates how a modern toolchain can turn that spec into living documentation\, a contract enforcement mechanism\, and a n automated test suite.\nWe begin with **OpenAPI** as the foundation: stru cturing a spec that accurately models your API's requests\, responses\, an d error states. From there\, we'll explore **Redocly** to transform that s pec into polished\, developer-friendly reference documentation — coverin g customization\, linting\, and the Redocly CLI for integrating docs into your CI/CD pipeline.\nThe second half of the session focuses on testing ac ross multiple layers. We'll cover **schema validation** (ensuring your imp lementation matches the spec)\, **contract testing** (verifying that produ cer and consumer agreements hold across deployments)\, and **negative test ing** (probing edge cases and malformed inputs). A key focus will be valid ating your existing **PHPUnit test suite against your OpenAPI spec** — a sserting that the responses your application actually returns conform to t he schemas you've documented\, using tools like `osteel/openapi-httpfounda tion-testing` or the `php-openapi` library. This approach surfaces drift b etween your spec and implementation without requiring a running server\, a nd slots naturally into Laravel and Symfony testing workflows.\nWe'll then use **Schemathesis** to drive property-based and fuzz testing directly fr om your OpenAPI spec — requiring zero test case authoring for broad cove rage — and compare how spec-driven fuzzing complements the response asse rtions you've already built into PHPUnit.\nFinally\, we'll introduce **Ara zzo**\, the emerging OpenAPI Initiative specification for describing multi -step API workflows. We'll walk through defining realistic end-to-end scen arios — authentication flows\, resource creation chains\, dependent call sequences — and show how Arazzo workflows close the gap between isolate d endpoint testing and real-world usage patterns.\n\n## Attendees Will Lea ve With\n\n* A practical strategy for keeping documentation and implementa tion in sync\n* Techniques for validating PHPUnit test responses directly against OpenAPI schemas\n* An understanding of contract testing and where it fits alongside unit and integration tests\n* Hands-on patterns for auto mated spec-driven testing with Schemathesis\n* A working knowledge of Araz zo for modeling and validating API workflows\n\n***\n\n*Whether you mainta in a public API or an internal microservices mesh\, this session will give you the tools to ship APIs that are easier to understand\, harder to brea k\, and faster to debug.* URL;VALUE=URI:https://www.meetup.com/pdx-php/events/313763834/ STATUS:CONFIRMED CREATED:20260313T003117Z LAST-MODIFIED:20260313T003117Z CLASS:PUBLIC END:VEVENT BEGIN:VEVENT UID:event_kpplwtyjchbsb@meetup.com SEQUENCE:1 DTSTAMP:20260324T051030Z DTSTART;TZID=America/Los_Angeles:20260514T163000 DTEND;TZID=America/Los_Angeles:20260514T183000 SUMMARY:PHPdx In Person Meetup DESCRIPTION:PHPDX\nMergePHP meets IN PERSON on the second Thursday of ever y month at 16:30 Pacific with presentation starting at 17:00 URL;VALUE=URI:https://www.meetup.com/pdx-php/events/kpplwtyjchbsb/ STATUS:CONFIRMED CREATED:20260313T003317Z LAST-MODIFIED:20260313T003317Z CLASS:PUBLIC END:VEVENT BEGIN:VEVENT UID:event_kpplwtyjcjbpb@meetup.com SEQUENCE:1 DTSTAMP:20260324T051030Z DTSTART;TZID=America/Los_Angeles:20260611T163000 DTEND;TZID=America/Los_Angeles:20260611T183000 SUMMARY:PHPdx In Person Meetup DESCRIPTION:PHPDX\nMergePHP meets IN PERSON on the second Thursday of ever y month at 16:30 Pacific with presentation starting at 17:00 URL;VALUE=URI:https://www.meetup.com/pdx-php/events/kpplwtyjcjbpb/ STATUS:CONFIRMED CREATED:20260313T003317Z LAST-MODIFIED:20260313T003317Z CLASS:PUBLIC END:VEVENT BEGIN:VEVENT UID:event_kpplwtyjckbmb@meetup.com SEQUENCE:1 DTSTAMP:20260324T051030Z DTSTART;TZID=America/Los_Angeles:20260709T163000 DTEND;TZID=America/Los_Angeles:20260709T183000 SUMMARY:PHPdx In Person Meetup DESCRIPTION:PHPDX\nMergePHP meets IN PERSON on the second Thursday of ever y month at 16:30 Pacific with presentation starting at 17:00 URL;VALUE=URI:https://www.meetup.com/pdx-php/events/kpplwtyjckbmb/ STATUS:CONFIRMED CREATED:20260313T003317Z LAST-MODIFIED:20260313T003317Z CLASS:PUBLIC END:VEVENT BEGIN:VEVENT UID:event_kpplwtyjclbrb@meetup.com SEQUENCE:1 DTSTAMP:20260324T051030Z DTSTART;TZID=America/Los_Angeles:20260813T163000 DTEND;TZID=America/Los_Angeles:20260813T183000 SUMMARY:PHPdx In Person Meetup DESCRIPTION:PHPDX\nMergePHP meets IN PERSON on the second Thursday of ever y month at 16:30 Pacific with presentation starting at 17:00 URL;VALUE=URI:https://www.meetup.com/pdx-php/events/kpplwtyjclbrb/ STATUS:CONFIRMED CREATED:20260313T003317Z LAST-MODIFIED:20260313T003317Z CLASS:PUBLIC END:VEVENT BEGIN:VEVENT UID:event_kpplwtyjcmbnb@meetup.com SEQUENCE:1 DTSTAMP:20260324T051030Z DTSTART;TZID=America/Los_Angeles:20260910T163000 DTEND;TZID=America/Los_Angeles:20260910T183000 SUMMARY:PHPdx In Person Meetup DESCRIPTION:PHPDX\nMergePHP meets IN PERSON on the second Thursday of ever y month at 16:30 Pacific with presentation starting at 17:00 URL;VALUE=URI:https://www.meetup.com/pdx-php/events/kpplwtyjcmbnb/ STATUS:CONFIRMED CREATED:20260313T003317Z LAST-MODIFIED:20260313T003317Z CLASS:PUBLIC END:VEVENT X-ORIGINAL-URL:https://www.meetup.com/PDX-PHP/events/ical/ X-WR-CALNAME:PHPDX END:VCALENDAR