# Configuration

To make changes from this point, it is recommended to install Lodata's configuration into your application:

php artisan vendor:publish \
  --provider="Flat3\Lodata\ServiceProvider" \
  --tag="config"
1
2
3

The default configuration looks like this:

<?php

return [
    /**
     * The route prefix to use, by default mounted at http://localhost:8080/odata but can be moved and renamed as required.
     */
    'prefix' => env('LODATA_PREFIX', 'odata'),

    /*
     * An array of middleware to be included when processing an OData request. Common middleware used would be to handle JWT authentication, or adding CORS headers.
     */
    'middleware' => [],

    /*
     * Whether this service should allow data modification requests. Set to true by default just for safety.
     */
    'readonly' => true,

    /*
     * Set this to true if you want to use Laravel authorization gates for your OData requests.
     */
    'authorization' => false,

    /*
     * Whether to use streaming JSON responses by default.
     * @link https://docs.oasis-open.org/odata/odata-json-format/v4.01/odata-json-format-v4.01.html#sec_PayloadOrderingConstraints
     */
    'streaming' => true,

    /*
     * This is an OData concept to group your data model according to a globally unique namespace. Some clients may use this information for display purposes.
     */
    'namespace' => env('LODATA_NAMESPACE', 'com.example.odata'),

    /*
     * The default version of the OData protocol to support for every request.
     */
    'version' => env('LODATA_VERSION', '4.01'),

    /*
     * The name of the Laravel disk to use to store asynchronously processed requests.
     * In a multi-server shared hosting environment, all hosts should be able to access this disk
     */
    'disk' => env('LODATA_DISK', 'local'),

    /*
     * Configuration relating to asynchronous request processing.
     */
    'async' => [
        /*
         * Set the desired queue for the job.
         */
        'queue' => env('LODATA_ASYNC_QUEUE'),

        /*
         * Set the desired connection for the job.
         */
        'connection' => env('LODATA_ASYNC_CONNECTION'),
    ],

    /*
     * Configuration relating to auto-discovery
     */
    'discovery' => [
        /**
         * The cache store to use for discovered data
         */
        'store' => env('LODATA_DISCOVERY_STORE'),

        /**
         * How many seconds to cache discovered data for. Setting to null will cache forever.
         */
        'ttl' => env('LODATA_DISCOVERY_TTL', 0),

        /*
         * The blacklist of property names that will not be added during auto-discovery
         */
        'blacklist' => [
            'password',
            'api_key',
            'api_token',
            'api_secret',
            'secret',
        ]
    ],

    /*
     * Configuration for server-driven pagination
     */
    'pagination' => [
        /**
         * The maximum page size this service will return, null for no limit
         */
        'max' => null,

        /**
         * The default page size to use if the client does not request one, null for no default
         */
        'default' => 200,
    ],

    /**
     * Configuration for OpenAPI schema generation
     */
    'openapi' => [],
];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106