<?php

return [
    /*
      |--------------------------------------------------------------------------
      | Standards Tree
      |--------------------------------------------------------------------------
      |
      | Versioning an API with Dingo revolves around content negotiation and
      | custom MIME types. A custom type will belong to one of three
      | standards trees, the Vendor tree (vnd), the Personal tree
      | (prs), and the Unregistered tree (x).
      |
      | By default the Unregistered tree (x) is used, however, should you wish
      | to you can register your type with the IANA. For more details:
      | https://tools.ietf.org/html/rfc6838
      |
     */

    'standardsTree'            => env('API_STANDARDS_TREE', 'x'),
    /*
      |--------------------------------------------------------------------------
      | API Subtype
      |--------------------------------------------------------------------------
      |
      | Your subtype will follow the standards tree you use when used in the
      | "Accept" header to negotiate the content type and version.
      |
      | For example: Accept: application/x.SUBTYPE.v1+json
      |
     */
    'subtype'                  => env('API_SUBTYPE', ''),
    /*
      |--------------------------------------------------------------------------
      | Default API Version
      |--------------------------------------------------------------------------
      |
      | This is the default version when strict mode is disabled and your API
      | is accessed via a web browser. It's also used as the default version
      | when generating your APIs documentation.
      |
     */
    'version'                  => env('API_VERSION', 'v1'),
    /*
      |--------------------------------------------------------------------------
      | Default API Prefix
      |--------------------------------------------------------------------------
      |
      | A default prefix to use for your API routes so you don't have to
      | specify it for each group.
      |
     */
    'prefix'                   => env('API_PREFIX', null),
    /*
      |--------------------------------------------------------------------------
      | Default API Domain
      |--------------------------------------------------------------------------
      |
      | A default domain to use for your API routes so you don't have to
      | specify it for each group.
      |
     */
    'domain'                   => env('API_DOMAIN', null),
    /*
      |--------------------------------------------------------------------------
      | Name
      |--------------------------------------------------------------------------
      |
      | When documenting your API using the API Blueprint syntax you can
      | configure a default name to avoid having to manually specify
      | one when using the command.
      |
     */
    'name'                     => env('API_NAME', null),
    /*
      |--------------------------------------------------------------------------
      | Conditional Requests
      |--------------------------------------------------------------------------
      |
      | Globally enable conditional requests so that an ETag header is added to
      | any successful response. Subsequent requests will perform a check and
      | will return a 304 Not Modified. This can also be enabled or disabled
      | on certain groups or routes.
      |
     */
    'conditionalRequest'       => env('API_CONDITIONAL_REQUEST', true),
    /*
      |--------------------------------------------------------------------------
      | Strict Mode
      |--------------------------------------------------------------------------
      |
      | Enabling strict mode will require clients to send a valid Accept header
      | with every request. This also voids the default API version, meaning
      | your API will not be browsable via a web browser.
      |
     */
    'strict'                   => env('API_STRICT', false),
    /*
      |--------------------------------------------------------------------------
      | Debug Mode
      |--------------------------------------------------------------------------
      |
      | Enabling debug mode will result in error responses caused by thrown
      | exceptions to have a "debug" key that will be populated with
      | more detailed information on the exception.
      |
     */
    'debug'                    => env('API_DEBUG', false),
    /*
      |--------------------------------------------------------------------------
      | Generic Error Format
      |--------------------------------------------------------------------------
      |
      | When some HTTP exceptions are not caught and dealt with the API will
      | generate a generic error response in the format provided. Any
      | keys that aren't replaced with corresponding values will be
      | removed from the final response.
      |
     */
    'errorFormat'              => [
        'message'     => ':message',
        'errors'      => ':errors',
        'code'        => ':code',
        'status_code' => ':status_code',
        'debug'       => ':debug',
    ],
    /*
      |--------------------------------------------------------------------------
      | API Middleware
      |--------------------------------------------------------------------------
      |
      | Middleware that will be applied globally to all API requests.
      |
     */
    'middleware'               => [
        \Illuminate\Session\Middleware\StartSession::class,
    ],
    /*
      |--------------------------------------------------------------------------
      | Authentication Providers
      |--------------------------------------------------------------------------
      |
      | The authentication providers that should be used when attempting to
      | authenticate an incoming API request.
      |
     */
    'auth'                     => [
    ],
    /*
      |--------------------------------------------------------------------------
      | Throttling / Rate Limiting
      |--------------------------------------------------------------------------
      |
      | Consumers of your API can be limited to the amount of requests they can
      | make. You can create your own throttles or simply change the default
      | throttles.
      |
     */
    'throttling'               => [
//        'limit'   => 20,
//        'expires' => 10
    ],
    /*
      |--------------------------------------------------------------------------
      | Response Transformer
      |--------------------------------------------------------------------------
      |
      | Responses can be transformed so that they are easier to format. By
      | default a Fractal transformer will be used to transform any
      | responses prior to formatting. You can easily replace
      | this with your own transformer.
      |
     */
    'transformer'              => env('API_TRANSFORMER', Dingo\Api\Transformer\Adapter\Fractal::class),
    /*
      |--------------------------------------------------------------------------
      | Response Formats
      |--------------------------------------------------------------------------
      |
      | Responses can be returned in multiple formats by registering different
      | response formatters. You can also customize an existing response
      | formatter.
      |
     */
    'defaultFormat'            => env('API_DEFAULT_FORMAT', 'json'),
    'formats'                  => [
        'json' => Dingo\Api\Http\Response\Format\Json::class,
    ],
    /**
     * available api versions
     */
    'available_versions'       => ['v1', 'v2'],
    /**
     * does the api is enabled
     */
    'enabled'                  => true,
    'whitelist_required_areas' => [
    //'administrators'
    ],
    'failed_login_delay'       => 3,
];
