{"id":19553837,"url":"https://github.com/johnsi15/apimoviestypescript","last_synced_at":"2026-04-12T15:03:35.481Z","repository":{"id":197451665,"uuid":"697971969","full_name":"johnsi15/apiMoviesTypeScript","owner":"johnsi15","description":"Esta es una API REST de películas, diseñada para ofrecer una amplia gama de funcionalidades relacionadas con la gestión de películas. Desde la obtención de información sobre películas hasta la creación y actualización de registros.","archived":false,"fork":false,"pushed_at":"2023-10-17T17:09:34.000Z","size":176,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-08T20:45:11.218Z","etag":null,"topics":["api","boom","express","faker","javascript","jest","joi","jwt","mongodb","nodejs","passport-jwt","supertest"],"latest_commit_sha":null,"homepage":"https://movies-john-serrano.koyeb.app/api/movies/public","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/johnsi15.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-28T21:27:25.000Z","updated_at":"2023-10-19T13:53:01.000Z","dependencies_parsed_at":null,"dependency_job_id":"5a6de976-b496-472f-90b8-b7c779c55cc1","html_url":"https://github.com/johnsi15/apiMoviesTypeScript","commit_stats":null,"previous_names":["johnsi15/apimoviestypescript"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnsi15%2FapiMoviesTypeScript","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnsi15%2FapiMoviesTypeScript/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnsi15%2FapiMoviesTypeScript/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnsi15%2FapiMoviesTypeScript/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/johnsi15","download_url":"https://codeload.github.com/johnsi15/apiMoviesTypeScript/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240810288,"owners_count":19861236,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","boom","express","faker","javascript","jest","joi","jwt","mongodb","nodejs","passport-jwt","supertest"],"created_at":"2024-11-11T04:24:51.958Z","updated_at":"2026-04-12T15:03:30.437Z","avatar_url":"https://github.com/johnsi15.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![API MOVIES CI](https://github.com/johnsi15/apiMoviesTypeScript/actions/workflows/api-ci.yml/badge.svg)](https://github.com/johnsi15/apiMoviesTypeScript/actions/workflows/api-ci.yml)\n\n# Movies\n\n¿How does that work?\n\nRequire Node.js v18.15.0\n\n* `npm install` to install the dependencies\n* `npm run dev` to run development mode app\n* `npm start` to build production\n\n\n## ESLint\nQuick start `npm init @eslint/config`\n\nInstall dependencies:\n\n`npm i eslint-config-standard-with-typescript -D -E`\n\nhttps://www.npmjs.com/package/eslint-config-standard-with-typescript\n\n\n`.eslintrc.cjs`\n```json\n\"extends\": [\n  \"eslint-config-standard-with-typescript\",\n],\n\"parserOptions\": {\n  \"project\": \"./tsconfig.json\"\n},\n```\n\n\nEste proyecto es una API que proporciona información sobre películas. Puedes utilizar esta API para acceder a detalles de películas, buscar películas por tags y más.\n\n## Características\n\n- Obtén detalles de películas.\n- Busca películas por tags.\n- Agrega nuevas películas a la base de datos.\n- Autenticación de usuarios (si es aplicable).\n\n## Uso\n\n### Endpoints\n\n- `/api/movies`: Obtiene una lista de películas.\n- `/api/movies/{movieId}`: Obtiene detalles de una película específica.\n- `/api/movies?tags=Acción\u0026tags=Misterio\u0026tags=Drama`: Busca películas por tags.\n- `/api/movies`: Agrega una nueva película.\n\n## Autenticación\n\nSi es necesario autenticarse para acceder a ciertos recursos, debes incluir un encabezado de autorización en tu solicitud. Ejemplo:\n\n`Authorization: Bearer tu_token_de_acceso`\n\n## API de Autenticación\n\nEste proyecto permite a los usuarios registrarse como proveedores de servicios. A continuación, se muestra un ejemplo de cómo puedes registrarte como proveedor utilizando esta API de películas.\n\n## Registro de Proveedor\n\nPara registrarte como proveedor o iniciar sesión si ya tiene un usuario y contraseña, debes realizar una solicitud POST a la siguiente URL: `/api/auth/sign-provider`.\n\n### Ejemplo de Solicitud\n\nPuedes utilizar una herramienta como [Thunder Client](https://www.thunderclient.com) o cualquier cliente HTTP para realizar esta solicitud. Aquí tienes un ejemplo de cómo hacerlo en JavaScript:\n\n```javascript\nlet headersList = {\n  \"Accept\": \"*/*\",\n  \"User-Agent\": \"Thunder Client (https://www.thunderclient.com)\",\n  \"X-Requested-With\": \"XMLHttpRequest\",\n  \"Authorization\": \"Basic user\u0026password\",\n  \"Content-Type\": \"application/json\"\n}\n\nconst PUBLIC_KEY_TOKEN = '52ec1f8156f18dcd8057f49ed71719be77112e537dd382cef3f60f1c5d5d936e'\n\nlet bodyContent = JSON.stringify({\n\t\"name\": \"Andrey provider\",\n\t\"email\": \"japrovider@gmail.com\",\n\t\"password\": \"secret\",\n\t\"apiKeyToken\": PUBLIC_KEY_TOKEN\n});\n\nlet response = await fetch(\"http://localhost:3000/api/auth/sign-provider\", { \n  method: \"POST\",\n  body: bodyContent,\n  headers: headersList\n});\n\nlet data = await response.json();\nconsole.log(data);\n\n```\n\n### Ejemplos\n\n#### Obtener una lista de películas\nGET /api/movies\n```js\nlet headersList = {\n    \"User-Agent\": \"Thunder Client (https://www.thunderclient.com)\",\n    \"Accept\": \"*/*, application/json\",\n    \"X-Requested-With\": \"XMLHttpRequest\",\n    \"Authorization\": \"Bearer token\"\n}\n\nlet response = await fetch(\"http://localhost:3000/api/movies\", { \n  method: \"GET\",\n  headers: headersList\n});\n\nlet data = await response.json();\nconsole.log(data);\n\n```\n\n#### Obtener detalles de una película\nGET /api/movies/{movieId}\n\n```js\nlet headersList = {\n  \"User-Agent\": \"Thunder Client (https://www.thunderclient.com)\",\n  \"Accept\": \"*/*, application/json\",\n  \"X-Requested-With\": \"XMLHttpRequest\",\n  \"Authorization\": \"Bearer token\"\n}\n\nlet response = await fetch(\"http://localhost:3000/api/movies/650f5136c993a5e4ea7902f4\", { \n  method: \"GET\",\n  headers: headersList\n});\n\nlet data = await response.json();\nconsole.log(data);\n\n```\n\n#### Buscar películas por tags\nGET /api/movies?tags=Acción\u0026tags=Misterio\u0026tags=Drama\n\n```js\nlet headersList = {\n  \"User-Agent\": \"Thunder Client (https://www.thunderclient.com)\",\n  \"Accept\": \"*/*, application/json\",\n  \"X-Requested-With\": \"XMLHttpRequest\",\n  \"Authorization\": \"Bearer token\"\n}\n\nlet response = await fetch(\"http://localhost:3000/api/movies?tags=Tego\u0026tags=debitiS\u0026tags=drama\", { \n  method: \"GET\",\n  headers: headersList\n});\n\nlet data = await response.json();\nconsole.log(data);\n\n```\n\n#### Agregar una nueva película\nPOST /api/movies\n\n```js\nlet headersList = {\n  \"User-Agent\": \"Thunder Client (https://www.thunderclient.com)\",\n  \"Accept\": \"*/*, application/json\",\n  \"X-Requested-With\": \"XMLHttpRequest\",\n  \"Authorization\": \"Bearer token\",\n  \"Content-Type\": \"application/json\"\n}\n\nlet bodyContent = JSON.stringify({\n  \"title\": \"Dickens 011d32bfb9c2\",\n  \"year\": \"2006\",\n  \"cover\": \"https://occ-0-1952-2433.1.nflxso.net/dnm/api/v6/0DW6CdE4gYtYx8iy3aj8gs9WtXE/AAAABRcGy6ws9z-3R_jjOxJxY1Hsu-8N4zF430fZMr07WavWEAGcixUPPMO7I_YgrGWc23utV4mM30qP4MBHyKcQ0WozRRdTdaYMstq55mcOZUyJ31uZJ45AmpGCBBs7qQ.jpg?r=72b\",\n  \"description\": \"Carter b7a1557a7bfd\",\n  \"duration\": \"293\",\n  \"source\": \"https://johnserrano.co\",\n  \"tags\": [\n    \"Comedia\"\n  ]\n});\n\nlet response = await fetch(\"http://localhost:3000/api/movies\", { \n  method: \"POST\",\n  body: bodyContent,\n  headers: headersList\n});\n\nlet data = await response.json();\nconsole.log(data);\n\n```\n#### Obtener una lista de películas pública\n\nGET /api/movies/public\n```js\nlet headersList = {\n  \"User-Agent\": \"Thunder Client (https://www.thunderclient.com)\",\n  \"Accept\": \"*/*, application/json\",\n  \"X-Requested-With\": \"XMLHttpRequest\"\n}\n\nlet response = await fetch(\"https://movies-john-serrano.koyeb.app/api/movies/public\", { \n  method: \"GET\",\n  headers: headersList\n});\n\nlet data = await response.json();\nconsole.log(data);\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnsi15%2Fapimoviestypescript","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjohnsi15%2Fapimoviestypescript","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnsi15%2Fapimoviestypescript/lists"}