* Added CASE WHEN and COALESCE
* Added Order Test Seeds
Change-Id: Ia3f33c3d746ac6f64dfebe95b4e5d27fa63d67e7
Signed-off-by: smarcet <smarcet@gmail.com>
user ( when repository allows it ) now could query by subfields
on a child collection
like ie for presentation.actions :
?filter=actions==type_id==1&&is_completed==0
that will return all presentation with action type id = 1 incompleted
Change-Id: I2dadb59bf5ed4243d9b9247707744af213b666b5
Signed-off-by: smarcet <smarcet@gmail.com>
* changes on presentation serializer
added presentation.actions collection
Mark action as completed by current user
PUT /api/v1/summits/{id}/selection-plans/{selection_plan_id}/presentations/{presentation_id}/actions/{action_id}
required scopes
%s/summits/write
authz_groups
SuperAdmins,
Administrators,
TrackChairs,
TrackChairsAdmins,
Mark action as uncompleted by current user
DELETE /api/v1/summits/{id}/selection-plans/{selection_plan_id}/presentations/{presentation_id}/actions/{action_id}
required scopes
%s/summits/write
authz_groups
SuperAdmins,
Administrators,
TrackChairs,
TrackChairsAdmins,
Change-Id: I09a0443190a7ea713d76f9b79906fa6554fe2eff
Signed-off-by: smarcet <smarcet@gmail.com>
sign foundation
scopes
REAL_URL/members/write/me
PUT /api/v1/members/me/membership/foundation
resign foundation membetship
PUT /api/v1/members/me/membership/community
scopes
REAL_URL/members/write/me
Change-Id: Ib636cf5149cb8b0f633243726c58d3e9329c7234
Signed-off-by: smarcet <smarcet@gmail.com>
POST /api/v1/sponsored-projects
payload
name
description
is_active
scope
REALM_URL/sponsored-projects/write
GET /api/v1/sponsored-projects
scope
REALM_URL/sponsored-projects/read
PUT /api/v1/sponsored-projects/{id}
payload
name
description
is_active
scope
REALM_URL/sponsored-projects/write
GET /api/v1/sponsored-projects/{id}
scope
REALM_URL/sponsored-projects/read
PUBLIC
GET /api/public/v1/sponsored-projects/{slug}
DELETE /api/v1/sponsored-projects/{id}
scope
REALM_URL/sponsored-projects/write
POST /api/v1/sponsored-projects/{id}/sponsorship-types
payload
name
description
is_active
order
scope
REALM_URL/sponsored-projects/write
GET /api/v1/sponsored-projects/{id}/sponsorship-types
scope
REALM_URL/sponsored-projects/read
GET /api/v1/sponsored-projects/{id}/sponsorship-types/{id}
scope
REALM_URL/sponsored-projects/read
DELETE /api/v1/sponsored-projects/{id}/sponsorship-types/{id}
scope
REALM_URL/sponsored-projects/write
PUT /api/v1/sponsored-projects/{id}/sponsorship-types/{id}
payload
name
description
is_active
order
scope
REALM_URL/sponsored-projects/write
PUT /api/v1/sponsored-projects/{id}/sponsorship-types/{id}/supporting-companies/{id}
payload
order (optional)
scope
REALM_URL/sponsored-projects/write
DELETE /api/v1/sponsored-projects/{id}/sponsorship-types/{id}/supporting-companies/{id}
scope
REALM_URL/sponsored-projects/write
GET /api/v1/sponsored-projects/{id}/sponsorship-types/{id}/supporting-companies
scope
REALM_URL/sponsored-projects/read
Change-Id: I9c0b1bb457a1c583afd284f56f2aced5deceaa02
Signed-off-by: smarcet <smarcet@gmail.com>
new endpoints for uploads
POST api/public/v1/files/upload
Change-Id: If35c616eb243bf5ec66205fb630fe30ce4dad647
Signed-off-by: smarcet <smarcet@gmail.com>
added new endpoints
PUT /api/v1/summits/{id}/metrics/enter
required scopes
%s/me/summits/metrics/write
s/me/summits/events/enter
POST /api/v1/summits/{id}/metrics/leave
payload
type (string:in[GENERAL,LOBBY,EVENT,SPONSOR])
source_id (int[event id or sponsor id])
required scopes
%s/me/summits/events/leave
%s/me/summits/metrics/write
Change-Id: I46babe9d92832da02fe175f0d6cbcfd26bb037ad
Signed-off-by: smarcet <smarcet@gmail.com>
Minimal data required
title ( text )
abstract (text )
type_id (int) or type (string type name)
track_id (int) or track ( string track name)
Optional fields
social_summary ( text )
attendees_expected_learnt ( text ) * provided only if event is presentation type
location (id or name)
level (text possible values [N/A, Beginner, Intermediate, Advanced]) * provided only if event is presentation type
allow_feedback (int possible values [0,1])
to_record (int possible values [0,1])
tags ( repetitive group: values | delimited)
sponsors ( repetitive group : names | delimited )
speakers ( repetitive group: emails | delimited )
start_date (mandatory if is_published is 1) Y-m-d H:i:s format ( summit time zone )
end_date (mandatory if is_published is 1) Y-m-d H:i:s format ( summit time zone )
is_published (int possible values [0,1]) , if this field is set 1 start_date and end_date are mandatories
selection_plan (string selection plan name) * provided only if event is presentation type
attendees_expected_learnt ( text , only presentations)
problem_addressed ( text , only presentations)
added endpoint
POST /api/v1/summits/{summit_id}/events/csv
multipart/form-data
* Expected params
file
send_speaker_email
Change-Id: I245d4e1a22e2c5e3c4120c559d0ecb4a5a021c78
Signed-off-by: smarcet <smarcet@gmail.com>
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>
create shareable calendar ICS feed
POST api/v1/summits/{id}/members/{member_id}/schedule/shareable-link
revoke current calendar ICS feed
DELETE api/v1/summits/{id}/members/{member_id}/schedule/shareable-link
Get ICS public feed
GET api/public/v1/summits/{id}/members/all/schedule/ics/{cid}
Change-Id: I46c42cbfd86896bbf8e23ba659b4d03abf74b90d
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