{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"Notification SIGPAS v1 — CloudEvents 1.0","type":"object","required":["specversion","id","source","type","subject","time","datacontenttype","dataschema","data"],"properties":{"specversion":{"const":"1.0"},"id":{"type":"string","pattern":"^[a-f0-9]{32}$"},"source":{"type":"string","format":"uri"},"type":{"type":"string","enum":["members.created","members.updated","members.deleted","registrations.created","registrations.updated","registrations.validated","registrations.rejected","registrations.cancelled","groups.created","groups.updated","groups.deleted","events.created","events.updated","events.deleted","attendance.present_recorded","attendance.absent_recorded","attendance.excused_recorded","attendance.cleared","payments.created","payments.updated","payments.deleted","documents.created","documents.updated","documents.deleted","medical.submitted","medical.validated","medical.rejected","staff_hours.month_submitted"]},"subject":{"type":"string"},"time":{"type":"string","format":"date-time"},"datacontenttype":{"const":"application/json"},"dataschema":{"type":"string","format":"uri"},"data":{"type":"object","required":["resource","context","links"],"properties":{"resource":{"type":"object","required":["type","id","url","required_scopes","deleted"],"properties":{"url":{"type":"string","format":"uri"},"required_scopes":{"type":"array","items":{"type":"string"}},"type":{"type":"string"},"id":{"type":"string"},"deleted":{"type":"boolean"}}},"context":{"type":"object","description":"Références au moment du changement. Présence : member_id, course_type, course_id, date, presence. Heures : member_id, year, month. Pièce adhérent : member_id, field_id. Inscription : member_id et group_id ou event_id.","properties":{"member_id":{"type":["integer","null"]},"group_id":{"type":["integer","null"]},"event_id":{"type":["integer","null"]},"season_id":{"type":["integer","null"]},"field_id":{"type":"integer"},"course_id":{"type":"integer"},"course_type":{"enum":["lesson","slot","event"]},"date":{"type":["string","null"],"format":"date"},"presence":{"enum":["present","absent","excused",null]},"year":{"type":"integer"},"month":{"type":"integer","minimum":1,"maximum":12},"kind":{"type":"string"}}},"links":{"type":"object","additionalProperties":{"type":"object","required":["url","required_scopes"],"properties":{"url":{"type":"string","format":"uri"},"required_scopes":{"type":"array","items":{"type":"string"}}}},"description":"Liens facultatifs ; chaque lien indique ses autorisations supplémentaires."}}}}}