new endpoints for uploads
POST api/public/v1/files/upload
Change-Id: If35c616eb243bf5ec66205fb630fe30ce4dad647
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>
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
* added emails
* updated model to store client token from gateway
* updated model to store amount refund
Change-Id: Ibeebab8f1209ee9763186293746fe44f8ffe0466
* model changes
* Endpoint to get all avaible booking rooms per summit
GET /api/v1/summits/{id}/locations/bookable-rooms
query string params
page ( int ) current page number
per_page ( int) max amount of items per page
filter ( allowed fields: name, description, cost, capacity, availability_day[epoch], attribute[string|number])
order ( allowed fields id,name,capacity)
expand ( allowed relations venue,floor,attribute_type)
scopes
%s/bookable-rooms/read
%s/summits/read/all
* Endpoint to get slot availability per room
GET /api/v1/summits/{id}/locations/bookable-rooms/{room_id}/availability/{day}
where id is summit id (integer)
room_id ( integer)
and day (epoch timestamp)
scopes
%s/bookable-rooms/read
%s/summits/read/all
* endpoint create reservation
POST /api/v1/summits/{id}/locations/bookable-rooms/{room_id}/reservations
payload
'currency' => 'required|string|currency_iso',
'amount' => 'required|integer',
'start_datetime' => 'required|date_format:U',
'end_datetime' => 'required|date_format:U|after:start_datetime',
scopes
%s/bookable-rooms/my-reservations/write
* endpoint to get all my reservations
GET /api/v1/summits/{id}/locations/bookable-rooms/all/reservations/me
query string params
expand [owner, room, type]
scopes
%s/bookable-rooms/my-reservations/read
* endpoint to cancel/ask for refund a reservation
DELETE /api/v1/summits/{id}/locations/bookable-rooms/all/reservations/{reservation_id}
scopes
%s/bookable-rooms/my-reservations/write
Change-Id: I741878c6ffc833ba23fca40f09f4664b42c8edd4
* Migrated from eloquent to doctrine ORM
* Added public endpoints (rate limited)
exposing marketplace api
Change-Id: Ib60ad6c45e3e41afd66c9c7a1a667a50f947aaa5
Allows to synchronize member
summit schedule with an enternal
calendar provider:
* Outlook
* iCloud
* Google
the solution is composed of 2 services
* member actions processor ( process actions like:
create calendar, add event, remove event, remove calendar)
* admin actions processsor ( process actions like:
update event, delete event, update location, delete location)
Change-Id: Ib8681bd2ea3b66b114fb676b4fa25fc15c65b46c
Added Teams API to create, delete and update chat teams.
create , accept and decline team invitations.
post and list team messages (push notifications)
Change-Id: I2d8784e1a505c1988cb5c1b3d7011f943306c7c7
Added several static entities to L2 doctrine
cache ( summit_types, event_types, presentation_categories)
also improved some queries.
Change-Id: Ic7d6ddcb9f2f7d9497fc3c0a0e653b94d721b736
* added to api cache response get published
event and event feedback response.
* updated cache middleware to allow cache lifetime to
be configurable.
Change-Id: I9dccb7b27e83cffed6f5ae2fb60623ab9bad9f24
in order to improve query performance
added L2 cache configuration to some
queries and classes.
also updated doctrine version.
Change-Id: I86ac24b65a28919de411b024c7ad175747630f6e
upgraded laravel version from 5.0 to 5.2.
Changed ORM from eloquent to Doctrine to support better inheritance handling
basically eloquent does not suppor the inheritance model used by Silverstripe
which makes dificult to implement write apis on model hierarchies defined with
SS schema.
Refactoring.
Change-Id: I802e171c8b95e81dc21578543ddb6a02003985e5
added 2 new endpoints
* /api/v1/summits/{id}/external-orders/{external_order_id}
to read external orders ( from eventbrite api)
* /api/v1/summits/{id}/external-orders/{external_order_id}/external-attendees/{external_attendee_id}/confirm
to confirm, and become an attendee
Change-Id: I1de5cf51fffdb45a9220190f412b3a121377b023