Introducción
Nuestra API es una REST API, y toda la información es entregada en formato JSON.
Si quieres utilizar nuestra API, es necesario que nos escribas a support@nuflick.com para que te otorguemos acceso (un ID y una llave privada).
Todos los requests al API deben realizarse por SSL a la dirección https://nuflick.azurewebsites.net/api.
Cualquier error se regresará de la forma:
{'error':'Descripcion del error'}
Para realizar cualquier request al API se necesita enviar un hash que se obtiene de la siguiente forma:
- Se ordenan todos los parámetros a enviar por orden alfabético.
- Se codifican para url los parámetros.
- Se obtiene el hash usando la función HMAC con el algoritmo SHA-256, utilizando como llave la llave privada de tu api.
- Se añade el hash a los parámetros y se envían.
Ejemplo:
Suponiendo los siguientes parametros y usando el endpoint /api/movie:
- app ID: foobar123
- API key: 934690160a0426ce85ecfd2701436f93
- movie_id: 42
- token: 17d13ecd2aa3589afb45a2342e9e
-
parametros = array(
'appID' => 'foobar123',
'movie_id' => '42',
'token' => '17d13ecd2aa3589afb45a2342e9e'
);
-
paraFirmar = "appID=foobar123&movie_id=42&token=17d13ecd2aa3589afb45a2342e9e";
-
hash = hash_hmac('sha256', '934690160a0426ce85ecfd2701436f93', paraFirmar);
-
appID=foobar123&movie_id=42&token=17d13ecd2aa3589afb45a2342e9e&hash=59feef580e923a3670ec0fae8354a3e3534bc9790de9327950976524313017cd
Endpoints
Imágenes
Todas las imágenes se obtienen con el slug de las películas. Por ejemplo:
Para obtener el poster de una película: http://img.nuflick.com/poster/cosas-feas.jpg
Para obtener el still de una película: http://img.nuflick.com/still/cosas-feas.jpg
POST /api/login
El primer método que el API debe llamar. Sirve para obtener el token que se utilizará para el resto de las transacciones del API. Es personal por usuario, ya que permite identificar al mismo.
El token tiene una vigencia de 24 horas desde que se pide, por lo que pasado este periodo se tendrá que repetir este método para obtener uno nuevo.
Sucesivas llamadas a este método mientras el token siga válido regresarán el mismo token.
Hay dos formas de usar este método. La primera es con una combinación de usuario y contraseña, la segunda es por medio de Facebook.
Parámetros:
string appID
El identificador de tu aplicación con nuestro API.
string hash
El hash que sirve como firma de la llamada como se explica en la
introducción.
string method
El método que se utilizará para iniciar sesión. Valores válidos: 'fb', 'email'.
mixed user
En caso de usar el método por Facebook, es el ID de Facebook del usuario. En caso de usar correo/contraseña, es el correo del usuario.
(optional) string token
El token que regresa FB después de hacer login con aquel servicio, con el cual se realizan las llamadas a su API. Obligatorio al usar el método 'fb'.
(optional) string password
La contraseña del usuario. Obligatorio al usar el método 'email'.
Regresa:
boolean login
Indica si el login ha sido exitoso.
string token
El token que se utilizará para las otras llamadas al API.
date expires
La fecha y hora en la que el token pierde validez.
object user
Datos del usuario. Estos incluyen:
int id
El ID del usuario en NuFlick.
long int fid
El usuario de Facebook en caso de que el usuario haya registrado este servicio con NuFlick.
string name
El nombre con el que el usuario se ha registrado en NuFlick.
string email
El correo electrónico del usuario.
Ejemplo:
POST /api/login
appID=foobar123&method=email&password=abc123&user=hello%40nuflick.com&hash=9606520a4eeb05441eea84029856f7b6c5f9d96bf3d0a5ad05951c57a0e481b4
{
"login":"true",
"token":"56e073bda9bdfdca7b1c54d9de88103204c08af29da61084ab289d8bbef3721c",
"expires":"2012-12-04 23:01:10 UTC",
"user":{
"id":"12345",
"fid":null,
"name":"Hello NuFlick",
"email":"hello@nuflick.com"
}
}
GET /api/movies
Este método regresa las películas del catálogo y solo incluyen información básica de las películas. Si se requiere más información se puede hacer
una llamada a /api/movie con el ID de la película para obtenerla.
El orden de las películas es de la más reciente a la más antigua.
Parámetros:
string appID
El identificador de tu aplicación con nuestro API.
string hash
El hash que sirve como firma de la llamada como se explica en la
introducción.
(optional) int page
Parámetro de paginación. Número de la página a obtener. Valor por defecto: 0
(optional) int limit
Parámetro de paginación. Número de resultados a regresar por llamada. Valor por defecto: 5
El orden en el cuál regresar las películas. Puede ser: 0 (por orden cronológico, comenzando por la más nueva) o 1 (por orden de popularidad en el último mes). Valor por defecto: 0
Regresa:
El método regresa un array del siguiente objeto:
int id
El ID de la película.
string nombre
El nombre de la película.
string slug
El slug de la película.
int anio
El año de publicación de la película.
int duración
La duración en minutos de la película.
En qué formatos de video está disponible la película (Smooth Streaming y HLS).
string genero
El genero de la película.
string pais
El país de realización de la película.
string director
El director de la película.
string trailer_youtube_id
El ID de YouTube del trailer.
string sinopsis
La sinopsis de la película.
boolean can_user_see_it
Si el usuario puede o no ver la película. Esto puede ser debido a que la película sea gratis o a que ya haya pagado por ella (por renta o suscripción).
int precio
El precio de la película bajo la modalidad de renta individual.
Ejemplo:
GET /api/movies
appID=foobar123&page=0&limit=2&token=56e073bda9bdfdca7b1c54d9de88103204c08af29da61084ab289d8bbef3721c&hash=57f86f2bf6d2bc9722d6d7249280b6f82f5b428e01766305e38ac0f46ee1f446
[
{
"id":"110",
"nombre":"In search of Dylan",
"slug":"in-search-of-dylan",
"anio":"2009",
"duracion":"80",
"genero":"Documental",
"pais":"M\u00e9xico, Estados Unidos",
"director":"Jan Markowski",
"trailer_youtube_id":"l4vx9S835iw",
"sinopsis":"Un hombre recorre 633 km de avent\u00f3n desde la Ciudad de M\u00e9xico hasta Zacatecas,
un peque\u00f1o pueblo en M\u00e9xico donde Bob Dylan di\u00f3 un concierto gratis en 2008, para ver
el concierto. Pasa a trav\u00e9s de varios pueblos y personas que conoce en el camino, y finalmente
llega al concierto, para grabarlo y cumplir el fin \u00faltimo: preguntarle a Bob Dyla una pregunta.",
"can_user_see_it":true,
"precio":25,
"formats": {
"smooth": true,
"hls": true
}
},
{
"id":"109",
"nombre":"Rabidondo",
"slug":"rabidondo",
"anio":"2008",
"duracion":"10",
"genero":"Horror\/Ficci\u00f3n",
"pais":"M\u00e9xico",
"director":"Salom\u00f3n Askenazi",
"trailer_youtube_id":null,
"sinopsis":"Cortometraje experimental sobre un bizarro sue\u00f1o en el que se mezclan dios, la religi\u00f3n,
la curiosidad, el cine, la infancia, el arte y la belleza de nuestro mundo.",
"can_user_see_it":false,
"precio":10,
"formats": {
"smooth": true,
"hls": true
}
}
]
GET /api/movie
Este método regresa las películas del catálogo y solo incluyen información básica de las películas. Si se requiere más información se puede hacer
una llamada a /api/movie con el ID de la película para obtenerla.
El orden de las películas es de la más reciente a la más antigua.
Parámetros:
string appID
El identificador de tu aplicación con nuestro API.
string hash
El hash que sirve como firma de la llamada como se explica en la
introducción.
int movie_id
El ID de la película.
Regresa:
El método regresa un array del siguiente objeto:
int id
El ID de la película.
string nombre
El nombre de la película.
string slug
El slug de la película.
string manifest_url
El manifest de video (smooth streaming) de la película. Este campo solo está definido si el usuario puede ver la película.
string hls_manifest_url
El manifest de video (HLS) de la película. Este campo solo está definido si el usuario puede ver la película. Si la película todavía no está disponible en HLS, este campo será NULL.
int catalogo
Indica si la película es parte del catálogo o de un festival. Valores posibles: 1 (catálogo), 0 (festival).
int anio
El año de publicación de la película.
int duración
La duración en minutos de la película.
En qué formatos de video está disponible la película (Smooth Streaming y HLS).
string genero
El genero de la película.
string pais
El país de realización de la película.
string director
El director de la película.
string idioma
El idioma de la película.
string subtitulos
Si la película tiene subtítulos.
string productora
La casa productora/productor de la película.
string website
El website de la película.
string trailer_youtube_id
El ID de YouTube del trailer.
string sinopsis
La sinopsis de la película.
string laureles
Los premios (laureles) que haya ganado la película.
boolean can_user_see_it
Si el usuario puede o no ver la película. Esto puede ser debido a que la película sea gratis o a que ya haya pagado por ella (por renta o suscripción).
int festival_id
Si la película es parte de un festival, es el ID de ese festival. Este campo solo está definido si la película es parte de un festival.
int precio
El precio de la película bajo la modalidad de renta individual.
Ejemplo:
GET /api/movie
appID=foobar123&movie_id=110&token=56e078af29da61084de88103204c03bda9bdfdca7b1c54d9ab289d8bbef3721c&hash=57f86f2bf6d2bc9722d6d7249280b6f82f5b428e01766305e38ac0f46ee1f446
{
"id":"110",
"nombre":"In search of Dylan",
"slug":"in-search-of-dylan",
"manifest_url":"http:\/\/nuflickstr.cloudapp.net\/movies2\/dylan\/test.ism",
"catalogo":"1",
"anio":"2009",
"duracion":"80",
"genero":"Documental",
"pais":"M\u00e9xico, Estados Unidos",
"director":"Jan Markowski",
"idioma":"Ingl\u00e9s",
"subtitulos":null,
"productora":"Yellow Films",
"website":"http:\/\/yellowfilms.net\/movies.php#footer",
"trailer_youtube_id":"l4vx9S835iw",
"sinopsis":"Un hombre recorre 633 km de avent\u00f3n desde la Ciudad de M\u00e9xico hasta Zacatecas,
un peque\u00f1o pueblo en M\u00e9xico donde Bob Dylan di\u00f3 un concierto gratis en 2008, para
ver el concierto. Pasa a trav\u00e9s de varios pueblos y personas que conoce en el camino, y finalmente
llega al concierto, para grabarlo y cumplir el fin \u00faltimo: preguntarle a Bob Dyla una pregunta.",
"laureles":null,
"can_user_see_it":true,
"precio":0,
"geolocked":false
}
GET /api/festivals
Este método regresa todos los festivales del sitio, con las respectivas películas.
Parámetros:
string appID
El identificador de tu aplicación con nuestro API.
string hash
El hash que sirve como firma de la llamada como se explica en la
introducción.
Regresa:
El método regresa un array del siguiente objeto:
int id
El ID del festival.
string nombre
El nombre del festival.
string slug
El slug del festival.
int precio
El precio del cinebono del festival.
boolean user_has_subscription
Indica si el usuario tiene acceso al festival.
string fecha_inicio
Fecha en la que el festival comienza.
string fecha_final
Fecha en la que el festival termina.
string nuflick_inicio
Fecha en la que el festival en nuflick comienza.
string nuflick_final
Fecha en la que el festival en nuflick termina.
int array movies
Una lista de las películas que son parte del festival.
Ejemplo:
GET /api/festivals
appID=foobar123&token=56e078af29da61084de88103204c03bda9bdfdca7b1c54d9ab289d8bbef3721c&hash=57f86f2bf6d2bc9722d6d7249280b6f82f5b428e01766305e38ac0f46ee1f446
[
{
"id":"1",
"nombre":"Festival de Cine Creative Commons Ciudad de M\u00e9xico",
"slug":"creative-commons",
"precio":0,
"user_has_subscription":false,
"fecha_inicio": "2013-07-14 00:00:00",
"fecha_final": "2013-07-14 00:00:00",
"nuflick_inicio": "2013-07-14 00:00:00",
"nuflick_final": "2013-07-14 00:00:00",
"movies":["17","18","21","19","20","22","23","24","25","26","27","28","29"]
},
{
"id":"3",
"nombre":"Oaxaca FilmFest 3",
"slug":"oaxaca-film-fest",
"precio":"150",
"user_has_subscription":true,
"fecha_inicio": "2013-07-14 00:00:00",
"fecha_final": "2013-07-14 00:00:00",
"nuflick_inicio": "2013-07-14 00:00:00",
"nuflick_final": "2013-07-14 00:00:00",
"movies":["88","87","96","95","94","93","92","91","90","89"]
}
]
GET /api/festival
Este método regresa un solo festival, con las películas en el mismo formato que /api/movies.
Parámetros:
string appID
El identificador de tu aplicación con nuestro API.
string hash
El hash que sirve como firma de la llamada como se explica en la
introducción.
int festival_id
El ID del festival.
Regresa:
El método regresa el siguiente objeto:
int id
El ID del festival.
string nombre
El nombre del festival.
string slug
El slug del festival.
int precio
El precio del cinebono del festival.
boolean user_has_subscription
Indica si el usuario tiene acceso al festival.
string fecha_inicio
Fecha en la que el festival comienza.
string fecha_final
Fecha en la que el festival termina.
string nuflick_inicio
Fecha en la que el festival en nuflick comienza.
string nuflick_final
Fecha en la que el festival en nuflick termina.
object array movies
Una lista de las películas que son parte del festival. Las películas vienen en el mismo formato en el que las entrega
/api/movies
Ejemplo:
GET /api/festival
appID=foobar123&festival_id=3&token=56e078af29da61084de88103204c03bda9bdfdca7b1c54d9ab289d8bbef3721c&hash=57f86f2bf6d2bc9722d6d7249280b6f82f5b428e01766305e38ac0f46ee1f446
{
"id":"1",
"nombre":"Festival de Cine Creative Commons Ciudad de M\u00e9xico",
"slug":"creative-commons",
"precio":0,
"user_has_subscription":false,
"fecha_inicio": "2013-07-14 00:00:00",
"fecha_final": "2013-07-14 00:00:00",
"nuflick_inicio": "2013-07-14 00:00:00",
"nuflick_final": "2013-07-14 00:00:00",
"movies":[
{
"id":"110",
"nombre":"In search of Dylan",
"slug":"in-search-of-dylan",
"anio":"2009",
"duracion":"80",
"genero":"Documental",
"pais":"M\u00e9xico, Estados Unidos",
"director":"Jan Markowski",
"trailer_youtube_id":"l4vx9S835iw",
"sinopsis":"Un hombre recorre 633 km de avent\u00f3n desde la Ciudad de M\u00e9xico hasta Zacatecas,
un peque\u00f1o pueblo en M\u00e9xico donde Bob Dylan di\u00f3 un concierto gratis en 2008, para ver
el concierto. Pasa a trav\u00e9s de varios pueblos y personas que conoce en el camino, y finalmente
llega al concierto, para grabarlo y cumplir el fin \u00faltimo: preguntarle a Bob Dyla una pregunta.",
"can_user_see_it":true,
"precio":25,
"formats": {
"smooth": true,
"hls": true
}
},
{
"id":"109",
"nombre":"Rabidondo",
"slug":"rabidondo",
"anio":"2008",
"duracion":"10",
"genero":"Horror\/Ficci\u00f3n",
"pais":"M\u00e9xico",
"director":"Salom\u00f3n Askenazi",
"trailer_youtube_id":null,
"sinopsis":"Cortometraje experimental sobre un bizarro sue\u00f1o en el que se mezclan dios, la religi\u00f3n,
la curiosidad, el cine, la infancia, el arte y la belleza de nuestro mundo.",
"can_user_see_it":false,
"precio":10,
"formats": {
"smooth": true,
"hls": true
}
}
]
}
GET /api/canales
Este método regresa todos los canales del sitio, con las respectivas películas.
Parámetros:
string appID
El identificador de tu aplicación con nuestro API.
string hash
El hash que sirve como firma de la llamada como se explica en la
introducción.
Regresa:
El método regresa un array del siguiente objeto:
string nombre
El nombre del canal.
string slug
El slug del canal.
int array movies
Una lista de las películas que son parte del canal.
Ejemplo:
GET /api/canales
appID=foobar123&token=56e078af29da61084de88103204c03bda9bdfdca7b1c54d9ab289d8bbef3721c&hash=57f86f2bf6d2bc9722d6d7249280b6f82f5b428e01766305e38ac0f46ee1f446
[
{
"id":"1",
"nombre":"Cineteca Nacional",
"slug":"cineteca-mexico",
"movies":["17","18","21","19","20","22","23","24","25","26","27","28","29"]
},
{
"id":"1",
"nombre":"Canana",
"slug":"canana",
"movies":["17","18","21","19","20","22","23","24","25","26","27","28","29"]
}
]
GET /api/canal
Este método regresa un solo canal, con las películas en el mismo formato que /api/movies.
Parámetros:
string appID
El identificador de tu aplicación con nuestro API.
string hash
El hash que sirve como firma de la llamada como se explica en la
introducción.
int canal_id
El ID del canal.
Regresa:
El método regresa el siguiente objeto:
string nombre
El nombre del canal.
string slug
El slug del canal.
object array movies
Una lista de las películas que son parte del canal. Las películas vienen en el mismo formato en el que las entrega
/api/movies
Ejemplo:
GET /api/canal
appID=foobar123&canal_id=3&token=56e078af29da61084de88103204c03bda9bdfdca7b1c54d9ab289d8bbef3721c&hash=57f86f2bf6d2bc9722d6d7249280b6f82f5b428e01766305e38ac0f46ee1f446
{
"id":"1",
"nombre":"Canana",
"slug":"canana",
"movies":[
{
"id":"110",
"nombre":"In search of Dylan",
"slug":"in-search-of-dylan",
"anio":"2009",
"duracion":"80",
"genero":"Documental",
"pais":"M\u00e9xico, Estados Unidos",
"director":"Jan Markowski",
"trailer_youtube_id":"l4vx9S835iw",
"sinopsis":"Un hombre recorre 633 km de avent\u00f3n desde la Ciudad de M\u00e9xico hasta Zacatecas,
un peque\u00f1o pueblo en M\u00e9xico donde Bob Dylan di\u00f3 un concierto gratis en 2008, para ver
el concierto. Pasa a trav\u00e9s de varios pueblos y personas que conoce en el camino, y finalmente
llega al concierto, para grabarlo y cumplir el fin \u00faltimo: preguntarle a Bob Dyla una pregunta.",
"can_user_see_it":true,
"precio":25,
"formats": {
"smooth": true,
"hls": true
}
},
{
"id":"109",
"nombre":"Rabidondo",
"slug":"rabidondo",
"anio":"2008",
"duracion":"10",
"genero":"Horror\/Ficci\u00f3n",
"pais":"M\u00e9xico",
"director":"Salom\u00f3n Askenazi",
"trailer_youtube_id":null,
"sinopsis":"Cortometraje experimental sobre un bizarro sue\u00f1o en el que se mezclan dios, la religi\u00f3n,
la curiosidad, el cine, la infancia, el arte y la belleza de nuestro mundo.",
"can_user_see_it":false,
"precio":10,
"formats": {
"smooth": true,
"hls": true
}
}
]
}
GET /api/search
Este método busca el término ingresado en el catálogo y regresa las películas que cumplan con el parámetro de búsqueda.
Parámetros:
string appID
El identificador de tu aplicación con nuestro API.
string hash
El hash que sirve como firma de la llamada como se explica en la
introducción.
string what
El parámetro de búsqueda. 4 caracteres mínimo.
Regresa:
El método regresa un array del siguiente objeto:
int id
El ID de la película.
string nombre
El nombre de la película.
string slug
El slug de la película.
int anio
El año de publicación de la película.
int duración
La duración en minutos de la película.
En qué formatos de video está disponible la película (Smooth Streaming y HLS).
string genero
El genero de la película.
string pais
El país de realización de la película.
string director
El director de la película.
string trailer_youtube_id
El ID de YouTube del trailer.
string sinopsis
La sinopsis de la película.
boolean can_user_see_it
Si el usuario puede o no ver la película. Esto puede ser debido a que la película sea gratis o a que ya haya pagado por ella (por renta o suscripción).
int precio
El precio de la película bajo la modalidad de renta individual.
Ejemplo:
GET /api/search
appID=foobar123&what=whatever&token=56e073bda9bdfdca7b1c54d9de88103204c08af29da61084ab289d8bbef3721c&hash=57f86f2bf6d2bc9722d6d7249280b6f82f5b428e01766305e38ac0f46ee1f446
[
{
"id":"110",
"nombre":"In search of Dylan",
"slug":"in-search-of-dylan",
"anio":"2009",
"duracion":"80",
"genero":"Documental",
"pais":"M\u00e9xico, Estados Unidos",
"director":"Jan Markowski",
"trailer_youtube_id":"l4vx9S835iw",
"sinopsis":"Un hombre recorre 633 km de avent\u00f3n desde la Ciudad de M\u00e9xico hasta Zacatecas,
un peque\u00f1o pueblo en M\u00e9xico donde Bob Dylan di\u00f3 un concierto gratis en 2008, para ver
el concierto. Pasa a trav\u00e9s de varios pueblos y personas que conoce en el camino, y finalmente
llega al concierto, para grabarlo y cumplir el fin \u00faltimo: preguntarle a Bob Dyla una pregunta.",
"can_user_see_it":true,
"precio":25,
"formats": {
"smooth": true,
"hls": true
}
},
{
"id":"109",
"nombre":"Rabidondo",
"slug":"rabidondo",
"anio":"2008",
"duracion":"10",
"genero":"Horror\/Ficci\u00f3n",
"pais":"M\u00e9xico",
"director":"Salom\u00f3n Askenazi",
"trailer_youtube_id":null,
"sinopsis":"Cortometraje experimental sobre un bizarro sue\u00f1o en el que se mezclan dios, la religi\u00f3n,
la curiosidad, el cine, la infancia, el arte y la belleza de nuestro mundo.",
"can_user_see_it":false,
"precio":10,
"formats": {
"smooth": true,
"hls": true
}
}
]