PHP Framework for building scalable API's on top of Laravel.

Overview

forthebadge

Apiato

Build scalable API's faster | With PHP 7.2.5 and Laravel 7.0

Apiato Logo

apiato Scrutinizer Code Quality Codacy Badge Build Status Build Status Latest Stable Version Backers on Open Collective Sponsors on Open Collective License

Apiato is a framework for building scalable and testable API-Centric Applications with PHP, build on top of Laravel.

It is designed to help you build scalable API's faster, by providing tools and functionalities that facilitates the development of any API-Centric App.

Apiato uses the best frameworks, tools and conventions in a very creative way, to deliver a rich set of features for a modern PHP Application.

Why!? Because setting up a solid API from scratch is time consuming (and of course, time is money!). Apiato gives you the core features of robust API's fully documented, for free; so you can focus on writing your business logic, thus deliver faster to your clients.

Why API-Centric Apps?
Today we’re living in a digital era, where almost everything is connected to the Internet.

Building cross-devices applications is becoming a must. And to do it, you need APIs (Application Programing Interfaces).

Web developers are used to serve HTML pages directly from the Backend. However, this traditional method has many disadvantages nowadays.

API's can serve anything and everything (Mobile Apps, Web Apps, Smart TVs, Smart Watches,...).
As well as, it can be exposed to the world allowing developers to interact with your Application and help growing your business.

API-Centric Apps allows Frontend (Web + Mobile) and Backend developers to work on their codes in parallel. 
After the Frontend Apps are ready they get attached to the Backend (API-Centric) code to start functioning. 
This leads to zero decoupling between the Frontend and the Backend code and also removes the dependencies. 
The API documentation acts as the contract between both sides during the development life cycle of all the Apps.

Features

Apiato comes with an amazing list of features.

Apiato Features

Documentation

Apiato is built using the new architectural pattern Porto.

Porto SAP is a modern Software Architectural Pattern, designed to help developers organize their Code in a super maintainable way. It is very helpful for big and long term projects, as they tend to have higher complexity with time.

It's completely optional to build your application using the Porto architecture. Alternatively, you can build it using the MVC architecture, and still benefit from all the features of Apiato.


Apiato Docs


Join our Discord server, by clicking on the icon below.

Apiato Discord

Contributing

Feel free to dive in! Fix open Issues and submit new features.
Make sure you check our contribution guide before getting started.
Apiato follows the Contributor Covenant Code of Conduct.

Awesome People

Apiato is an MIT-licensed open source project with its ongoing development made possible entirely by the support of all these smart and generous people, from code contributors to financial contributors. 💜

Project Maintainers


Mahmoud Zalt
@mahmoudz

Johannes Schobel
@johannesschobel

Johan Alvarez
@llstarscreamll

Zeljko Marenovic
@zmaren

Renato Dehnhardt
@rdehnhardt

Julián Bustamante
@JulianBustamante

Ahmed Abd El-Ftah
@Te7a-Houdini

FWidm
@FWidm

Lloric Mayuga Garcia
@lloricode

Pepe
@jlorente

Arthur Vandenberghe
@deviouspk

Null HZ61 P1
@hz61p1

Martin Kiesel
@Kyslik

Samer Halawani
@shalawani

< Join Us >
@apiato

Code Contributors

Apiato Contributors

Financial Contributors

Open Collective backers

You can support us using any of the methods below:

1: Open Collective
2: Paypal
3: Github Sponsors
4: Patreon


Sponsors

Sponsoring is an act of giving in a different fashion. 🌱

Gold Sponsors

Silver Sponsors

Bronze Sponsors

You can sponsor us using any of the methods below:

1: Sponsor via Open Collective.
2: Email us at [email protected].

Sponsors logos are displayed on the github repository page and the documentation website home page.

License

MIT © Mahmoud Zalt

Comments
  • An Exception occurred when trying to authenticate the User

    An Exception occurred when trying to authenticate the User

    I set in .env file QUERIES_DEBUG=true

    I open admin to login. put the email and password click the "login" button The page show "An Exception occurred when trying to authenticate the User"

    Why? How to fix? Thank you

    opened by maliang 38
  • Any upgrades in near future? Laravel 5.8 or 6.0?

    Any upgrades in near future? Laravel 5.8 or 6.0?

    Hello! Are any updates planned for the near future? Will laravel upgrade to 5.8 or 6.0? Or is the project already abandoned? Thanks for any information.

    opened by serj42 20
  • App\Ship\Parents\Providers\EventsProvider Default  Not Provider

    App\Ship\Parents\Providers\EventsProvider Default Not Provider

    in ApiatoProvier.php file

        public $serviceProviders = [
            // Third Party Packages Providers:
            HashidsServiceProvider::class,
            RepositoryServiceProvider::class,
            CorsServiceProvider::class,
            FractalServiceProvider::class,
            HeimdalExceptionsServiceProvider::class,
    
            // add the Laravel Tinker Service Provider
            TinkerServiceProvider::class,
    
            // Internal Apiato Providers:
            EventServiceProvider::class, //The custom apiato eventserviceprovider
            RoutesProvider::class, // exceptionally adding the Route Provider, unlike all other providers in the parents.
            ShipProvider::class, // the ShipProvider for the Ship third party packages.
            GeneratorsServiceProvider::class, // the code generator provider.
        ];
    

    not include EventsProvider

    Should add to ShipProvider.php by hand ?

    opened by yesterday679 14
  • Hashed Id's returning hash of primary key when value is null

    Hashed Id's returning hash of primary key when value is null

    Expected Behavior

    Return null for the attribute that is null

    Actual Behavior

    Return hash of primary key when attribute is null

    Steps to Reproduce the Problem

    1. Create model with PrimaryKeyId, OtherIdToHash attributes
    2. In transformer for model, hash both PrimaryKeyId and OtherKeyId. See code below.
    3. Retrieve saved model where OtherKeyId is null. The transformer returns hash of the primary key

    Specifications

    • Apiato Version: 2.0.7

    Additional Details

    Code in transformer ` public function transform(MyModel $entity) { $response = [ 'object' => 'MyObject', 'Id' => $entity->getHashedKey(), 'OtherKeyId' => $entity->getHashedKey($entity->OtherKeyId), ];

        return $response;
    }`
    

    Expected JSON: { "data": [ { "object": "MyObject", "Id": "xbd95q89l87mlvng", "OtherKeyId": null, } ] } Actual JSON: { "data": [ { "object": "MyObject", "Id": "xbd95q89l87mlvng", "OtherKeyId": "xbd95q89l87mlvng", } ] }

    opened by desertfoxmb 14
  • Fresh install of stable returning ValueObject not found error

    Fresh install of stable returning ValueObject not found error

    Expected Behavior

    Fresh install of apiato should return no errors.

    Actual Behavior

    An error page occurs, and checking laravel.log file contains this error:

    [2017-12-11 07:55:56] local.ERROR: Class 'Apiato\Core\Abstracts\ValueObjects\ValueObject' not found {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalErrorException(code: 1): Class 'Apiato\\Core\\Abstracts\\ValueObjects\\ValueObject' not found at D:\\Projects\
    apiato-test\\app\\Ship\\Parents\\ValueObjects\\ValueObject.php:13)
    [stacktrace]
    #0 {main}
    "} 
    
    

    Steps to Reproduce the Problem

    1. composer create-project apiato/apiato my-api
    2. Follow the rest of the steps at the Installation Guide

    Specifications

    • Apiato Version: Surprisingly, I pulled stable, but composer tells me apiato/core is loaded from dev-master.

    Additional Details

    opened by ghost 13
  • Filter Transformers

    Filter Transformers

    This update updates the transformer when requesting an endpoint with ?filter=name;email;x parameters. Thereby, all "unwanted" fields are removed from the resultset.

    Works with all currently provided Serializers (DataArraySerializer, JsonApiSerializer, ...)

    This fixes issue #140 .

    opened by johannesschobel 13
  • 404 not found

    404 not found

    Hi! I'm just curious about Hello-API, reading the documentation I feel it's a really good starting point to create a brand new API using Laravel. So, I followed the installation instructions and everything seems to be fine. API responds. That's ok. The point is that the response from API is always 404.

    curl -X POST -H "Accept: application/json" -F "[email protected]" -F "password=secret#pass" -F "name=John Doe" "http://api.mega.pro/register"

    The answer is:

    {"message":"404 Not Found","status_code":404}%

    Am I forgetting something?

    Type:Help 
    opened by rayoplateado 13
  • Model Factory from Unit test does not trigger model events

    Model Factory from Unit test does not trigger model events

    Calling model factory create in unit test for example factory(App\User::class)->create() Will not trigger Model Events (https://laravel.com/docs/5.6/eloquent#events)

    Steps to Reproduce the Problem

    Create the following Observers https://laravel.com/docs/5.6/eloquent#observers In for example User Container add some User factory and call it from unit tests you will see that model events are not triggered.

    Specifications

    • Apiato Version: "apiato/core": "dev-master",

    Additional Details

    I have tested the same behavior with laravel 5.6 and the events are fired While debugging this bug in apiato I came to The custom apiato eventserviceprovider \Apiato\Core\Abstracts\Events\Providers\EventServiceProvider If we comment the loading of this provider in \Apiato\Core\Providers\ApiatoProvider::$serviceProviders the model event will be triggered.

    Maybe the order of provider register should be different, need more time to debug. Please advice if you already have a solution.

    opened by denis019 12
  • Container generator fails on names containing spaces.

    Container generator fails on names containing spaces.

    Expected Behavior

    I would expect the input to be broken up and spaces removed then camel cased the resulting name as required in the different fields.

    Actual Behavior

    It throws an error on the commandline especially when generating a Transfomer.

    Steps to Reproduce the Problem

    I run the conventional php artisan apiato:generate:container command.

    Specifications

    • Apiato Version: latest running code on github.
    opened by nafuti 12
  • Generator not working with command line params

    Generator not working with command line params

    Expected Behavior

    Use command line params as described to kick start generation process

    Actual Behavior

    Error during creation. Works as expected without -c, -f command line parameters

    n Filesystem.php line 41:

    File does not exist at path C:\projectpath\vendor\apiato\core\Generator/Stubs/actions/0.stub

    Steps to Reproduce the Problem

    Run php artisan apiato:generate:action -cContainer -fDoSomethingAction

    Specifications

    • Apiato Version: 2.2

    Additional Details

    opened by desertfoxmb 12
  • Problem of upgrad to 9.0.

    Problem of upgrad to 9.0.

    Description:

    Use manual upgrade after remove /vendor and run composer install.

    Illuminate\Foundation\ComposerScripts::postAutoloadDump @php artisan package:discover --ansi

    Error

    Class 'Vinkla\Hashids\HashidsServiceProvider' not found

    at vendor/laravel/framework/src/Illuminate/Foundation/Application.php:690 686| * @return \Illuminate\Support\ServiceProvider 687| */ 688| public function resolveProvider($provider) 689| {

    690| return new $provider($this); 691| } 692| 693| /** 694| * Mark the given provider as registered.

      +2 vendor frames 
    

    3 app/Ship/core/Loaders/ProvidersLoaderTrait.php:64 Illuminate\Support\Facades\Facade::__callStatic("register")

    4 app/Ship/core/Loaders/ProvidersLoaderTrait.php:75 Apiato\Core\Providers\ApiatoProvider::loadProvider("Vinkla\Hashids\HashidsServiceProvider") Script @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 1

    Before remove /vendor Warning: require(/var/www/jobmars_backend/vendor/composer/../zendframework/zend-diactoros/src/functions/create_uploaded_file.php): failed to open stream: No such file or directory in /var/www/jobmars_backend/vendor/composer/autoload_real.php on line 69

    Fatal error: require(): Failed opening required '/var/www/jobmars_backend/vendor/composer/../zendframework/zend-diactoros/src/functions/create_uploaded_file.php' (include_path='.:/usr/local/lib/php') in /var/www/jobmars_backend/vendor/composer/autoload_real.php on line 69

    Versions:

    • Apiato Version: 8.0.2
    • PHP Version: 7.4.5
    Type:Help 
    opened by overbid 11
  • Composer require problem with requirements

    Composer require problem with requirements

    When installing one of the packages for laravel, I get the following error: Снимок экрана 2022-11-25 в 17 36 55 Tried using --with-all-dependencies or --ignore-platform-reqs. It does not help Composer.json:

    {
      "name": "apiato/apiato",
      "description": "A flawless framework for building scalable and testable API-Centric Apps with PHP and Laravel.",
      "homepage": "http://apiato.io/",
      "support": {
        "issues": "https://github.com/apiato/apiato/issues",
        "source": "https://github.com/apiato/apiato"
      },
      "authors": [
        {
          "name": "Mahmoud Zalt",
          "email": "[email protected]"
        }
      ],
      "keywords": [
        "Apiato",
        "API",
        "Framework",
        "API framework",
        "API Starter",
        "PHP API Starter",
        "Laravel API",
        "PHP",
        "Hello API",
        "Porto",
        "Porto SAP"
      ],
      "license": "MIT",
      "type": "project",
      "require": {
        "php": "^7.4|^8.0",
        "ext-mbstring": "*",
        "ext-openssl": "*",
        "ext-pdo": "*",
        "ext-tokenizer": "*",
        "composer-plugin-api": "*",
        "apiato/core": "^6.0.4",
        "apiato/documentation-generator-container": "^2.0",
        "barryvdh/laravel-ide-helper": "^2.10",
        "doctrine/dbal": "^3.0.0",
        "fideloper/proxy": "^4.4.1",
        "fruitcake/laravel-cors": "^1.0.6",
        "guzzlehttp/guzzle": "^7.2.0",
        "laravel/framework": "^8.34.1",
        "laravel/tinker": "^2.6.0",
        "laravelcollective/html": "^6.2",
        "nwidart/laravel-modules": "^9.0",
        "spatie/enum": "^3.9",
        "wikimedia/composer-merge-plugin": "^2.0.1"
      },
      "require-dev": {
        "ext-intl": "*",
        "ext-json": "*",
        "apiato/debugger-container": "^1.1.0",
        "facade/ignition": "^2.5.13",
        "fakerphp/faker": "^1.13.0",
        "laravel/homestead": "^12.0",
        "mockery/mockery": "^1.4.2",
        "nunomaduro/collision": "^5.3.0",
        "phpunit/phpunit": "^9.5.2",
        "roave/security-advisories": "dev-latest"
      },
      "autoload": {
        "psr-4": {
          "App\\": "app/",
          "Database\\Factories\\": "database/factories/",
          "Database\\Seeders\\": "database/seeders/"
        }
      },
      "autoload-dev": {
        "psr-4": {}
      },
      "extra": {
        "laravel": {
          "dont-discover": []
        },
        "merge-plugin": {
          "include": [
            "app/Ship/composer.json",
            "app/Containers/*/*/composer.json"
          ],
          "recurse": true,
          "replace": false,
          "merge-dev": true,
          "merge-extra": false,
          "merge-extra-deep": false,
          "merge-scripts": true
        }
      },
      "scripts": {
        "post-autoload-dump": [
          "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
          "@php artisan package:discover --ansi"
        ],
        "post-root-package-install": [
          "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
          "@php artisan key:generate --ansi"
        ],
        "test": "phpunit -v --debug"
      },
      "config": {
        "optimize-autoloader": true,
        "preferred-install": "dist",
        "sort-packages": true,
        "allow-plugins": {
          "apiato/container-installer": true,
          "wikimedia/composer-merge-plugin": true
        }
      },
      "minimum-stability": "dev",
      "prefer-stable": true
    }
    
    opened by aimettii 0
  • chore(deps): bump loader-utils from 1.4.0 to 1.4.2

    chore(deps): bump loader-utils from 1.4.0 to 1.4.2

    Bumps loader-utils from 1.4.0 to 1.4.2.

    Release notes

    Sourced from loader-utils's releases.

    v1.4.2

    1.4.2 (2022-11-11)

    Bug Fixes

    v1.4.1

    1.4.1 (2022-11-07)

    Bug Fixes

    Changelog

    Sourced from loader-utils's changelog.

    1.4.2 (2022-11-11)

    Bug Fixes

    1.4.1 (2022-11-07)

    Bug Fixes

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Content-Type Response Header

    Content-Type Response Header

    Description:

    I keep my images on aws s3, when user try to get image, he use api route Route::get('files/{id}', [FindFileByIdController::class, 'findFileById']) so next step I check access to file, if all good give a image, Task => return Image::make(Storage::disk('s3')->get($file->path)); Controller =>

    $file = app(FindFileByIdAction::class)->run($request);
    
            return response(
                $file->response(), 200,
                [
                    'Content-Type' => $file->type,
                    'Content-Disposition' => "attachment; filename=" . $file->name .""
                ]);
    

    But Content Type not changed, stay json and image broke, but i set a truth content type, can i resolve this problem?

    Maybe this is not quite a bug, but I would really appreciate your help)

    Fotos

    image

    Versions:

    • Apiato Version: 11
    • PHP Version: 8
    opened by dev-eugen 2
  • Getting issue while upgrading Apiato 8.0 to 9.0

    Getting issue while upgrading Apiato 8.0 to 9.0

    Description:

    I am getting an issue after upgrading Apiato 8.0 to 9.0. While running composer install I got the below error on CI & CD like CircleCI.

    Writing lock file Generating optimized autoload files

    Illuminate\Foundation\ComposerScripts::postAutoloadDump @php artisan package:discover --ansi

    In Application.php line 690:

    Class 'Vinkla\Hashids\HashidsServiceProvider' not found

    Script @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 1

    Exited with code exit status 1

    CircleCI received exit code 1

    Versions:

    • Apiato Version: 9.0
    • PHP Version: 7.2.5

    Steps To Reproduce:

    1. After code upgrade from Apiato 8 to 9
    2. run composer install command
    opened by itsdeo 0
  • APIATO create-project command guzzlehttp issue

    APIATO create-project command guzzlehttp issue

    I am trying to create apiato project with composer create-project apiato/apiato lara-apiato I am getting this error Screenshot from 2022-08-31 14-02-36

    I ran this command composer create-project apiato/apiato lara-apiato -W it didn't solve the issue. I ran composer clear-cache still getting the same issue. I ran composer global remove guzzlehttp/guzzle still getting the same issue. I ran composer update still getting the same issue. I removed composer completely and install it but i still get the same issue. I use apiato installer but i still get the same issue. I check on stackoverflow, i got no solution.

    Please need help.

    Here is the OS i am trying to create the project on.

    Distributor ID:	Ubuntu
    Description:	Ubuntu 22.04.1 LTS
    Release:	22.04
    Codename:	jammy
    
    Type:Help Type:Possible Bug 
    opened by black-code1 1
  • Limit `include` data

    Limit `include` data

    Description: When we are including relations in Apiato, unsually we include the data from a relationship. That data can become quite large, when there are a lot of related entities. One can add a limited (eg. via config) relation to the model an include that relation, but this makes it quite tedious to add that for all relations. It would be also nice to add a limit=x to an include in the request.

    Expected Behavior: Maybe we can add some helper functionality to make this more streamlined?

    Additional Context:

    Versions: Apiato Version: master branch (v11) PHP Version: 8.1.0

    Steps To Reproduce: include a relation

    Type:Enhancement 
    opened by yalsicor 1
Releases(v11.3.2)
  • v11.3.2(Dec 3, 2022)

  • v11.3.1(Dec 3, 2022)

  • v11.3.0(Oct 14, 2022)

    Thanks to @smurtazakazmi

    • feat(authorization): add endpoints to manage permissions directly on user
    • chore(dep): update composer dependencies to their latest versions
    Source code(tar.gz)
    Source code(zip)
  • v11.2.1(Oct 14, 2022)

  • v11.2.0(May 20, 2022)

  • v11.1.1(May 2, 2022)

  • v11.1.0(May 2, 2022)

  • v11.0.3(Apr 28, 2022)

  • v11.0.2(Apr 28, 2022)

  • v11.0.1(Apr 28, 2022)

  • v11.0.0(Apr 27, 2022)

    v11.0.0 - 2022-04-27

    Apiato 11 includes a variety of changes to the application skeleton. Please consult the diff to see what's new.

    Release Notes

    Added

    • Added support for Laravel 9.0
    • Added new method to transformers: nullableItem()
      This helps in situations when you want to check if a relation is null and act base on that. So instead of writing something like this: return $user->something ? $this->item($user->something, new SomethingTransformer()) : $this->primitive(null); you can just write $this->nullableItem($user->something, new SomethingTransformer()) which returns null if the relation doesn't exist.
    • Added apiato:generate:policy command
    • You can publish compatible containers configs using php artisan vendor:publish for now these containers are updated: Documentation SocialAuth
    • Added new method: transactionalRun() to actions. This is just a wrapper around actions run() which puts in into a db::transaction
    • New commands:
      • apiato:generate:factory
      • apiato:generate:event
      • apiato:generate:listener
      • apiato:generate:middleware
    • apiato:generate:container command is greatly improved with new goodies!
      • added option to generate API events & listeners for generated container
      • added option to generate API tests for generated container
      • While generating Containers (API only) You can now choose to generate:
        • Events Listeners (experimental! I think this might be useless!)
          If you choose to generate Events: Events will be implemented in Tasks, e.g. CreateOrderTask will fire OrderCreatedEvent
        • Tests
          If you choose to generate Tests:
          If Events are generated then the generated Tests will also test Events being fired!
          Note: some generated tests are more like placeholders which you can uncomment and modify to your use case but nevertheless you will be way ahead! You can find the placeholder tests by searching for TODO TEST

    Fixed

    • Fixed a small issue with the HashIdTrait
    • Email verification now works actually! See the docs for more info.
    • +Numerous more bugfixes...

    Changed

    • Updated Dependencies in composer.json file to the latest versions
    • In case of an exception with empty error bag we will now return {} instead of []
    • Localization language files are now loaded from languages folder instead of resources/languages
    • Global throttling on routes is now named api and is only applied to api routes and not the web routes and can be bypassed using withoutMiddleware() method on route.
    • Login attribute (email, name, etc...) is now case insensitive. This behaviour can be changed in the configs.
    • You can now choose between Multi Action or Single Action Controllers when using apiato:generate:container command.
    • Almost all middlewares are moved from ship to core
    • apiato:generate:serviceprovider is removed and changed into multiple separate commands
      • apiato:generate:provider:generic
      • apiato:generate:provider:main
      • apiato:generate:provider:middleware
      • apiato:generate:provider:event

    Removed

    • Removed(command): apiato:permissions:toRole
    • Dropped support for Settings, Debugger, Payment
    Source code(tar.gz)
    Source code(zip)
  • v10.0.15(Dec 12, 2021)

  • v10.0.14(Nov 28, 2021)

  • v10.0.13(Oct 12, 2021)

  • v10.0.12(Sep 27, 2021)

  • v10.0.11(Sep 21, 2021)

  • v10.0.10(Sep 14, 2021)

  • v10.0.9(Sep 14, 2021)

  • v10.0.8(Jul 6, 2021)

    • fix: take into account the API prefix (#638)
    • Remove dead code
    • Allow Role and Permission table bindings in Authorization Container (Requests, Tests) (#635)
    • Update dependencies
    Source code(tar.gz)
    Source code(zip)
  • v10.0.7(May 26, 2021)

  • v10.0.6(May 26, 2021)

  • v10.0.5(May 15, 2021)

  • v10.0.3(Apr 27, 2021)

  • v10.0.2(Apr 27, 2021)

  • v10.0.1(Apr 25, 2021)

  • v10.0.0(Apr 25, 2021)

    Changelog:

    * These containers are installed by default in an Apiato fresh installation.

    Read more about these containers here. Contributions are welcome!

    • You can now have a Helpers folder in your Container and all .php helper files will be loaded automatically by Apiato. read more.
    • All route definitions are updated to use Laravel new style: Route::get('user/profile', [Controller::class, 'getAuthenticatedUser']). You can still use the old style of course.
    • Default admin panel has been removed: admin.apiato.test
    • We are now using Laravel error handling which means all Laravel related features are now at your disposal.
    • You can now set default values while sanitizing data from request
            $sanitizedData = $data->sanitizeInput([
                'name' => 'Mohammad', // if name is not provided then default value will be set
                'product.company.address' => 'Somewhere in the world', // dot notation is also supported
                'email',
                'password'
            ]);
    
    • Documentations are moved to apiato.test/docs & apiato.test/docs/private. Private docs are now protected. read more
    • Removed Apiato::call & Apiato::transactionalCall
    Source code(tar.gz)
    Source code(zip)
  • v9.1.1(Mar 26, 2021)

  • v9.1.0(Mar 25, 2021)

  • v9.0.10(Oct 18, 2020)

Owner
Apiato
PHP API Framework
Apiato
Someline Starter is a PHP framework for quick building Web Apps and Restful APIs, with modern PHP design pattern foundation.

Someline Starter PHP Framework Tested and used in production by Someline Inc. Someline Starter is a PHP framework for quick building Web Apps and Rest

Someline 844 Nov 17, 2022
High scalable boilerplate for Laravel - Vue using laravel-mix.

Why use this ? This boilerplate make developer easier to make monolith Laravel project which integrated with Vue.js and vue-router as default front-en

Carvel Saputra Martaloho 5 Sep 21, 2022
Building Student Management CRUD with LARAVEL VUE and INERTIA

Building Student Management CRUD with LARAVEL VUE and INERTIA. the amazing thing about I got by combining these technologies is we ca build single page application or SPA .

Tauseed 3 Apr 4, 2022
⚡️ This package provides a wonderful PHP skeleton to start building your next package idea.

This package provides a wonderful PHP Skeleton to start building your next package idea. Requires PHP 8.0+ ⚡️ Create your package using Composer: comp

Nuno Maduro 383 Dec 20, 2022
A package for building Admin-Interfaces that help maintaining the data of your applications

A package for building Admin-Interfaces that help maintaining the data of your applications. It provides an intuitive interface and the tools needed to manage your project's Users, Models and free Forms for Pages, Settings etc.

null 808 Dec 31, 2022
Textpattern-plugin-template - A template for building plugins for Textpattern CMS.

Plugin template for Textpattern CMS Developer documentation Refer to the Textpattern plugin development documentation, and notably the Plugin template

Textpattern CMS 17 Apr 17, 2022
Projeto de locadora de carros, apenas a carater de estudos para praticar o uso de APIs

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Samuel Nunes de Souza 3 Nov 30, 2021
Generate Admin Panels CRUDs and APIs in Minutes with tons of other features and customizations with 3 different themes

InfyOm Laravel Generator Generate Admin Panels CRUDs and APIs in Minutes with tons of other features and customizations with 3 different themes. Docum

InfyOmLabs (InfyOm Technologies) 3.5k Jan 1, 2023
LaraLTE2, Laravel PHP Framework with AdminLTE2

LaraLTE2 Laravel PHP Framework with AdminLTE2 Whenever I start a new Laravel project, I do the same thing; Install packages, download Javascript plugi

Kouceyla 25 Nov 18, 2020
Exemplary RealWorld backend API built with Laravel PHP framework.

Example of a PHP-based Laravel application containing real world examples (CRUD, auth, advanced patterns, etc) that adheres to the RealWorld API spec.

Yury 66 Dec 31, 2022
A Web Artisan list of categorized OPEN SOURCE PROJECTS built with Laravel PHP Framework.

Laravel-Open-Source-Projects A Web Artisan list of categorized OPEN SOURCE PROJECTS built with Laravel PHP Framework. This repository includes a compr

Goodness Toluwanimi Kayode 833 Dec 26, 2022
Base Laravel framework with a simple admin site/dashboard

Base Laravel Admin Just a basic Laravel 4.1 install with a admin site/dashboard using Bootstrap 3.0.3 For those (like me) who set up lots of small sys

Alex Dover 1 Nov 6, 2015
Berikut Adalah cara untuk melakukan CRUD di FrameWork Laravel, Silahkan Disimak

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

LilKhoo 1 Oct 23, 2021
A simple starter kit for using TypedCMS with the Laravel framework.

TypedCMS Starter Kit for Laravel Our stater kits are tailored solutions for each platform, unlike the simple API wrappers offered by other vendors. Th

TypedCMS 1 Nov 20, 2021
Laravel Framework 5 Bootstrap 3 Starter Site is a basic application with news, photo and video galeries.

Laravel Framework 5.1 Bootstrap 3 Starter Site Starter Site based on on Laravel 5.1 and Boostrap 3 Features Requirements How to install Application St

null 900 Dec 22, 2022
An implementation of Solder in Laravel's Lumen Framework.

LumenSolder What is LumenSolder? An implementation of Solder in Laravel's Lumen Framework. LumenSolder is an application to help compliment and scale

Technic Pack 3 Sep 16, 2020
Allows to connect your `Laravel` Framework translation files with `Vue`.

Laravel Vue i18n laravel-vue-i18n is a Vue3 plugin that allows to connect your Laravel Framework JSON translation files with Vue. It uses the same log

Francisco Madeira 361 Jan 9, 2023
Laravel 7+ Content management framework

Sharp is not a CMS: it's a content management framework, a toolset which provides help to build a CMS section in a website, with some rules in mind: t

CODE 16 589 Jan 3, 2023