|
36 | 36 | namespace Glpi\Api\HL\Controller; |
37 | 37 |
|
38 | 38 | use AuthLDAP; |
| 39 | +use Calendar; |
39 | 40 | use CommonDBTM; |
| 41 | +use Entity; |
40 | 42 | use Glpi\Api\HL\Doc as Doc; |
41 | 43 | use Glpi\Api\HL\Middleware\ResultFormatterMiddleware; |
42 | 44 | use Glpi\Api\HL\ResourceAccessor; |
|
45 | 47 | use Glpi\Http\JSONResponse; |
46 | 48 | use Glpi\Http\Request; |
47 | 49 | use Glpi\Http\Response; |
| 50 | +use OLA; |
| 51 | +use OlaLevel; |
| 52 | +use SLA; |
| 53 | +use SlaLevel; |
| 54 | +use SLM; |
48 | 55 |
|
49 | 56 | #[Route(path: '/Setup', tags: ['Setup'])] |
50 | 57 | final class SetupController extends AbstractController |
51 | 58 | { |
52 | 59 | public static function getRawKnownSchemas(): array |
53 | 60 | { |
| 61 | + $base_la_properties = [ |
| 62 | + 'id' => [ |
| 63 | + 'type' => Doc\Schema::TYPE_INTEGER, |
| 64 | + 'format' => Doc\Schema::FORMAT_INTEGER_INT64, |
| 65 | + 'readOnly' => true, |
| 66 | + ], |
| 67 | + 'name' => ['type' => Doc\Schema::TYPE_STRING], |
| 68 | + 'slm' => self::getDropdownTypeSchema(class: SLM::class, full_schema: 'SLM'), |
| 69 | + 'entity' => self::getDropdownTypeSchema(class: Entity::class, full_schema: 'Entity'), |
| 70 | + 'is_recursive' => ['type' => Doc\Schema::TYPE_BOOLEAN], |
| 71 | + 'type' => [ |
| 72 | + 'type' => Doc\Schema::TYPE_INTEGER, |
| 73 | + 'enum' => [SLM::TTR, SLM::TTO], |
| 74 | + 'description' => <<<EOT |
| 75 | + - 0: Time to resolve (TTR) |
| 76 | + - 1: Time to own (TTO) |
| 77 | +EOT, |
| 78 | + ], |
| 79 | + 'comment' => ['type' => Doc\Schema::TYPE_STRING], |
| 80 | + 'time' => [ |
| 81 | + 'type' => Doc\Schema::TYPE_INTEGER, |
| 82 | + 'x-field' => 'number_time', |
| 83 | + 'description' => 'Time in the unit defined by the time_unit property', |
| 84 | + ], |
| 85 | + 'time_unit' => [ |
| 86 | + 'type' => Doc\Schema::TYPE_STRING, |
| 87 | + 'enum' => ['minute', 'hour', 'day', 'month'], |
| 88 | + 'description' => 'Unit of time for the time property', |
| 89 | + ], |
| 90 | + 'use_ticket_calendar' => ['type' => Doc\Schema::TYPE_BOOLEAN], |
| 91 | + 'calendar' => self::getDropdownTypeSchema(class: Calendar::class, full_schema: 'Calendar'), |
| 92 | + 'end_of_working_day' => [ |
| 93 | + 'type' => Doc\Schema::TYPE_BOOLEAN, |
| 94 | + 'description' => 'Whether the time computation will target the end of the working day', |
| 95 | + ], |
| 96 | + 'date_creation' => ['type' => Doc\Schema::TYPE_STRING, 'format' => Doc\Schema::FORMAT_STRING_DATE_TIME], |
| 97 | + 'date_mod' => ['type' => Doc\Schema::TYPE_STRING, 'format' => Doc\Schema::FORMAT_STRING_DATE_TIME], |
| 98 | + ]; |
| 99 | + |
| 100 | + $base_la_level_properties = [ |
| 101 | + 'id' => [ |
| 102 | + 'type' => Doc\Schema::TYPE_INTEGER, |
| 103 | + 'format' => Doc\Schema::FORMAT_INTEGER_INT64, |
| 104 | + 'readOnly' => true, |
| 105 | + ], |
| 106 | + 'uuid' => [ |
| 107 | + 'type' => Doc\Schema::TYPE_STRING, |
| 108 | + 'pattern' => Doc\Schema::PATTERN_UUIDV4, |
| 109 | + 'readOnly' => true, |
| 110 | + ], |
| 111 | + 'name' => ['type' => Doc\Schema::TYPE_STRING], |
| 112 | + 'entity' => self::getDropdownTypeSchema(class: Entity::class, full_schema: 'Entity'), |
| 113 | + 'is_recursive' => ['type' => Doc\Schema::TYPE_BOOLEAN], |
| 114 | + 'execution_time' => [ |
| 115 | + 'type' => Doc\Schema::TYPE_INTEGER, |
| 116 | + 'readOnly' => true, |
| 117 | + ], |
| 118 | + 'operator' => [ |
| 119 | + 'type' => Doc\Schema::TYPE_STRING, |
| 120 | + 'enum' => ['AND', 'OR'], |
| 121 | + 'x-field' => 'match', |
| 122 | + ], |
| 123 | + ]; |
| 124 | + |
54 | 125 | return [ |
55 | 126 | 'LDAPDirectory' => [ |
56 | 127 | 'x-version-introduced' => '2.0', |
@@ -104,6 +175,54 @@ public static function getRawKnownSchemas(): array |
104 | 175 | ], |
105 | 176 | ], |
106 | 177 | ], |
| 178 | + 'SLM' => [ |
| 179 | + 'x-version-introduced' => '2.1.0', |
| 180 | + 'x-itemtype' => AuthLDAP::class, |
| 181 | + 'type' => Doc\Schema::TYPE_OBJECT, |
| 182 | + 'properties' => [ |
| 183 | + 'id' => [ |
| 184 | + 'type' => Doc\Schema::TYPE_INTEGER, |
| 185 | + 'format' => Doc\Schema::FORMAT_INTEGER_INT64, |
| 186 | + 'readOnly' => true, |
| 187 | + ], |
| 188 | + 'name' => ['type' => Doc\Schema::TYPE_STRING], |
| 189 | + 'entity' => self::getDropdownTypeSchema(class: Entity::class, full_schema: 'Entity'), |
| 190 | + 'is_recursive' => ['type' => Doc\Schema::TYPE_BOOLEAN], |
| 191 | + 'comment' => ['type' => Doc\Schema::TYPE_STRING], |
| 192 | + 'use_ticket_calendar' => ['type' => Doc\Schema::TYPE_BOOLEAN], |
| 193 | + 'calendar' => self::getDropdownTypeSchema(class: Calendar::class, full_schema: 'Calendar'), |
| 194 | + 'date_creation' => ['type' => Doc\Schema::TYPE_STRING, 'format' => Doc\Schema::FORMAT_STRING_DATE_TIME], |
| 195 | + 'date_mod' => ['type' => Doc\Schema::TYPE_STRING, 'format' => Doc\Schema::FORMAT_STRING_DATE_TIME], |
| 196 | + ], |
| 197 | + ], |
| 198 | + 'SLA' => [ |
| 199 | + 'x-version-introduced' => '2.1.0', |
| 200 | + 'x-itemtype' => SLA::class, |
| 201 | + 'type' => Doc\Schema::TYPE_OBJECT, |
| 202 | + 'properties' => $base_la_properties, |
| 203 | + ], |
| 204 | + 'OLA' => [ |
| 205 | + 'x-version-introduced' => '2.1.0', |
| 206 | + 'x-itemtype' => OLA::class, |
| 207 | + 'type' => Doc\Schema::TYPE_OBJECT, |
| 208 | + 'properties' => $base_la_properties, |
| 209 | + ], |
| 210 | + 'SLALevel' => [ |
| 211 | + 'x-version-introduced' => '2.1.0', |
| 212 | + 'x-itemtype' => SlaLevel::class, |
| 213 | + 'type' => Doc\Schema::TYPE_OBJECT, |
| 214 | + 'properties' => $base_la_level_properties + [ |
| 215 | + 'sla' => self::getDropdownTypeSchema(class: SLA::class, full_schema: 'SLA'), |
| 216 | + ], |
| 217 | + ], |
| 218 | + 'OLALevel' => [ |
| 219 | + 'x-version-introduced' => '2.1.0', |
| 220 | + 'x-itemtype' => OlaLevel::class, |
| 221 | + 'type' => Doc\Schema::TYPE_OBJECT, |
| 222 | + 'properties' => $base_la_level_properties + [ |
| 223 | + 'ola' => self::getDropdownTypeSchema(class: OLA::class, full_schema: 'OLA'), |
| 224 | + ], |
| 225 | + ], |
107 | 226 | ]; |
108 | 227 | } |
109 | 228 |
|
|
0 commit comments