Tools and information for 3rd party integrators
OpenID Connect
SmartCentral supports the OpenID Connect specification as an Identity Provider.
Resources for specifications and sample code libraries:
* http://openid.net/connect/
* https://github.com/IdentityServer/IdentityServer4.Samples/tree/release/Quickstarts
FAQ
Our OpenID entry point for staging is:
* http://test.smartcentral.net/authorizations/new/
To get JWK public keys :
* http://test.smartcentral.net/jwks.json
Create your own test account :
* http://test.smartcentral.net/user/new/
Implicit flow
- 3rd party sends authorisation request
http://test.smartcentral.net/authorizations/new/?client_id=fancy_app&response_type=id_token%20token&scope=openid%20email&nonce=1234&redirect_uri=http://localhost:3001/auth
-
SmartCentral redirects end user to login page if not logged in, after end user’s authorisation, send the following fields (http form fields encoded) to redirect_uri provided by 3rd party.
- access_token
- id_token
- token_type
-
After 3rd party received id_token (JWT format), the id token should be verified using the public key provided by SmartCentral http://test.smartcentral.net/jwks.json
-
To get readble information of the user, 3rd party sends GET request with access token returned by SmartCentral to http://test.smartcentral.net/user_info?access_token=abcd
-
User info returns the following fields:
- subject (SmartCentral user unique id)
- name
GraphQL
SmartCentral has implemented GraphQL to support an extensible method for api access to centre data.
Schema
type service (id){
enrolments: [enrolment]
}
type enrolment{
our_child: child
parent1: parent
parent2: parent
bookings: [booking]
}
type child{
child_id: String
first_name: String
last_name: String
groups: [group]
}
type parent{
parent_id: String
first_name: String
last_name: String
email: String
}
type booking{
day: String
room: String
}
/* "day" is a 3 character abreviation of day of the week MON , TUE, WED , THU , FRI , SAT , SUN