{"openapi":"3.1.1","info":{"title":"pgday.app Sales Gamification API","version":"1.0.0","description":"Scoped lead, event and leaderboard access for pgday.app by Kuckein Consulting. API access requires an active Pro entitlement. Read the onboarding guide before creating credentials.","contact":{"name":"pgday.app support","url":"https://www.pgday.app/contact"}},"externalDocs":{"description":"Authentication, onboarding, examples and recovery","url":"https://www.pgday.app/developers"},"x-scopes-catalog":"https://www.pgday.app/api/scopes","x-oauth-protected-resource-metadata":"https://www.pgday.app/.well-known/oauth-protected-resource/mcp-analytics","servers":[{"url":"https://pkoxxomkokniffvcjutm.supabase.co/functions/v1/pgday-api","description":"Production — scoped API key required"}],"security":[{"ApiKey":[]}],"paths":{"/leads":{"get":{"operationId":"listLeads","summary":"List leads, newest first","description":"List leads, newest first within the key's organisation or Space. Requires leads:read. Unknown, repeated or empty query parameters are rejected. Rate limit: 100 requests per minute per key.","security":[{"ApiKey":[]}],"x-required-scopes":["leads:read"],"parameters":[{"name":"limit","in":"query","description":"Records per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"page","in":"query","description":"One-based page number.","schema":{"type":"integer","minimum":1,"maximum":10000,"default":1}},{"name":"event_id","in":"query","description":"Narrow to an event visible to this key; never widens organisation or Space access.","schema":{"type":"string","format":"uuid"}},{"name":"since","in":"query","description":"Include leads created at or after this timestamp.","schema":{"type":"string","format":"date-time","maxLength":100}},{"name":"status","in":"query","description":"Exact lead status filter.","schema":{"type":"string","minLength":1,"maxLength":100}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Lead"}},"meta":{"type":"object","required":["page","per_page","total"],"properties":{"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":100},"total":{"type":"integer","minimum":0}}}}}}}},"400":{"description":"validation: invalid input or event rules","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: missing or invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: missing permission or unavailable API entitlement","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: endpoint or scoped resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"method_not_allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: concurrent write rolled back","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"validation: body exceeds 32768 bytes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait for Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"integer","minimum":1}}}},"503":{"description":"unavailable: result not confirmed; inspect leads before retrying creates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"createLead","summary":"Create a lead for a current event member","description":"Create a lead for a current event member within the key's organisation or Space. Requires leads:write. Unknown, repeated or empty query parameters are rejected. Rate limit: 100 requests per minute per key. Maximum body: 32768 bytes. On a timeout or 503, inspect the lead list before retrying; creation has no idempotency key. A 409 confirms rollback. See the API guide for event scoring and phone-contact rules.","security":[{"ApiKey":[]}],"x-required-scopes":["leads:write"],"parameters":[],"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Lead"}}}}}},"400":{"description":"validation: invalid input or event rules","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: missing or invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: missing permission or unavailable API entitlement","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: endpoint or scoped resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"method_not_allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: concurrent write rolled back","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"validation: body exceeds 32768 bytes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait for Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"integer","minimum":1}}}},"503":{"description":"unavailable: result not confirmed; inspect leads before retrying creates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLead"}}}}}},"/leads/{id}":{"get":{"operationId":"getLead","summary":"Get one lead","description":"Get one lead within the key's organisation or Space. Requires leads:read. Unknown, repeated or empty query parameters are rejected. Rate limit: 100 requests per minute per key.","security":[{"ApiKey":[]}],"x-required-scopes":["leads:read"],"parameters":[{"name":"id","in":"path","required":true,"description":"Resource UUID.","schema":{"type":"string","format":"uuid"}},{"name":"event_id","in":"query","description":"Narrow to an event visible to this key; never widens organisation or Space access.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Lead"}}}}}},"400":{"description":"validation: invalid input or event rules","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: missing or invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: missing permission or unavailable API entitlement","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: endpoint or scoped resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"method_not_allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: concurrent write rolled back","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"validation: body exceeds 32768 bytes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait for Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"integer","minimum":1}}}},"503":{"description":"unavailable: result not confirmed; inspect leads before retrying creates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"operationId":"updateLead","summary":"Update lead fields without reassigning ownership","description":"Update lead fields without reassigning ownership within the key's organisation or Space. Requires leads:write. Unknown, repeated or empty query parameters are rejected. Rate limit: 100 requests per minute per key. Maximum body: 32768 bytes. On a timeout or 503, inspect the lead list before retrying; creation has no idempotency key. A 409 confirms rollback. See the API guide for event scoring and phone-contact rules.","security":[{"ApiKey":[]}],"x-required-scopes":["leads:write"],"parameters":[{"name":"id","in":"path","required":true,"description":"Resource UUID.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Lead"}}}}}},"400":{"description":"validation: invalid input or event rules","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: missing or invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: missing permission or unavailable API entitlement","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: endpoint or scoped resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"method_not_allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: concurrent write rolled back","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"validation: body exceeds 32768 bytes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait for Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"integer","minimum":1}}}},"503":{"description":"unavailable: result not confirmed; inspect leads before retrying creates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLead"}}}}}},"/events":{"get":{"operationId":"listEvents","summary":"List events, newest first","description":"List events, newest first within the key's organisation or Space. Requires events:read. Unknown, repeated or empty query parameters are rejected. Rate limit: 100 requests per minute per key.","security":[{"ApiKey":[]}],"x-required-scopes":["events:read"],"parameters":[{"name":"limit","in":"query","description":"Records per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"page","in":"query","description":"One-based page number.","schema":{"type":"integer","minimum":1,"maximum":10000,"default":1}},{"name":"event_id","in":"query","description":"Narrow to an event visible to this key; never widens organisation or Space access.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Event"}},"meta":{"type":"object","required":["page","per_page"],"properties":{"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":100}}}}}}}},"400":{"description":"validation: invalid input or event rules","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: missing or invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: missing permission or unavailable API entitlement","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: endpoint or scoped resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"method_not_allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: concurrent write rolled back","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"validation: body exceeds 32768 bytes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait for Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"integer","minimum":1}}}},"503":{"description":"unavailable: result not confirmed; inspect leads before retrying creates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/events/{id}/stats":{"get":{"operationId":"getEventStats","summary":"Get event totals and member count","description":"Get event totals and member count within the key's organisation or Space. Requires events:read. Unknown, repeated or empty query parameters are rejected. Rate limit: 100 requests per minute per key.","security":[{"ApiKey":[]}],"x-required-scopes":["events:read"],"parameters":[{"name":"id","in":"path","required":true,"description":"Resource UUID.","schema":{"type":"string","format":"uuid"}},{"name":"event_id","in":"query","description":"If supplied, must equal the path ID.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/EventStats"}}}}}},"400":{"description":"validation: invalid input or event rules","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: missing or invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: missing permission or unavailable API entitlement","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: endpoint or scoped resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"method_not_allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: concurrent write rolled back","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"validation: body exceeds 32768 bytes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait for Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"integer","minimum":1}}}},"503":{"description":"unavailable: result not confirmed; inspect leads before retrying creates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/leaderboard":{"get":{"operationId":"getLeaderboard","summary":"Rank current members by lead points","description":"Rank current members by lead points within the key's organisation or Space. Requires leaderboard:read. Unknown, repeated or empty query parameters are rejected. Rate limit: 100 requests per minute per key.","security":[{"ApiKey":[]}],"x-required-scopes":["leaderboard:read"],"parameters":[{"name":"limit","in":"query","description":"Records per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"page","in":"query","description":"One-based page number.","schema":{"type":"integer","minimum":1,"maximum":10000,"default":1}},{"name":"event_id","in":"query","description":"Narrow to an event visible to this key; never widens organisation or Space access.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LeaderboardEntry"}},"meta":{"type":"object","required":["page","per_page"],"properties":{"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":100}}}}}}}},"400":{"description":"validation: invalid input or event rules","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: missing or invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: missing permission or unavailable API entitlement","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: endpoint or scoped resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"method_not_allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: concurrent write rolled back","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"validation: body exceeds 32768 bytes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait for Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"integer","minimum":1}}}},"503":{"description":"unavailable: result not confirmed; inspect leads before retrying creates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/webhooks":{"get":{"operationId":"listWebhooks","summary":"List webhook configuration (organisation keys only)","description":"List webhook configuration (organisation keys only) within the key's organisation or Space. Requires webhooks:manage. Unknown, repeated or empty query parameters are rejected. Rate limit: 100 requests per minute per key.","security":[{"ApiKey":[]}],"x-required-scopes":["webhooks:manage"],"parameters":[{"name":"limit","in":"query","description":"Records per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"page","in":"query","description":"One-based page number.","schema":{"type":"integer","minimum":1,"maximum":10000,"default":1}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Webhook"}},"meta":{"type":"object","required":["page","per_page"],"properties":{"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":100}}}}}}}},"400":{"description":"validation: invalid input or event rules","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: missing or invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: missing permission or unavailable API entitlement","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: endpoint or scoped resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"method_not_allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: concurrent write rolled back","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"validation: body exceeds 32768 bytes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited: wait for Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"integer","minimum":1}}}},"503":{"description":"unavailable: result not confirmed; inspect leads before retrying creates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Lead":{"type":"object","required":["id","tenant_id","user_id","company_name","points"],"description":"Lead record within the key's scope. Additional database fields may be returned; consumers should tolerate them.","properties":{"id":{"type":"string","format":"uuid"},"tenant_id":{"type":"string","format":"uuid"},"space_id":{"type":["string","null"],"format":"uuid"},"event_id":{"type":["string","null"],"format":"uuid"},"user_id":{"type":"string","format":"uuid"},"company_name":{"type":"string"},"contact_first_name":{"type":["string","null"]},"contact_last_name":{"type":["string","null"]},"contact_email":{"type":["string","null"]},"contact_phone":{"type":["string","null"]},"notes":{"type":["string","null"]},"meeting_type":{"type":["string","null"]},"channel":{"type":["string","null"]},"temperature":{"type":["string","null"]},"status":{"type":"string"},"points":{"type":"integer"},"created_at":{"type":"string","format":"date-time"}},"additionalProperties":true},"Event":{"type":"object","required":["id","tenant_id","name","status","created_at"],"properties":{"id":{"type":"string","format":"uuid"},"tenant_id":{"type":"string","format":"uuid"},"space_id":{"type":["string","null"],"format":"uuid"},"name":{"type":"string"},"status":{"type":"string"},"event_date":{"type":["string","null"]},"sprint_start":{"type":["string","null"]},"sprint_end":{"type":["string","null"]},"event_type":{"type":"string"},"created_at":{"type":"string","format":"date-time"}}},"EventStats":{"type":"object","required":["event_id","event_name","total_leads","total_points","total_members"],"properties":{"event_id":{"type":"string","format":"uuid"},"event_name":{"type":"string"},"total_leads":{"type":"integer","minimum":0},"total_points":{"type":"integer"},"total_members":{"type":"integer","minimum":0}}},"LeaderboardEntry":{"type":"object","required":["user_id","display_name","total_points","role"],"properties":{"user_id":{"type":"string","format":"uuid"},"display_name":{"type":"string"},"team":{"type":["string","null"]},"total_points":{"type":"integer"},"role":{"type":"string"}}},"Webhook":{"type":"object","required":["id","url","events","is_active","created_at"],"properties":{"id":{"type":"string","format":"uuid"},"url":{"type":"string","format":"uri"},"events":{"type":"array","items":{"type":"string"}},"is_active":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"}}},"CreateLead":{"type":"object","additionalProperties":false,"required":["company_name","user_email","event_id"],"description":"Maximum 32768 bytes of UTF-8 JSON. The representative must be a current member with access to the active event. Never send points or tenant, Space or user IDs. No automatic retries after an unconfirmed write.","properties":{"company_name":{"type":"string","minLength":1,"maxLength":255},"contact_first_name":{"type":["string","null"],"maxLength":255},"contact_last_name":{"type":["string","null"],"maxLength":255},"contact_email":{"type":["string","null"],"maxLength":255},"contact_phone":{"type":["string","null"],"maxLength":50},"notes":{"type":["string","null"],"maxLength":10000},"meeting_type":{"type":["string","null"],"maxLength":255,"description":"Active event stage; defaults to outreach on creation."},"channel":{"type":["string","null"],"maxLength":255,"description":"Active event channel. Points are calculated by the server."},"status":{"type":["string","null"],"enum":["contacted","interested","qualified","demo_scheduled","closed",null],"description":"Defaults to contacted when absent or null on creation."},"temperature":{"type":["string","null"],"maxLength":255,"enum":["cold","warm","hot",null]},"contact_origin":{"type":["string","null"],"maxLength":255,"enum":["linkedin","contacts","connections","other",null]},"contact_reaction":{"type":["string","null"],"maxLength":255,"enum":["outreach","discovery","demo",null],"description":"Legacy compatibility field; prefer meeting_type and omit this field. If supplied, must match the server-derived outcome (outreach, discovery, demo or null)."},"phone_contact":{"type":["string","null"],"maxLength":255,"enum":["reached","not_reached",null],"description":"Required for phone-channel recalculation; not_reached requires an Outreach stage."},"user_email":{"type":"string","format":"email","maxLength":255},"event_id":{"type":"string","format":"uuid"},"lead_type":{"type":"string","enum":["phone","email","linkedin","meeting","other"],"description":"Prefer omission. If supplied, must match the channel-derived value: phone/email/linkedin for those channels, meeting when channel is absent, otherwise other. Null or a mismatch returns 400."}}},"UpdateLead":{"type":"object","minProperties":1,"additionalProperties":false,"properties":{"company_name":{"type":"string","minLength":1,"maxLength":255},"contact_first_name":{"type":["string","null"],"maxLength":255},"contact_last_name":{"type":["string","null"],"maxLength":255},"contact_email":{"type":["string","null"],"maxLength":255},"contact_phone":{"type":["string","null"],"maxLength":50},"notes":{"type":["string","null"],"maxLength":10000},"meeting_type":{"type":["string","null"],"maxLength":255,"description":"Active event stage; defaults to outreach on creation."},"channel":{"type":["string","null"],"maxLength":255,"description":"Active event channel. Points are calculated by the server."},"status":{"type":"string","enum":["contacted","interested","qualified","demo_scheduled","closed"],"description":"Lead status. Null is not accepted when updating."},"temperature":{"type":["string","null"],"maxLength":255,"enum":["cold","warm","hot",null]},"contact_origin":{"type":["string","null"],"maxLength":255,"enum":["linkedin","contacts","connections","other",null]},"contact_reaction":{"type":["string","null"],"maxLength":255,"enum":["outreach","discovery","demo",null],"description":"Legacy compatibility field; prefer meeting_type and omit this field. If supplied, must match the server-derived outcome (outreach, discovery, demo or null)."},"phone_contact":{"type":["string","null"],"maxLength":255,"enum":["reached","not_reached",null],"description":"Required for phone-channel recalculation; not_reached requires an Outreach stage."}},"description":"Maximum 32768 bytes. Partial update; representative, tenant, Event and Space cannot change. Notes-only edits preserve historical points."},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","resolution"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"documentation_url":{"type":"string","format":"uri"}}}}}},"securitySchemes":{"ApiKey":{"type":"http","scheme":"bearer","bearerFormat":"pgday_sk_*","description":"Scoped API key created in Settings. Required permissions appear in x-required-scopes and the scope catalog. These credentials are not OAuth tokens."}}}}