events.json 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883
  1. {
  2. "_copyright": "Copyright (C) 2012 - 2013, Digium, Inc.",
  3. "_author": "David M. Lee, II <dlee@digium.com>",
  4. "_svn_revision": "$Revision$",
  5. "apiVersion": "1.10.0",
  6. "swaggerVersion": "1.2",
  7. "basePath": "http://localhost:8088/ari",
  8. "resourcePath": "/api-docs/events.{format}",
  9. "apis": [
  10. {
  11. "path": "/events",
  12. "description": "Events from Asterisk to applications",
  13. "operations": [
  14. {
  15. "httpMethod": "GET",
  16. "upgrade": "websocket",
  17. "websocketProtocol": "ari",
  18. "summary": "WebSocket connection for events.",
  19. "nickname": "eventWebsocket",
  20. "responseClass": "Message",
  21. "parameters": [
  22. {
  23. "name": "app",
  24. "description": "Applications to subscribe to.",
  25. "paramType": "query",
  26. "required": true,
  27. "allowMultiple": true,
  28. "dataType": "string"
  29. },
  30. {
  31. "name": "subscribeAll",
  32. "description": "Subscribe to all Asterisk events. If provided, the applications listed will be subscribed to all events, effectively disabling the application specific subscriptions. Default is 'false'.",
  33. "paramType": "query",
  34. "required": false,
  35. "allowMultiple": false,
  36. "dataType": "boolean"
  37. }
  38. ]
  39. }
  40. ]
  41. },
  42. {
  43. "path": "/events/user/{eventName}",
  44. "description": "Stasis application user events",
  45. "operations": [
  46. {
  47. "httpMethod": "POST",
  48. "summary": "Generate a user event.",
  49. "nickname": "userEvent",
  50. "responseClass": "void",
  51. "parameters": [
  52. {
  53. "name": "eventName",
  54. "description": "Event name",
  55. "paramType": "path",
  56. "required": true,
  57. "allowMultiple": false,
  58. "dataType": "string"
  59. },
  60. {
  61. "name": "application",
  62. "description": "The name of the application that will receive this event",
  63. "paramType": "query",
  64. "required": true,
  65. "allowMultiple": false,
  66. "dataType": "string"
  67. },
  68. {
  69. "name": "source",
  70. "description": "URI for event source (channel:{channelId}, bridge:{bridgeId}, endpoint:{tech}/{resource}, deviceState:{deviceName}",
  71. "paramType": "query",
  72. "required": false,
  73. "allowMultiple": true,
  74. "dataType": "string"
  75. },
  76. {
  77. "name": "variables",
  78. "description": "The \"variables\" key in the body object holds custom key/value pairs to add to the user event. Ex. { \"variables\": { \"key\": \"value\" } }",
  79. "paramType": "body",
  80. "required": false,
  81. "allowMultiple": false,
  82. "dataType": "containers"
  83. }
  84. ],
  85. "errorResponses": [
  86. {
  87. "code": 404,
  88. "reason": "Application does not exist."
  89. },
  90. {
  91. "code": 422,
  92. "reason": "Event source not found."
  93. },
  94. {
  95. "code": 400,
  96. "reason": "Invalid even tsource URI or userevent data."
  97. }
  98. ]
  99. }
  100. ]
  101. }
  102. ],
  103. "models": {
  104. "Message": {
  105. "id": "Message",
  106. "description": "Base type for errors and events",
  107. "discriminator": "type",
  108. "properties": {
  109. "type": {
  110. "type": "string",
  111. "required": true,
  112. "description": "Indicates the type of this message."
  113. },
  114. "asterisk_id": {
  115. "type": "string",
  116. "required": false,
  117. "description": "The unique ID for the Asterisk instance that raised this event."
  118. }
  119. },
  120. "subTypes": [
  121. "MissingParams",
  122. "Event"
  123. ]
  124. },
  125. "MissingParams": {
  126. "id": "MissingParams",
  127. "description": "Error event sent when required params are missing.",
  128. "properties": {
  129. "params": {
  130. "required": true,
  131. "type": "List[string]",
  132. "description": "A list of the missing parameters"
  133. }
  134. }
  135. },
  136. "Event": {
  137. "id": "Event",
  138. "description": "Base type for asynchronous events from Asterisk.",
  139. "properties": {
  140. "application": {
  141. "type": "string",
  142. "description": "Name of the application receiving the event.",
  143. "required": true
  144. },
  145. "timestamp": {
  146. "type": "Date",
  147. "description": "Time at which this event was created.",
  148. "required": false
  149. }
  150. },
  151. "subTypes": [
  152. "DeviceStateChanged",
  153. "PlaybackStarted",
  154. "PlaybackFinished",
  155. "RecordingStarted",
  156. "RecordingFinished",
  157. "RecordingFailed",
  158. "ApplicationReplaced",
  159. "BridgeCreated",
  160. "BridgeDestroyed",
  161. "BridgeMerged",
  162. "BridgeBlindTransfer",
  163. "BridgeAttendedTransfer",
  164. "BridgeVideoSourceChanged",
  165. "ChannelCreated",
  166. "ChannelDestroyed",
  167. "ChannelEnteredBridge",
  168. "ChannelLeftBridge",
  169. "ChannelStateChange",
  170. "ChannelDtmfReceived",
  171. "ChannelDialplan",
  172. "ChannelCallerId",
  173. "ChannelUserevent",
  174. "ChannelHangupRequest",
  175. "ChannelVarset",
  176. "ChannelTalkingStarted",
  177. "ChannelTalkingFinished",
  178. "ChannelHold",
  179. "ChannelUnhold",
  180. "ContactStatusChange",
  181. "EndpointStateChange",
  182. "Dial",
  183. "StasisEnd",
  184. "StasisStart",
  185. "TextMessageReceived",
  186. "ChannelConnectedLine",
  187. "PeerStatusChange"
  188. ]
  189. },
  190. "ContactInfo": {
  191. "id": "ContactInfo",
  192. "description": "Detailed information about a contact on an endpoint.",
  193. "properties": {
  194. "uri": {
  195. "type": "string",
  196. "description": "The location of the contact.",
  197. "required": true
  198. },
  199. "contact_status": {
  200. "type": "string",
  201. "description": "The current status of the contact.",
  202. "required": true,
  203. "allowableValues": {
  204. "valueType": "LIST",
  205. "values": [
  206. "Unreachable",
  207. "Reachable",
  208. "Unknown",
  209. "Created",
  210. "Removed"
  211. ]
  212. }
  213. },
  214. "aor": {
  215. "type": "string",
  216. "description": "The Address of Record this contact belongs to.",
  217. "required": true
  218. },
  219. "roundtrip_usec": {
  220. "type": "string",
  221. "description": "Current round trip time, in microseconds, for the contact.",
  222. "required": false
  223. }
  224. }
  225. },
  226. "Peer": {
  227. "id": "Peer",
  228. "description": "Detailed information about a remote peer that communicates with Asterisk.",
  229. "properties": {
  230. "peer_status": {
  231. "type": "string",
  232. "description": "The current state of the peer. Note that the values of the status are dependent on the underlying peer technology.",
  233. "required": true
  234. },
  235. "cause": {
  236. "type": "string",
  237. "description": "An optional reason associated with the change in peer_status.",
  238. "required": false
  239. },
  240. "address": {
  241. "type": "string",
  242. "description": "The IP address of the peer.",
  243. "required": false
  244. },
  245. "port": {
  246. "type": "string",
  247. "description": "The port of the peer.",
  248. "required": false
  249. },
  250. "time": {
  251. "type": "string",
  252. "description": "The last known time the peer was contacted.",
  253. "required": false
  254. }
  255. }
  256. },
  257. "DeviceStateChanged": {
  258. "id": "DeviceStateChanged",
  259. "description": "Notification that a device state has changed.",
  260. "properties": {
  261. "device_state": {
  262. "type": "DeviceState",
  263. "description": "Device state object",
  264. "required": true
  265. }
  266. }
  267. },
  268. "PlaybackStarted": {
  269. "id": "PlaybackStarted",
  270. "description": "Event showing the start of a media playback operation.",
  271. "properties": {
  272. "playback": {
  273. "type": "Playback",
  274. "description": "Playback control object",
  275. "required": true
  276. }
  277. }
  278. },
  279. "PlaybackFinished": {
  280. "id": "PlaybackFinished",
  281. "description": "Event showing the completion of a media playback operation.",
  282. "properties": {
  283. "playback": {
  284. "type": "Playback",
  285. "description": "Playback control object",
  286. "required": true
  287. }
  288. }
  289. },
  290. "RecordingStarted": {
  291. "id": "RecordingStarted",
  292. "description": "Event showing the start of a recording operation.",
  293. "properties": {
  294. "recording": {
  295. "type": "LiveRecording",
  296. "description": "Recording control object",
  297. "required": true
  298. }
  299. }
  300. },
  301. "RecordingFinished": {
  302. "id": "RecordingFinished",
  303. "description": "Event showing the completion of a recording operation.",
  304. "properties": {
  305. "recording": {
  306. "type": "LiveRecording",
  307. "description": "Recording control object",
  308. "required": true
  309. }
  310. }
  311. },
  312. "RecordingFailed": {
  313. "id": "RecordingFailed",
  314. "description": "Event showing failure of a recording operation.",
  315. "properties": {
  316. "recording": {
  317. "type": "LiveRecording",
  318. "description": "Recording control object",
  319. "required": true
  320. }
  321. }
  322. },
  323. "ApplicationReplaced": {
  324. "id": "ApplicationReplaced",
  325. "description": "Notification that another WebSocket has taken over for an application.\n\nAn application may only be subscribed to by a single WebSocket at a time. If multiple WebSockets attempt to subscribe to the same application, the newer WebSocket wins, and the older one receives this event.",
  326. "properties": {}
  327. },
  328. "BridgeCreated": {
  329. "id": "BridgeCreated",
  330. "description": "Notification that a bridge has been created.",
  331. "properties": {
  332. "bridge": {
  333. "required": true,
  334. "type": "Bridge"
  335. }
  336. }
  337. },
  338. "BridgeDestroyed": {
  339. "id": "BridgeDestroyed",
  340. "description": "Notification that a bridge has been destroyed.",
  341. "properties": {
  342. "bridge": {
  343. "required": true,
  344. "type": "Bridge"
  345. }
  346. }
  347. },
  348. "BridgeMerged": {
  349. "id": "BridgeMerged",
  350. "description": "Notification that one bridge has merged into another.",
  351. "properties": {
  352. "bridge": {
  353. "required": true,
  354. "type": "Bridge"
  355. },
  356. "bridge_from": {
  357. "required": true,
  358. "type": "Bridge"
  359. }
  360. }
  361. },
  362. "BridgeVideoSourceChanged": {
  363. "id": "BridgeVideoSourceChanged",
  364. "description": "Notification that the source of video in a bridge has changed.",
  365. "properties": {
  366. "bridge": {
  367. "required": true,
  368. "type": "Bridge"
  369. },
  370. "old_video_source_id": {
  371. "required": false,
  372. "type": "string"
  373. }
  374. }
  375. },
  376. "BridgeBlindTransfer": {
  377. "id": "BridgeBlindTransfer",
  378. "description": "Notification that a blind transfer has occurred.",
  379. "properties": {
  380. "channel": {
  381. "description": "The channel performing the blind transfer",
  382. "required": true,
  383. "type": "Channel"
  384. },
  385. "replace_channel": {
  386. "description": "The channel that is replacing transferer when the transferee(s) can not be transferred directly",
  387. "required": false,
  388. "type": "Channel"
  389. },
  390. "transferee": {
  391. "description": "The channel that is being transferred",
  392. "required": false,
  393. "type": "Channel"
  394. },
  395. "exten": {
  396. "description": "The extension transferred to",
  397. "required": true,
  398. "type": "string"
  399. },
  400. "context": {
  401. "description": "The context transferred to",
  402. "required": true,
  403. "type": "string"
  404. },
  405. "result": {
  406. "description": "The result of the transfer attempt",
  407. "required": true,
  408. "type": "string"
  409. },
  410. "is_external": {
  411. "description": "Whether the transfer was externally initiated or not",
  412. "required": true,
  413. "type": "boolean"
  414. },
  415. "bridge": {
  416. "description": "The bridge being transferred",
  417. "type": "Bridge"
  418. }
  419. }
  420. },
  421. "BridgeAttendedTransfer": {
  422. "id": "BridgeAttendedTransfer",
  423. "description": "Notification that an attended transfer has occurred.",
  424. "properties": {
  425. "transferer_first_leg": {
  426. "description": "First leg of the transferer",
  427. "required": true,
  428. "type": "Channel"
  429. },
  430. "transferer_second_leg": {
  431. "description": "Second leg of the transferer",
  432. "required": true,
  433. "type": "Channel"
  434. },
  435. "replace_channel": {
  436. "description": "The channel that is replacing transferer_first_leg in the swap",
  437. "required": false,
  438. "type": "Channel"
  439. },
  440. "transferee": {
  441. "description": "The channel that is being transferred",
  442. "required": false,
  443. "type": "Channel"
  444. },
  445. "transfer_target": {
  446. "description": "The channel that is being transferred to",
  447. "required": false,
  448. "type": "Channel"
  449. },
  450. "result": {
  451. "description": "The result of the transfer attempt",
  452. "required": true,
  453. "type": "string"
  454. },
  455. "is_external": {
  456. "description": "Whether the transfer was externally initiated or not",
  457. "required": true,
  458. "type": "boolean"
  459. },
  460. "transferer_first_leg_bridge": {
  461. "description": "Bridge the transferer first leg is in",
  462. "type": "Bridge"
  463. },
  464. "transferer_second_leg_bridge": {
  465. "description": "Bridge the transferer second leg is in",
  466. "type": "Bridge"
  467. },
  468. "destination_type": {
  469. "description": "How the transfer was accomplished",
  470. "required": true,
  471. "type": "string"
  472. },
  473. "destination_bridge": {
  474. "description": "Bridge that survived the merge result",
  475. "type": "string"
  476. },
  477. "destination_application": {
  478. "description": "Application that has been transferred into",
  479. "type": "string"
  480. },
  481. "destination_link_first_leg": {
  482. "description": "First leg of a link transfer result",
  483. "type": "Channel"
  484. },
  485. "destination_link_second_leg": {
  486. "description": "Second leg of a link transfer result",
  487. "type": "Channel"
  488. },
  489. "destination_threeway_channel": {
  490. "description": "Transferer channel that survived the threeway result",
  491. "type": "Channel"
  492. },
  493. "destination_threeway_bridge": {
  494. "description": "Bridge that survived the threeway result",
  495. "type": "Bridge"
  496. }
  497. }
  498. },
  499. "ChannelCreated": {
  500. "id": "ChannelCreated",
  501. "description": "Notification that a channel has been created.",
  502. "properties": {
  503. "channel": {
  504. "required": true,
  505. "type": "Channel"
  506. }
  507. }
  508. },
  509. "ChannelDestroyed": {
  510. "id": "ChannelDestroyed",
  511. "description": "Notification that a channel has been destroyed.",
  512. "properties": {
  513. "cause": {
  514. "required": true,
  515. "description": "Integer representation of the cause of the hangup",
  516. "type": "int"
  517. },
  518. "cause_txt": {
  519. "required": true,
  520. "description": "Text representation of the cause of the hangup",
  521. "type": "string"
  522. },
  523. "channel": {
  524. "required": true,
  525. "type": "Channel"
  526. }
  527. }
  528. },
  529. "ChannelEnteredBridge": {
  530. "id": "ChannelEnteredBridge",
  531. "description": "Notification that a channel has entered a bridge.",
  532. "properties": {
  533. "bridge": {
  534. "required": true,
  535. "type": "Bridge"
  536. },
  537. "channel": {
  538. "type": "Channel"
  539. }
  540. }
  541. },
  542. "ChannelLeftBridge": {
  543. "id": "ChannelLeftBridge",
  544. "description": "Notification that a channel has left a bridge.",
  545. "properties": {
  546. "bridge": {
  547. "required": true,
  548. "type": "Bridge"
  549. },
  550. "channel": {
  551. "required": true,
  552. "type": "Channel"
  553. }
  554. }
  555. },
  556. "ChannelStateChange": {
  557. "id": "ChannelStateChange",
  558. "description": "Notification of a channel's state change.",
  559. "properties": {
  560. "channel": {
  561. "required": true,
  562. "type": "Channel"
  563. }
  564. }
  565. },
  566. "ChannelDtmfReceived": {
  567. "id": "ChannelDtmfReceived",
  568. "description": "DTMF received on a channel.\n\nThis event is sent when the DTMF ends. There is no notification about the start of DTMF",
  569. "properties": {
  570. "digit": {
  571. "required": true,
  572. "type": "string",
  573. "description": "DTMF digit received (0-9, A-E, # or *)"
  574. },
  575. "duration_ms": {
  576. "required": true,
  577. "type": "int",
  578. "description": "Number of milliseconds DTMF was received"
  579. },
  580. "channel": {
  581. "required": true,
  582. "type": "Channel",
  583. "description": "The channel on which DTMF was received"
  584. }
  585. }
  586. },
  587. "ChannelDialplan": {
  588. "id": "ChannelDialplan",
  589. "description": "Channel changed location in the dialplan.",
  590. "properties": {
  591. "channel": {
  592. "required": true,
  593. "type": "Channel",
  594. "description": "The channel that changed dialplan location."
  595. },
  596. "dialplan_app": {
  597. "required": true,
  598. "type": "string",
  599. "description": "The application about to be executed."
  600. },
  601. "dialplan_app_data": {
  602. "required": true,
  603. "type": "string",
  604. "description": "The data to be passed to the application."
  605. }
  606. }
  607. },
  608. "ChannelCallerId": {
  609. "id": "ChannelCallerId",
  610. "description": "Channel changed Caller ID.",
  611. "properties": {
  612. "caller_presentation": {
  613. "required": true,
  614. "type": "int",
  615. "description": "The integer representation of the Caller Presentation value."
  616. },
  617. "caller_presentation_txt": {
  618. "required": true,
  619. "type": "string",
  620. "description": "The text representation of the Caller Presentation value."
  621. },
  622. "channel": {
  623. "required": true,
  624. "type": "Channel",
  625. "description": "The channel that changed Caller ID."
  626. }
  627. }
  628. },
  629. "ChannelUserevent": {
  630. "id": "ChannelUserevent",
  631. "description": "User-generated event with additional user-defined fields in the object.",
  632. "properties": {
  633. "eventname": {
  634. "required": true,
  635. "type": "string",
  636. "description": "The name of the user event."
  637. },
  638. "channel": {
  639. "required": false,
  640. "type": "Channel",
  641. "description": "A channel that is signaled with the user event."
  642. },
  643. "bridge": {
  644. "required": false,
  645. "type": "Bridge",
  646. "description": "A bridge that is signaled with the user event."
  647. },
  648. "endpoint": {
  649. "required": false,
  650. "type": "Endpoint",
  651. "description": "A endpoint that is signaled with the user event."
  652. },
  653. "userevent": {
  654. "required": true,
  655. "type": "object",
  656. "description": "Custom Userevent data"
  657. }
  658. }
  659. },
  660. "ChannelHangupRequest": {
  661. "id": "ChannelHangupRequest",
  662. "description": "A hangup was requested on the channel.",
  663. "properties": {
  664. "cause": {
  665. "type": "int",
  666. "description": "Integer representation of the cause of the hangup."
  667. },
  668. "soft": {
  669. "type": "boolean",
  670. "description": "Whether the hangup request was a soft hangup request."
  671. },
  672. "channel": {
  673. "required": true,
  674. "type": "Channel",
  675. "description": "The channel on which the hangup was requested."
  676. }
  677. }
  678. },
  679. "ChannelVarset": {
  680. "id": "ChannelVarset",
  681. "description": "Channel variable changed.",
  682. "properties": {
  683. "variable": {
  684. "required": true,
  685. "type": "string",
  686. "description": "The variable that changed."
  687. },
  688. "value": {
  689. "required": true,
  690. "type": "string",
  691. "description": "The new value of the variable."
  692. },
  693. "channel": {
  694. "required": false,
  695. "type": "Channel",
  696. "description": "The channel on which the variable was set.\n\nIf missing, the variable is a global variable."
  697. }
  698. }
  699. },
  700. "ChannelHold": {
  701. "id": "ChannelHold",
  702. "description": "A channel initiated a media hold.",
  703. "properties": {
  704. "channel": {
  705. "required": true,
  706. "type": "Channel",
  707. "description": "The channel that initiated the hold event."
  708. },
  709. "musicclass": {
  710. "required": false,
  711. "type": "string",
  712. "description": "The music on hold class that the initiator requested."
  713. }
  714. }
  715. },
  716. "ChannelUnhold": {
  717. "id": "ChannelUnhold",
  718. "description": "A channel initiated a media unhold.",
  719. "properties": {
  720. "channel": {
  721. "required": true,
  722. "type": "Channel",
  723. "description": "The channel that initiated the unhold event."
  724. }
  725. }
  726. },
  727. "ChannelTalkingStarted": {
  728. "id": "ChannelTalkingStarted",
  729. "description": "Talking was detected on the channel.",
  730. "properties": {
  731. "channel": {
  732. "required": true,
  733. "type": "Channel",
  734. "description": "The channel on which talking started."
  735. }
  736. }
  737. },
  738. "ChannelTalkingFinished": {
  739. "id": "ChannelTalkingFinished",
  740. "description": "Talking is no longer detected on the channel.",
  741. "properties": {
  742. "channel": {
  743. "required": true,
  744. "type": "Channel",
  745. "description": "The channel on which talking completed."
  746. },
  747. "duration": {
  748. "required": true,
  749. "type": "int",
  750. "description": "The length of time, in milliseconds, that talking was detected on the channel"
  751. }
  752. }
  753. },
  754. "ContactStatusChange": {
  755. "id": "ContactStatusChange",
  756. "description": "The state of a contact on an endpoint has changed.",
  757. "properties": {
  758. "endpoint": {
  759. "required": true,
  760. "type": "Endpoint"
  761. },
  762. "contact_info": {
  763. "required": true,
  764. "type": "ContactInfo"
  765. }
  766. }
  767. },
  768. "PeerStatusChange": {
  769. "id": "PeerStatusChange",
  770. "description": "The state of a peer associated with an endpoint has changed.",
  771. "properties": {
  772. "endpoint": {
  773. "required": true,
  774. "type": "Endpoint"
  775. },
  776. "peer": {
  777. "required": true,
  778. "type": "Peer"
  779. }
  780. }
  781. },
  782. "EndpointStateChange": {
  783. "id": "EndpointStateChange",
  784. "description": "Endpoint state changed.",
  785. "properties": {
  786. "endpoint": {
  787. "required": true,
  788. "type": "Endpoint"
  789. }
  790. }
  791. },
  792. "Dial": {
  793. "id": "Dial",
  794. "description": "Dialing state has changed.",
  795. "properties": {
  796. "caller": {
  797. "required": false,
  798. "type": "Channel",
  799. "description": "The calling channel."
  800. },
  801. "peer": {
  802. "required": true,
  803. "type": "Channel",
  804. "description": "The dialed channel."
  805. },
  806. "forward": {
  807. "required": false,
  808. "type": "string",
  809. "description": "Forwarding target requested by the original dialed channel."
  810. },
  811. "forwarded": {
  812. "required": false,
  813. "type": "Channel",
  814. "description": "Channel that the caller has been forwarded to."
  815. },
  816. "dialstring": {
  817. "required": false,
  818. "type": "string",
  819. "description": "The dial string for calling the peer channel."
  820. },
  821. "dialstatus": {
  822. "required": true,
  823. "type": "string",
  824. "description": "Current status of the dialing attempt to the peer."
  825. }
  826. }
  827. },
  828. "StasisEnd": {
  829. "id": "StasisEnd",
  830. "description": "Notification that a channel has left a Stasis application.",
  831. "properties": {
  832. "channel": {
  833. "required": true,
  834. "type": "Channel"
  835. }
  836. }
  837. },
  838. "StasisStart": {
  839. "id": "StasisStart",
  840. "description": "Notification that a channel has entered a Stasis application.",
  841. "properties": {
  842. "args": {
  843. "required": true,
  844. "type": "List[string]",
  845. "description": "Arguments to the application"
  846. },
  847. "channel": {
  848. "required": true,
  849. "type": "Channel"
  850. },
  851. "replace_channel": {
  852. "required": false,
  853. "type": "Channel"
  854. }
  855. }
  856. },
  857. "TextMessageReceived": {
  858. "id": "TextMessageReceived",
  859. "description": "A text message was received from an endpoint.",
  860. "properties": {
  861. "message": {
  862. "required": true,
  863. "type": "TextMessage"
  864. },
  865. "endpoint": {
  866. "required": false,
  867. "type": "Endpoint"
  868. }
  869. }
  870. },
  871. "ChannelConnectedLine": {
  872. "id": "ChannelConnectedLine",
  873. "description": "Channel changed Connected Line.",
  874. "properties": {
  875. "channel": {
  876. "required": true,
  877. "type": "Channel",
  878. "description": "The channel whose connected line has changed."
  879. }
  880. }
  881. }
  882. }
  883. }