Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

WHISTLE-42: add name fields for the developer tool

  • Loading branch information...
commit a55c60ced76fdc86d9c787ea9e151a33fb47e787 1 parent 60f860d
@k-anderson k-anderson authored
Showing with 1,007 additions and 380 deletions.
  1. +52 −1 whistle_apps/apps/crossbar/priv/couchdb/schemas/accounts.json
  2. +34 −28 whistle_apps/apps/crossbar/priv/couchdb/schemas/acls.json
  3. +1 −1  whistle_apps/apps/crossbar/priv/couchdb/schemas/api_auth.json
  4. +14 −0 whistle_apps/apps/crossbar/priv/couchdb/schemas/conferences.json
  5. +239 −227 whistle_apps/apps/crossbar/priv/couchdb/schemas/connectivity.json
  6. +40 −17 whistle_apps/apps/crossbar/priv/couchdb/schemas/devices.json
  7. +5 −0 whistle_apps/apps/crossbar/priv/couchdb/schemas/directories.json
  8. +54 −20 whistle_apps/apps/crossbar/priv/couchdb/schemas/global_resources.json
  9. +18 −0 whistle_apps/apps/crossbar/priv/couchdb/schemas/local_resources.json
  10. +27 −0 whistle_apps/apps/crossbar/priv/couchdb/schemas/media.json
  11. +13 −0 whistle_apps/apps/crossbar/priv/couchdb/schemas/menus.json
  12. +32 −0 whistle_apps/apps/crossbar/priv/couchdb/schemas/phone_numbers.json
  13. +68 −43 whistle_apps/apps/crossbar/priv/couchdb/schemas/queues.json
  14. +7 −0 whistle_apps/apps/crossbar/priv/couchdb/schemas/servers.json
  15. +1 −1  whistle_apps/apps/crossbar/priv/couchdb/schemas/shared_auth.json
  16. +10 −7 whistle_apps/apps/crossbar/priv/couchdb/schemas/temporal_rules.json
  17. +264 −0 whistle_apps/apps/crossbar/priv/couchdb/schemas/trunkstore.json
  18. +11 −3 whistle_apps/apps/crossbar/priv/couchdb/schemas/user_auth.json
  19. +39 −0 whistle_apps/apps/crossbar/priv/couchdb/schemas/users.json
  20. +26 −0 whistle_apps/apps/crossbar/priv/couchdb/schemas/vmboxes.json
  21. +40 −32 whistle_apps/apps/crossbar/priv/couchdb/schemas/webhooks.json
  22. +12 −0 whistle_apps/apps/crossbar/priv/couchdb/schemas/whitelabels.json
View
53 whistle_apps/apps/crossbar/priv/couchdb/schemas/accounts.json
@@ -5,6 +5,7 @@
"description":"Accounts represent tenants or customers on the system. Each account represents an individual dataset or sandbox that only one tenant can access. The data set is architecturally independent from other tenants.",
"properties":{
"name":{
+ "name":"Name",
"description":"A friendly name for the account",
"required":"true",
"type":"string",
@@ -12,11 +13,13 @@
"maxLength":128
},
"realm":{
+ "name":"Realm",
"description":"The realm of the account, ie: 'account1.2600hz.com'",
"required":"true",
"type":"string"
},
"timezone":{
+ "name":"Timezone",
"description":"The default timezone",
"required":"true",
"type":"string",
@@ -33,6 +36,7 @@
"type":"object",
"properties":{
"name":{
+ "name":"Internal Caller ID",
"description":"The caller id name for the object type",
"type":"string",
"maxLength":30,
@@ -45,6 +49,7 @@
"type":"object",
"properties":{
"name":{
+ "name":"External Caller ID",
"description":"The caller id name for the object type",
"type":"string",
"maxLength":15,
@@ -57,6 +62,7 @@
"type":"object",
"properties":{
"name":{
+ "name":"Default Caller ID",
"description":"The caller id name for the object type",
"type":"string",
"maxLength":15,
@@ -69,6 +75,7 @@
"type":"object",
"properties":{
"name":{
+ "name":"Emergency Caller ID",
"description":"The caller id name for the object type",
"type":"string",
"maxLength":15,
@@ -86,6 +93,7 @@
"type":"object",
"properties":{
"reformat":{
+ "name":"Caller ID reformat",
"description":"A regular expression that if matched internal caller id numbers are replaced by",
"type":"string",
"maxLength":64
@@ -104,43 +112,52 @@
"type":"object",
"properties":{
"email_text_template":{
+ "name":"Email Text Template (notifications)",
"description":"The email html body template. Has access to an acccount, service, and voicemail object",
"type":"string"
},
"email_html_template":{
+ "name":"Email HTML Template (notifications)",
"description":"The email text body template. Has access to an acccount, service, and voicemail object",
"type":"string"
},
"email_subject_template":{
+ "name":"Email Subject Template (notifications)",
"description":"The email subject template. Has access to an acccount, service, and voicemail object",
"type":"string"
},
"support_number":{
+ "name":"Support Number (notifications)",
"description":"The support number provided to the templates",
"type":"string",
"maxLength":128
},
"support_email":{
+ "name":"Support Email (notifications)",
"description":"The support email provided to the templates",
"type":"string",
"maxLength":256
},
"service_url":{
+ "name":"Service URL (notifications)",
"description":"The support number provided to the templates",
"type":"string",
"maxLength":128
},
"service_name":{
+ "name":"Service Name (notifications)",
"description":"The service name provided",
"type":"string",
"maxLength":128
},
"service_provider":{
+ "name":"Serice Provider (notifications)",
"description":"The service provider name",
"type":"string",
"maxLength":128
},
"send_from":{
+ "name":"Send From (notifications)",
"description":"The from address used when sending the email",
"type":"string",
"maxLength":256
@@ -152,33 +169,40 @@
"type":"object",
"properties":{
"email_text_template":{
+ "name":"Email Text Template (deregister)",
"description":"The email html body template. Has access to an acccount, service, and last_registration object",
"type":"string"
},
"email_html_template":{
+ "name":"Email HTML Template (deregister)",
"description":"The email text body template. Has access to an acccount, service, and last_registration object",
"type":"string"
},
"email_subject_template":{
+ "name":"Email Subject Template (deregister)",
"description":"The email subject template. Has access to an acccount, service, and last_registration object",
"type":"string"
},
"support_number":{
+ "name":"Support Number (deregister)",
"description":"The support number provided to the templates",
"type":"string",
"maxLength":128
},
"support_email":{
+ "name":"Support Email (deregister)",
"description":"The support email provided to the templates",
"type":"string",
"maxLength":256
},
"service_url":{
+ "name":"Service Provider (deregister)",
"description":"The support number provided to the templates",
"type":"string",
"maxLength":128
},
"service_name":{
+ "name":"Service Name (deregister)",
"description":"The service name provided",
"type":"string",
"maxLength":128
@@ -189,6 +213,7 @@
"maxLength":128
},
"send_from":{
+ "name":"Send From (deregister)",
"description":"The from address used when sending the email",
"type":"string",
"maxLength":256
@@ -200,43 +225,52 @@
"type":"object",
"properties":{
"email_text_template":{
+ "name":"(Email Text Template (password recovery)",
"description":"The email html body template. Has access to an acccount, service, user, and request object",
"type":"string"
},
"email_html_template":{
+ "name":"Email HTML Template (password recovery)",
"description":"The email text body template. Has access to an acccount, service, user, and request object",
"type":"string"
},
"email_subject_template":{
+ "name":"Email Subject Template (password recovery)",
"description":"The email subject template. Has access to an acccount, service, user, and request object",
"type":"string"
},
"support_number":{
+ "name":"Support Number (password recovery)",
"description":"The support number provided to the templates",
"type":"string",
"maxLength":128
},
"support_email":{
+ "name":"Support Email (password recovery)",
"description":"The support email provided to the templates",
"type":"string",
"maxLength":256
},
"service_url":{
+ "name":"Service URL (password recovery)",
"description":"The support number provided to the templates",
"type":"string",
"maxLength":128
},
"service_name":{
+ "name":"Service Name (password recovery)",
"description":"The service name provided",
"type":"string",
"maxLength":128
},
"service_provider":{
+ "name":"Service Provider (password recovery)",
"description":"The service provider name",
"type":"string",
"maxLength":128
},
"send_from":{
+ "name":"Send From (password recovery)",
"description":"The from address used when sending the email",
"type":"string",
"maxLength":256
@@ -248,58 +282,70 @@
"type":"object",
"properties":{
"send_to":{
+ "name":"Send To (first occurence)",
"description":"The recipent(s) of the notifications",
"type":"string",
"maxLength":256
},
"sent_initial_registration":{
+ "name":"Sent Initial Registration (first occurence)",
"description":"Flag to determine if the initial registration has been detected",
"type":"boolean",
"default":false
},
"sent_initial_call":{
+ "name":"Sent Initial Call(first occurence)",
"description":"Flag to determine if the initial call has been detected",
"type":"boolean",
"default":false
},
"email_text_template":{
+ "name":"Email Text Template(first occurence)",
"description":"The email html body template. Has access to an acccount, service, user, and request object",
"type":"string"
},
"email_html_template":{
+ "name":"Email HTML Template (first occurence)",
"description":"The email text body template. Has access to an acccount, service, user, and request object",
"type":"string"
},
"email_subject_template":{
+ "name":"Email Subject Template (first occurence)",
"description":"The email subject template. Has access to an acccount, service, user, and request object",
"type":"string"
},
"support_number":{
+ "name":"Support Number (first occurence)",
"description":"The support number provided to the templates",
"type":"string",
"maxLength":128
},
"support_email":{
+ "name":"Support Email (first occurence)",
"description":"The support email provided to the templates",
"type":"string",
"maxLength":256
},
"service_url":{
+ "name":"Service URL (first occurence)",
"description":"The support number provided to the templates",
"type":"string",
"maxLength":256
},
"service_name":{
+ "name":"Service Name (first occurence)",
"description":"The service name provided",
"type":"string",
"maxLength":128
},
"service_provider":{
+ "name":"Service Provider (first occurence)",
"description":"The service provider name",
"type":"string",
"maxLength":128
},
"send_from":{
+ "name":"Send From (first occurence)",
"description":"The from address used when sending the email",
"type":"string",
"maxLength":256
@@ -316,6 +362,7 @@
"type":"object",
"properties":{
"bypass_media":{
+ "name":"Bypass Media",
"description":"Default bypass media mode",
"type":"string",
"enum":[
@@ -330,6 +377,7 @@
"type":"object",
"properties":{
"codecs":{
+ "name":"Audio Codecs",
"description":"A list of default codecs to use",
"type":"array",
"enum":[
@@ -352,6 +400,7 @@
"type":"object",
"properties":{
"codecs":{
+ "name":"Video Codecs",
"description":"A list of default codecs to use",
"type":"array",
"enum":[
@@ -370,6 +419,7 @@
"type":"object",
"properties":{
"option":{
+ "name":"Fax Option",
"description":"A list of default codecs to use",
"type":"string",
"enum":[
@@ -391,10 +441,11 @@
"type":"object",
"properties":{
"media_id":{
+ "name":"Music On Hold (media ID)",
"description":"The ID of a media object that should be used as the default music on hold",
"type":"string",
"minLength":32,
- "maxLength":66
+ "maxLength":32
}
},
"default":{
View
62 whistle_apps/apps/crossbar/priv/couchdb/schemas/acls.json
@@ -1,30 +1,36 @@
{
- "_id":"acls",
- "id":"http://json-schema.org/draft-03/schema#",
- "description":"Schemas for FreeSWITCH's ACLs",
- "properties":{
- "cidr":{
- "description":"IP address and mask of the ACL",
- "required":true,
- "type" : "string"
- },
- "network-list-name": {
- "description" : "",
- "required" : "",
- "type" : "string",
- "enum" : ["authoritative", "trusted"]
- },
- "type" : {
- "description" : "Allow of deny this CIDR",
- "type" : "string",
- "required" : true,
- "enum" : ["allow", "deny"]
- },
- "description" : {
- "description" : "Will be added as a comment",
- "type" : "string",
- "required" : false,
- "maxLen" : 30
- }
- }
+ "_id":"acls",
+ "id":"http://json-schema.org/draft-03/schema#",
+ "description":"Schemas for FreeSWITCH's ACLs",
+ "properties":{
+ "cidr":{
+ "description":"IP address and mask of the ACL",
+ "required":true,
+ "type":"string"
+ },
+ "network-list-name":{
+ "description":"",
+ "required":"",
+ "type":"string",
+ "enum":[
+ "authoritative",
+ "trusted"
+ ]
+ },
+ "type":{
+ "description":"Allow of deny this CIDR",
+ "type":"string",
+ "required":true,
+ "enum":[
+ "allow",
+ "deny"
+ ]
+ },
+ "description":{
+ "description":"Will be added as a comment",
+ "type":"string",
+ "required":false,
+ "maxLen":30
+ }
+ }
}
View
2  whistle_apps/apps/crossbar/priv/couchdb/schemas/api_auth.json
@@ -12,5 +12,5 @@
"maxLength":64
}
},
- "additionalProperties": false
+ "additionalProperties":false
}
View
14 whistle_apps/apps/crossbar/priv/couchdb/schemas/conferences.json
@@ -5,6 +5,7 @@
"description":"Schema for conferences",
"properties":{
"name":{
+ "name":"Name",
"description":"A friendly name for the conference",
"required":"true",
"type":"string",
@@ -16,6 +17,7 @@
"type":"object",
"properties":{
"pins":{
+ "name":"Pins (member)",
"description":"Defines the pin number(s) for members",
"type":"array",
"items":[
@@ -28,6 +30,7 @@
]
},
"numbers":{
+ "name":"Numbers (member)",
"description":"Defines the conference number(s) for members",
"type":"array",
"items":[
@@ -40,16 +43,19 @@
]
},
"join_muted":{
+ "name":"Join Muted (member)",
"description":"Determines if a member will join muted",
"type":"boolean",
"default":true
},
"join_deaf":{
+ "name":"Join Deaf (member)",
"description":"Determines if a member will join deaf",
"type":"boolean",
"default":false
},
"play_name":{
+ "name":"Play Name (member)",
"description":"Determines if a member should be prompted to record their name on entry for later playback",
"type":"boolean",
"default":false
@@ -64,6 +70,7 @@
"type":"object",
"properties":{
"pins":{
+ "name":"Pins (moderator)",
"description":"Defines the pin number(s) for moderators",
"type":"array",
"items":[
@@ -76,6 +83,7 @@
]
},
"numbers":{
+ "name":"Numbers (moderator)",
"description":"Defines the conference number(s) for moderators",
"type":"array",
"items":[
@@ -88,11 +96,13 @@
]
},
"join_muted":{
+ "name":"Join Muted (moderator)",
"description":"Determines if a moderator will join muted",
"type":"boolean",
"default":false
},
"join_deaf":{
+ "name":"Join Deaf (moderator)",
"description":"Determines if a moderator will join deaf",
"type":"boolean",
"default":false
@@ -105,6 +115,7 @@
"conference_numbers":{
"description":"Defines conference numbers that can be used by members or moderators",
"type":"array",
+ "name":"Coference Numbers",
"items":[
{
"type":"string"
@@ -115,16 +126,19 @@
]
},
"require_moderator":{
+ "name":"Required Moderator",
"description":"Determines if a moderator is required before the conference will begin",
"type":"boolean",
"default":false
},
"wait_for_moderator":{
+ "name":"Wait For Moderator",
"description":"Determines if members are allowed to remain on the line while waiting for a moderator",
"type":"boolean",
"default":true
},
"max_members":{
+ "name":"Max Members",
"description":"Sets the maximum number of members that can join a conference",
"type":"integer",
"minimum":1,
View
466 whistle_apps/apps/crossbar/priv/couchdb/schemas/connectivity.json
@@ -1,232 +1,244 @@
{
- "_id":"connectivity",
- "id":"http://json-schema.org/draft-03/schema#",
- "description":"Trunkstore configuration document - this is old stuff; do not recommend building off this if possible",
- "properties":{
- "name":{
- "type":"string"
- ,"description":"Human-friendly name of the trunkstore account"
- },
- "account":{
- "type":"object"
- ,"required":true
- ,"properties":{
- "auth_realm":{
- "type":"string"
- ,"minLength":1
- ,"description":"The realm any device in the account will use to authenticate with"
- }
- ,"trunks":{
- "type":"integer"
- ,"required":true
- ,"minimum":0
- ,"description":"The number of two-way trunks this account has purchased"
- }
- ,"caller_id":{
- "type":"object"
- ,"properties":{
- "cid_name":{
- "type":"string"
- ,"minLength":1
- ,"maxLength":15
- ,"required":true
- }
- ,"cid_number":{
- "type":"string"
- ,"minLength":1
- ,"maxLength":15
- ,"required":true
- }
- }
- }
- ,"emergency_caller_id":{
- "type":"object"
- ,"properties":{
- "cid_name":{
- "type":"string"
- ,"minLength":1
- ,"maxLength":15
- ,"required":true
- }
- ,"cid_number":{
- "type":"string"
- ,"minLength":1
- ,"maxLength":15
- ,"required":true
- }
- }
- }
+ "_id":"connectivity",
+ "id":"http://json-schema.org/draft-03/schema#",
+ "description":"Trunkstore configuration document - this is old stuff; do not recommend building off this if possible",
+ "properties":{
+ "name":{
+ "type":"string",
+ "description":"Human-friendly name of the trunkstore account"
+ },
+ "account":{
+ "type":"object",
+ "required":true,
+ "properties":{
+ "auth_realm":{
+ "type":"string",
+ "minLength":1,
+ "description":"The realm any device in the account will use to authenticate with"
+ },
+ "trunks":{
+ "type":"integer",
+ "required":true,
+ "minimum":0,
+ "description":"The number of two-way trunks this account has purchased"
+ },
+ "caller_id":{
+ "type":"object",
+ "properties":{
+ "cid_name":{
+ "type":"string",
+ "minLength":1,
+ "maxLength":15,
+ "required":true
+ },
+ "cid_number":{
+ "type":"string",
+ "minLength":1,
+ "maxLength":15,
+ "required":true
+ }
+ }
+ },
+ "emergency_caller_id":{
+ "type":"object",
+ "properties":{
+ "cid_name":{
+ "type":"string",
+ "minLength":1,
+ "maxLength":15,
+ "required":true
+ },
+ "cid_number":{
+ "type":"string",
+ "minLength":1,
+ "maxLength":15,
+ "required":true
+ }
+ }
}
- ,"description":"Information that applies to the account as a whole"
- },
- "servers":{
- "type":"array"
- ,"default":[]
- ,"desciption":"What servers will be allowed to make/receive calls via this account"
- ,"items":{
- "type":"object"
- ,"properties":{
- "name":{
- "type":"string"
- ,"description":"Human-friendly name of the server"
- ,"minLength":1
- }
- ,"auth":{
- "type":"object"
- ,"required":true
- ,"properties":{
- "auth_method":{
- "type":"string"
- ,"required":true
- ,"enum":["password"]
- ,"description":"What type of auth mechanism to use"
- }
- ,"auth_user":{
- "type":"string"
- ,"minLength":1
- ,"required":true
- ,"description":"Username for authentication"
- }
- ,"auth_password":{
- "type":"string"
- ,"minLength":1
- ,"required":true
- ,"description":"Password of the user@auth_realm"
- }
- }
- }
- ,"options":{
- "caller_id":{
- "type":"object"
- ,"properties":{
- "cid_name":{
- "type":"string"
- ,"minLength":1
- ,"maxLength":15
- ,"required":true
- }
- ,"cid_number":{
- "type":"string"
- ,"minLength":1
- ,"maxLength":15
- ,"required":true
- }
- }
- }
- ,"inbound_format":{
- "type":"string"
- ,"default":"npan"
- ,"enum":["e164","npan","1npan","username"]
- ,"description":"Determines how the INVITE is sent to the server"
- }
- ,"failover":{
- "type":"object"
- ,"description":"Route inbound call to another destination if this server fails to handle the call"
- ,"properties":{
- "e164":{
- "type":"string"
- ,"description":"An E.164 formatted DID to dial for failover"
- }
- ,"sip":{
- "type":"string"
- ,"description":"A SIP URI (sip:user@host) to call for failover"
- }
- }
- }
- ,"enabled":{
- "type":"boolean"
- ,"default":true
- ,"description":"Is the server ready for sending and receiving calls"
- }
- ,"progress_timeout":{
- "type":"integer"
- ,"minimum":1
- ,"description":"The time, in seconds, to wait for the server to progress in the call, before trying an optionally defined failover route or terminating the call"
- }
- ,"media_handling":{
- "type":"string"
- ,"enum":["process","bypass"]
- ,"default":"bypass"
- ,"description":"Determine whether the switch should be in the media path or not"
- }
- ,"force_outbound":{
- "type":"boolean"
- ,"default":false
- ,"description":"If true, will send the call over configured carriers instead of to the server (as opposed to the 'enabled' flag, which will reject the calls)"
- }
- ,"delay":{
- "type":"integer"
- ,"default":0
- ,"description":"The time, in seconds, to wait before attempting to call the server"
- }
- ,"sip_headers":{
- "type":"array"
- ,"items":{
- "type":"object"
- }
- ,"description":"List of arbitrary SIP headers to add to the INVITE"
- }
- ,"ignore_early_media":{
- "type":"boolean"
- }
- ,"timeout":{
- "type":"integer"
- ,"description":"The time, in seconds, to wait for an answer from the server"
- }
- }
- ,"DIDs":{
+ },
+ "description":"Information that applies to the account as a whole"
+ },
+ "servers":{
+ "type":"array",
+ "default":[
+
+ ],
+ "desciption":"What servers will be allowed to make/receive calls via this account",
+ "items":{
+ "type":"object",
+ "properties":{
+ "name":{
+ "type":"string",
+ "description":"Human-friendly name of the server",
+ "minLength":1
+ },
+ "auth":{
+ "type":"object",
+ "required":true,
+ "properties":{
+ "auth_method":{
+ "type":"string",
+ "required":true,
+ "enum":[
+ "password"
+ ],
+ "description":"What type of auth mechanism to use"
+ },
+ "auth_user":{
+ "type":"string",
+ "minLength":1,
+ "required":true,
+ "description":"Username for authentication"
+ },
+ "auth_password":{
+ "type":"string",
+ "minLength":1,
+ "required":true,
+ "description":"Password of the user@auth_realm"
+ }
+ }
+ },
+ "options":{
+ "caller_id":{
+ "type":"object",
+ "properties":{
+ "cid_name":{
+ "type":"string",
+ "minLength":1,
+ "maxLength":15,
+ "required":true
+ },
+ "cid_number":{
+ "type":"string",
+ "minLength":1,
+ "maxLength":15,
+ "required":true
+ }
+ }
+ },
+ "inbound_format":{
+ "type":"string",
+ "default":"npan",
+ "enum":[
+ "e164",
+ "npan",
+ "1npan",
+ "username"
+ ],
+ "description":"Determines how the INVITE is sent to the server"
+ },
+ "failover":{
+ "type":"object",
+ "description":"Route inbound call to another destination if this server fails to handle the call",
+ "properties":{
+ "e164":{
+ "type":"string",
+ "description":"An E.164 formatted DID to dial for failover"
+ },
+ "sip":{
+ "type":"string",
+ "description":"A SIP URI (sip:user@host) to call for failover"
+ }
+ }
+ },
+ "enabled":{
+ "type":"boolean",
+ "default":true,
+ "description":"Is the server ready for sending and receiving calls"
+ },
+ "progress_timeout":{
+ "type":"integer",
+ "minimum":1,
+ "description":"The time, in seconds, to wait for the server to progress in the call, before trying an optionally defined failover route or terminating the call"
+ },
+ "media_handling":{
+ "type":"string",
+ "enum":[
+ "process",
+ "bypass"
+ ],
+ "default":"bypass",
+ "description":"Determine whether the switch should be in the media path or not"
+ },
+ "force_outbound":{
+ "type":"boolean",
+ "default":false,
+ "description":"If true, will send the call over configured carriers instead of to the server (as opposed to the 'enabled' flag, which will reject the calls)"
+ },
+ "delay":{
+ "type":"integer",
+ "default":0,
+ "description":"The time, in seconds, to wait before attempting to call the server"
+ },
+ "sip_headers":{
+ "type":"array",
+ "items":{
"type":"object"
- ,"patternProperties":{
- "^\\+1(\\d{10})$":{
- "type":"object"
- ,"properties":{
- "failover":{
- "type":"object"
- ,"description":"Route inbound call to another destination if this server fails to handle the call"
- ,"properties":{
- "e164":{
- "type":"string"
- ,"description":"An E.164 formatted DID to dial for failover"
- }
- ,"sip":{
- "type":"string"
- ,"description":"A SIP URI (sip:user@host) to call for failover"
- }
- }
- }
- ,"caller_id":{
- "type":"object"
- ,"properties":{
- "cid_name":{
- "type":"string"
- ,"minLength":1
- ,"maxLength":15
- ,"required":true
- }
- ,"cid_number":{
- "type":"string"
- ,"minLength":1
- ,"maxLength":15
- ,"required":true
- }
- }
- }
- ,"force_outbound":{
- "type":"boolean"
- ,"default":false
- }
- ,"options":{
- "type":"array"
- ,"items":{
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
+ },
+ "description":"List of arbitrary SIP headers to add to the INVITE"
+ },
+ "ignore_early_media":{
+ "type":"boolean"
+ },
+ "timeout":{
+ "type":"integer",
+ "description":"The time, in seconds, to wait for an answer from the server"
+ }
+ },
+ "DIDs":{
+ "type":"object",
+ "patternProperties":{
+ "^\\+1(\\d{10})$":{
+ "type":"object",
+ "properties":{
+ "failover":{
+ "type":"object",
+ "description":"Route inbound call to another destination if this server fails to handle the call",
+ "properties":{
+ "e164":{
+ "type":"string",
+ "description":"An E.164 formatted DID to dial for failover"
+ },
+ "sip":{
+ "type":"string",
+ "description":"A SIP URI (sip:user@host) to call for failover"
+ }
+ }
+ },
+ "caller_id":{
+ "type":"object",
+ "properties":{
+ "cid_name":{
+ "type":"string",
+ "minLength":1,
+ "maxLength":15,
+ "required":true
+ },
+ "cid_number":{
+ "type":"string",
+ "minLength":1,
+ "maxLength":15,
+ "required":true
+ }
+ }
+ },
+ "force_outbound":{
+ "type":"boolean",
+ "default":false
+ },
+ "options":{
+ "type":"array",
+ "items":{
+ "type":"string"
+ }
+ }
+ }
+ }
+ }
+ }
}
- }
- }
+ }
+ }
+ }
}
View
57 whistle_apps/apps/crossbar/priv/couchdb/schemas/devices.json
@@ -5,6 +5,7 @@
"description":"Schema for a device",
"properties":{
"name":{
+ "name":"Name",
"description":"A friendly name for the device",
"required":"true",
"type":"string",
@@ -12,28 +13,20 @@
"maxLength":128
},
"owner_id":{
+ "name":"Owner ID",
"description":"The ID of the user object that 'owns' the device",
"type":"string",
"minLength":32,
"maxLength":32
},
"enabled":{
+ "name":"Enabled",
"description":"Determines if the device is currently enabled",
"type":"boolean",
"default":true
},
- "device_type":{
- "description":"The device classification",
- "required":"true",
- "type":"string",
- "enum": [
- "sip_device",
- "softphone",
- "cellphone"
- ],
- "default": "sip_device"
- },
"suppress_unregister_notifications":{
+ "name":"Suppress unregister Notifications",
"description":"When true disables deregister notifications",
"type":"boolean",
"default":false
@@ -47,6 +40,7 @@
"type":"object",
"properties":{
"name":{
+ "name":"Called ID Internal Name",
"description":"The caller id name for the object type",
"type":"string",
"maxLength":30,
@@ -59,6 +53,7 @@
"type":"object",
"properties":{
"name":{
+ "name":"Caller ID External Name",
"description":"The caller id name for the object type",
"type":"string",
"maxLength":15,
@@ -71,6 +66,7 @@
"type":"object",
"properties":{
"name":{
+ "name":"Caller ID Emergency Name",
"description":"The caller id name for the object type",
"type":"string",
"maxLength":15,
@@ -88,6 +84,7 @@
"type":"object",
"properties":{
"reformat":{
+ "name":"Caller ID Reformat",
"description":"A regular expression that if can reformat the displayed caller id",
"type":"string",
"maxLength":64
@@ -102,11 +99,13 @@
"type":"object",
"properties":{
"external":{
+ "name":"External Ringtones",
"description":"The alert info SIP header added when the call is from external sources",
"type":"string",
"maxLength":32
},
"internal":{
+ "name":"Internal Ringtones",
"description":"The alert info SIP header added when the call is from internal sources",
"type":"string",
"maxLength":32
@@ -121,6 +120,7 @@
"type":"object",
"properties":{
"bypass_media":{
+ "name":"Bypass Media",
"description":"The device bypass media mode",
"type":"string",
"enum":[
@@ -131,10 +131,12 @@
"default":"auto"
},
"ignore_early_media":{
+ "name":"Ignore Early Media",
"description":"The option to determine if early media from the device should always be ignored",
"type":"boolean"
},
"progress_timeout":{
+ "name":"Progress Timeout",
"description":"The progress timeout to apply to the device",
"type":"integer"
},
@@ -143,6 +145,7 @@
"type":"object",
"properties":{
"codecs":{
+ "name":"Audio Codecs",
"description":"A list of audio codecs to use",
"type":"array",
"enum":[
@@ -165,6 +168,7 @@
"type":"object",
"properties":{
"codecs":{
+ "name":"Video Codecs",
"description":"A list of video codecs to use",
"type":"array",
"enum":[
@@ -183,6 +187,7 @@
"type":"object",
"properties":{
"option":{
+ "name":"Fax",
"description":"The fax mode to option",
"type":"string",
"enum":[
@@ -204,6 +209,7 @@
"type":"object",
"properties":{
"media_id":{
+ "name":"Music On Hold (ID)",
"description":"The ID of a media object that should be used as the device music on hold",
"type":"string",
"minLength":32,
@@ -219,36 +225,43 @@
"type":"object",
"properties":{
"enabled":{
+ "name":"Enabled (call forward)",
"description":"Determines if the call forwarding should be used",
"type":"boolean",
"default":false
},
"number":{
+ "name":"Number (call forward)",
"description":"The number to forward calls to",
"type":"string",
"maxLength":15
},
"substitute":{
+ "name":"Substitute (call forward)",
"description":"Determines if the call forwarding replaces the device",
"type":"boolean",
"default":true
},
"require_keypress":{
+ "name":"Require Kyepress (call forward)",
"description":"Determines if the callee is prompted to press 1 to accept the call",
"type":"boolean",
"default":true
},
"keep_caller_id":{
+ "name":"Keep Caller ID (call forward)",
"description":"Determines if the caller id is kept when the call is forwarded, if not the devices caller id is used",
"type":"boolean",
"default":true
},
"direct_calls_only":{
+ "name":"Direct Calls Only (call forward)",
"description":"Determines if the calls that are not directly sent to the device should be forwarded",
"type":"boolean",
"default":false
},
"ignore_early_media":{
+ "name":"Ignore Early Media (call forward)",
"description":"The option to determine if early media from the call forwarded number should ignored",
"type":"boolean",
"default":true
@@ -262,39 +275,47 @@
"type":"object",
"properties":{
"realm":{
+ "name":"Reaml (sip)",
"type":"string",
"description":"The realm this device should use, overriding the account realm"
},
"route":{
+ "name":"Route (sip)",
"type":"string",
"description":"The SIP URL used if the invite format is 'route'"
},
"number":{
+ "name":"Number (sip)",
"type":"string",
"description":"The number used if the invite format is 1npan, npan, or e164 (if not set the dialed number is used)"
},
"method":{
+ "name":"Method (sip)",
"type":"string",
"description":"Type of auth",
"required":true,
"enum":[
- "password", "ip"
+ "password",
+ "ip"
],
"default":"password"
},
"username":{
+ "name":"Username (sip)",
"type":"string",
"description":"SIP authentication username",
"minLength":2,
"maxLength":32
},
"password":{
+ "name":"Password (sip)",
"type":"string",
"description":"SIP authentication password",
"minLength":5,
"maxLength":32
},
"invite_format":{
+ "name":"Invit Format (sip)",
"type":"string",
"required":true,
"enum":[
@@ -313,15 +334,17 @@
}
},
"registration_expiration":{
+ "name":"Registration Expiration (sip)",
"type":"integer",
"description":"The time in seconds to force registrations to expire",
"default":300
},
- "ip" : {
- "type":"string",
- "description":"IP address for this device",
- "required":false,
- "pattern" : "^([1]?[1-9]?[1-9]|2[0-4][0-9]|25[0-5])\\.([1]?[1-9]?[1-9]|2[0-4][0-9]|25[0-5])\\.([1]?[1-9]?[1-9]|2[0-4][0-9]|25[0-5])\\.([1]?[1-9]?[1-9]|2[0-4][0-9]|25[0-4])$"
+ "ip":{
+ "name":"IP (sip)",
+ "type":"string",
+ "description":"IP address for this device",
+ "required":false,
+ "pattern":"^([1]?[1-9]?[1-9]|2[0-4][0-9]|25[0-5])\\.([1]?[1-9]?[1-9]|2[0-4][0-9]|25[0-5])\\.([1]?[1-9]?[1-9]|2[0-4][0-9]|25[0-5])\\.([1]?[1-9]?[1-9]|2[0-4][0-9]|25[0-4])$"
}
},
"default":{
View
5 whistle_apps/apps/crossbar/priv/couchdb/schemas/directories.json
@@ -4,12 +4,14 @@
"description":"Allow a caller to search for a user/device by name instead of extension/DID",
"properties":{
"name":{
+ "name":"Name",
"type":"string",
"minLength":1,
"required":true,
"description":"The name of the directory"
},
"sort_by":{
+ "name":"Sort By",
"type":"string",
"enum":[
"first_name",
@@ -19,18 +21,21 @@
"description":"What field to sort on in matching documents when a caller enters characters"
},
"min_dtmf":{
+ "name":"Min DTMF",
"type":"integer",
"default":3,
"minimum":1,
"description":"How many DTMF characters to collect from a caller before processing the directory"
},
"max_dtmf":{
+ "name":"Max DTMF",
"type":"integer",
"description":"Cap the number of DTMF characters collected from a caller, 0 for unlimited",
"minimum":0,
"default":0
},
"confirm_match":{
+ "name":"Confirm Match",
"type":"boolean",
"default":false,
"description":"When one match is found, require caller to confirm the match before connecting"
View
74 whistle_apps/apps/crossbar/priv/couchdb/schemas/global_resources.json
@@ -5,6 +5,7 @@
"description":"Schema for resources",
"properties":{
"name":{
+ "name":"Name",
"description":"A friendly name for the resource",
"required":"true",
"type":"string",
@@ -12,16 +13,19 @@
"maxLength":128
},
"enabled":{
+ "name":"Enabled",
"description":"Determines if the resource is currently enabled",
"type":"boolean",
"default":true
},
"emergency":{
+ "name":"Emergency",
"description":"Determines if the resource represents emergency services",
"type":"boolean",
"default":false
},
"grace_period":{
+ "name":"Grace Period",
"description":"The amount of time, in seconds, to wait before starting another resource",
"type":"integer",
"default":5,
@@ -29,6 +33,7 @@
"maximum":20
},
"weight_cost":{
+ "name":"Weight Cost",
"description":"A value between 0 and 100 that determines the order of resources when multiple can be used",
"type":"integer",
"default":50,
@@ -36,6 +41,7 @@
"maximum":100
},
"flags":{
+ "name":"Flags",
"description":"A list of flags that can be provided on the request and must match for the resource to be eligible",
"type":"array",
"default":[
@@ -43,6 +49,7 @@
]
},
"rules":{
+ "name":"Rules",
"description":"A list of regular expressions of which one must match for the rule to be eligible, they can optionally contain capture groups",
"type":"array",
"required":"true"
@@ -53,11 +60,13 @@
"items":{
"properties":{
"enabled":{
+ "name":"Enabled (gateways)",
"description":"Determines if the resource gateway is currently enabled",
"type":"boolean",
"default":true
},
"server":{
+ "name":"Server (gateways)",
"description":"This resource gateway server",
"type":"string",
"required":"true",
@@ -65,6 +74,7 @@
"maxLength":64
},
"realm":{
+ "name":"Realm (gateways)",
"description":"This resource gateway authentication realm",
"type":"string",
"required":"true",
@@ -72,18 +82,21 @@
"maxLength":64
},
"username":{
+ "name":"Username (gateways)",
"type":"string",
"description":"SIP authentication username",
"minLength":5,
"maxLength":32
},
"password":{
+ "name":"Password (gateways)",
"type":"string",
"description":"SIP authentication password",
"minLength":5,
"maxLength":32
},
"prefix":{
+ "name":"Prefix (gateways)",
"description":"A string to prepend to the dialed number or capture group of the matching rule",
"type":"string",
"default":"+1",
@@ -91,12 +104,14 @@
"maxLength":64
},
"suffix":{
+ "name":"Suffix (gateways)",
"description":"A string to append to the dialed number or capture group of the matching rule",
"type":"string",
"minLength":1,
"maxLength":64
},
"codecs":{
+ "name":"Codecs (gateways)",
"description":"A list of audio codecs supported by this gateway",
"type":"array",
"enum":[
@@ -117,12 +132,14 @@
]
},
"custom_sip_headers":{
+ "name":"Custom SIP Header (gateways)",
"type":"object",
"default":{
}
},
"bypass_media":{
+ "name":"Bypass Media (gateways)",
"description":"The device bypass media mode",
"type":"string",
"enum":[
@@ -133,31 +150,48 @@
"default":"auto"
},
"progress_timeout":{
+ "name":"Progress Timeout (gateways)",
"description":"The progress timeout to apply to the device",
"type":"integer"
},
"endpoint_type":{
- "description":"What type of endpoint is this gateway.",
- "type":"string",
- "enum":["sip", "freetdm"],
- "default":"sip"
+ "name":"Endpoint Type (gateways)",
+ "description":"What type of endpoint is this gateway.",
+ "type":"string",
+ "enum":[
+ "sip",
+ "freetdm"
+ ],
+ "default":"sip"
},
- "channel_selection":{
- "description":"Automatic selection of the channel within the span: ascending starts at 1 and moves up; descending is the opposite",
- "type":"string",
- "enum":["ascending","descending"],
- "default":"ascending"
- },
- "span":{
- "description":"The identity of the hardware on the media server",
- "type":"string"
- },
- "invite_format":{
- "description":"The format of the DID needed by the underlying hardware/gateway",
- "type":"string",
- "enum":["route","username","e164","npan","1npan"],
- "default":"route"
- }
+ "channel_selection":{
+ "name":"Channel Selection (gateways)",
+ "description":"Automatic selection of the channel within the span: ascending starts at 1 and moves up; descending is the opposite",
+ "type":"string",
+ "enum":[
+ "ascending",
+ "descending"
+ ],
+ "default":"ascending"
+ },
+ "span":{
+ "name":"Span (gateways)",
+ "description":"The identity of the hardware on the media server",
+ "type":"string"
+ },
+ "invite_format":{
+ "name":"Invite Format (gateways)",
+ "description":"The format of the DID needed by the underlying hardware/gateway",
+ "type":"string",
+ "enum":[
+ "route",
+ "username",
+ "e164",
+ "npan",
+ "1npan"
+ ],
+ "default":"route"
+ }
}
}
}
View
18 whistle_apps/apps/crossbar/priv/couchdb/schemas/local_resources.json
@@ -5,6 +5,7 @@
"description":"Schema for resources",
"properties":{
"name":{
+ "name":"Name",
"description":"A friendly name for the resource",
"required":"true",
"type":"string",
@@ -12,16 +13,19 @@
"maxLength":128
},
"enabled":{
+ "name":"Enabled",
"description":"Determines if the resource is currently enabled",
"type":"boolean",
"default":true
},
"emergency":{
+ "name":"Emergency",
"description":"Determines if the resource represents emergency services",
"type":"boolean",
"default":false
},
"grace_period":{
+ "name":"Grace Period",
"description":"The amount of time, in seconds, to wait before starting another resource",
"type":"integer",
"default":5,
@@ -29,6 +33,7 @@
"maximum":20
},
"weight_cost":{
+ "name":"Weight Cost",
"description":"A value between 0 and 100 that determines the order of resources when multiple can be used",
"type":"integer",
"default":50,
@@ -36,6 +41,7 @@
"maximum":100
},
"flags":{
+ "name":"Flags",
"description":"A list of flags that can be provided on the request and must match for the resource to be eligible",
"type":"array",
"default":[
@@ -43,6 +49,7 @@
]
},
"rules":{
+ "name":"Rules",
"description":"A list of regular expressions of which one must match for the rule to be eligible, they can optionally contain capture groups",
"type":"array",
"required":"true"
@@ -53,11 +60,13 @@
"items":{
"properties":{
"enabled":{
+ "name":"Enabled (gateways)",
"description":"Determines if the resource gateway is currently enabled",
"type":"boolean",
"default":true
},
"server":{
+ "name":"Server (gateways)",
"description":"This resource gateway server",
"type":"string",
"required":"true",
@@ -65,6 +74,7 @@
"maxLength":64
},
"realm":{
+ "name":"Realm (gateways)",
"description":"This resource gateway authentication realm",
"type":"string",
"required":"true",
@@ -72,18 +82,21 @@
"maxLength":64
},
"username":{
+ "name":"Username (gateways)",
"type":"string",
"description":"SIP authentication username",
"minLength":5,
"maxLength":32
},
"password":{
+ "name":"Password (gateways)",
"type":"string",
"description":"SIP authentication password",
"minLength":5,
"maxLength":32
},
"prefix":{
+ "name":"Prefix (gateways)",
"description":"A string to prepend to the dialed number or capture group of the matching rule",
"type":"string",
"default":"+1",
@@ -91,12 +104,14 @@
"maxLength":64
},
"suffix":{
+ "name":"Suffix (gateways)",
"description":"A string to append to the dialed number or capture group of the matching rule",
"type":"string",
"minLength":1,
"maxLength":64
},
"codecs":{
+ "name":"Codecs (gateways)",
"description":"A list of audio codecs supported by this gateway",
"type":"array",
"enum":[
@@ -117,12 +132,14 @@
]
},
"custom_sip_headers":{
+ "name":"Custom SIP Headers (gateways)",
"type":"object",
"default":{
}
},
"bypass_media":{
+ "name":"Bypass Media (gateways)",
"description":"The device bypass media mode",
"type":"string",
"enum":[
@@ -133,6 +150,7 @@
"default":"auto"
},
"progress_timeout":{
+ "name":"Progress Timeout (gateways)",
"description":"The progress timeout to apply to the device",
"type":"integer"
}
View
27 whistle_apps/apps/crossbar/priv/couchdb/schemas/media.json
@@ -5,6 +5,7 @@
"description":"Schema for media",
"properties":{
"name":{
+ "name":"Name",
"description":"A friendly name for the media",
"required":"true",
"type":"string",
@@ -12,12 +13,14 @@
"maxLength":128
},
"description":{
+ "name":"Description",
"description":"A breif description of the media update, usally the original file name",
"type":"string",
"minLength":1,
"maxLength":128
},
"content_length":{
+ "name":"Content Length",
"description":"length, in bytes, of the file",
"type":"integer",
"minimum":1,
@@ -28,11 +31,13 @@
"type":"object",
"properties":{
"text":{
+ "name":"Text TTS",
"description":"The text to be converted into audio",
"type":"string",
"minLength":1
},
"voice":{
+ "name":"Voice TTS",
"description":"The voice to be used during the conversion",
"type":"string",
"default":"female/en-US",
@@ -45,9 +50,11 @@
}
},
"default":{
+
}
},
"content_type":{
+ "name":"Content Type",
"description":"Used to override the automatic upload type",
"type":"string",
"enum":[
@@ -60,6 +67,7 @@
]
},
"media_source":{
+ "name":"Media Source",
"description":"Defines the source of the media",
"type":"string",
"default":"upload",
@@ -68,5 +76,24 @@
"upload",
"tts"
]
+ },
+ "source_type":{
+ "name":"Source Type",
+ "description":"If the media was generated from a callflow module, this is the module name",
+ "type":"string"
+ },
+ "source_id":{
+ "name":"Source ID",
+ "description":"If the media was generated from a callflow module, this is ID of the properties",
+ "type":"string",
+ "minLength":32,
+ "maxLength":32
+ },
+ "streamable":{
+ "name":"Streamable",
+ "description":"Determines if the media can be streamed",
+ "type":"boolean",
+ "default":true
}
+ }
}
View
13 whistle_apps/apps/crossbar/priv/couchdb/schemas/menus.json
@@ -5,6 +5,7 @@
"description":"Schema for a menus",
"properties":{
"name":{
+ "name":"Name",
"description":"A friendly name for the menu",
"required":"true",
"type":"string",
@@ -12,6 +13,7 @@
"maxLength":128
},
"retries":{
+ "name":"Retries",
"description":"The number of times a menu should be played until a valid entry is collected",
"type":"integer",
"default":3,
@@ -19,6 +21,7 @@
"maximum":10
},
"max_extension_length":{
+ "name":"Max Extension Length",
"description":"The maximum number of digits that can be collected",
"type":"integer",
"default":3,
@@ -26,31 +29,37 @@
"maximum":6
},
"record_pin":{
+ "name":"Record Pin",
"description":"The pin number used to record the menu prompt",
"type":"string",
"minLength":3,
"maxLength":6
},
"allow_record_from_offnet":{
+ "name":"Allow Record From Offnet",
"description":"Determines if the record pin can be used by external calls",
"type":"boolean",
"default":false
},
"hunt":{
+ "name":"Hunt",
"description":"Determines if the callers can dial internal extensions directly",
"type":"boolean",
"default":true
},
"timeout":{
+ "name":"Timeout",
"type":"integer",
"minimum":3
},
"hunt_deny":{
+ "name":"Hunt Deny",
"type":"string",
"minLength":1,
"maxLength":32
},
"hunt_allow":{
+ "name":"Hun Allow",
"type":"string",
"minLength":1,
"maxLength":32
@@ -60,12 +69,14 @@
"type":"object",
"properties":{
"greeting":{
+ "name":"Greeting",
"description":"The ID of a media object that should be used as the menu greeting",
"type":"string",
"minLength":32,
"maxLength":32
},
"transfer_media":{
+ "name":"Transfert Media",
"description":"When a call is transfered from the menu, either after all retries exhausted or a successful hunt, this media can be played",
"type":[
"boolean",
@@ -75,6 +86,7 @@
"maxLength":32
},
"exit_media":{
+ "name":"Exit Media",
"description":"When a call is transfered from the menu after all retries exhausted this media can be played (prior to transfer if enabled)",
"type":[
"boolean",
@@ -84,6 +96,7 @@
"maxLength":32
},
"invalid_media":{
+ "name":"Invalid Media",
"description":"When the collected digits dont result in a match or hunt this media can be played",
"type":[
"boolean",
View
32 whistle_apps/apps/crossbar/priv/couchdb/schemas/phone_numbers.json
@@ -6,56 +6,70 @@
"properties":{
"porting":{
"description":"Porting (in) information for the phone number",
+ "type":"object",
"properties":{
"service_provider":{
+ "name":"Service Provider",
"description":"The name of the losing carrier",
"type":"string"
},
"billing_name":{
+ "name":"Billing Name",
"description":"The name or company name the losing carrier has on file",
"type":"string"
},
"billing_account_id":{
+ "name":"Billing Account ID",
"description":"The account id the losing carrier has on file",
"type":"string"
},
"billing_street_address":{
+ "name":"Billing Street Address",
"description":"The street address the losing carrier has on file",
"type":"string"
},
"billing_extended_address":{
+ "name":"Billing Extended Address",
"description":"The suit/floor/apt. address the losing carrier has on file",
"type":"string"
},
"billing_locality":{
+ "name":"Billing Locality",
"description":"The locality (city) the losing carrier has on file",
"type":"string"
},
"billing_region":{
+ "name":"Billing Region",
"description":"The region (state) the losing carrier has on file",
"type":"string"
},
"billing_postal_code":{
+ "name":"Billing Postal Code",
"description":"The zip/postal code the losing carrier has on file",
"type":"string"
},
"billing_telephone_number":{
+ "name":"Billing Telephone Number",
"description":"The BTN of the account the number belongs to",
"type":"string"
},
"requested_port_date":{
+ "name":"Request Port Date",
"description":"The requested port date",
"type":"string"
},
"customer_contact":{
+ "name":"Customer Contact",
"description":"The phone number that can be used to contact the owner of the number",
"type":"string"
},
"comments":{
+ "name":"Comments",
"description":"An array of comments",
"type":"array"
},
"port_id":{
+ "name":"Port ID",
"description":"The id of the port request",
"type":"string"
}
@@ -63,55 +77,68 @@
},
"dash_e911":{
"description":"E911 information for the phone number",
+ "type":"object",
"properties":{
"dash_e911":{
"caller_name":{
+ "name":"Caller Name (e911)",
"description":"The name that will show to emergency services",
"type":"string"
},
"street_address":{
+ "name":"Street Address(e911)",
"description":"The street address where the number is in service",
"type":"string"
},
"extended_address":{
+ "name":"Extended Address(e911)",