-
Notifications
You must be signed in to change notification settings - Fork 0
/
serverless.http.yml
86 lines (83 loc) · 2.17 KB
/
serverless.http.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
service: candidate-http
provider:
name: aws
runtime: nodejs14.x
region: us-east-1
stage: dev
deploymentBucket:
name: ${self:provider.environment.S3_BUCKET}
environment:
DYNAMODB_TABLE: ${opt:stage, self:provider.stage}-candidate-table
S3_BUCKET: ${opt:stage, self:provider.stage}-candidate-bucket
httpApi:
cors: true
authorizers:
jwtAuthorizer:
type: jwt
identitySource: $request.header.Authorization
issuerUrl: https://dev-mdrijwan.us.auth0.com/
audience:
- https://auth0-jwt-authorizer
iamRoleStatements:
- Effect: Allow
Action:
- dynamodb:Query
- dynamodb:Scan
- dynamodb:GetItem
- dynamodb:PutItem
- dynamodb:UpdateItem
- dynamodb:DeleteItem
Resource: 'arn:aws:dynamodb:${opt:region, self:provider.region}:*:table/${self:provider.environment.DYNAMODB_TABLE}*'
functions:
createCandidate:
handler: src/api/create.candidate
events:
- httpApi:
path: /candidate
method: post
authorizer:
name: jwtAuthorizer
request:
schema:
application/json: ${file(./src/validator/candidate.json)}
createAppointment:
handler: src/api/create.appointment
events:
- httpApi:
path: /appointment/{id}
method: put
request:
schema:
application/json: ${file(./src/validator/appointment.json)}
listCandidates:
handler: src/api/list.candidates
events:
- httpApi:
path: /candidate
method: get
listAppointments:
handler: src/api/list.appointments
events:
- httpApi:
path: /candidate/{id}
method: get
listAvailability:
handler: src/api/list.availability
events:
- httpApi:
path: /availability
method: get
getAppointment:
handler: src/api/get.appointment
events:
- httpApi:
path: /appointment/{id}
method: get
getAvailability:
handler: src/api/get.availability
events:
- httpApi:
path: /availability/{id}
method: get
plugins:
- serverless-plugin-typescript