Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 

1426 rader
34 KiB

  1. {
  2. "openapi": "3.0.0",
  3. "info": {
  4. "title": "RES LEVIS API",
  5. "description": "API for RES LEVIS project",
  6. "contact": {
  7. "email": "info@reslevis.com"
  8. },
  9. "license": {
  10. "name": "Apache 2.0",
  11. "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
  12. },
  13. "version": "1.0.2"
  14. },
  15. "servers": [
  16. {
  17. "url": "https://virtserver.swaggerhub.com/maestry/RESLEVIS/1.0.2",
  18. "description": "SwaggerHub API Auto Mocking"
  19. },
  20. {
  21. "url": "https://virtserver.swaggerhub.com/reslevis/reslevis/1.0.1",
  22. "description": "RES LEVIS API"
  23. }
  24. ],
  25. "tags": [
  26. {
  27. "name": "Admins",
  28. "description": "Secured Admin-only calls"
  29. },
  30. {
  31. "name": "Developers",
  32. "description": "Operations available to regular developers"
  33. }
  34. ],
  35. "paths": {
  36. "/getBuildings": {
  37. "get": {
  38. "tags": [
  39. "Developers"
  40. ],
  41. "summary": "Get the buildings",
  42. "description": "Get the buildings\n",
  43. "operationId": "getBuildings",
  44. "parameters": [
  45. {
  46. "name": "searchString",
  47. "in": "query",
  48. "description": "pass an optional search string for looking up inventory",
  49. "required": false,
  50. "schema": {
  51. "type": "string"
  52. }
  53. },
  54. {
  55. "name": "skip",
  56. "in": "query",
  57. "description": "number of records to skip for pagination",
  58. "required": false,
  59. "schema": {
  60. "minimum": 0,
  61. "type": "integer",
  62. "format": "int32"
  63. }
  64. },
  65. {
  66. "name": "limit",
  67. "in": "query",
  68. "description": "maximum number of records to return",
  69. "required": false,
  70. "schema": {
  71. "maximum": 1000,
  72. "minimum": 0,
  73. "type": "integer",
  74. "format": "int32"
  75. }
  76. }
  77. ],
  78. "responses": {
  79. "200": {
  80. "description": "search results matching criteria",
  81. "content": {
  82. "application/json": {
  83. "schema": {
  84. "type": "array",
  85. "items": {
  86. "$ref": "#/components/schemas/BuildingItem"
  87. }
  88. }
  89. }
  90. }
  91. },
  92. "400": {
  93. "description": "bad input parameter"
  94. }
  95. }
  96. },
  97. "servers": [
  98. {
  99. "url": "",
  100. "description": ""
  101. }
  102. ]
  103. },
  104. "/postBuilding": {
  105. "post": {
  106. "tags": [
  107. "Developers"
  108. ],
  109. "summary": "Post a building item",
  110. "description": "Post a building",
  111. "operationId": "postBuilding",
  112. "requestBody": {
  113. "description": "plan item",
  114. "content": {
  115. "application/json": {
  116. "schema": {
  117. "$ref": "#/components/schemas/BuildingItem"
  118. }
  119. }
  120. }
  121. },
  122. "responses": {
  123. "201": {
  124. "description": "item created"
  125. },
  126. "400": {
  127. "description": "invalid input, object invalid"
  128. },
  129. "409": {
  130. "description": "an existing item already exists"
  131. }
  132. }
  133. },
  134. "servers": [
  135. {
  136. "url": "",
  137. "description": ""
  138. }
  139. ]
  140. },
  141. "/getPlans": {
  142. "get": {
  143. "tags": [
  144. "Developers"
  145. ],
  146. "summary": "Get the plans",
  147. "description": "Get the plans\n",
  148. "operationId": "getPlans",
  149. "parameters": [
  150. {
  151. "name": "building",
  152. "in": "query",
  153. "description": "site of the plans",
  154. "required": false,
  155. "schema": {
  156. "type": "string"
  157. }
  158. },
  159. {
  160. "name": "searchString",
  161. "in": "query",
  162. "description": "pass an optional search string for looking up inventory",
  163. "required": false,
  164. "schema": {
  165. "type": "string"
  166. }
  167. },
  168. {
  169. "name": "skip",
  170. "in": "query",
  171. "description": "number of records to skip for pagination",
  172. "required": false,
  173. "schema": {
  174. "minimum": 0,
  175. "type": "integer",
  176. "format": "int32"
  177. }
  178. },
  179. {
  180. "name": "limit",
  181. "in": "query",
  182. "description": "maximum number of records to return",
  183. "required": false,
  184. "schema": {
  185. "maximum": 1000,
  186. "minimum": 0,
  187. "type": "integer",
  188. "format": "int32"
  189. }
  190. }
  191. ],
  192. "responses": {
  193. "200": {
  194. "description": "search results matching criteria",
  195. "content": {
  196. "application/json": {
  197. "schema": {
  198. "type": "array",
  199. "items": {
  200. "$ref": "#/components/schemas/PlanItem"
  201. }
  202. }
  203. }
  204. }
  205. },
  206. "400": {
  207. "description": "bad input parameter"
  208. }
  209. }
  210. },
  211. "servers": [
  212. {
  213. "url": "",
  214. "description": ""
  215. }
  216. ]
  217. },
  218. "/postPlan": {
  219. "post": {
  220. "tags": [
  221. "Developers"
  222. ],
  223. "summary": "Post a plan item",
  224. "description": "Post a plan",
  225. "operationId": "postPlan",
  226. "requestBody": {
  227. "description": "plan item",
  228. "content": {
  229. "application/json": {
  230. "schema": {
  231. "$ref": "#/components/schemas/PlanItem"
  232. }
  233. }
  234. }
  235. },
  236. "responses": {
  237. "201": {
  238. "description": "item created"
  239. },
  240. "400": {
  241. "description": "invalid input, object invalid"
  242. },
  243. "409": {
  244. "description": "an existing item already exists"
  245. }
  246. }
  247. },
  248. "servers": [
  249. {
  250. "url": "",
  251. "description": ""
  252. }
  253. ]
  254. },
  255. "/getZones": {
  256. "get": {
  257. "tags": [
  258. "Developers"
  259. ],
  260. "summary": "Get the zones",
  261. "description": "Get the zones\n",
  262. "operationId": "getZones",
  263. "parameters": [
  264. {
  265. "name": "building",
  266. "in": "query",
  267. "description": "site of the zones",
  268. "required": false,
  269. "schema": {
  270. "type": "string"
  271. }
  272. },
  273. {
  274. "name": "searchString",
  275. "in": "query",
  276. "description": "pass an optional search string for looking up inventory",
  277. "required": false,
  278. "schema": {
  279. "type": "string"
  280. }
  281. },
  282. {
  283. "name": "skip",
  284. "in": "query",
  285. "description": "number of records to skip for pagination",
  286. "required": false,
  287. "schema": {
  288. "minimum": 0,
  289. "type": "integer",
  290. "format": "int32"
  291. }
  292. },
  293. {
  294. "name": "limit",
  295. "in": "query",
  296. "description": "maximum number of records to return",
  297. "required": false,
  298. "schema": {
  299. "maximum": 1000,
  300. "minimum": 0,
  301. "type": "integer",
  302. "format": "int32"
  303. }
  304. }
  305. ],
  306. "responses": {
  307. "200": {
  308. "description": "search results matching criteria",
  309. "content": {
  310. "application/json": {
  311. "schema": {
  312. "type": "array",
  313. "items": {
  314. "$ref": "#/components/schemas/ZoneItem"
  315. }
  316. }
  317. }
  318. }
  319. },
  320. "400": {
  321. "description": "bad input parameter"
  322. }
  323. }
  324. },
  325. "servers": [
  326. {
  327. "url": "",
  328. "description": ""
  329. }
  330. ]
  331. },
  332. "/postZone": {
  333. "post": {
  334. "tags": [
  335. "Developers"
  336. ],
  337. "summary": "Post a zone item",
  338. "description": "Post a zone item",
  339. "operationId": "postZone",
  340. "requestBody": {
  341. "description": "zone item",
  342. "content": {
  343. "application/json": {
  344. "schema": {
  345. "$ref": "#/components/schemas/ZoneItem"
  346. }
  347. }
  348. }
  349. },
  350. "responses": {
  351. "201": {
  352. "description": "item created"
  353. },
  354. "400": {
  355. "description": "invalid input, object invalid"
  356. },
  357. "409": {
  358. "description": "an existing item already exists"
  359. }
  360. }
  361. },
  362. "servers": [
  363. {
  364. "url": "",
  365. "description": ""
  366. }
  367. ]
  368. },
  369. "/getGateways": {
  370. "get": {
  371. "tags": [
  372. "Developers"
  373. ],
  374. "summary": "Get the gateways",
  375. "description": "Get the gateways\n",
  376. "operationId": "getGateways",
  377. "parameters": [
  378. {
  379. "name": "building",
  380. "in": "query",
  381. "description": "site of the gateways",
  382. "required": false,
  383. "schema": {
  384. "type": "string"
  385. }
  386. },
  387. {
  388. "name": "searchString",
  389. "in": "query",
  390. "description": "pass an optional search string for looking up inventory",
  391. "required": false,
  392. "schema": {
  393. "type": "string"
  394. }
  395. },
  396. {
  397. "name": "skip",
  398. "in": "query",
  399. "description": "number of records to skip for pagination",
  400. "required": false,
  401. "schema": {
  402. "minimum": 0,
  403. "type": "integer",
  404. "format": "int32"
  405. }
  406. },
  407. {
  408. "name": "limit",
  409. "in": "query",
  410. "description": "maximum number of records to return",
  411. "required": false,
  412. "schema": {
  413. "maximum": 1000,
  414. "minimum": 0,
  415. "type": "integer",
  416. "format": "int32"
  417. }
  418. }
  419. ],
  420. "responses": {
  421. "200": {
  422. "description": "search results matching criteria",
  423. "content": {
  424. "application/json": {
  425. "schema": {
  426. "type": "array",
  427. "items": {
  428. "$ref": "#/components/schemas/GatewayItem"
  429. }
  430. }
  431. }
  432. }
  433. },
  434. "400": {
  435. "description": "bad input parameter"
  436. }
  437. }
  438. },
  439. "servers": [
  440. {
  441. "url": "",
  442. "description": ""
  443. }
  444. ]
  445. },
  446. "/postGateway": {
  447. "post": {
  448. "tags": [
  449. "Developers"
  450. ],
  451. "summary": "Post a gateway item",
  452. "description": "Post a gateway item",
  453. "operationId": "postGateway",
  454. "requestBody": {
  455. "description": "gateway item",
  456. "content": {
  457. "application/json": {
  458. "schema": {
  459. "$ref": "#/components/schemas/GatewayItem"
  460. }
  461. }
  462. }
  463. },
  464. "responses": {
  465. "201": {
  466. "description": "item created"
  467. },
  468. "400": {
  469. "description": "invalid input, object invalid"
  470. },
  471. "409": {
  472. "description": "an existing item already exists"
  473. }
  474. }
  475. },
  476. "servers": [
  477. {
  478. "url": "",
  479. "description": ""
  480. }
  481. ]
  482. },
  483. "/getTrackers": {
  484. "get": {
  485. "tags": [
  486. "Developers"
  487. ],
  488. "summary": "Get the trackers",
  489. "description": "Get the trackers\n",
  490. "operationId": "getTrackers",
  491. "parameters": [
  492. {
  493. "name": "building",
  494. "in": "query",
  495. "description": "site of the trackers",
  496. "required": false,
  497. "schema": {
  498. "type": "string"
  499. }
  500. },
  501. {
  502. "name": "searchString",
  503. "in": "query",
  504. "description": "pass an optional search string for looking up inventory",
  505. "required": false,
  506. "schema": {
  507. "type": "string"
  508. }
  509. },
  510. {
  511. "name": "skip",
  512. "in": "query",
  513. "description": "number of records to skip for pagination",
  514. "required": false,
  515. "schema": {
  516. "minimum": 0,
  517. "type": "integer",
  518. "format": "int32"
  519. }
  520. },
  521. {
  522. "name": "limit",
  523. "in": "query",
  524. "description": "maximum number of records to return",
  525. "required": false,
  526. "schema": {
  527. "maximum": 1000,
  528. "minimum": 0,
  529. "type": "integer",
  530. "format": "int32"
  531. }
  532. }
  533. ],
  534. "responses": {
  535. "200": {
  536. "description": "search results matching criteria",
  537. "content": {
  538. "application/json": {
  539. "schema": {
  540. "type": "array",
  541. "items": {
  542. "$ref": "#/components/schemas/TrackerItem"
  543. }
  544. }
  545. }
  546. }
  547. },
  548. "400": {
  549. "description": "bad input parameter"
  550. }
  551. }
  552. },
  553. "servers": [
  554. {
  555. "url": "",
  556. "description": ""
  557. }
  558. ]
  559. },
  560. "/postTracker": {
  561. "post": {
  562. "tags": [
  563. "Developers"
  564. ],
  565. "summary": "Post a tracker item",
  566. "description": "Post a tracker item",
  567. "operationId": "postTracker",
  568. "requestBody": {
  569. "description": "tracker item",
  570. "content": {
  571. "application/json": {
  572. "schema": {
  573. "$ref": "#/components/schemas/TrackerItem"
  574. }
  575. }
  576. }
  577. },
  578. "responses": {
  579. "201": {
  580. "description": "item created"
  581. },
  582. "400": {
  583. "description": "invalid input, object invalid"
  584. },
  585. "409": {
  586. "description": "an existing item already exists"
  587. }
  588. }
  589. },
  590. "servers": [
  591. {
  592. "url": "",
  593. "description": ""
  594. }
  595. ]
  596. },
  597. "/getOperators": {
  598. "get": {
  599. "tags": [
  600. "Developers"
  601. ],
  602. "summary": "Get the operators",
  603. "description": "Get the operators\n",
  604. "operationId": "getOperators",
  605. "parameters": [
  606. {
  607. "name": "building",
  608. "in": "query",
  609. "description": "site of the operators",
  610. "required": false,
  611. "schema": {
  612. "type": "string"
  613. }
  614. },
  615. {
  616. "name": "searchString",
  617. "in": "query",
  618. "description": "pass an optional search string for looking up inventory",
  619. "required": false,
  620. "schema": {
  621. "type": "string"
  622. }
  623. },
  624. {
  625. "name": "skip",
  626. "in": "query",
  627. "description": "number of records to skip for pagination",
  628. "required": false,
  629. "schema": {
  630. "minimum": 0,
  631. "type": "integer",
  632. "format": "int32"
  633. }
  634. },
  635. {
  636. "name": "limit",
  637. "in": "query",
  638. "description": "maximum number of records to return",
  639. "required": false,
  640. "schema": {
  641. "maximum": 1000,
  642. "minimum": 0,
  643. "type": "integer",
  644. "format": "int32"
  645. }
  646. }
  647. ],
  648. "responses": {
  649. "200": {
  650. "description": "search results matching criteria",
  651. "content": {
  652. "application/json": {
  653. "schema": {
  654. "type": "array",
  655. "items": {
  656. "$ref": "#/components/schemas/OperatorItem"
  657. }
  658. }
  659. }
  660. }
  661. },
  662. "400": {
  663. "description": "bad input parameter"
  664. }
  665. }
  666. },
  667. "servers": [
  668. {
  669. "url": "",
  670. "description": ""
  671. }
  672. ]
  673. },
  674. "/postOperator": {
  675. "post": {
  676. "tags": [
  677. "Developers"
  678. ],
  679. "summary": "Post an operator item",
  680. "description": "Post an operator item",
  681. "operationId": "postOperator",
  682. "requestBody": {
  683. "description": "operator item",
  684. "content": {
  685. "application/json": {
  686. "schema": {
  687. "$ref": "#/components/schemas/OperatorItem"
  688. }
  689. }
  690. }
  691. },
  692. "responses": {
  693. "201": {
  694. "description": "item created"
  695. },
  696. "400": {
  697. "description": "invalid input, object invalid"
  698. },
  699. "409": {
  700. "description": "an existing item already exists"
  701. }
  702. }
  703. },
  704. "servers": [
  705. {
  706. "url": "",
  707. "description": ""
  708. }
  709. ]
  710. },
  711. "/getSubjects": {
  712. "get": {
  713. "tags": [
  714. "Developers"
  715. ],
  716. "summary": "Get the subjects",
  717. "description": "Get the subjects\n",
  718. "operationId": "getSubjects",
  719. "parameters": [
  720. {
  721. "name": "building",
  722. "in": "query",
  723. "description": "site of the subjects",
  724. "required": false,
  725. "schema": {
  726. "type": "string"
  727. }
  728. },
  729. {
  730. "name": "searchString",
  731. "in": "query",
  732. "description": "pass an optional search string for looking up inventory",
  733. "required": false,
  734. "schema": {
  735. "type": "string"
  736. }
  737. },
  738. {
  739. "name": "skip",
  740. "in": "query",
  741. "description": "number of records to skip for pagination",
  742. "required": false,
  743. "schema": {
  744. "minimum": 0,
  745. "type": "integer",
  746. "format": "int32"
  747. }
  748. },
  749. {
  750. "name": "limit",
  751. "in": "query",
  752. "description": "maximum number of records to return",
  753. "required": false,
  754. "schema": {
  755. "maximum": 1000,
  756. "minimum": 0,
  757. "type": "integer",
  758. "format": "int32"
  759. }
  760. }
  761. ],
  762. "responses": {
  763. "200": {
  764. "description": "search results matching criteria",
  765. "content": {
  766. "application/json": {
  767. "schema": {
  768. "type": "array",
  769. "items": {
  770. "$ref": "#/components/schemas/SubjectItem"
  771. }
  772. }
  773. }
  774. }
  775. },
  776. "400": {
  777. "description": "bad input parameter"
  778. }
  779. }
  780. },
  781. "servers": [
  782. {
  783. "url": "",
  784. "description": ""
  785. }
  786. ]
  787. },
  788. "/postSubject": {
  789. "post": {
  790. "tags": [
  791. "Developers"
  792. ],
  793. "summary": "Post a subject item",
  794. "description": "Post a subject",
  795. "operationId": "postSubject",
  796. "requestBody": {
  797. "description": "subject item",
  798. "content": {
  799. "application/json": {
  800. "schema": {
  801. "$ref": "#/components/schemas/SubjectItem"
  802. }
  803. }
  804. }
  805. },
  806. "responses": {
  807. "201": {
  808. "description": "item created"
  809. },
  810. "400": {
  811. "description": "invalid input, object invalid"
  812. },
  813. "409": {
  814. "description": "an existing item already exists"
  815. }
  816. }
  817. },
  818. "servers": [
  819. {
  820. "url": "",
  821. "description": ""
  822. }
  823. ]
  824. },
  825. "/getAlarms": {
  826. "get": {
  827. "tags": [
  828. "Developers"
  829. ],
  830. "summary": "Get the alarms",
  831. "description": "Get the alarms\n",
  832. "operationId": "getAlarms",
  833. "parameters": [
  834. {
  835. "name": "building",
  836. "in": "query",
  837. "description": "building of the alarms",
  838. "required": false,
  839. "schema": {
  840. "type": "string"
  841. }
  842. },
  843. {
  844. "name": "searchString",
  845. "in": "query",
  846. "description": "pass an optional search string for looking up inventory",
  847. "required": false,
  848. "schema": {
  849. "type": "string"
  850. }
  851. },
  852. {
  853. "name": "skip",
  854. "in": "query",
  855. "description": "number of records to skip for pagination",
  856. "required": false,
  857. "schema": {
  858. "minimum": 0,
  859. "type": "integer",
  860. "format": "int32"
  861. }
  862. },
  863. {
  864. "name": "limit",
  865. "in": "query",
  866. "description": "maximum number of records to return",
  867. "required": false,
  868. "schema": {
  869. "maximum": 1000,
  870. "minimum": 0,
  871. "type": "integer",
  872. "format": "int32"
  873. }
  874. }
  875. ],
  876. "responses": {
  877. "200": {
  878. "description": "search results matching criteria",
  879. "content": {
  880. "application/json": {
  881. "schema": {
  882. "type": "array",
  883. "items": {
  884. "$ref": "#/components/schemas/AlarmItem"
  885. }
  886. }
  887. }
  888. }
  889. },
  890. "400": {
  891. "description": "bad input parameter"
  892. }
  893. }
  894. },
  895. "servers": [
  896. {
  897. "url": "",
  898. "description": ""
  899. }
  900. ]
  901. },
  902. "/postAlarm": {
  903. "post": {
  904. "tags": [
  905. "Developers"
  906. ],
  907. "summary": "Post an alarm",
  908. "description": "Post an alarm",
  909. "operationId": "postAlarm",
  910. "requestBody": {
  911. "description": "alarm item",
  912. "content": {
  913. "application/json": {
  914. "schema": {
  915. "$ref": "#/components/schemas/AlarmItem"
  916. }
  917. }
  918. }
  919. },
  920. "responses": {
  921. "201": {
  922. "description": "item created"
  923. },
  924. "400": {
  925. "description": "invalid input, object invalid"
  926. },
  927. "409": {
  928. "description": "an existing item already exists"
  929. }
  930. }
  931. },
  932. "servers": [
  933. {
  934. "url": "",
  935. "description": ""
  936. }
  937. ]
  938. },
  939. "/getTracks": {
  940. "get": {
  941. "tags": [
  942. "Developers"
  943. ],
  944. "summary": "Get the tracks",
  945. "description": "Get the tracks\n",
  946. "operationId": "getTracks",
  947. "parameters": [
  948. {
  949. "name": "building",
  950. "in": "query",
  951. "description": "site of the tracks",
  952. "required": false,
  953. "schema": {
  954. "type": "string"
  955. }
  956. },
  957. {
  958. "name": "searchString",
  959. "in": "query",
  960. "description": "pass an optional search string for looking up inventory",
  961. "required": false,
  962. "schema": {
  963. "type": "string"
  964. }
  965. },
  966. {
  967. "name": "skip",
  968. "in": "query",
  969. "description": "number of records to skip for pagination",
  970. "required": false,
  971. "schema": {
  972. "minimum": 0,
  973. "type": "integer",
  974. "format": "int32"
  975. }
  976. },
  977. {
  978. "name": "limit",
  979. "in": "query",
  980. "description": "maximum number of records to return",
  981. "required": false,
  982. "schema": {
  983. "maximum": 1000,
  984. "minimum": 0,
  985. "type": "integer",
  986. "format": "int32"
  987. }
  988. }
  989. ],
  990. "responses": {
  991. "200": {
  992. "description": "search results matching criteria",
  993. "content": {
  994. "application/json": {
  995. "schema": {
  996. "type": "array",
  997. "items": {
  998. "$ref": "#/components/schemas/TrackItem"
  999. }
  1000. }
  1001. }
  1002. }
  1003. },
  1004. "400": {
  1005. "description": "bad input parameter"
  1006. }
  1007. }
  1008. },
  1009. "servers": [
  1010. {
  1011. "url": "",
  1012. "description": ""
  1013. }
  1014. ]
  1015. },
  1016. "/postTrack": {
  1017. "post": {
  1018. "tags": [
  1019. "Developers"
  1020. ],
  1021. "summary": "Post a track",
  1022. "description": "Post a track",
  1023. "operationId": "postTrack",
  1024. "requestBody": {
  1025. "description": "track item",
  1026. "content": {
  1027. "application/json": {
  1028. "schema": {
  1029. "$ref": "#/components/schemas/TrackItem"
  1030. }
  1031. }
  1032. }
  1033. },
  1034. "responses": {
  1035. "201": {
  1036. "description": "item created"
  1037. },
  1038. "400": {
  1039. "description": "invalid input, object invalid"
  1040. },
  1041. "409": {
  1042. "description": "an existing item already exists"
  1043. }
  1044. }
  1045. },
  1046. "servers": [
  1047. {
  1048. "url": "",
  1049. "description": ""
  1050. }
  1051. ]
  1052. }
  1053. },
  1054. "components": {
  1055. "schemas": {
  1056. "BuildingItem": {
  1057. "required": [
  1058. "id",
  1059. "name"
  1060. ],
  1061. "type": "object",
  1062. "properties": {
  1063. "id": {
  1064. "type": "string",
  1065. "format": "uuid"
  1066. },
  1067. "name": {
  1068. "type": "string",
  1069. "example": "Hospital"
  1070. },
  1071. "city": {
  1072. "type": "string"
  1073. },
  1074. "address": {
  1075. "type": "string"
  1076. },
  1077. "latitude": {
  1078. "type": "number"
  1079. },
  1080. "longitude": {
  1081. "type": "number"
  1082. }
  1083. },
  1084. "description": "A building or an area that groups together several plan"
  1085. },
  1086. "PlanItem": {
  1087. "required": [
  1088. "id",
  1089. "name"
  1090. ],
  1091. "type": "object",
  1092. "properties": {
  1093. "id": {
  1094. "type": "string",
  1095. "format": "uuid"
  1096. },
  1097. "name": {
  1098. "type": "string",
  1099. "example": "Building 1 - Floor 1"
  1100. },
  1101. "image": {
  1102. "type": "string",
  1103. "format": "uri",
  1104. "example": "The URL of the image"
  1105. },
  1106. "scale": {
  1107. "type": "number",
  1108. "example": 1
  1109. },
  1110. "building": {
  1111. "type": "string",
  1112. "format": "uuid"
  1113. }
  1114. },
  1115. "description": "A plan is floor or an external space of a building"
  1116. },
  1117. "ZoneItem": {
  1118. "required": [
  1119. "id",
  1120. "name"
  1121. ],
  1122. "type": "object",
  1123. "properties": {
  1124. "id": {
  1125. "type": "string",
  1126. "format": "uuid"
  1127. },
  1128. "name": {
  1129. "type": "string",
  1130. "example": "Floor 1 - Room 1"
  1131. },
  1132. "groups": {
  1133. "type": "string"
  1134. },
  1135. "plan": {
  1136. "type": "string",
  1137. "format": "uuid"
  1138. },
  1139. "building": {
  1140. "type": "string",
  1141. "format": "uuid"
  1142. }
  1143. },
  1144. "description": "A zone is a room or a sub-area of a plan"
  1145. },
  1146. "GatewayItem": {
  1147. "required": [
  1148. "id",
  1149. "name"
  1150. ],
  1151. "type": "object",
  1152. "properties": {
  1153. "id": {
  1154. "type": "string",
  1155. "format": "uuid"
  1156. },
  1157. "name": {
  1158. "type": "string"
  1159. },
  1160. "mac": {
  1161. "type": "string"
  1162. },
  1163. "status": {
  1164. "type": "string"
  1165. },
  1166. "model": {
  1167. "type": "string"
  1168. },
  1169. "ip": {
  1170. "type": "string"
  1171. },
  1172. "position": {
  1173. "type": "string"
  1174. },
  1175. "x": {
  1176. "type": "number"
  1177. },
  1178. "y": {
  1179. "type": "number"
  1180. },
  1181. "notes": {
  1182. "type": "string"
  1183. },
  1184. "zone": {
  1185. "type": "string",
  1186. "format": "uuid"
  1187. },
  1188. "building": {
  1189. "type": "string",
  1190. "format": "uuid"
  1191. }
  1192. },
  1193. "description": "A gateway of the system"
  1194. },
  1195. "TrackerItem": {
  1196. "required": [
  1197. "id",
  1198. "name"
  1199. ],
  1200. "type": "object",
  1201. "properties": {
  1202. "id": {
  1203. "type": "string",
  1204. "format": "uuid"
  1205. },
  1206. "name": {
  1207. "type": "string"
  1208. },
  1209. "mac": {
  1210. "type": "string"
  1211. },
  1212. "status": {
  1213. "type": "string"
  1214. },
  1215. "model": {
  1216. "type": "string"
  1217. },
  1218. "position": {
  1219. "type": "string"
  1220. },
  1221. "notes": {
  1222. "type": "string"
  1223. },
  1224. "x": {
  1225. "type": "number"
  1226. },
  1227. "y": {
  1228. "type": "number"
  1229. },
  1230. "zone": {
  1231. "type": "string",
  1232. "format": "uuid"
  1233. },
  1234. "building": {
  1235. "type": "string",
  1236. "format": "uuid"
  1237. }
  1238. },
  1239. "description": "A tracker of the system"
  1240. },
  1241. "OperatorItem": {
  1242. "required": [
  1243. "id",
  1244. "name"
  1245. ],
  1246. "type": "object",
  1247. "properties": {
  1248. "id": {
  1249. "type": "string"
  1250. },
  1251. "name": {
  1252. "type": "string"
  1253. },
  1254. "phone": {
  1255. "type": "string"
  1256. },
  1257. "zones": {
  1258. "type": "string"
  1259. },
  1260. "groups": {
  1261. "type": "string"
  1262. },
  1263. "notes": {
  1264. "type": "string"
  1265. },
  1266. "building": {
  1267. "type": "string",
  1268. "format": "uuid"
  1269. }
  1270. },
  1271. "description": "An operator who monitors the subjects"
  1272. },
  1273. "SubjectItem": {
  1274. "required": [
  1275. "id",
  1276. "name"
  1277. ],
  1278. "type": "object",
  1279. "properties": {
  1280. "id": {
  1281. "type": "string"
  1282. },
  1283. "name": {
  1284. "type": "string"
  1285. },
  1286. "role": {
  1287. "type": "string"
  1288. },
  1289. "phone": {
  1290. "type": "string"
  1291. },
  1292. "zones": {
  1293. "type": "string"
  1294. },
  1295. "groups": {
  1296. "type": "string"
  1297. },
  1298. "notes": {
  1299. "type": "string"
  1300. },
  1301. "building": {
  1302. "type": "string",
  1303. "format": "uuid"
  1304. }
  1305. },
  1306. "description": "Person or object monitored by the operators"
  1307. },
  1308. "AlarmItem": {
  1309. "required": [
  1310. "id"
  1311. ],
  1312. "type": "object",
  1313. "properties": {
  1314. "id": {
  1315. "type": "string"
  1316. },
  1317. "timestamp": {
  1318. "type": "string",
  1319. "format": "time"
  1320. },
  1321. "type": {
  1322. "type": "string"
  1323. },
  1324. "status": {
  1325. "type": "string"
  1326. },
  1327. "gateway": {
  1328. "type": "string",
  1329. "format": "uuid"
  1330. },
  1331. "gatewayMac": {
  1332. "type": "string"
  1333. },
  1334. "tracker": {
  1335. "type": "string",
  1336. "format": "uuid"
  1337. },
  1338. "trackerBid": {
  1339. "type": "string"
  1340. },
  1341. "subject": {
  1342. "type": "string",
  1343. "format": "uuid"
  1344. },
  1345. "subjectName": {
  1346. "type": "string"
  1347. },
  1348. "operator": {
  1349. "type": "string",
  1350. "format": "uuid"
  1351. },
  1352. "operatorName": {
  1353. "type": "string"
  1354. },
  1355. "zone": {
  1356. "type": "string",
  1357. "format": "uuid"
  1358. },
  1359. "zoneName": {
  1360. "type": "string"
  1361. },
  1362. "building": {
  1363. "type": "string",
  1364. "format": "uuid"
  1365. }
  1366. },
  1367. "description": "Alarm triggered if a monitored subject is lost or out of their zone"
  1368. },
  1369. "TrackItem": {
  1370. "required": [
  1371. "id"
  1372. ],
  1373. "type": "object",
  1374. "properties": {
  1375. "id": {
  1376. "type": "string"
  1377. },
  1378. "timestamp": {
  1379. "type": "string",
  1380. "format": "time"
  1381. },
  1382. "type": {
  1383. "type": "string"
  1384. },
  1385. "status": {
  1386. "type": "string"
  1387. },
  1388. "gateway": {
  1389. "type": "string",
  1390. "format": "uuid"
  1391. },
  1392. "gatewayMac": {
  1393. "type": "string"
  1394. },
  1395. "tracker": {
  1396. "type": "string",
  1397. "format": "uuid"
  1398. },
  1399. "trackerMac": {
  1400. "type": "string"
  1401. },
  1402. "subject": {
  1403. "type": "string"
  1404. },
  1405. "subjectName": {
  1406. "type": "string"
  1407. },
  1408. "zone": {
  1409. "type": "string"
  1410. },
  1411. "zoneName": {
  1412. "type": "string"
  1413. },
  1414. "signal": {
  1415. "type": "number"
  1416. },
  1417. "building": {
  1418. "type": "string",
  1419. "format": "uuid"
  1420. }
  1421. },
  1422. "description": "Log of a state change of a tracker with respect to a gateway"
  1423. }
  1424. }
  1425. }
  1426. }