Doc
https://docs.google.com/document/d/1gOAceevwutF3QHYWD0_6aESQMZEiIz3YVBVXlyUuRy8
* Summit Registration External Feed
https://docs.google.com/document/d/1_2QZUK--A350jxh2USKBtVtisKrrcUcVjdKnbcZ7-4M/edit#
* Multi Stripe Config
* Added stripe payment configuration per summit
* Added webhook automatic creation
* Added CRUD endpoints for payment profiles per summit
GET api/v1/summits/{id}/payment-gateway-profiles
filters
active ['==']
application_type ['=@', '==']
scopes
summits/read/all
summits/payment-gateway-profiles/read
POST api/v1/summits/{id}/payment-gateway-profiles
payload
'active' => 'sometimes|boolean',
'application_type' => 'sometimes|string|in:Registration,BookableRooms'
'provider' => 'required|string|in:Stripe',
'test_mode_enabled' => 'required|boolean',
'live_secret_key' => 'sometimes|string',
'live_publishable_key' => 'required_with:live_secret_key|string',
'test_secret_key' => 'sometimes|string',
'test_publishable_key' => 'required_with:test_secret_key|string'
scopes
summits/write
summits/payment-gateway-profiles/write
GET api/v1/summits/{id}/payment-gateway-profiles/{payment_profile_id}
scopes
summits/read/all
summits/payment-gateway-profiles/read
PUT api/v1/summits/{id}/payment-gateway-profiles/{payment_profile_id}
payload
'active' => 'sometimes|boolean',
'application_type' => 'sometimes|string|in:Registration,BookableRooms'
'provider' => 'required|string|in:Stripe',
'test_mode_enabled' => 'required|boolean',
'live_secret_key' => 'sometimes|string',
'live_publishable_key' => 'required_with:live_secret_key|string',
'test_secret_key' => 'sometimes|string',
'test_publishable_key' => 'required_with:test_secret_key|string'
scopes
summits/payment-gateway-profiles/write
summits/write
DELETE api/v1/summits/{id}/payment-gateway-profiles/{payment_profile_id}
scopes
summits/payment-gateway-profiles/write
summits/write
Stripe Webhooks
default webhook
(SECRET set per application under .env, should be created previously on stripe default account)
POST api/public/v1/summits/all/payments/{application_name}/confirm
where application_name could be Registration or BookableRooms
otherwise if a stripe account is set per summit, when the profile gets activated
a webhook will be automatically be created using following url
POST api/public/v1/summits/{id}/payments/{application_name}/confirm
* Email API Integration
* moved all blade templates to mail api ( DB Seeding)
* defined email events flows per summmit
* created endpoint to set up templates per email events on each flow
PUT /api/v1/summits/{id}/email-flows-events/{event_id}
payload
email_template_identifier: string
* added endpoint to get all email events per summit
GET /api/v1/summits/{id}/email-flows-events
* added endpoint to get email event per summit/id
GET /api/v1/summits/{id}/email-flows-events/{event_id}
Summit Documents endpoints
add summit document
POST /api/v1/summits/{id}/summit-documents
payload
file (mandatory|file stream)
label ( mandatory|string)
name ( mandatory|string)
description (optional|string)
get all summit documents
GET /api/v1/summits/{id}/summit-documents
get by id
GET /api/v1/summits/{id}/summit-documents/{document_id}
update
PUT GET /api/v1/summits/{id}/summit-documents/{document_id}
file (optional|file stream)
label (optional|string)
name (optional|string)
description (optional|string)
delete
DELETE GET /api/v1/summits/{id}/summit-documents/{document_id}
add event type to doc
PUT /api/v1/summits/{id}/summit-documents/{document_id}/event-types/{event_type_id}
delete event type from doc
DELETE /api/v1/summits/{id}/summit-documents/{document_id}/event-types/{event_type_id}
add document to event type
PUT /api/v1/summits/{id}/event-types/{event_type_id}/summit-documents/{document_id}
delete document from event type
DELETE /api/v1/summits/{id}/event-types/{event_type_id}/summit-documents/{document_id}
Updated Summit events to support streaming url, meeting_url and etherpad link
* Summit Registration - Invite only
Summit Administrator Permission Groups
GET /api/v1/summit-administrator-groups
filter
* title
* member_first_name
* member_last_name
* member_full_name
* member_email
* summit_id
* member_id
ordering
id
title
scopes
%s/summit-administrator-groups/read
/api/v1/summit-administrator-groups/{group_id}
scopes
%s/summit-administrator-groups/read
POST /api/v1/summit-administrator-groups
title
summits
members
scopes
%s/summit-administrator-groups/write
PUT /api/v1/summit-administrator-groups/{group_id}
title
summits
members
scopes
%s/summit-administrator-groups/write
DELETE /api/v1/summit-administrator-groups/{group_id}
scopes
%s/summit-administrator-groups/write
PUT /api/v1/summit-administrator-groups/{group_id}/members/{member_id}
DELETE /api/v1/summit-administrator-groups/{group_id}/members/{member_id}
PUT /api/v1/summit-administrator-groups/{group_id}/summits/{summit_id}
DELETE /api/v1/summit-administrator-groups/{group_id}/summits/{summit_id}
Room Metrics
PUT /api/v1/summits/{id}/members/{member_id}/schedule/{event_id}/enter
Scopes
%s/me/summits/events/enter
PUT /api/v1/summits/{id}/members/{member_id}/schedule/{event_id}/leave
%s/me/summits/events/leave
update summit_event serializer
new fields
total_attendance_count
current_attendance_count
attendance
current_attendance
Added new Speakers Endpoints
GET /api/v1/summits/{id}/speakers/on-schedule
retrieves all speakers on summit schedule
filters
'first_name' => ['=@', '=='],
'last_name' => ['=@', '=='],
'email' => ['=@', '=='],
'id' => ['=='],
'full_name' => ['=@', '=='],
'start_date' => ['>', '<', '<=', '>=', '=='],
'end_date' => ['>', '<', '<=', '>=', '=='],
Summit Events Image
POST /api/v1/summits/{id}/events/{event_id}/image
DELETE /api/v1/summits/{id}/events/{event_id}/image
Speakers Image Big Pic
POST /api/v1/speakers/{speaker_id}/big-photo
DELETE /api/v1/speakers/{speaker_id}/big-photo
CFP - multiple summits
Presentation Materials - Media Uploads
New Endpoints
GET api/v1/summit-media-file-types
filter
'name' => ['=@', '==']
order
id, name
POST api/v1/summit-media-file-types
payload
'name' => 'required|string|max:255',
'description' => 'sometimes|string|max:255',
'allowed_extensions' => 'required|string_array',
GET api/v1/summit-media-file-types/{id}
PUT api/v1/summit-media-file-types/{id}
payload
'name' => 'sometimes|string|max:255',
'description' => 'sometimes|string|max:255',
'allowed_extensions' => 'required|string_array',
DELETE api/v1/summit-media-file-types/{id}
GET api/v1/summits/{id}/media-upload-types
POST
payload
'name' => 'required|string|max:255',
'description' => 'sometimes|string|max:255',
'is_mandatory' => 'required|boolean',
'max_size' => 'required|int|megabyte_aligned',
'private_storage_type' => 'required|string|in:None,DropBox,Swift,Local',
'public_storage_type' => 'required|string|in:None,DropBox,Swift,Local'
'type_id' => 'required|int',
'presentation_types' => 'sometimes|int_array',
GET api/v1/summits/{id}/media-upload-types/{media_upload_type_id}
PUT api/v1/summits/{id}/media-upload-types/{media_upload_type_id}
payload
'name' => 'sometimes|string|max:255',
'description' => 'sometimes|string|max:255',
'is_mandatory' => 'sometimes|boolean',
'max_size' => 'sometimes|int|megabyte_aligned',
'private_storage_type' => 'sometimes|string|in:None,DropBox,Swift,Local',
'public_storage_type' => 'sometimes|string|in:None,DropBox,Swift,Local'
'type_id' => 'sometimes|int',
'presentation_types' => 'sometimes|int_array',
DELETE api/v1/summits/{id}/media-upload-types/{media_upload_type_id}
PUT api/v1/summits/{id}/media-upload-types/{media_upload_type_id}/presentation-types/{event_type_id}
DELETE api/v1/summits/{id}/media-upload-types/{media_upload_type_id}/presentation-types/{event_type_id}
GET api/v1/summits/{id}/presentations/{presentation_id}/media-uploads
POST api/v1/summits/{id}/presentations/{presentation_id}/media-uploads
payload multiform
file
media_upload_type_id
GET api/v1/summits/{id}/presentations/{presentation_id}/media-uploads/{media_upload_id}
PUT api/v1/summits/{id}/presentations/{presentation_id}/media-uploads/{media_upload_id}
payload multiform
file
DELETE api/v1/summits/{id}/presentations/{presentation_id}/media-uploads/{media_upload_id}
POST /api/v1/summits/{id}/media-upload-types/all/clone/{to_summit_id}
Summit Invitation Only endpoints V2
CRUD invitations
Change-Id: Ia23c247a59c3810f2a738265efdd890fe6f59dfb
Signed-off-by: smarcet <smarcet@gmail.com>
POST /api/v1/summits/{id}/events/{event_id}/published/mail
Paylaod
from : required|email
to:required|email
event_uri: optional|url
if not set tries to referer or summit.default_event_detail_url
Required Scopes
$REALM_URL/me/summits/events/schedule/mai
Change-Id: If5d5cfee902f58d3517a79cf333df7174b247208
Signed-off-by: smarcet <smarcet@gmail.com>
POST api/v1/summits/{id}/members/me/schedule/{event_id}/rsvp
Payload
anwers: array of answer DTO
answer DTO
question_id: int
value: string or string array ( depending on type of question multivalue or not)
Required Scopes
REALM_BASE_URL/summits/write
PUT api/v1/summits/{id}/members/me/schedule/{event_id}/rsvp
Payload
anwers: array of answer DTO
answer DTO
question_id: int
value: string or string array ( depending on type of question multivalue or not)
Required Scopes
REALM_BASE_URL/summits/write
DELETE api/v1/summits/{id}/members/me/schedule/{event_id}/rsvp
Required Scopes
REALM_BASE_URL/summits/write
Change-Id: I9ea4388effd44617e5122e1b1a23c9c74473d2e6
* added emails
* updated model to store client token from gateway
* updated model to store amount refund
Change-Id: Ibeebab8f1209ee9763186293746fe44f8ffe0466
* added tags per allowed track
* updated presentation progress
* added presentation progress on presentation serializer
* added new endpoint to mark presentation as completed
PUT /api/v1/summits/{id}/presentations/{presentation_id}/completed
Change-Id: I23ec05341f74498312f074236b691dd6473700b1
seed allowed tag on all summit tracks
POST /api/v1/summits/{id}/track-tag-groups/all/allowed-tags/{tag_id}/seed-on-tracks
scopes
%s/summits/write
%s/tracks/write
seed tag track group allowed tags on particular track
POST /api/v1/summits/{id}/track-tag-groups/{track_tag_group_id}/allowed-tags/all/copy/tracks/{track_id}
scopes
%s/summits/write
%s/tracks/write
Change-Id: Ib0d58f5e34de54c86ad5377fb1a20657c246f908
* get track tag groups per summit
GET /api/v1/summits/{id}/track-tag-groups
params
expand: allowed_tags,tag
scopes %s/summits/read/all
* get track tag group by id
GET /api/v1/summits/{id}/track-tag-groups/{track_tag_group_id}
params
expand: allowed_tags,tag
scopes %s/summits/read/all
* seed default track tag groups on summit
PUT /api/v1/summits/{id}/track-tag-groups/seed-defaults
scopes
%s/summits/write
%s/track-tag-groups/write
* add track tag groups
POST /api/v1/summits/{id}/track-tag-groups
payload
'name' => 'required|string|max:50',
'label' => 'required|string|max:50',
'is_mandatory' => 'required|boolean',
'allowed_tags' => 'sometimes|string_array'
scopes
%s/summits/write
%s/track-tag-groups/write
* update track tag group
PUT /api/v1/summits/{id}/track-tag-groups/{track_tag_group_id}
payload
'name' => 'sometimes|string|max:50',
'label' => 'sometimes|string|max:50',
'is_mandatory' => 'sometimes|boolean',
'order' => 'sometimes|integer|min:1',
'allowed_tags' => 'sometimes|string_array',
scopes
%s/summits/write
%s/track-tag-groups/write
* delete track tag group by id
DELETE /api/v1/summits/{id}/track-tag-groups/{track_tag_group_id}
scopes
%s/summits/write
%s/track-tag-groups/write
Change-Id: Ieef974863c19b41655888cbbd8e29215f4724127
POST /api/v1/summits/{id}/rsvp-templates
Payload
* title (required|string|max:255)
* is_enabled (required|boolean)
PUT /api/v1/summits/{id}/rsvp-templates/{template_id}
Payload
* title (sometimes|string|max:255)
* is_enabled (sometimes|boolean)
Change-Id: I8d379bd796382ec75fef238ad2e2b9681d51e909
as long as endpoint to manage child collections
(associated tracks and allowed groups)
POST /api/v1/summits/{id}/track-groups
Payload
* class_name (PresentationCategoryGroup|PrivatePresentationCategoryGroup)
* name (required|string)
* description (sometimes|string)
* color (sometimes|hex_color)
Payload for private groups ( optional if class_name == 'PrivatePresentationCategoryGroup'
* submission_begin_date (sometimes|date_format:U)
* submission_end_date (sometimes|date_format:U|required_with:submission_begin_date|after:submission_begin_date)
* max_submission_allowed_per_user (sometimes|integer|min:1)
endpoints to manage tracks
PUT /api/v1/summits/{id}/track-groups/{track_group_id}/tracks/{track_id}
DELETE /api/v1/summits/{id}/track-groups/{track_group_id}/tracks/{track_id}
endpoints to manage allowed groups (only PrivatePresentationCategoryGroup)
PUT /api/v1/summits/{id}/track-groups/{track_group_id}/allowed-groups/{group_id}
DELETE /api/v1/summits/{id}/track-groups/{track_group_id}/allowed-groups/{group_id}
Change-Id: Icf97c9b014609b71d1668faa654a51044d5bb3ec
POST /api/v1/summits/{id}/locations/{location_id}/images
Content Type multipart/form-data'
* file (required)
* name (required|string|max:255)
* description (required|string)
PUT /api/v1/summits/{id}/locations/{location_id}/images/{image_id}
Content Type multipart/form-data'
* file (sometimes)
* name (sometimes|string|max:255)
* description (sometimes|string)
* order (sometimes|integer|ming:1)
GET /api/v1/summits/{id}/locations/{location_id}/images/{image_id}
DELETE /api/v1/summits/{id}/locations/{location_id}/images/{image_id}
Change-Id: I71d0b234d267aed0791dfafa0c91e842f5064aca
PUT /api/v1/summits/{id}/locations/{location_id}/maps/{map_id}
Content Type multipart/form-data'
* file (sometimes)
* name (sometimes|string|max:255)
* description (sometimes|string)
GET /api/v1/summits/{id}/locations/{location_id}/maps/{map_id}
Change-Id: I00d28aae722ba7416317c561b2e42140908d73b5