001package jmri.server.json; 002 003import java.util.*; 004 005import jmri.Audio; 006 007/** 008 * Common and utility constants used in the JMRI JSON protocol. 009 * <p> 010 * <strong>Note</strong> any documented use of a constant is not the exclusive 011 * or sole use of the constant. Review the JSON schemas for all uses of any 012 * given constant. 013 * 014 * @author Randall Wood (C) 2013, 2014, 2016, 2018, 2019 015 */ 016public final class JSON { 017 018 /** 019 * JSON protocol version for requesting version 5.x.y protocol. {@value #V5} 020 */ 021 public static final String V5 = "v5"; 022 023 /** 024 * List of supported versions, as used in the HTTP URL paths. 025 * <p> 026 * <strong>Note:</strong> this being a List<String> is not stable API 027 * and is subject to change without notice. 028 */ 029 public static final List<String> VERSIONS = Collections.unmodifiableList(Arrays.asList(V5)); 030 031 /** 032 * JMRI JSON protocol version 5 complete version. See 033 * {@link jmri.server.json} for the version history. Starting with 5.0.0, 034 * this is a semantic version string; prior to that, it is just an X.Y 035 * version string. 036 */ 037 public static final String V5_PROTOCOL_VERSION = "5.4.0"; // NOI18N 038 039 /** 040 * JMRI JSON protocol version. See {@link jmri.server.json} for the version 041 * history. Starting with 5.0.0, this is a semantic version string; prior to 042 * that, it is just an X.Y version string. 043 */ 044 public static final String JSON_PROTOCOL_VERSION = V5_PROTOCOL_VERSION; // NOI18N 045 046 /** 047 * {@value #VERSION} 048 */ 049 public static final String VERSION = "version"; // NOI18N 050 051 /* JSON structure */ 052 /** 053 * {@value #TYPE} 054 */ 055 public static final String TYPE = "type"; // NOI18N 056 /** 057 * {@value #LIST} 058 */ 059 public static final String LIST = "list"; // NOI18N 060 /** 061 * {@value #DATA} 062 */ 063 public static final String DATA = "data"; // NOI18N 064 /** 065 * {@value #PING} 066 */ 067 public static final String PING = "ping"; // NOI18N 068 /** 069 * {@value #PONG} 070 */ 071 public static final String PONG = "pong"; // NOI18N 072 /** 073 * {@value #GOODBYE} 074 */ 075 public static final String GOODBYE = "goodbye"; // NOI18N 076 /** 077 * {@value #NAME} 078 */ 079 public static final String NAME = "name"; // NOI18N 080 081 /* JSON methods */ 082 /** 083 * {@value #METHOD} 084 */ 085 public static final String METHOD = "method"; // NOI18N 086 /** 087 * {@value #DELETE} 088 */ 089 public static final String DELETE = "delete"; // NOI18N 090 /** 091 * {@value #GET} 092 */ 093 public static final String GET = "get"; // NOI18N 094 /** 095 * {@value #POST} 096 */ 097 public static final String POST = "post"; // NOI18N 098 /** 099 * {@value #PUT} 100 */ 101 public static final String PUT = "put"; // NOI18N 102 103 /* JSON common tokens */ 104 /** 105 * {@value #COMMENT} 106 */ 107 public static final String COMMENT = "comment"; // NOI18N 108 /** 109 * {@value #USERNAME} 110 */ 111 public static final String USERNAME = "userName"; // NOI18N 112 /** 113 * {@value #STATE} 114 */ 115 public static final String STATE = "state"; // NOI18N 116 /** 117 * {@value #VALUE} 118 */ 119 public static final String VALUE = "value"; // NOI18N 120 /** 121 * {@value #ID} 122 */ 123 public static final String ID = "id"; // NOI18N 124 /** 125 * {@value #STATUS} 126 */ 127 public static final String STATUS = "status"; // NOI18N 128 /** 129 * Numeric status value 130 * <p> 131 * {@value #STATUS_CODE} 132 */ 133 public static final String STATUS_CODE = "statusCode"; // NOI18N 134 /** 135 * {@value #PROPERTIES} 136 */ 137 public static final String PROPERTIES = "properties"; // NOI18N 138 /** 139 * {@value #DEFAULT} 140 */ 141 public static final String DEFAULT = "default"; // NOI18N 142 /** 143 * {@value #SPEED} 144 */ 145 public static final String SPEED = "speed"; // NOI18N 146 /** 147 * {@value #DIRECTION} 148 */ 149 public static final String DIRECTION = "direction"; // NOI18N 150 151 /* JSON hello and metadata */ 152 /** 153 * {@value #HELLO} 154 */ 155 public static final String HELLO = "hello"; // NOI18N 156 /** 157 * {@value #JMRI} 158 */ 159 public static final String JMRI = "JMRI"; // NOI18N 160 /** 161 * {@value #HEARTBEAT} 162 */ 163 public static final String HEARTBEAT = "heartbeat"; // NOI18N 164 /** 165 * {@value #RAILROAD} 166 */ 167 public static final String RAILROAD = "railroad"; // NOI18N 168 /** 169 * {@value #NODE} 170 * 171 * @since 1.1 172 */ 173 public static final String NODE = "node"; // NOI18N 174 /** 175 * {@value #ACTIVE_PROFILE} 176 * 177 * @since 3.0 178 */ 179 public static final String ACTIVE_PROFILE = "activeProfile"; // NOI18N 180 /** 181 * {@value #FORMER_NODES} 182 * 183 * @since 1.1 184 */ 185 public static final String FORMER_NODES = "formerNodes"; // NOI18N 186 /** 187 * {@value #LOCALE} 188 * 189 * @since 1.1 190 */ 191 public static final String LOCALE = "locale"; // NOI18N 192 193 /* JSON list types */ 194 /** 195 * {@value #ENGINES} 196 */ 197 public static final String ENGINES = "engines"; // NOI18N 198 /** 199 * {@value #METADATA} 200 */ 201 public static final String METADATA = "metadata"; // NOI18N 202 /** 203 * {@value #PANELS} 204 */ 205 public static final String PANELS = "panels"; // NOI18N 206 /** 207 * {@value #ROUTES} 208 */ 209 public static final String ROUTES = "routes"; // NOI18N 210 /** 211 * {@value #NETWORK_SERVICES} 212 */ 213 public static final String NETWORK_SERVICES = "networkServices"; // NOI18N 214 /** 215 * {@value #CONFIG_PROFILES} 216 */ 217 public static final String CONFIG_PROFILES = "configProfiles"; // NOI18N 218 /** 219 * {@value #CONFIG_PROFILE} 220 */ 221 public static final String CONFIG_PROFILE = "configProfile"; // NOI18N 222 /** 223 * {@value #UNIQUE_ID} 224 */ 225 public static final String UNIQUE_ID = "uniqueId"; // NOI18N 226 /** 227 * {@value #IS_ACTIVE_PROFILE} 228 */ 229 public static final String IS_ACTIVE_PROFILE = "isActiveProfile"; // NOI18N 230 /** 231 * {@value #IS_AUTO_START} 232 */ 233 public static final String IS_AUTO_START = "isAutoStart"; // NOI18N 234 /** 235 * {@value #IS_NEXT_PROFILE} 236 */ 237 public static final String IS_NEXT_PROFILE = "isNextProfile"; // NOI18N 238 239 /* JSON data types */ 240 /** 241 * {@value #NETWORK_SERVICE} 242 * 243 * @since 2.0 244 */ 245 public static final String NETWORK_SERVICE = "networkService"; // NOI18N 246 /** 247 * {@value #PANEL} 248 */ 249 public static final String PANEL = "panel"; // NOI18N 250 /** 251 * {@value #PROGRAMMER} 252 */ 253 public static final String PROGRAMMER = "programmer"; // NOI18N 254 /** 255 * {@value #ROUTE} 256 */ 257 public static final String ROUTE = "route"; // NOI18N 258 /** 259 * {@value #THROTTLE} 260 */ 261 public static final String THROTTLE = "throttle"; // NOI18N 262 263 /* JSON operations tokens */ 264 /** 265 * {@value #ICON_NAME} 266 */ 267 public static final String ICON_NAME = "iconName"; // NOI18N 268 /** 269 * {@value #LENGTH} 270 */ 271 public static final String LENGTH = "length"; // NOI18N 272 273 /* JSON panel tokens */ 274 /** 275 * {@value #CONTROL_PANEL} 276 */ 277 public static final String CONTROL_PANEL = "Control Panel"; // NOI18N 278 /** 279 * {@value #LAYOUT_PANEL} 280 */ 281 public static final String LAYOUT_PANEL = "Layout"; // NOI18N 282 /** 283 * {@value #SWITCHBOARD_PANEL} 284 */ 285 public static final String SWITCHBOARD_PANEL = "Switchboard"; // NOI18N 286 /** 287 * {@value #PANEL_PANEL} 288 */ 289 public static final String PANEL_PANEL = "Panel"; // NOI18N 290 /** 291 * {@value #URL} 292 */ 293 public static final String URL = "URL"; // NOI18N 294 /** 295 * {@value #FORMAT} 296 */ 297 public static final String FORMAT = "format"; // NOI18N 298 /** 299 * {@value #JSON} 300 */ 301 public static final String JSON = "json"; // NOI18N 302 /** 303 * {@value #XML} 304 */ 305 public static final String XML = "xml"; // NOI18N 306 307 /* JSON programmer tokens */ 308 /** 309 * {@value #MODE} 310 */ 311 public static final String MODE = "mode"; // NOI18N 312 /** 313 * {@value #NODE_CV} 314 */ 315 public static final String NODE_CV = "CV"; // NOI18N 316 /** 317 * {@value #OP} 318 */ 319 public static final String OP = "mode"; // NOI18N 320 /** 321 * {@value #READ} 322 */ 323 public static final String READ = "read"; // NOI18N 324 /** 325 * {@value #WRITE} 326 */ 327 public static final String WRITE = "write"; // NOI18N 328 329 /* JSON roster and car/engine (operations) tokens */ 330 /** 331 * {@value #COLOR} 332 */ 333 public static final String COLOR = "color"; // NOI18N 334 /** 335 * {@value #LOAD} 336 */ 337 public static final String LOAD = "load"; // NOI18N 338 /** 339 * {@value #MODEL} 340 */ 341 public static final String MODEL = "model"; // NOI18N 342 /** 343 * {@value #ROAD} 344 */ 345 public static final String ROAD = "road"; // NOI18N 346 /** 347 * {@value #NUMBER} 348 */ 349 public static final String NUMBER = "number"; // NOI18N 350 /** 351 * {@value #IS_LONG_ADDRESS} 352 */ 353 public static final String IS_LONG_ADDRESS = "isLongAddress"; // NOI18N 354 /** 355 * {@value #MFG} 356 */ 357 public static final String MFG = "mfg"; // NOI18N 358 /** 359 * {@value #DECODER_MODEL} 360 */ 361 public static final String DECODER_MODEL = "decoderModel"; // NOI18N 362 /** 363 * {@value #DECODER_FAMILY} 364 */ 365 public static final String DECODER_FAMILY = "decoderFamily"; // NOI18N 366 /** 367 * {@value #MAX_SPD_PCT} 368 */ 369 public static final String MAX_SPD_PCT = "maxSpeedPct"; // NOI18N 370 /** 371 * {@value #FUNCTION_KEYS} 372 */ 373 public static final String FUNCTION_KEYS = "functionKeys"; // NOI18N 374 /** 375 * {@value #IMAGE} 376 * 377 * @since 2.0 378 */ 379 public static final String IMAGE = "image"; // NOI18N 380 /** 381 * {@value #ICON} 382 * 383 * @since 2.0 384 */ 385 public static final String ICON = "icon"; // NOI18N 386 /** 387 * {@value #SELECTED_ICON} 388 * 389 * @since 2.0 390 */ 391 public static final String SELECTED_ICON = "selectedIcon"; // NOI18N 392 /** 393 * {@value #LABEL} 394 */ 395 public static final String LABEL = "label"; // NOI18N 396 /** 397 * {@value #LOCKABLE} 398 */ 399 public static final String LOCKABLE = "lockable"; // NOI18N 400 /** 401 * {@value #GROUP} 402 */ 403 public static final String GROUP = "group"; // NOI18N 404 /** 405 * {@value #OWNER} 406 * 407 * @since 1.1 408 */ 409 public static final String OWNER = "owner"; // NOI18N 410 /** 411 * {@value #SHUNTING_FUNCTION} 412 * 413 * @since 2.0 414 */ 415 public static final String SHUNTING_FUNCTION = "shuntingFunction"; // NOI18N 416 417 /* JSON route (operations) tokens */ 418 /** 419 * {@value #TRAIN_DIRECTION} 420 */ 421 public static final String TRAIN_DIRECTION = "trainDirection"; // NOI18N 422 /** 423 * {@value #SEQUENCE} 424 */ 425 public static final String SEQUENCE = "sequenceId"; // NOI18N 426 /** 427 * {@value #ARRIVAL_TIME} 428 * 429 * @since 1.1 430 */ 431 public static final String ARRIVAL_TIME = "arrivalTime"; // NOI18N 432 /** 433 * {@value #EXPECTED_ARRIVAL} 434 */ 435 public static final String EXPECTED_ARRIVAL = "expectedArrivalTime"; // NOI18N 436 /** 437 * {@value #EXPECTED_DEPARTURE} 438 */ 439 public static final String EXPECTED_DEPARTURE = "expectedDepartureTime"; // NOI18N 440 /** 441 * {@value #DEPARTURE_TIME} 442 */ 443 public static final String DEPARTURE_TIME = "departureTime"; // NOI18N 444 /** 445 * {@value #DEPARTURE_LOCATION} 446 */ 447 public static final String DEPARTURE_LOCATION = "trainDepartsName"; // NOI18N 448 /** 449 * {@value #TERMINATES_LOCATION} 450 */ 451 public static final String TERMINATES_LOCATION = "trainTerminatesName"; // NOI18N 452 /** 453 * {@value #DESCRIPTION} 454 */ 455 public static final String DESCRIPTION = "description"; // NOI18N 456 /** 457 * {@value #ROUTE_ID} 458 */ 459 public static final String ROUTE_ID = "routeId"; // NOI18N 460 /** 461 * {@value #HAZARDOUS} 462 * 463 * @since 1.1 464 */ 465 public static final String HAZARDOUS = "hazardous"; // NOI18N 466 /** 467 * {@value #KERNEL} 468 * 469 * @since 1.1 470 */ 471 public static final String KERNEL = "kernel"; // NOI18N 472 /** 473 * {@value #FINAL_DESTINATION} 474 * 475 * @since 1.1 476 */ 477 public static final String FINAL_DESTINATION = "finalDestination"; // NOI18N 478 /** 479 * {@value #REMOVE_COMMENT} 480 * 481 * @since 1.1 482 */ 483 public static final String REMOVE_COMMENT = "removeComment"; // NOI18N 484 /** 485 * {@value #ADD_COMMENT} 486 * 487 * @since 1.1 488 */ 489 public static final String ADD_COMMENT = "addComment"; // NOI18N 490 /** 491 * {@value #IS_LOCAL} 492 * 493 * @since 1.1 494 */ 495 public static final String IS_LOCAL = "isLocal"; 496 /** 497 * {@value #ADD_HELPERS} 498 * 499 * @since 1.1 500 */ 501 public static final String ADD_HELPERS = "addHelpers"; 502 /** 503 * {@value #CHANGE_CABOOSE} 504 * 505 * @since 1.1 506 */ 507 public static final String CHANGE_CABOOSE = "changeCaboose"; 508 /** 509 * {@value #CHANGE_ENGINES} 510 * 511 * @since 1.1 512 */ 513 public static final String CHANGE_ENGINES = "changeEngines"; 514 /** 515 * {@value #REMOVE_HELPERS} 516 * 517 * @since 1.1 518 */ 519 public static final String REMOVE_HELPERS = "removeHelpers"; 520 /** 521 * {@value #OPTIONS} 522 * 523 * @since 1.1 524 */ 525 public static final String OPTIONS = "options"; 526 /** 527 * {@value #ADD} 528 * <p> 529 * As an attribute of a {@link jmri.server.json.roster.JsonRoster#ROSTER}, 530 * this is an entry that has been added to the roster. 531 * 532 * @since 1.1 533 */ 534 public static final String ADD = "add"; 535 /** 536 * {@value #REMOVE} 537 * <p> 538 * In operations, this indicates the dropping or setting out of a car or 539 * engine. 540 * <p> 541 * As an attribute of a {@link jmri.server.json.roster.JsonRoster#ROSTER}, 542 * this is an entry that has been removed from the roster. 543 * 544 * @since 1.1 545 */ 546 public static final String REMOVE = "remove"; 547 /** 548 * {@value #ADD_AND_REMOVE} 549 * 550 * @since 1.1 551 */ 552 public static final String ADD_AND_REMOVE = "addAndRemove"; 553 /** 554 * {@value #TOTAL} 555 * 556 * @since 1.1 557 */ 558 public static final String TOTAL = "total"; 559 /** 560 * {@value #LOADS} 561 * 562 * @since 1.1 563 */ 564 public static final String LOADS = "loads"; 565 /** 566 * {@value #EMPTIES} 567 * 568 * @since 1.1 569 */ 570 public static final String EMPTIES = "empties"; 571 /** 572 * {@value #RETURN_WHEN_EMPTY} 573 * 574 * @since 1.1 575 */ 576 public static final String RETURN_WHEN_EMPTY = "returnWhenEmpty"; 577 /** 578 * {@value #RETURN_WHEN_LOADED} 579 * 580 * @since 5.4.0 581 */ 582 public static final String RETURN_WHEN_LOADED = "returnWhenLoaded"; 583 /** 584 * {@value #DIVISION} 585 * 586 * @since 5.4.0 587 */ 588 public static final String DIVISION = "division"; 589 /** 590 * {@value #UTILITY} 591 * 592 * @since 1.1 593 */ 594 public static final String UTILITY = "utility"; 595 596 /* JSON signalling tokens */ 597 /** 598 * {@value #APPEARANCE} 599 */ 600 public static final String APPEARANCE = "appearance"; // NOI18N 601 /** 602 * {@value #APPEARANCE_NAME} 603 */ 604 public static final String APPEARANCE_NAME = "appearanceName"; // NOI18N 605 /** 606 * {@value #ASPECT} 607 */ 608 public static final String ASPECT = "aspect"; // NOI18N 609 /** 610 * {@value #ASPECT_DARK} 611 */ 612 public static final String ASPECT_DARK = "Dark"; // NOI18N 613 /** 614 * {@value #ASPECT_HELD} 615 */ 616 public static final String ASPECT_HELD = "Held"; // NOI18N 617 /** 618 * {@value #ASPECT_UNKNOWN} 619 */ 620 public static final String ASPECT_UNKNOWN = "Unknown"; // NOI18N 621 /** 622 * {@value #TOKEN_HELD} 623 */ 624 public static final String TOKEN_HELD = "held"; // NOI18N 625 /** 626 * {@value #LIT} 627 */ 628 public static final String LIT = "lit"; // NOI18N 629 630 /* Shared JSON consist, roster, and throttle tokens */ 631 /** 632 * {@value #ADDRESS} 633 */ 634 public static final String ADDRESS = "address"; // NOI18N 635 /** 636 * {@value #FORWARD} 637 */ 638 public static final String FORWARD = "forward"; // NOI18N 639 /** 640 * Prefix for the throttle function keys (F0-F28). 641 * <p> 642 * {@value #F} 643 */ 644 public static final String F = "F"; // NOI18N 645 646 /* JSON Sensor and Turnout Tokens */ 647 /** 648 * {@value #INVERTED} 649 */ 650 public static final String INVERTED = "inverted"; // NOI18N 651 652 /* JSON value types */ 653 /** 654 * {@value #INTEGER} 655 */ 656 public static final String INTEGER = "int"; // NOI18N 657 658 /* JSON network services tokens */ 659 /** 660 * {@value #PORT} 661 */ 662 public static final String PORT = "port"; // NOI18N 663 664 /* JSON consist tokens */ 665 /** 666 * {@value #POSITION} 667 */ 668 public static final String POSITION = "position"; // NOI18N 669 /** 670 * {@value #SIZE_LIMIT} 671 */ 672 public static final String SIZE_LIMIT = "sizeLimit"; // NOI18N 673 674 /* Time constants */ 675 /** 676 * {@value #RATE} 677 */ 678 public static final String RATE = "rate"; // NOI18N 679 680 /* 681 * JSON State (an unsigned integer) 682 */ 683 684 /* Audio commands */ 685 /** 686 * {@value #AUDIO_ICON_IDENTITY} 687 */ 688 public static final String AUDIO_ICON_IDENTITY = "identity"; 689 /** 690 * {@value #AUDIO_COMMAND} 691 */ 692 public static final String AUDIO_COMMAND = "command"; 693 /** 694 * {@value #AUDIO_COMMAND_NONE} 695 */ 696 public static final String AUDIO_COMMAND_NONE = "None"; 697 /** 698 * {@value #AUDIO_COMMAND_PLAY} 699 */ 700 public static final String AUDIO_COMMAND_PLAY = "Play"; 701 /** 702 * {@value #AUDIO_COMMAND_PLAY_NUM_LOOPS} 703 */ 704 public static final String AUDIO_COMMAND_PLAY_NUM_LOOPS = "playNumLoops"; 705 /** 706 * {@value #AUDIO_COMMAND_STOP} 707 */ 708 public static final String AUDIO_COMMAND_STOP = "Stop"; 709 710 /* Common state */ 711 /** 712 * {@value #UNKNOWN} 713 * <p> 714 * Note that this value deliberately differs from 715 * {@link jmri.NamedBean#UNKNOWN} so that JSON clients can treat all known 716 * states as true, and the unknown state as false. 717 */ 718 public static final int UNKNOWN = 0x00; 719 720 /* Light and PowerManager state */ 721 /** 722 * {@value #ON} 723 */ 724 public static final int ON = 0x02; 725 /** 726 * {@value #OFF} 727 */ 728 public static final int OFF = 0x04; 729 730 /* NamedBean state */ 731 /** 732 * {@value #INCONSISTENT} 733 */ 734 public static final int INCONSISTENT = 0x08; 735 736 /* Audio state */ 737 /** 738 * {@value #AUDIO_PLAYING} 739 */ 740 public static final int AUDIO_PLAYING = Audio.STATE_PLAYING; 741 /** 742 * {@value #AUDIO_STOPPED} 743 */ 744 public static final int AUDIO_STOPPED = Audio.STATE_STOPPED; 745 746 /* Route state */ 747 /** 748 * {@value #TOGGLE} 749 */ 750 public static final int TOGGLE = 0x08; 751 752 /* Sensor state */ 753 /** 754 * {@value #ACTIVE} 755 */ 756 public static final int ACTIVE = 0x02; 757 /** 758 * {@value #INACTIVE} 759 */ 760 public static final int INACTIVE = 0x04; 761 762 /* SignalHead state */ 763 /** 764 * {@value #STATE_DARK} 765 */ 766 public static final int STATE_DARK = 0x00; 767 /** 768 * {@value #RED} 769 */ 770 public static final int RED = 0x01; 771 /** 772 * {@value #FLASHRED} 773 */ 774 public static final int FLASHRED = 0x02; 775 /** 776 * {@value #YELLOW} 777 */ 778 public static final int YELLOW = 0x04; 779 /** 780 * {@value #FLASHYELLOW} 781 */ 782 public static final int FLASHYELLOW = 0x08; 783 /** 784 * {@value #GREEN} 785 */ 786 public static final int GREEN = 0x10; 787 /** 788 * {@value #FLASHGREEN} 789 */ 790 public static final int FLASHGREEN = 0x20; 791 /** 792 * {@value #LUNAR} 793 */ 794 public static final int LUNAR = 0x40; 795 /** 796 * {@value #FLASHLUNAR} 797 */ 798 public static final int FLASHLUNAR = 0x80; 799 /** 800 * {@value #STATE_HELD} 801 */ 802 public static final int STATE_HELD = 0x100; 803 804 /* Turnout state */ 805 /** 806 * {@value #CLOSED} 807 */ 808 public static final int CLOSED = 0x02; 809 /** 810 * {@value #THROWN} 811 */ 812 public static final int THROWN = 0x04; 813 814 /* OBlock status */ 815 /** 816 * {@value #ALLOCATED} 817 */ 818 public static final int ALLOCATED = 0x10; 819 /** 820 * {@value #RUNNING} 821 */ 822 public static final int RUNNING = 0x20; 823 /** 824 * {@value #OUT_OF_SERVICE} 825 */ 826 public static final int OUT_OF_SERVICE = 0x30; 827 /** 828 * {@value #TRACK_ERROR} 829 */ 830 public static final int TRACK_ERROR = 0x40; 831 832 /** 833 * {@value #UNIT} 834 * 835 * @since 1.1 836 */ 837 public static final String UNIT = "unit"; // NOI18N 838 839 /* JMRI JSON Client Autoconfiguration support */ 840 /** 841 * {@value #PREFIX} 842 * 843 * @since 2.0 844 */ 845 public static final String PREFIX = "prefix"; // NOI18N 846 /** 847 * {@value #SYSTEM_CONNECTION} 848 * 849 * @since 2.0 850 */ 851 public static final String SYSTEM_CONNECTION = "systemConnection"; // NOI18N 852 /** 853 * {@value #SYSTEM_CONNECTIONS} 854 * 855 * @since 2.0 856 */ 857 public static final String SYSTEM_CONNECTIONS = "systemConnections"; // NOI18N 858 859 /* JSON Schema */ 860 /** 861 * {@value #SCHEMA} 862 * 863 * @since 4.1 864 */ 865 public static final String SCHEMA = "schema"; // NOI18N 866 /** 867 * {@value #SERVER} 868 * 869 * @since 4.1 870 */ 871 public static final String SERVER = "server"; // NOI18N 872 /** 873 * {@value #CLIENT} 874 * 875 * @since 4.1 876 */ 877 public static final String CLIENT = "client"; // NOI18N 878 /** 879 * {@value #FORCE_DELETE} 880 * 881 * @since 5.0.0 882 */ 883 public static final String FORCE_DELETE = "forceDelete"; // NOI18N 884 /** 885 * {@value #CONFLICT} 886 * 887 * @since 5.0.0 888 */ 889 public static final String CONFLICT = "conflict"; // NOI18N 890 /** 891 * {@value #RENAME} 892 * <p> 893 * In a message from a client, carries the new name for the object in the 894 * message; note that some services may bar changing the name of an object, 895 * while other services will change the name based on other values. In a 896 * message from the server, carries the old name for a recently renamed 897 * object in the message. 898 * 899 * @since 5.0.0 900 */ 901 public static final String RENAME = "rename"; // NOI18N 902 /** 903 * {@value #RFID} 904 * 905 * @since 5.0.0 906 */ 907 public static final String RFID = "rfid"; // NOI18N 908 /** 909 * {@value #WHERELASTSEEN} 910 * 911 * @since 5.7.6 912 */ 913 public static final String WHERELASTSEEN = "whereLastSeen"; // NOI18N 914 /** 915 * {@value #WHENLASTSEEN} 916 * 917 * @since 5.7.6 918 */ 919 public static final String WHENLASTSEEN = "whenLastSeen"; // NOI18N 920 /** 921 * {@value #TIME} 922 * 923 * @since 5.0.0 924 */ 925 public static final String TIME = "time"; // NOI18N 926 927 /* ZeroConf support */ 928 /** 929 * {@value #ZEROCONF_SERVICE_TYPE} Not used within the protocol, but used to 930 * support discovery of servers supporting the protocol. 931 */ 932 public static final String ZEROCONF_SERVICE_TYPE = "_jmri-json._tcp.local."; // NOI18N 933 934 /* prevent the constructor from being documented */ 935 private JSON() { 936 throw new UnsupportedOperationException("There is no valid instance of this class"); 937 } 938}