Commit Graph

51 Commits

Author SHA1 Message Date
Clark Boylan 7ae2662876 Retire this project
The upstream for this project has moved to github. Retire the opendev
repo to avoid any confusion.

Depends-On: https://review.opendev.org/c/openstack/project-config/+/818170
Change-Id: I0e7f14701a75c4cceb76c80d2584534ddbd45f58
2021-11-16 14:44:10 -08:00
smarcet 1e1650f213 Fixes on track chairs
Change-Id: I6b2f32a2a02e13384918ca3cf65d369048200489
Signed-off-by: smarcet <smarcet@gmail.com>
2021-04-23 13:06:50 -03:00
smarcet 3983531390 Updated Summit Event
added fields

* updated_by_id
* created_by_id

added resource context facade binded to singleton
instance

Change-Id: I0b6a467f581e93648f70fdd7b6f982809e13cd01
Signed-off-by: smarcet <smarcet@gmail.com>
2021-04-06 10:15:44 -03:00
smarcet dc6cfc296a Track chairs endpoints
** Get all presentations from selection Plan

GET /api/v1/summits/{id}/selection-plans/{selection_plan_id}/presentations

filtering

'title'            => ['=@', '=='],
'abstract'         => ['=@', '=='],
'social_summary'   => ['=@', '=='],
'tags'             => ['=@', '=='],
'level'            => ['=@', '=='],
'summit_type_id'   => ['=='],
'event_type_id'    => ['=='],
'track_id'         => ['=='],
'speaker_id'       => ['=='],
'speaker'          => ['=@', '=='],
'speaker_email'    => ['=@', '=='],
'selection_status' => ['=='],
'id'               => ['=='],
'selection_plan_id' => ['=='],
'status'     => ['=='],
'is_chair_visible' => ['=='],
'is_voting_visible' => ['=='],

** for track chairs app use   'filter' => 'status==Received,is_chair_visible==1',

ordering

track

Scopes

REALM_BASE_URL/summits/read

AUTHZ

super-admins
administrators
track-chairs
track-chairs-admins

** Get individual Selection List

GET /api/v1/summits/{id}/tracks/{track_id}/selection-lists/individual/owner/{owner_id}

Scopes

REALM_BASE_URL/summits/read

AUTHZ

super-admins
administrators
track-chairs
track-chairs-admins

** Add to my individual Selection List

POST /api/v1/summits/{id}/tracks/{track_id}/selection-lists/individual/presentation-selections/{collection}/presentations/{presentation_id}

where {collection} should be one of following:
* selected
* maybe
* pass

Scopes

REALM_BASE_URL/summits/write

AUTHZ

super-admins
administrators
track-chairs
track-chairs-admins

** Remove From my individual selection list

DELETE /api/v1/summits/{id}/tracks/{track_id}/selection-lists/individual/presentation-selections/{collection}/presentations/{presentation_id}

where {collection} should be one of following:
* selected
* maybe
* pass

Scopes

REALM_BASE_URL/summits/write

AUTHZ

super-admins
administrators
track-chairs
track-chairs-admins

** Get Team Selection List

GET /api/v1/summits/{id}/tracks/{track_id}/selection-lists/team

Scopes

REALM_BASE_URL/summits/read

AUTHZ

super-admins
administrators
track-chairs
track-chairs-admins

** Create team selection list

POST /api/v1/summits/{id}/tracks/{track_id}/selection-lists/team

Scopes

REALM_BASE_URL/summits/write

AUTHZ

super-admins
administrators
track-chairs
track-chairs-admins

** Reorder list

PUT /api/v1/summits/{id}/tracks/{track_id}/selection-lists/{list_id}/reorder

payload

hash => 'required|string'
collection => 'required|string|in:selected,maybe'
presentations => 'required|int_array' ( presentations ids)

Scopes

REALM_BASE_URL/summits/write

AUTHZ

super-admins
administrators
track-chairs
track-chairs-admins

** Get track chairs per Summit

GET /api/v1/summits/{id}/track-chairs

fitering

'member_first_name' => ['=@', '=='],
'member_last_name' => ['=@', '=='],
'member_full_name' => ['=@', '=='],
'member_email' => ['=@', '=='],
'member_id' => ['=='],
'track_id' => ['=='],
'summit_id' => ['==']

Scopes

REALM_BASE_URL/summits/read

AUTHZ

super-admins
administrators
track-chairs
track-chairs-admins

** Mark Presentation as viewed

PUT /api/v1/summits/{id}/selection-plans/{selection_plan_id}/presentations/{presentation_id}/view

Scopes

REALM_BASE_URL/summits/write

AUTHZ

super-admins
administrators
track-chairs
track-chairs-admins

** Add Presentation Comment

POST /api/v1/summits/{id}/selection-plans/{selection_plan_id}/presentations/{presentation_id}/comments

Payload

'body' => 'required|string',
'is_public' => 'required|boolean',

Scopes

REALM_BASE_URL/summits/write

AUTHZ

super-admins
administrators
track-chairs
track-chairs-admins

** Get all Presention Category Change Request

GET /api/v1/summits/{id}/selection-plans/{selection_plan_id}/presentations/all/category-change-requests

filtering

'selection_plan_id' => ['=='],
'summit_id' => ['=='],
'new_category_id' => ['=='],
'old_category_id' => ['=='],
'new_category_title' => ['=@', '=='],
'old_category_title' => ['=@', '=='],
'requester_fullname' => ['=@', '=='],
'requester_email' => ['=@', '=='],
'aprover_fullname' => ['=@', '=='],
'aprover_email' => ['=@', '==']

ordering

'id',
'approval_date',
'status'

Scopes

REALM_BASE_URL/summits/read
REALM_BASE_URL/summits/read/all

AUTHZ

super-admins
administrators
track-chairs
track-chairs-admins

** Add Presentation Category change Request

POST /api/v1/summits/{id}/selection-plans/{selection_plan_id}/presentations/{presentation_id}/category-change-requests

payload

'new_category_id' => 'required|integer',

Scopes

REALM_BASE_URL/summits/write

AUTHZ

super-admins
administrators
track-chairs
track-chairs-admins

** Resolve Presentation Category change Request

PUT /api/v1/summits/{id}/selection-plans/{selection_plan_id}/presentations/{presentation_id}/category-change-requests/{category_change_request_id}

payload

'approved' => 'required|bool',
'reason' => 'sometimes|string',

Scopes

REALM_BASE_URL/summits/write

AUTHZ

super-admins
administrators
track-chairs
track-chairs-admins

** Add track chair

POST /api/v1/summits/{id}/track-chairs

Payload

'member_id'   => 'required|int',
'categories' => 'required|int_array',

scopes

REALM_BASE_URL/summits/write

AUTHZ

super-admins
administrators
track-chairs-admins

** Update track chair

PUT /api/v1/summits/{id}/track-chairs/{track_chair_id}

Payload

'categories' => 'required|int_array',

scopes

REALM_BASE_URL/summits/write

AUTHZ

super-admins
administrators
track-chairs-admins

** Delete track chairs

DELETE /api/v1/summits/{id}/track-chairs/{track_chair_id}

scopes

REALM_BASE_URL/summits/write

AUTHZ

super-admins
administrators
track-chairs-admins

** Get Track Chair by Id

GET /api/v1/summits/{id}/track-chairs/{track_chair_id}

scopes

REALM_BASE_URL/summits/read

AUTHZ

super-admins
administrators
track-chairs-admins

Change-Id: Iab0d77a6337a0db27c649dcafb1d90f09923df8a
Signed-off-by: smarcet <smarcet@gmail.com>
2021-02-19 13:54:28 -03:00
smarcet 9ed56892ad Updated slides upload process
added chunked files

Change-Id: I8e69f7a8f7d4355898eb2f7578111a1d334fd353
Signed-off-by: smarcet <smarcet@gmail.com>
2020-11-30 23:30:01 -03:00
smarcet 82a369f9b3 Added S3 file system to media uploads
remove drop box as public storage

Change-Id: I9c07fe0d3fa56f302fc5ea50686d10ee768e5a9a
Signed-off-by: smarcet <smarcet@gmail.com>
2020-11-16 11:15:33 -03:00
smarcet 7ab410d2e5 Fixed type missmatch
Change-Id: I49e40d24d75f5a380423c28f7590e47cfd36390d
Signed-off-by: smarcet <smarcet@gmail.com>
2020-10-27 18:31:12 -03:00
smarcet ff52e8047e File Upload - Chunk Support
new endpoints for uploads

POST api/public/v1/files/upload

Change-Id: If35c616eb243bf5ec66205fb630fe30ce4dad647
Signed-off-by: smarcet <smarcet@gmail.com>
2020-10-23 15:25:50 -03:00
smarcet 1fb4480c90 Updated CORS middleware
Change-Id: Icedcd22e6e73d304583e682647931f85b761a7f8
Signed-off-by: smarcet <smarcet@gmail.com>
2020-10-19 21:35:30 -03:00
smarcet 8b7e68d3bd Mux export integration
Create command summit:presentation-materials-mux-assets {summit_id} {mounting_folder?} {event_id?}

Change-Id: If1ac9b315ea7ede64109e21d0c9dd0468b6c7e2c
Signed-off-by: smarcet <smarcet@gmail.com>
2020-10-13 12:35:52 -03:00
smarcet 3cd4efefba Import Session data through CSV file
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>
2020-09-25 16:06:42 -03:00
smarcet 7a6716ec26 Fix on config
Change-Id: I4cd9e345bb98656a5eaf1914bcca2192a885ebcb
Signed-off-by: smarcet <smarcet@gmail.com>
2020-09-21 15:54:48 -03:00
smarcet 39e3c8e333 * Summit Registration Model/Endpoints
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>
2020-09-21 09:52:07 -03:00
smarcet f60602745c Added get shareable ICS my summit schedule
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
2020-02-14 15:43:57 -03:00
smarcet b4d9655025 Added new Summit fields
'schedule_default_page_url'          => 'nullable|string',
'schedule_default_event_detail_url'  => 'nullable|string',
'schedule_og_site_name'              => 'nullable|string',
'schedule_og_image_url'              => 'nullable|string',
'schedule_og_image_secure_url'       => 'nullable|string',
'schedule_og_image_width'            => 'nullable|integer',
'schedule_og_image_height'           => 'nullable|integer',
'schedule_facebook_app_id'           => 'nullable|string',
'schedule_ios_app_name'              => 'nullable|string',
'schedule_ios_app_store_id'          => 'nullable|string',
'schedule_ios_app_custom_schema'     => 'nullable|string',
'schedule_android_app_name'          => 'nullable|string',
'schedule_android_app_package'       => 'nullable|string',
'schedule_android_custom_schema'     => 'nullable|string',
'schedule_twitter_app_name'          => 'nullable|string',
'schedule_twitter_text'              => 'nullable|string',

Change-Id: I4d539031b2acd8b59bd46da7640a8f9ef25911c2
2020-02-13 15:57:23 -03:00
smarcet 2c45043b11 Added user process name to LV log
Change-Id: Ib11a48c3aad28bccb71cb77a61aa7d34fc3ffd16
2020-02-12 13:12:21 -03:00
smarcet e33cf7ee44 RSVP endpoints
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
2020-02-12 12:19:26 -03:00
smarcet fa09cc4dd8 Removed Config Facade from Logging config
Change-Id: I15f3020f2bdb4238c14807cb8942ab9ca605d3b4
2020-02-11 23:07:57 -03:00
smarcet e3854ba3ec Fixed logs permissions per user
Change-Id: I6c2e4e0ac5c8c203fc3ae483b033713cfe6a8942
2020-02-08 01:51:57 -03:00
smarcet ba43168fad added .env variable ENABLE_BOOKABLE_ROOMS_RESERVATION_REVOCATION
to disable/enable task SummitRoomReservationRevocationCommand

Change-Id: Ie5ce24dda5b76676141ba90c32c95f3148e5ae6d
2019-08-05 18:27:11 -03:00
smarcet 9df411a77f Added flag to enable/disable cal sync tasks
Change-Id: Iec6d6cb0dad9b8af6ba39a9ea4329a2ebe657543
2019-08-05 10:47:09 -03:00
smarcet fe546f4702 * Fixes on bookable rooms api
* added emails
* updated model to store client token from gateway
* updated model to store amount refund

Change-Id: Ibeebab8f1209ee9763186293746fe44f8ffe0466
2019-06-26 11:33:16 -03:00
smarcet 9f01b9e3b3 Booking Rooms Model
* 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
2019-06-03 19:20:15 -03:00
smarcet 3c757f9cd2 Added endpoints for speakers profile edit request
request-edit-speaker-permission

PUT /api/v1/speakers/{speaker_id}/edit-permission

required scopes

/speakers/write
/summits/write

get-edit-speaker-permission

GET /api/v1/speakers/{speaker_id}/edit-permission

required scopes

/summits/read
/summits/read/all

Change-Id: I53e34e32116a2bf2a39ed583fce648fc01be12fd
2019-05-06 18:04:11 -03:00
smarcet ae650777ef Migrated Mail from native to Sendgrid API
Change-Id: I2dbc7947710f3da301e8361842a5fd0ffd026f6c
2019-04-10 19:19:11 -03:00
smarcet 5354a39a81 Added endpoints to CRUD presentation materials
* Videos

** get videos

GET /api/v1/summits/{id}/presentations/{presentation_id}/videos

required scopes

%s/summits/read
%s/summits/read/all

** create video

POST /api/v1/summits/{id}/presentations/{presentation_id}/videos

payload

'you_tube_id'     => 'required|alpha_dash',
'name'            => 'sometimes|required|text:512',
'description'     => 'sometimes|required|text|max:512',
'featured'        => 'sometimes|required|boolean',
'display_on_site' => 'sometimes|required|boolean'

required scopes

%s/summits/write-presentation-materials
%s/summits/write-presentation-videos

** update video

PUT /api/v1/summits/{id}/presentations/{presentation_id}/videos/{video_id}

payload

'you_tube_id'     => 'required|alpha_dash',
'name'            => 'sometimes|required|text:512',
'description'     => 'sometimes|required|text|max:512',
'featured'        => 'sometimes|required|boolean',
'display_on_site' => 'sometimes|required|boolean'
'order'           => 'sometimes|integer|min:1',

required scopes

%s/summits/write-presentation-materials
%s/summits/write-presentation-videos

** delete video

DELETE /api/v1/summits/{id}/presentations/{presentation_id}/videos/{video_id}

required scopes

%s/summits/write-presentation-materials
%s/summits/write-presentation-videos

* Slides

** get slides

GET /api/v1/summits/{id}/presentations/{presentation_id}/slides

required scopes

%s/summits/read
%s/summits/read/all

** create slide

POST '/api/v1/summits/{id}/presentations/{presentation_id}/slides

payload

'file'            => 'required_without:link',
'link'            => 'required_without:file|text:512',
'name'            => 'required|text:512',
'description'     => 'sometimes|required|text|max:512',
'display_on_site' => 'sometimes|required|boolean',
'featured'        => 'sometimes|required|boolean',

required scopes

%s/summits/write-presentation-materials
%s/summits/write-presentation-slides

** update slide

PUT '/api/v1/summits/{id}/presentations/{presentation_id}/slides/{slide_id}

payload

'file'            => 'sometimes|require',
'link'            => 'sometimes|required|text:512',
'name'            => 'sometimes|required|text:512',
'description'     => 'sometimes|required|text|max:512',
'display_on_site' => 'sometimes|required|boolean',
'featured'        => 'sometimes|required|boolean',
'order'           => 'sometimes|integer|min:1',

required scopes

%s/summits/write-presentation-materials
%s/summits/write-presentation-slides

** delete slide

DELETE '/api/v1/summits/{id}/presentations/{presentation_id}/slides/{slide_id}

required scopes

%s/summits/write-presentation-materials
%s/summits/write-presentation-slides

* Links

** get links

GET /api/v1/summits/{id}/presentations/{presentation_id}/links

required scopes

%s/summits/read
%s/summits/read/all

** create link

POST '/api/v1/summits/{id}/presentations/{presentation_id}/links

payload

'link'            => 'required|text:512',
'name'            => 'required|text:512',
'description'     => 'sometimes|required|text|max:512',
'display_on_site' => 'sometimes|required|boolean',
'featured'        => 'sometimes|required|boolean',

required scopes

%s/summits/write-presentation-materials
%s/summits/write-presentation-links

** update link

PUT '/api/v1/summits/{id}/presentations/{presentation_id}/links/{link_id}

payload

'link'            => 'sometimes|required|text:512',
'name'            => 'sometimes|required|text:512',
'description'     => 'sometimes|required|text|max:512',
'display_on_site' => 'sometimes|required|boolean',
'featured'        => 'sometimes|required|boolean',
'order'           => 'sometimes|integer|min:1',

required scopes

%s/summits/write-presentation-materials
%s/summits/write-presentation-links

** delete links

DELETE '/api/v1/summits/{id}/presentations/{presentation_id}/links/{link_id}

required scopes

%s/summits/write-presentation-materials
%s/summits/write-presentation-links

Change-Id: I56a23f0a04cdc254ecaa370afa197a9eebe76a3c
2019-04-08 19:30:08 -03:00
smarcet 84df8f2923 Updated Member/Speaker Serializer
Updated PIC url generation

Change-Id: I2eb47f39d92379fa9dc289490ee269e901ecb6e7
2019-04-01 14:47:11 -03:00
Sebastian Marcet ba38209bc6 Added Scope base realm
the idea behind this is able to separate scope base realm
from host header

Change-Id: I388fbbd7fe6f8187cb15f7403023b3af9b9c6507
2019-01-30 10:35:33 -03:00
smarcet e9bcfcac09 Added application credential to cloud assets config
to get more granular control over scopes

Change-Id: I073155614f17ae075406902573bae791860b4e81
2019-01-15 08:22:36 -03:00
smarcet 6d52da8a9b Migration to PHP 7.x
* updated dependencies
* updated LV version to 5.6
* added object storage for assets

Change-Id: I9a66563c925fe6f70c4f7703f13867caa30b8fb7
2018-11-23 11:50:55 -03:00
Sebastian Marcet 6d5e0d637b Added endpoint
POST /api/v1/summits/{id}/rsvp-templates/{template_id}/questions/{question_id}/values

Payload
* label (required|string)
* value (required|string)

Change-Id: I80818505f2877b38241416bd211610593a300267
2018-03-20 18:05:48 -03:00
Sebastian Marcet c87f7ee320 added endpoint to add location map
POST /api/v1/summits/{id}/locations/{location_id}/maps

Content Type multipart/form-data'
* file (required)
* name (required|string|max:255)
* description (required|string)

Change-Id: Iefa691dafeb41c8076eb28295c550348d5e954de
2018-03-12 14:23:57 -03:00
Sebastian Marcet 7bd426fac9 Added new endpoints to add locations per summit
POST /api/v1/summits/{id}/locations
POST /api/v1/summits/{id}/locations/venues
POST /api/v1/summits/{id}/locations/external-locations
POST /api/v1/summits/{id}/locations/hotels
POST /api/v1/summits/{id}/locations/airports

Required Scopes

'%s/summits/write'
'%s/locations/write'

Payload For SummitVenue

* class_name = SummitVenue
* name (required|string:max:255)
* description (sometimes|string)
* address1 (string|required_without:lng,lat)
* address2 (sometimes|string)
* zip_code (sometimes|string)
* city (string|required_without:lng,lat)
* state (string|required_without:lng,lat)
* country (string|required_without:lng,lat)
* lng (geo_longitude|required_with:lat|required_without:address1,city,state,country)
* lat (geo_latitude|required_with:lng|required_without:address1,city,state,country)
* website_url (sometimes|url)
* display_on_site (sometimes|boolean)
* details_page (sometimes|boolean)
* location_message (sometimes|string)
* is_main (sometimes|boolean)

Payload For SummitHotel

* class_name = SummitHotel
* name (required|string:max:255)
* description (sometimes|string)
* address1 (string|required_without:lng,lat)
* address2 (sometimes|string)
* zip_code (sometimes|string)
* city (string|required_without:lng,lat)
* state (string|required_without:lng,lat)
* country (string|required_without:lng,lat)
* lng (geo_longitude|required_with:lat|required_without:address1,city,state,country)
* lat (geo_latitude|required_with:lng|required_without:address1,city,state,country)
* website_url (sometimes|url)
* display_on_site (sometimes|boolean)
* details_page (sometimes|boolean)
* location_message (sometimes|string)
* capacity (sometimes|integer:min:0)
* hotel_type (sometimes|in:Primary,Alternate)
* sold_out (sometimes|boolean)
* booking_link (sometimes|url)

Payload For SummitAirport

* class_name = SummitAirport
* name (required|string:max:255)
* description (sometimes|string)
* address1 (string|required_without:lng,lat)
* address2 (sometimes|string)
* zip_code (sometimes|string)
* city (string|required_without:lng,lat)
* state (string|required_without:lng,lat)
* country (string|required_without:lng,lat)
* lng (geo_longitude|required_with:lat|required_without:address1,city,state,country)
* lat (geo_latitude|required_with:lng|required_without:address1,city,state,country)
* website_url (sometimes|url)
* display_on_site (sometimes|boolean)
* details_page (sometimes|boolean)
* location_message (sometimes|string)
* capacity (sometimes|integer:min:0)
* airport_type (sometimes|in:International,Domestic)

Payload For SummitExternalLocation

* class_name = SummitExternalLocation
* name (required|string:max:255)
* description (sometimes|string)
* address1 (string|required_without:lng,lat)
* address2 (sometimes|string)
* zip_code (sometimes|string)
* city (string|required_without:lng,lat)
* state (string|required_without:lng,lat)
* country (string|required_without:lng,lat)
* lng (geo_longitude|required_with:lat|required_without:address1,city,state,country)
* lat (geo_latitude|required_with:lng|required_without:address1,city,state,country)
* website_url (sometimes|url)
* display_on_site (sometimes|boolean)
* details_page (sometimes|boolean)
* location_message (sometimes|string)
* capacity (sometimes|integer:min:0)

Change-Id: Ie52d6e4864e2cdb1af100e2c325e02e92f1de9bd
2018-03-01 16:19:28 -03:00
Sebastian Marcet 615b3dbf7c Added new Upload Summit Event Attachment Endpoint
POST api/v1/summits/{:summit_id}/events/{:event_id}/attachment

Change-Id: I41bdb5b9551165682c0fd6ea5eb0b0d21c792ba0
2017-11-25 15:41:00 -03:00
Sebastian Marcet ae8a7c030d Marketplace API
* Migrated from eloquent to doctrine ORM
* Added  public endpoints (rate limited)
  exposing marketplace api

Change-Id: Ib60ad6c45e3e41afd66c9c7a1a667a50f947aaa5
2017-11-15 06:35:38 -03:00
Sebastian Marcet 8e67f5ae90 External Calendar Sync
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
2017-08-22 14:37:55 -03:00
Sebastian Marcet b4b6dac055 Updated email log level
Change-Id: I088ebaac683f5faa4611518dc3efe970e618b1bb
2017-05-02 13:40:34 -03:00
Sebastian Marcet 4d99bfa1b1 Added summit listing to cache
Change-Id: Ib70b1f5718844bb24e2ee8efbb032b9e92a3b5ab
2017-05-02 13:06:14 -03:00
Sebastian Marcet 1323dc3a38 Teams API
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
2016-12-27 10:09:13 -03:00
Sebastian Marcet 665d690530 Query Cache
Added several static entities to L2 doctrine
cache ( summit_types, event_types, presentation_categories)
also improved some queries.

Change-Id: Ic7d6ddcb9f2f7d9497fc3c0a0e653b94d721b736
2016-11-17 10:34:01 -03:00
Sebastian Marcet 362e897511 Query Cache
* 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
2016-11-16 11:46:07 -03:00
Sebastian Marcet bb20ca1388 Query Cache
Added caching to some recurrent queries
* get current active summmit
* get api endpoint scopes

Change-Id: I6f5a9618581bcf29218c60390b48150e91be34fc
2016-11-15 23:54:46 -03:00
Sebastian Marcet 7a3ba45d5f Query Stack trace listener
refactored eloquent mysql query listener
and added stack trace.

Change-Id: I1e152a7254a9eb3c57de35596af1e2e6c73b70f0
2016-11-15 23:11:14 -03:00
Sebastian Marcet 470dc12f5c Added doctrine L2 cache
in order to improve query performance
added L2 cache configuration to some
queries and classes.
also updated doctrine version.

Change-Id: I86ac24b65a28919de411b024c7ad175747630f6e
2016-11-04 17:07:57 -03:00
Sebastian Marcet ce12d3cb89 Upgrade Laravel Version and ORM Framework
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
2016-09-06 13:47:37 -03:00
Sebastian Marcet 8113fefaff New External Orders Endpoints
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
2016-03-23 13:08:15 -03:00
Sebastian Marcet d291b10611 Bug Fixing
* missing twitter handle on speaker entity
* fix on summit entity events endpoint

Change-Id: I3d6d71f0fb2f4f574b8a10c53cffcd2df91631e1
2016-03-16 11:20:19 -03:00
Sebastian Marcet b72a7aa35f Added log level configuration param
Change-Id: I19e7528460ea3600abdf7d54b2d91d1fa89f1e10
2016-02-23 16:07:21 -03:00
Sebastian Marcet 33526e903d Fixed SSL redirect filter
fixed ssl filter and added some config examples

Change-Id: I90ab6d108e13d495dc12fde4fe8a4433b93a0a1f
2016-02-22 12:14:50 -03:00
Sebastian Marcet a093fc5a01 Summit Application API
WIP - Added Summit API

Change-Id: I5494db9414809a3ca5e278919d084e895b2ed05a
2016-02-18 12:21:22 -03:00