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>
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>
Endpoints autodiscovery
GET .well-known/endpoints
get speakers by summit
GET api/public/v1/summits/{id}/speakers
get speaker by id by summit
GET api/public/v1/summits/{id}/speakers/{speaker_id}
Change-Id: Id735692693097a62e87dc178423711e1736100d5
Signed-off-by: smarcet <smarcet@gmail.com>
added new parsing logic for query attribute
so if user wants to expand the fields of a
relations ( many 2 one, one 2 one , and so)
it should add . to the name of the relation like
?expand=location,location.venue
that will expand the location venue.
Change-Id: I6c50d10e793f017da9146dbce5c5e86a631d9224
* 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 following endpoints
** add to my favorites
** remove from my favorites
** get my favorites
Change-Id: I6a9ecc82f771f227f7bd28be9cab344a903381bc
Added several static entities to L2 doctrine
cache ( summit_types, event_types, presentation_categories)
also improved some queries.
Change-Id: Ic7d6ddcb9f2f7d9497fc3c0a0e653b94d721b736
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