{"openapi":"3.0.0","paths":{"/external/v1/organizer/events/search":{"post":{"operationId":"PublicApiController_searchEvents","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiSearchEventsDto"}}}},"responses":{"201":{"description":""}},"security":[{"organizer-api-key":[]}],"summary":"Search WODira events for an organizer","tags":["WODira Organizer API"]}},"/external/v1/organizer/events/{eventId}":{"get":{"operationId":"PublicApiController_getEvent","parameters":[{"name":"eventId","required":true,"in":"path","description":"WODira event identifier","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"organizer-api-key":[]}],"summary":"Get a WODira event for an organizer","tags":["WODira Organizer API"]}},"/external/v1/organizer/events/{eventId}/pricing-cards":{"get":{"operationId":"PublicApiController_getPricingCards","parameters":[{"name":"eventId","required":true,"in":"path","description":"WODira event identifier","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"organizer-api-key":[]}],"summary":"Get WODira event pricing cards for an organizer","tags":["WODira Organizer API"]}},"/external/v1/organizer/registrations":{"post":{"operationId":"PublicApiController_createRegistration","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiCreateRegistrationDto"}}}},"responses":{"201":{"description":""}},"security":[{"organizer-api-key":[]}],"summary":"Create a WODira registration server-to-server","tags":["WODira Organizer API"]}},"/external/v1/organizer/registrations/search":{"post":{"operationId":"PublicApiController_searchRegistrations","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiSearchRegistrationsDto"}}}},"responses":{"201":{"description":""}},"security":[{"organizer-api-key":[]}],"summary":"Search WODira registrations","tags":["WODira Organizer API"]}},"/external/v1/organizer/registrations/{ticketId}":{"patch":{"operationId":"PublicApiController_updateRegistration","parameters":[{"name":"ticketId","required":true,"in":"path","description":"WODira athlete ticket identifier","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiUpdateRegistrationDto"}}}},"responses":{"200":{"description":""}},"security":[{"organizer-api-key":[]}],"summary":"Update a WODira registration","tags":["WODira Organizer API"]},"delete":{"operationId":"PublicApiController_deleteRegistration","parameters":[{"name":"ticketId","required":true,"in":"path","description":"WODira athlete ticket identifier","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"organizer-api-key":[]}],"summary":"Delete a WODira registration","tags":["WODira Organizer API"]}},"/external/v1/browser/events/search":{"post":{"operationId":"BrowserPublicApiController_searchEvents","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserSearchEventsDto"}}}},"responses":{"201":{"description":""}},"security":[{"publishable-key":[]}],"summary":"Search published WODira events from a browser","tags":["WODira Browser API"]}},"/external/v1/browser/events/{eventId}":{"get":{"operationId":"BrowserPublicApiController_getEvent","parameters":[{"name":"eventId","required":true,"in":"path","description":"WODira event identifier","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"publishable-key":[]}],"summary":"Get a published WODira event","tags":["WODira Browser API"]}},"/external/v1/browser/events/{eventId}/pricing-cards":{"get":{"operationId":"BrowserPublicApiController_getPricingCards","parameters":[{"name":"eventId","required":true,"in":"path","description":"WODira event identifier","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"publishable-key":[]}],"summary":"Get public pricing cards for a WODira event","tags":["WODira Browser API"]}},"/external/v1/browser/checkout/registration/summary":{"post":{"operationId":"BrowserPublicApiController_getRegistrationSummary","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserRegistrationSummaryDto"}}}},"responses":{"201":{"description":""}},"security":[{"publishable-key":[]}],"summary":"Calculate a WODira registration checkout summary","tags":["WODira Browser API"]}},"/external/v1/browser/checkout/registration/session":{"post":{"operationId":"BrowserPublicApiController_createRegistrationCheckoutSession","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserRegistrationCheckoutSessionDto"}}}},"responses":{"201":{"description":""}},"security":[{"publishable-key":[]}],"summary":"Create a WODira registration Stripe Checkout Session","tags":["WODira Browser API"]}},"/external/v1/browser/events/{eventId}/registration-receipts/lookup":{"post":{"operationId":"BrowserPublicApiController_lookupRegistrationReceipts","parameters":[{"name":"eventId","required":true,"in":"path","description":"WODira event identifier","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserRegistrationReceiptRequestDto"}}}},"responses":{"201":{"description":""}},"security":[{"publishable-key":[]}],"summary":"Look up WODira registration receipts by email","tags":["WODira Browser API"]}},"/external/v1/browser/events/{eventId}/registration-receipts/send":{"post":{"operationId":"BrowserPublicApiController_sendRegistrationReceipts","parameters":[{"name":"eventId","required":true,"in":"path","description":"WODira event identifier","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserRegistrationReceiptRequestDto"}}}},"responses":{"201":{"description":""}},"security":[{"publishable-key":[]}],"summary":"Send WODira registration receipts by email","tags":["WODira Browser API"]}}},"info":{"title":"WODira External API","description":"Public developer API for integrating organizer backends and browser applications with WODira.","version":"1.0","contact":{}},"tags":[],"servers":[{"url":"https://api.wodira.app","description":"Production"}],"components":{"securitySchemes":{"organizer-api-key":{"scheme":"bearer","bearerFormat":"JWT","type":"http","description":"WODira secret API key (wd_live_...) for trusted organizer backends."},"publishable-key":{"type":"apiKey","in":"header","name":"x-publishable-key","description":"WODira publishable key (wpk_live_...) restricted by allowed Origin."}},"schemas":{"PublicApiSearchEventsDto":{"type":"object","properties":{"search":{"description":"Search field.","type":"string","maxLength":100},"status":{"type":"string","enum":["DRAFT","PUBLISHED","UNDER_REVIEW","POSTPONED","COMPLETED","CANCELLED","ARCHIVED"]},"limit":{"default":50,"description":"Limit field.","type":"integer","minimum":1,"maximum":100},"offset":{"default":0,"description":"Offset field.","type":"integer","minimum":0,"maximum":9007199254740991}}},"PublicApiCreateRegistrationDto":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"description":"Event ID for the manual registration."},"categoryId":{"type":"string","minLength":1,"description":"Category ID selected for the registration."},"teamName":{"type":"string","minLength":1,"description":"Team name used in the registration."},"club":{"description":"Optional club, gym, or affiliation name.","type":"string"},"bibRaceNumber":{"description":"Optional bib or race number assigned to the team.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"athletes":{"minItems":1,"type":"array","items":{"type":"object","properties":{"fullname":{"type":"string","minLength":1,"description":"Fullname field."},"idNumber":{"type":"string","minLength":1,"description":"Id Number field."},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","description":"Email field."},"phone":{"type":"string","pattern":"^\\+[1-9]\\d{6,14}$","description":"Phone field."},"gender":{"type":"string","enum":["MALE","FEMALE"],"description":"Gender field."},"birthDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","description":"Birth Date field."}},"required":["fullname","idNumber","email","phone","gender","birthDate"]},"description":"Athletes included in the registration."},"checkedInAt":{"description":"Optional manual check-in timestamp.","type":"array","items":{"type":"string"}},"note":{"description":"Internal note for the registration.","type":"string"},"customFields":{"description":"Custom field values captured for the registration.","type":"array","items":{"type":"object","properties":{"fieldId":{"type":"string","minLength":1,"description":"Custom field ID."},"value":{"description":"Value for the custom field."}},"required":["fieldId","value"]}},"selectedSupplementIds":{"description":"IDs de suplementos de precio único seleccionados.","type":"array","items":{"type":"string"}},"supplementSelections":{"description":"Opciones de suplementos seleccionadas.","type":"array","items":{"type":"object","properties":{"supplementId":{"type":"string","minLength":1,"description":"Supplement Id field."},"optionId":{"type":"string","minLength":1,"description":"Option Id field."}},"required":["supplementId","optionId"]}}},"required":["eventId","categoryId","teamName","athletes"]},"PublicApiSearchRegistrationsDto":{"type":"object","properties":{"search":{"description":"Free-text search across athlete tickets.","type":"string","minLength":1,"maxLength":100},"athleteId":{"description":"Filter tickets by athlete ID.","type":"string"},"eventId":{"description":"Filter tickets by event ID.","type":"string"},"ticketId":{"description":"Filter tickets by athlete ticket ID.","type":"string"},"categoryId":{"description":"Filter tickets by event category ID.","type":"string"},"gender":{"description":"Filter tickets by participant gender.","type":"string","enum":["MALE","FEMALE"]},"ageMin":{"description":"Minimum participant age.","type":"integer","minimum":0,"maximum":120},"ageMax":{"description":"Maximum participant age.","type":"integer","minimum":0,"maximum":120},"checkIn":{"description":"Filter tickets by check-in status.","type":"string","enum":["checked-in","pending"]},"sortBy":{"description":"Sort option for athlete ticket queries.","type":"string","enum":["createdAt-desc","createdAt-asc","athlete-asc","amount-desc","bib-asc","category-asc"]},"status":{"description":"Filter tickets by related order status.","type":"string","enum":["PENDING","COMPLETED","FAILED","CANCELLED","REFUNDED"]},"ticketStatus":{"description":"Filter by athlete ticket lifecycle status. Defaults to ACTIVE.","anyOf":[{"type":"string","enum":["ACTIVE","CANCELLED"],"description":"Athlete Ticket Status Enum schema."},{"type":"string","const":"ALL"}]},"participantDataStatus":{"description":"Filter by participant data readiness independently from ticket status.","type":"string","enum":["READY","PENDING_PARTICIPANTS"]},"cancelledFrom":{"description":"Inclusive cancellation date lower bound.","type":"array","items":{"type":"string"}},"cancelledTo":{"description":"Exclusive cancellation date upper bound.","type":"array","items":{"type":"string"}},"customFieldFilters":{"description":"Advanced filters for custom registration form fields.","maxItems":20,"type":"array","items":{"type":"object","properties":{"fieldId":{"type":"string","minLength":1,"description":"Custom event form field ID."},"operator":{"type":"string","enum":["contains","equals","has-any","is-empty","is-not-empty"],"description":"Operator used to match a registration custom field response."},"value":{"description":"Value to match for the field.","anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}}]}},"required":["fieldId","operator"],"description":"Advanced filter for a registration custom field response."}},"supplementFilters":{"description":"Advanced filters for selected registration supplements.","maxItems":20,"type":"array","items":{"type":"object","properties":{"supplementId":{"type":"string","minLength":1,"description":"Event supplement ID selected by the registration."},"optionIds":{"description":"Optional supplement option IDs to match.","type":"array","items":{"type":"string","minLength":1}}},"required":["supplementId"],"description":"Advanced filter for a registration supplement selection."}},"limit":{"description":"Maximum number of tickets to return.","type":"number","minimum":1,"maximum":100},"offset":{"description":"Number of tickets to skip.","type":"number","minimum":0}}},"PublicApiUpdateRegistrationDto":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"description":"Event ID for the manual registration."},"categoryId":{"type":"string","minLength":1,"description":"Category ID selected for the registration."},"teamName":{"type":"string","minLength":1,"description":"Team name used in the registration."},"club":{"description":"Optional club, gym, or affiliation name.","type":"string"},"bibRaceNumber":{"description":"Optional bib or race number assigned to the team.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"athletes":{"minItems":1,"type":"array","items":{"type":"object","properties":{"fullname":{"type":"string","minLength":1,"description":"Fullname field."},"idNumber":{"type":"string","minLength":1,"description":"Id Number field."},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","description":"Email field."},"phone":{"type":"string","pattern":"^\\+[1-9]\\d{6,14}$","description":"Phone field."},"gender":{"type":"string","enum":["MALE","FEMALE"],"description":"Gender field."},"birthDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","description":"Birth Date field."}},"required":["fullname","idNumber","email","phone","gender","birthDate"]},"description":"Athletes included in the registration."},"checkedInAt":{"description":"Optional manual check-in timestamp.","type":"array","items":{"type":"string"}},"note":{"description":"Internal note for the registration.","type":"string"},"customFields":{"description":"Custom field values captured for the registration.","type":"array","items":{"type":"object","properties":{"fieldId":{"type":"string","minLength":1,"description":"Custom field ID."},"value":{"description":"Value for the custom field."}},"required":["fieldId","value"]}},"selectedSupplementIds":{"description":"IDs de suplementos de precio único seleccionados.","type":"array","items":{"type":"string"}},"supplementSelections":{"description":"Opciones de suplementos seleccionadas.","type":"array","items":{"type":"object","properties":{"supplementId":{"type":"string","minLength":1,"description":"Supplement Id field."},"optionId":{"type":"string","minLength":1,"description":"Option Id field."}},"required":["supplementId","optionId"]}},"notifyEmailChange":{"default":false,"description":"If true, sends an update confirmation email when the primary email changes.","type":"boolean"}}},"BrowserSearchEventsDto":{"type":"object","properties":{"search":{"description":"Search field.","type":"string","maxLength":100},"limit":{"default":50,"description":"Limit field.","type":"integer","minimum":1,"maximum":100},"offset":{"default":0,"description":"Offset field.","type":"integer","minimum":0,"maximum":9007199254740991}}},"BrowserRegistrationSummaryDto":{"type":"object","properties":{"previewToken":{"description":"Event preview token.","type":"string","minLength":1},"categoryId":{"type":"string","minLength":1,"description":"Category Id field."},"promocode":{"description":"Promocode field.","type":"string","format":"uppercase","pattern":"^[^a-z]*$"},"selectedSupplementIds":{"description":"Selected Supplement Ids field.","type":"array","items":{"type":"string"}},"supplementSelections":{"description":"Supplement Selections field.","type":"array","items":{"type":"object","properties":{"supplementId":{"type":"string","minLength":1,"description":"Supplement Id field."},"optionId":{"type":"string","minLength":1,"description":"Option Id field."}},"required":["supplementId","optionId"]}},"guestRegistrations":{"description":"Guest Registrations field.","maxItems":10,"type":"array","items":{"type":"object","properties":{"categoryId":{"type":"string","minLength":1,"description":"Category Id field."},"selectedSupplementIds":{"description":"Selected Supplement Ids field.","type":"array","items":{"type":"string"}},"supplementSelections":{"description":"Supplement Selections field.","type":"array","items":{"type":"object","properties":{"supplementId":{"type":"string","minLength":1,"description":"Supplement Id field."},"optionId":{"type":"string","minLength":1,"description":"Option Id field."}},"required":["supplementId","optionId"]}}},"required":["categoryId"]}},"purchaserEmail":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","description":"Purchaser Email field."}},"required":["categoryId","purchaserEmail"]},"BrowserRegistrationCheckoutSessionDto":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"description":"Event Id field."},"idempotencyKey":{"type":"string","minLength":8,"maxLength":120,"pattern":"^[a-zA-Z0-9._:-]+$"},"categoryId":{"type":"string","minLength":1,"description":"Category Id field."},"teamName":{"type":"string","minLength":1,"description":"Team Name field."},"club":{"description":"Club field.","type":"string"},"promocode":{"description":"Promocode field.","type":"string","format":"uppercase","pattern":"^[^a-z]*$"},"athletes":{"minItems":1,"type":"array","items":{"type":"object","properties":{"fullname":{"type":"string","minLength":1,"description":"Fullname field."},"idNumber":{"type":"string","minLength":1,"description":"Id Number field."},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","description":"Email field."},"phone":{"type":"string","pattern":"^\\+[1-9]\\d{6,14}$","description":"Phone field."},"gender":{"type":"string","enum":["MALE","FEMALE"],"description":"Gender field."},"birthDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","description":"Birth Date field."}},"required":["fullname","idNumber","email","phone","gender","birthDate"]},"description":"Athletes field."},"deferredTeamCompletion":{"description":"Participant places that will be completed after payment.","type":"object","properties":{"pendingParticipantCount":{"type":"integer","minimum":1,"maximum":9007199254740991},"pendingParticipantPositions":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"integer","minimum":0,"maximum":9007199254740991}},"slotGenders":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","enum":["MALE","FEMALE"],"description":"Gender Enum schema."}},"participantWaivers":{"minItems":1,"type":"array","items":{"type":"object","properties":{"waiversAccepted":{"type":"object","propertyNames":{"type":"string","minLength":1},"additionalProperties":{"type":"boolean"}}},"required":["waiversAccepted"]}}},"required":["pendingParticipantCount","participantWaivers"]},"customFields":{"type":"array","items":{"type":"object","properties":{"fieldId":{"type":"string","minLength":1,"description":"Field Id field."},"value":{"description":"Value field."}},"required":["fieldId","value"]}},"waiversAccepted":{"description":"Waivers Accepted field.","type":"object","propertyNames":{"type":"string","minLength":1},"additionalProperties":{"type":"boolean"}},"legalSignature":{"description":"Electronic signature for this order.","type":"object","properties":{"signerName":{"type":"string","minLength":2,"maxLength":160},"signerIdNumber":{"type":"string","minLength":3,"maxLength":80},"authorityAccepted":{"type":"boolean","const":true},"minorRelationship":{"type":"string","minLength":2,"maxLength":120},"guardianAuthorityAccepted":{"type":"boolean","const":true},"locale":{"default":"es","type":"string","enum":["es","en","pt"]},"waiverVersions":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"waiverId":{"type":"string","minLength":1},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["waiverId","version"]}},"strokes":{"minItems":1,"maxItems":20,"type":"array","items":{"minItems":2,"maxItems":1000,"type":"array","items":{"type":"object","properties":{"x":{"type":"number","minimum":0,"maximum":1},"y":{"type":"number","minimum":0,"maximum":1},"t":{"type":"integer","minimum":0,"maximum":300000}},"required":["x","y","t"]}}}},"required":["signerName","signerIdNumber","authorityAccepted","waiverVersions","strokes"]},"selectedSupplementIds":{"description":"IDs de los suplementos seleccionados para agregar a la orden","type":"array","items":{"type":"string"}},"supplementSelections":{"description":"Opciones de suplementos seleccionadas para agregar a la orden","type":"array","items":{"type":"object","properties":{"supplementId":{"type":"string","minLength":1,"description":"Supplement Id field."},"optionId":{"type":"string","minLength":1,"description":"Option Id field."}},"required":["supplementId","optionId"]}},"termsAccepted":{"type":"boolean","description":"Terms Accepted field."},"guestRegistrations":{"description":"Guest Registrations field.","maxItems":10,"type":"array","items":{"type":"object","properties":{"guestEmail":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","description":"Guest Email field."},"guestName":{"type":"string","minLength":2,"description":"Guest Name field."},"categoryId":{"type":"string","minLength":1,"description":"Category Id field."},"teamName":{"type":"string","minLength":1,"description":"Team Name field."},"club":{"description":"Club field.","type":"string"},"athletes":{"minItems":1,"type":"array","items":{"type":"object","properties":{"fullname":{"type":"string","minLength":1,"description":"Fullname field."},"idNumber":{"type":"string","minLength":1,"description":"Id Number field."},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","description":"Email field."},"phone":{"type":"string","pattern":"^\\+[1-9]\\d{6,14}$","description":"Phone field."},"gender":{"type":"string","enum":["MALE","FEMALE"],"description":"Gender field."},"birthDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","description":"Birth Date field."}},"required":["fullname","idNumber","email","phone","gender","birthDate"]},"description":"Athletes field."},"customFields":{"type":"array","items":{"type":"object","properties":{"fieldId":{"type":"string","minLength":1,"description":"Field Id field."},"value":{"description":"Value field."}},"required":["fieldId","value"]}},"waiversAccepted":{"description":"Waivers Accepted field.","type":"object","propertyNames":{"type":"string","minLength":1},"additionalProperties":{"type":"boolean"}},"selectedSupplementIds":{"description":"Selected Supplement Ids field.","type":"array","items":{"type":"string"}},"supplementSelections":{"description":"Supplement Selections field.","type":"array","items":{"type":"object","properties":{"supplementId":{"type":"string","minLength":1,"description":"Supplement Id field."},"optionId":{"type":"string","minLength":1,"description":"Option Id field."}},"required":["supplementId","optionId"]}}},"required":["guestEmail","guestName","categoryId","teamName","athletes"]}},"ipEnrichment":{"description":"Optional browser-reported IP enrichment metadata for checkout security.","type":"object","properties":{"provider":{"type":"string","enum":["ipquery","ipwhois","ipapiis","ipapico"]},"countryCode":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[a-zA-Z]{2}$"},"country":{"type":"string","minLength":1,"maxLength":120},"regionCode":{"type":"string","minLength":1,"maxLength":32},"region":{"type":"string","minLength":1,"maxLength":120},"city":{"type":"string","minLength":1,"maxLength":120},"timezone":{"type":"string","minLength":1,"maxLength":120},"network":{"type":"object","properties":{"asn":{"type":"string","minLength":1,"maxLength":32},"organization":{"type":"string","minLength":1,"maxLength":180},"isp":{"type":"string","minLength":1,"maxLength":180}}},"risk":{"type":"object","properties":{"vpn":{"type":"boolean"},"proxy":{"type":"boolean"},"tor":{"type":"boolean"},"hosting":{"type":"boolean"}}}},"required":["provider","countryCode"],"additionalProperties":false},"purchaserEmail":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","description":"Purchaser Email field."},"purchaserName":{"type":"string","minLength":2,"maxLength":120,"description":"Purchaser Name field."},"checkoutResumeSecret":{"type":"string","minLength":32,"maxLength":128},"successUrl":{"type":"string","format":"uri","description":"Success Url field."},"cancelUrl":{"type":"string","format":"uri","description":"Cancel Url field."}},"required":["eventId","categoryId","teamName","athletes","termsAccepted","purchaserEmail","purchaserName","successUrl","cancelUrl"]},"BrowserRegistrationReceiptRequestDto":{"type":"object","properties":{"email":{"type":"string","minLength":3,"maxLength":254,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"required":["email"]}}}}