Caligram API
The caligram API Documentation
Authentication ¶
Authentication ¶
The authorization endpoints to authenticate to the API.
Headers
Content-Type: application/json
Accept: application/vnd.caligram.v1+json
Body
{
"client_id": "KaSgBnoiufJNUxw",
"client_secret": "QAKCfeeq6hdWBJJBzJRUNwcSItZAsXiX"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"client_id": {
"type": "string",
"description": "Your client api key."
},
"client_secret": {
"type": "string",
"description": "Your client secret key."
}
},
"required": [
"client_id",
"client_secret"
]
}
Headers
Content-Type: application/json
Body
{
"access_token": "DOU6ngR9fAcUmUCv2v53BpR8pCjIxeIl1ipQFxzA",
"token_type": "Bearer",
"expires_in": "3600"
}
Headers
Content-Type: application/json
Body
{
"message": "Client authentication failed.",
"status_code": 401
}
Authorize a clientPOST/auth/authorize_client
Authorize a client (server) to the api. You must ask Caligram for a
client_id
and client_secret
. Save the returned access token until it
expires.
Make sure that you keep your client credentials secret and on the server side. It will be revoked without notice for any unusual activity.
Headers
Content-Type: application/json
Authorization: Bearer DOU6ngR9fAcUmUCv2v53BpR8pCjIxeIl1ipQFxzA
Accept: application/vnd.caligram.v1+json
Body
{
"name": "Steve Fields",
"email": "steve.fields@caligram.com",
"password": "S3cretP4ssw0rd!",
"password_confirmation": "S3cretP4ssw0rd!",
"calendar_id": 1,
"calendar_name": "Calendrier",
"organization_id": 1
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "the new user full name."
},
"email": {
"type": "string",
"description": "The user email address."
},
"password": {
"type": "string",
"description": "The user password."
},
"password_confirmation": {
"type": "string",
"description": "The user password, again."
},
"calendar_id": {
"type": "number",
"description": "The calendar ID to link to."
},
"calendar_name": {
"type": "string",
"description": "The calendar name to link to, specify if calendar ID is different than the used client."
},
"organization_id": {
"type": "number",
"description": "The organization ID to link to. Only works for the client's organization id."
}
},
"required": [
"name",
"email",
"password",
"password_confirmation"
]
}
Headers
Content-Type: application/json
Body
{
"access_token": "DOU6ngR9fAcUmUCv2v53BpR8pCjIxeIl1ipQFxzA",
"token_type": "Bearer",
"expires_in": "3600",
"refresh_token": "JJ6AledtjopdXX9E6pgTmSj6lMiVu15kMICl5sMn"
}
Headers
Content-Type: application/json
Body
{
"message": "Could not create new user.",
"errors": {
"name": [
"The name field is mandatory."
],
"email": [
"The email field is mandatory."
],
"password": [
"The password confirmation does not match."
]
},
"status_code": 422
}
Register a new userPOST/auth/register
Be sure to authorize and receive an access token for your client before making this call. A successful response will create the user and return a brand new access token scoped to this user’s accesses.
Headers
Content-Type: application/json
Authorization: Bearer DOU6ngR9fAcUmUCv2v53BpR8pCjIxeIl1ipQFxzA
Accept: application/vnd.caligram.v1+json
Body
{
"username": "steve.fields@caligram.com",
"password": "S3cretP4ssw0rd!"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"username": {
"type": "string",
"description": "The user email."
},
"password": {
"type": "string",
"description": "The user password."
}
},
"required": [
"username",
"password"
]
}
Headers
Content-Type: application/json
Body
{
"access_token": "DOU6ngR9fAcUmUCv2v53BpR8pCjIxeIl1ipQFxzA",
"token_type": "Bearer",
"expires_in": "3600",
"refresh_token": "JJ6AledtjopdXX9E6pgTmSj6lMiVu15kMICl5sMn"
}
Headers
Content-Type: application/json
Body
{
"message": "The user credentials were incorrect.",
"status_code": 401
}
Login a userPOST/auth/login
Login a user through an official client. For unofficial clients,
please use the authorization_code
grant type.
Headers
Content-Type: application/json
Authorization: Bearer DOU6ngR9fAcUmUCv2v53BpR8pCjIxeIl1ipQFxzA
Accept: application/vnd.caligram.v1+json
Body
{
"refresh_token": "JJ6AledtjopdXX9E6pgTmSj6lMiVu15kMICl5sMn"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"refresh_token": {
"type": "string",
"description": "The refresh token."
}
},
"required": [
"refresh_token"
]
}
Headers
Content-Type: application/json
Body
{
"access_token": "TzTmDLciNHooYSZKT0ugVM5jVkuQW7RYYiD6RVrK",
"token_type": "Bearer",
"expires_in": "3600",
"refresh_token": "KOAiEWNLFB4rR3R5pH5Oj4VTGlQH29nbxbxceoLM"
}
Headers
Content-Type: application/json
Body
{
"message": "The refresh token is invalid.",
"status_code": 400
}
Refresh a tokenPOST/auth/refresh_token
Send the refresh token after the returned one expires.
/auth/authorize?client_id=KaSgBnoiufJNUxw&response_type=code&redirect_uri=http://example.com/auth/code
Headers
Content-Type: application/json
Authorization: Bearer DOU6ngR9fAcUmUCv2v53BpR8pCjIxeIl1ipQFxzA
Accept: application/vnd.caligram.v1+json
Authorize another applicationGET/auth/authorize
Authorize an user account for an external application. You must ask Caligram to configure your application first.
- Query parameters
- client_id (string, required) - Your client ID
- response_type (string, required) - Always “code”
- redirect_uri (string, required) - Your application redirect URI (as configured)
Headers
Content-Type: application/json
Authorization: Bearer DOU6ngR9fAcUmUCv2v53BpR8pCjIxeIl1ipQFxzA
Accept: application/vnd.caligram.v1+json
Headers
Content-Type: application/json
Body
{
"owner_id": 1,
"owner_type": "user",
"access_token": "TzTmDLciNHooYSZKT0ugVM5jVkuQW7RYYiD6RVrK",
"client_id": "adminFrontend1",
"scopes": [],
"roles": ['admin']
}
Headers
Content-Type: application/json
Body
{
"message": "The resource owner or authorization server denied the request.",
"status_code": 401
}
Get a user info & permissionsGET/auth/token_info
This will return the permissions and roles for the access token of the logged-in user.
Events ¶
Events resource ¶
Event resource representation.
Headers
Content-Type: application/json
Authorization: Bearer DOU6ngR9fAcUmUCv2v53BpR8pCjIxeIl1ipQFxzA
Accept: application/vnd.caligram.v1+json
Headers
Content-Type: application/json
Body
{
"data": [
{
"id": 1,
"title": "Alimentation des manchots",
"slug": "alimentation-des-manchots",
"status": "published",
"description": "L'alimentation des manchots au biu00f4dome de Montru00e9al, c'est magique!",
"website_url": "http://espacepourlavie.ca/",
"thumbnail_url": "https://cdn.caligram.com/pictures/x0455tt.jpg",
"event_dates_count": 20,
"start_date": "2015-03-26 09:00:00",
"end_date": "2015-03-26 11:00:00",
"updated_at": {
"date": "2015-02-16 11:00:00.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"created_at": {
"date": "2015-04-21 20:06:50.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"author": {
"user_id": 1,
"name": "Steve Fields"
},
"venue": {
"id": 1,
"parent_id": null,
"name": "Universitu00e9 de Montru00e9al - 3200, rue Jean-Brillant",
"slug": "universite-de-montreal-3200-rue-jean-brillant",
"address": "3200, rue Jean-Brillant",
"address2": "",
"city": "Montru00e9al",
"state": "QC",
"country": "Canada",
"zip": "H3T 1N8",
"region_id": null,
"latitude": "45.49863900",
"longitude": "-73.61845700",
"telephone": null,
"link": null,
"business_hours": null
}
}
],
"meta": {
"pagination": {
"total": 20,
"count": 10,
"per_page": 10,
"current_page": 1,
"total_pages": 2
}
}
}
Display a listing of the resource.GET/events
N.B. In general, most keys in the resulting JSON object have an equivalent fuzzy filter by the same name.
- Query parameters
- audiences (comma separated list of integers, optional) - Events that have these audiences (specified by id)
- author (string, optional) - Get a list of events by author:
all, me, other, {user_id}
- Default: all
- Members
all
- All authors.me
- Logged in author.other
- All authors except me.- user_id - The specifc user.
- calendar_id (integer, optional) - Events that are linked to this calendar (specified by id)
- calendars (comma separated list of integers, optional) - Events that are linked to these calendars (specified by id)
- direction (string, optional) - Set the order of results
asc
ordesc
.- Default: asc
- distance (comma separated tuple of float, float and integer) - In order : latitude, longitude and radius in meters. Select events that fall in that area.
- featured (boolean, optional) - Select whether this event is featured on a calendar or not. No effect unless a calendar scope is applied, either through a query parameter or client configuration.
- id (comma separated list of integers, optional) - Select events by their id.
- include (comma separated list of included objects, optional) - Available objects are audiences, author, dates, groups, image, images, organization, prices, room, tags, taxonomies, terms, types, venue, calendars. Some objects are visible by default and cannot be omitted.
- organization_id (integer, optional) - Events that are linked to this organization (specified by id)
- organizations (comma separated list of integers, optional) - Events that are linked to these organizations (specified by id)
- order (string, optional) - Order results by the specified field:
created_at, updated_at, start_date, title, distance
.- Default: start_date
- page (integer, optional) - Use to paginate results
- per (integer, optional) - Number of events to display per page.
- Default: 20
- price_types (comma separated list of strings within (FREE, FIXED, DONATION)) - Filter by prices types.
- q (string, optional) - Fuzzy filter with transparent autosuggest on various fields (title, description, audiences, author, organization, room, venue, groups, tags, terms, types)
- range (string, optional) - Select the range,
past
,future
or between two dates2015-04-03,2015-04-15
- Default: future
- recurrences (boolean, optional) - Select events and their recurrences or only the primary event.
- Default: false
- regions (comma separated list of integers, optional) - Events that are linked to these regions (specified by id)
- status (string, optional) - Get an event list by status of publication (connected user only).
- Default: all
- Members
all
- All events.published
- Only the published events.draft
- The events not published.partially_published
- The events partially published.pending
- Pending for approval.declined
- Events declined.deleted
- Deleted events.
- tags (comma separated list of integers, optional) - Events that are linked to these tags (specified by id)
- taxonomies (comma separated list of integers, optional) - Events that are linked to these taxonomies (specified by id)
- terms (comma separated list of integers, optional) - Events that are linked to these terms (specified by id)
- types (comma separated list of integers, optional) - Events that are linked to these types (specified by id)
- venues (comma separated list of integers, optional) - Events that are linked to these venues (specified by id)
Headers
Content-Type: application/json
Authorization: Bearer DOU6ngR9fAcUmUCv2v53BpR8pCjIxeIl1ipQFxzA
Accept: application/vnd.caligram.v1+json
Headers
Content-Type: application/json
Body
{
"id": 1,
"title": "Alimentation des manchots",
"slug": "alimentation-des-manchots",
"status": "published",
"description": "L'alimentation des manchots au biu00f4dome de Montru00e9al, c'est magique!",
"website_url": "http://espacepourlavie.ca/",
"photo_url": "https://cdn.caligram.com/pictures/x0455tx.jpg",
"thumbnail_url": "https://cdn.caligram.com/pictures/x0455tt.jpg",
"video_url": "https://vimeo.com/123456789",
"event_dates_count": 20,
"price_type": "FIXED",
"price_currency": "CAD",
"subscription": {
"type": "optional",
"email": "steve.fields@caligram.com",
"phone": "1-998-894-0842x19311",
"url": "https://www.barton.info/incidunt-animi-vel-dolorem-sint"
},
"recurring": {
"frequency": "WEEKLY",
"count": 20,
"interval": 2,
"by_day": "TU,THU"
},
"start_date": "2015-03-26 08:51:45",
"end_date": "2015-04-06 23:17:53",
"updated_at": {
"date": "2015-04-21 20:06:50.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"created_at": {
"date": "2015-04-21 20:06:50.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"video": {
"id": 1,
"url": "http://www.youtube.com?v=M3r2XDceM6A",
"type": "video",
"version": "1.0",
"title": "Amazing Nintendo Facts",
"width": 425,
"height": 344,
"thumbnail_width": 120,
"thumbnail_height": 90,
"html": "<object width='425' height='344'><param name='movie' value='http://www.youtube.com/v/M3r2XDceM6A&fs=1'></param><param name='allowFullScreen' value='true'></param><param name='allowscriptaccess' value='always'></param><embed src='http://www.youtube.com/v/M3r2XDceM6A&fs=1' type='application/x-shockwave-flash' width='425' height='344' allowscriptaccess='always' allowfullscreen='true'></embed></object>",
"author_name": "ZackScott",
"author_url": "http://www.youtube.com/user/ZackScott",
"provider_name": "YouTube",
"provider_url": "http://youtube.com"
},
"contact_name": "Steve Fields",
"contact_email": "steve.fields@caligram.com",
"contact_phone": "555-555-5555",
"contact_url": "http://caligram.com",
"audiences": [
{
"id": 1,
"name": "Mu00e9dias",
"slug": "medias"
},
{
"id": 2,
"name": "Pour tous",
"slug": "pour-tous"
}
],
"author": {
"user_id": 1,
"name": "Steve Fields"
},
"dates": [
{
"id": 1,
"start_date": "2015-03-26 08:51:45",
"duration": 3600
},
{
"id": 2,
"start_date": "2015-03-31 08:51:45",
"duration": 3600
}
],
"images": [
{
"id": 1,
"title": "Alimentation des manchots",
"description": "Ces manchots dansent.",
"credits": "Copyright Steve Fields",
"thumbnail_url": "https://cdn.caligram.com/pictures/x0455tt.jpg",
"small_url": "https://cdn.caligram.com/pictures/x0455ts.jpg",
"medium_url": "https://cdn.caligram.com/pictures/x0455tm.jpg",
"large_url": "https://cdn.caligram.com/pictures/x0455tl.jpg",
"xlarge_url": "https://cdn.caligram.com/pictures/x0455tx.jpg",
"original_url": "https://cdn.caligram.com/pictures/x0455to.jpg"
}
],
"prices": [
{
"id": 1,
"event_id": 1,
"value": "134.71",
"description": "Numquam quas consequatur rem porro neque reiciendis."
}
],
"tags": [
{
"id": 1,
"name": "astrobiologie",
"slug": "astrobiologie"
},
{
"id": 2,
"name": "cinema",
"slug": "cinema"
}
],
"types": [
{
"id": 1,
"parent_id": null,
"name": "Activitu00e9 institutionnelle",
"slug": "activite-institutionnelle"
}
],
"venue": {
"id": 1,
"parent_id": null,
"name": "Universitu00e9 de Montru00e9al - 3200, rue Jean-Brillant",
"slug": "universite-de-montreal-3200-rue-jean-brillant",
"address": "3200, rue Jean-Brillant",
"address2": "",
"city": "Montru00e9al",
"state": "QC",
"country": "Canada",
"zip": "H3T 1N8",
"region_id": null,
"latitude": "45.49863900",
"longitude": "-73.61845700",
"telephone": null,
"link": null,
"business_hours": null
}
}
Headers
Content-Type: application/json
Body
{}
List recurring dates for an event.GET/events/{id}/dates
- id
integer
(required)The event id to view.
Headers
Content-Type: application/json
Authorization: Bearer DOU6ngR9fAcUmUCv2v53BpR8pCjIxeIl1ipQFxzA
Accept: application/vnd.caligram.v1+json
Body
{
"title": "Alimentation des manchots",
"slug": "alimentation-des-manchots",
"status": "draft",
"featured": true,
"description": "L'alimentation des manchots au biu00f4dome de Montru00e9al, c'est magique!",
"website_url": "http://www.google.com",
"photo_url": "http://www.google.com/logo.png",
"thumbnail_url": "http://www.google.com/logosm.png",
"video_url": "http://www.youtube.com/watch?v=1234456789",
"event_dates_count": 20,
"price_type": "FIXED",
"price_currency": "CAD",
"start_date": "2015-01-01 00:00:00",
"end_date": "2015-01-02 03:00:00",
"dates": [
{
"id": 1,
"start_date": "2015-03-04 10:00:00",
"duration": 3600
}
],
"tags": [
{
"id": 2,
"name": "Cinéma",
"parent_id": 1,
"slug": "cinema"
}
],
"types": [
{
"id": 2,
"name": "Conférence",
"parent_id": 1,
"slug": "conference"
}
]
}
Headers
Content-Type: application/json
Body
{}
Store a newly created resource in storage.POST/events
Headers
Content-Type: application/json
Body
{}
Update the specified resource in storage.PUT/events/{id}
- id
integer
(required)The event id to view.
Headers
Content-Type: application/json
Body
{}
Remove the specified resource from storage.DELETE/events/{id}
- id
integer
(required)The event id to view.
Headers
Content-Type: application/json
Body
{}
Restore the deleted specified resource in storage.PUT/events/{id}/restore
- id
integer
(required)The event id to view.
Calendars ¶
Calendars resource ¶
Calendar resource representation.
Headers
Content-Type: application/json
Authorization: Bearer DOU6ngR9fAcUmUCv2v53BpR8pCjIxeIl1ipQFxzA
Accept: application/vnd.caligram.v1+json
Body
{
"event_id": "12",
"featured": true
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"event_id": {
"type": "string",
"description": "The event id to feature."
},
"featured": {
"type": "boolean",
"description": "The optional feature status."
}
},
"required": [
"event_id"
]
}
Headers
Content-Type: application/json
Body
{}
Headers
Content-Type: application/json
Feature an event on a calendar.POST/calendars/{id}/feature
Toggle the featured flag for an event on the calendar, with an optional specified value.
- id
integer
(required)The target calendar id.
Images ¶
Images resource ¶
Image resource representation.
Headers
Content-Type: application/json
Body
{}
Display a listing of the resource.GET/images
Headers
Content-Type: application/json
Body
{}
Store a newly created resource in storage.POST/images
Headers
Content-Type: application/json
Body
{}
Remove the specified resource from storage.DELETE/images/{id}
- id
integer
(required)The image id to view
Users ¶
Users resource ¶
User resource representation.
Headers
Content-Type: application/json
Body
{}
Get a list of all usersGET/users
Headers
Content-Type: application/json
Body
{}
Invite a user to your calendar or organizationPOST/users/invite
Organizations ¶
Get all organizations ¶
Headers
Content-Type: application/json
Body
{
"data": [
{
"id": 1,
"name": "Caligram",
"slug": "caligram",
"logo": null,
"updated_at": {
"date": "2016-09-01 15:15:19.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"created_at": {
"date": "2016-09-01 15:15:19.000000",
"timezone_type": 3,
"timezone": "UTC"
}
},
],
"meta": {
"pagination": {
"total": 1,
"count": 1,
"per_page": 15,
"current_page": 1,
"total_pages": 1,
"links": []
}
}
}
Get all organizationsGET/organizations
Taxonomies ¶
Taxonomies resource ¶
Taxonomy resource representation.
Headers
Content-Type: application/json
Authorization: Bearer DOU6ngR9fAcUmUCv2v53BpR8pCjIxeIl1ipQFxzA
Accept: application/vnd.caligram.v1+json
Headers
Content-Type: application/json
Body
{
"data": [
{
"id": 1,
"name": "Taxonomy",
"slug": "taxonomy",
"description": "A taxonomy !"
}
],
"meta": {
"pagination": {
"total": 1,
"count": 1,
"per_page": 20,
"current_page": 1,
"total_pages": 1
}
}
}
Display all taxonomiesGET/taxonomies
- Query parameters
- per (integer, optional) - Number of taxonomies to display per page.
- Default: 20
- calendar_id (integer, optional) - Calendars using this taxonomy (specified by id)
- organization_id (integer, optional) - Organizations using this taxonomy (specified by id)
- calendars (comma separated list of integers, optional) - Calendars using this taxonomy (specified by id)
- organizations (comma separated list of integers, optional) - Organizations using this taxonomy (specified by id)
- id (comma separated list of integers, optional) - Taxonomy id.
- name (string, optional) - Fuzzy filter on name
- description (string, optional) - Fuzzy filter on description
- slug (string, optional) - Fuzzy filter on slug
- per (integer, optional) - Number of taxonomies to display per page.
Headers
Content-Type: application/json
Authorization: Bearer DOU6ngR9fAcUmUCv2v53BpR8pCjIxeIl1ipQFxzA
Accept: application/vnd.caligram.v1+json
Headers
Content-Type: application/json
Body
{
"id": 1,
"name": "Taxonomy",
"slug": "taxonomy",
"description": "A taxonomy !"
}
Headers
Content-Type: application/json
Authorization: Bearer DOU6ngR9fAcUmUCv2v53BpR8pCjIxeIl1ipQFxzA
Accept: application/vnd.caligram.v1+json
Headers
Content-Type: application/json
Body
{
"data": [
{
"id": 1,
"name": "Term",
"slug": "term",
"description": "A term !"
}
],
"meta": {
"pagination": {
"total": 1,
"count": 1,
"per_page": 20,
"current_page": 1,
"total_pages": 1
}
}
}
Get a taxonomy termsGET/taxonomies/{id}/terms
Identical to /terms?taxonomy_id={id}
.
- id
integer
(required)The taxonomy id to view.
Headers
Content-Type: application/json
Body
{}
Get a taxonomy eventsGET/taxonomies/{id}/events
Identical to /events?taxonomy_id={id}
.
- id
integer
(required)The taxonomy id to view.
Terms ¶
Terms resource ¶
Term resource representation.
Headers
Content-Type: application/json
Body
{
"data": [
{
"id": 1,
"name": "Term",
"slug": "term",
"description": "A term !"
}
],
"meta": {
"pagination": {
"total": 1,
"count": 1,
"per_page": 20,
"current_page": 1,
"total_pages": 1
}
}
}
Display all termsGET/terms
Headers
Content-Type: application/json
Body
{
"id": 1,
"name": "Term",
"slug": "term",
"description": "A term !"
}
Generated by aglio on 10 Jun 2019