Elentra API
  • Introduction
  • Developers
    • Getting Started
    • Quickstart Guide
      • Set up Repositories
      • Validate the setup
      • Exploring the API
      • Creating a new Module
      • Setup Routing
      • Introduction to Postman
      • Create a Controller
      • Using Eloquent Models
      • Input Validation
      • API Resource Authorization
  • Elentra API Standards
    • HTTP Methods & Status Codes
    • Routing & Parameters
      • Example Routing Patterns with HTTP Method
        • /courses/{course}/contacts
        • /courses/{course}/contacts?type={contact_type}
        • /courses/{course}/contacts/{contact}
        • /courses/{course}/syllabus
      • Common Mistakes
        • [GET] /admissions/file-review/file/rubric-score/{cycle_id}/{pool_id}/{subpool_id}
        • [DELETE] /notices/1,2,3
        • [GET] /cbe/curriculum/framework/{framework_id}/hierarchy-by-depth
        • [GET] /admissions/file-review/file/rubric-score/delete/{id}
        • [GET] /portfolio/entries/{entry_id}/get-file
        • [POST] /cbe/curriculum/updateframework
  • Automated Testing
    • Getting Started
      • Setting up a testing environment
      • Running Automated Tests
    • Seed Data
      • Folder Structure
      • Creating Seed Data
    • Functional Tests
      • Creating a Functional Test File
      • Testing HTTP Verbs
        • Creating an HTTP Test
        • GET Requests
        • POST / PUT / DELETE Requests
        • GraphQL Requests
      • Asserting API Response
      • Annotations
    • Code Style Linting
Powered by GitBook
On this page
  1. Developers
  2. Quickstart Guide

Creating a new Module

PreviousExploring the APINextSetup Routing

Last updated 2 years ago

In this section we will create a new called Widgets, and use it to define some /widgets API Endpoints. To create a Caffeinated Module we will use the Laravel Artisan command line interface.

To use Artisan within Elentra ME, it is necessary to navigate to the location where the API is included in Elentra ME. If you are using Docker, you will need to do this from the Docker container.

# log into the Docker container
docker exec -it elentra-developer bash
# navigate to Elenta ME
cd /var/www/vhosts/elentra-1x-me
# navigate to the Elentra API
cd www-root/core/library/vendor/elentrapackages/elentra-1x-api
php artisan module:list

This should return output something like this:

+------+-------------+-------------+----------------------------------------------------------------+----------+
| #    | Name        | Slug        | Description                                                    | Status   |
+------+-------------+-------------+----------------------------------------------------------------+----------+
| 9001 | Assessments | assessments | API Endpoints for the Entrada Assessments                      | Enabled  |
| 9001 | Logbook     | logbook     | This module is responsible for Logbook management.             | Enabled  |
| 9001 | User        | user        | REST API endpoints for the current user                        | Enabled  |
| 9001 | Notices     | notices     | REST API Endpoints for Notices                                 | Enabled  |
| 9001 | Sandbox     | sandbox     | Example of a module that integrates into the Entrada frontend. | Enabled  |
| 9001 | Locations   | locations   | Locations REST end point                                       | Enabled  |
| 9001 | Admissions  | admissions  | API Endpoints for the ADM flavor of Entrada                    | Disabled |
| 9001 | Clinical    | clinical    | This is the description for the Clinical module.               | Enabled  |
| 9001 | Events      | events      | Endpoint for events                                            | Enabled  |
| 9001 | Portfolio   | portfolio   | This module is responsible for Portfolio management.           | Enabled  |
+------+-------------+-------------+----------------------------------------------------------------+----------+

You can get help with Artisan commands by using help:

php artisan help
# or to get help for a specific command
php artisan help <command>

The Caffeinated Modules package we are using adds support for managing the modules through artisan. Create the Widget module.

php artisan make:module Widgets

This will start a wizard. Version and Description can be whatever you like.

*-----------------------------------------------*
|                                               |
|              Copyright (c) 2016               |
|                  Shea Lewis                   |
|                                               |
|         Thanks for using Caffeinated!         |
*-----------------------------------------------*
______  ___     _________      ______
___   |/  /___________  /___  ____  /____________
__  /|_/ /_  __ \  __  /_  / / /_  /_  _ \_  ___/
_  /  / / / /_/ / /_/ / / /_/ /_  / /  __/(__  )
/_/  /_/  \____/\__,_/  \__,_/ /_/  \___//____/  

*-----------------------------------------------*
|                                               |
|          Step #1: Configure Manifest          |
|                                               |
*-----------------------------------------------*


 Please enter the name of the module: [Widgets]:
 > 

 Please enter the slug for the module: [widgets]:
 > 

 Please enter the module version: [1.0]:
 > 

 Please enter the description of the module: [This is the description for the Widgets module.]:
 > 

You have provided the following manifest information:
Name:                       Widgets
Slug:                       widgets
Version:                    1.0
Description:                This is the description for the Widgets module.
Basename (auto-generated):  Widgets
Namespace (auto-generated): Entrada\Modules\Widgets

 If the provided information is correct, type "yes" to generate. (yes/no) [no]:
 > yes

Thanks! That's all we need.
Now relax while your module is generated.
 2/2 [============================] 100%
Module generated successfully.

This will create a new directory Widgets under app/Modules, and populate a number of directories and files.

Laravel as a PHP framework can act as an API and a front-end web server. For our purposes we only care about the API, so after creating the Module there is some cleanup to do.

  • Remove the fileWidgets/Routes/web.php

  • Edit the file Widgets/Providers/RouteServiceProvider.php and remove the mapWebRoutes() function

  • Also remove the reference to mapWebRoutes() in the map() function

Next we will create a controller and routes for our Widgets.

Caffeinated Module