switchboard-contract 1.9.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +22 -0
  3. data/README.md +31 -0
  4. data/Rakefile +3 -0
  5. data/contracts/3/compiled/advice_session.avpr +190 -0
  6. data/contracts/3/compiled/advice_session_image.avpr +36 -0
  7. data/contracts/3/compiled/advice_session_review.avpr +90 -0
  8. data/contracts/3/compiled/advisor.avpr +77 -0
  9. data/contracts/3/compiled/advisor_config.avpr +38 -0
  10. data/contracts/3/compiled/lawyer.avpr +83 -0
  11. data/contracts/3/compiled/location.avpr +128 -0
  12. data/contracts/3/compiled/offer.avpr +111 -0
  13. data/contracts/3/compiled/package.avpr +85 -0
  14. data/contracts/3/compiled/package_detail.avpr +100 -0
  15. data/contracts/3/compiled/provider_offer.avpr +144 -0
  16. data/contracts/3/compiled/specialty.avpr +61 -0
  17. data/contracts/3/compiled/user.avpr +50 -0
  18. data/contracts/3/compiled/user_authentication.avpr +111 -0
  19. data/contracts/3/source/advice_session.avdl +72 -0
  20. data/contracts/3/source/advice_session_image.avdl +16 -0
  21. data/contracts/3/source/advice_session_review.avdl +40 -0
  22. data/contracts/3/source/advisor.avdl +30 -0
  23. data/contracts/3/source/advisor_config.avdl +17 -0
  24. data/contracts/3/source/common.inc +20 -0
  25. data/contracts/3/source/lawyer.avdl +45 -0
  26. data/contracts/3/source/location.avdl +76 -0
  27. data/contracts/3/source/offer.avdl +51 -0
  28. data/contracts/3/source/package.avdl +36 -0
  29. data/contracts/3/source/package_detail.avdl +41 -0
  30. data/contracts/3/source/provider_offer.avdl +38 -0
  31. data/contracts/3/source/specialty.avdl +33 -0
  32. data/contracts/3/source/user.avdl +12 -0
  33. data/contracts/3/source/user_authentication.avdl +57 -0
  34. data/contracts/4/compiled/lawyer.avpr +127 -0
  35. data/contracts/4/compiled/lawyer_address.avpr +54 -0
  36. data/contracts/4/compiled/review.avpr +44 -0
  37. data/contracts/4/compiled/specialty.avpr +43 -0
  38. data/contracts/4/source/lawyer.avdl +69 -0
  39. data/contracts/4/source/lawyer_address.avdl +31 -0
  40. data/contracts/4/source/review.avdl +28 -0
  41. data/contracts/4/source/specialty.avdl +23 -0
  42. data/contracts/messaging/compiled/access_token.avpr +41 -0
  43. data/contracts/messaging/compiled/channel.avpr +111 -0
  44. data/contracts/messaging/source/access_token.avdl +21 -0
  45. data/contracts/messaging/source/channel.avdl +59 -0
  46. data/contracts/mobile/compiled/advice_session.avpr +160 -0
  47. data/contracts/mobile/compiled/checkout.avpr +115 -0
  48. data/contracts/mobile/compiled/lawyer.avpr +787 -0
  49. data/contracts/mobile/compiled/offer.avpr +111 -0
  50. data/contracts/mobile/compiled/package.avpr +85 -0
  51. data/contracts/mobile/compiled/package_detail.avpr +100 -0
  52. data/contracts/mobile/compiled/package_slug.avpr +67 -0
  53. data/contracts/mobile/compiled/promotion.avpr +45 -0
  54. data/contracts/mobile/compiled/provider_offer.avpr +144 -0
  55. data/contracts/mobile/compiled/review.avpr +83 -0
  56. data/contracts/mobile/compiled/specialty.avpr +55 -0
  57. data/contracts/mobile/source/advice_session.avdl +61 -0
  58. data/contracts/mobile/source/checkout.avdl +90 -0
  59. data/contracts/mobile/source/lawyer.avdl +321 -0
  60. data/contracts/mobile/source/offer.avdl +51 -0
  61. data/contracts/mobile/source/package.avdl +36 -0
  62. data/contracts/mobile/source/package_detail.avdl +41 -0
  63. data/contracts/mobile/source/package_slug.avdl +30 -0
  64. data/contracts/mobile/source/promotion.avdl +18 -0
  65. data/contracts/mobile/source/provider_offer.avdl +38 -0
  66. data/contracts/mobile/source/review.avdl +43 -0
  67. data/contracts/mobile/source/specialty.avdl +32 -0
  68. data/contracts/sales_force/compiled/account.avpr +94 -0
  69. data/contracts/sales_force/compiled/account_professional.avpr +39 -0
  70. data/contracts/sales_force/source/account.avdl +50 -0
  71. data/contracts/sales_force/source/account_professional.avdl +14 -0
  72. data/contracts/verify/compiled/lawyer.avpr +79 -0
  73. data/contracts/verify/compiled/license.avpr +64 -0
  74. data/contracts/verify/source/lawyer.avdl +41 -0
  75. data/contracts/verify/source/license.avdl +36 -0
  76. data/lib/switchboard/contract.rb +8 -0
  77. data/lib/switchboard/contract/documentation.rb +7 -0
  78. data/lib/switchboard/contract/service.rb +15 -0
  79. data/lib/switchboard/contract/version.rb +5 -0
  80. metadata +164 -0
@@ -0,0 +1,72 @@
1
+ @namespace("Switchboard")
2
+
3
+ protocol AdviceSession {
4
+ /** The main class for this protocol */
5
+ record AdviceSession {
6
+ /** The primary key */
7
+ int id;
8
+ int specialty_id;
9
+ int advisor_id;
10
+ int review_id;
11
+ boolean chose_advisor;
12
+
13
+ string state;
14
+ boolean called;
15
+ union {null, string} advice_session_image_token = null;
16
+ array<string> advice_session_image_tokens;
17
+
18
+ string name;
19
+ string email_address;
20
+ string phone_number;
21
+ int payment_amount;
22
+ string promo_code;
23
+ int offer_id;
24
+ int location_id;
25
+ int lawyer_id;
26
+ int package_id;
27
+ string package_name;
28
+ }
29
+
30
+ /** Options you can send for limiting AdviceSession results */
31
+ record AdviceSessionFetchOption {
32
+ /** Which page of records to fetch */
33
+ int page = 1;
34
+
35
+ /** How many records per page */
36
+ int per_page = 30;
37
+ }
38
+
39
+ /** Params to create a new AdviceSession */
40
+ record AdviceSessionCreateParams {
41
+ int specialty_id;
42
+ int advisor_id;
43
+
44
+ string state;
45
+ string client_name;
46
+ string client_email_address;
47
+ string client_phone_number;
48
+ union {null, string} payment_gateway = null;
49
+ string card_href;
50
+ string name_on_card;
51
+ union {null, string} advice_session_image_token = null;
52
+ array<string> advice_session_image_tokens;
53
+ union {null, string} promo_code = null;
54
+ }
55
+
56
+ record AdviceSessionPromoCode {
57
+ int promo_discount_amount_in_cents;
58
+ int promo_advice_session_price_in_cents;
59
+ }
60
+
61
+ /** Returns a list of AdviceSession */
62
+ array<AdviceSession> index(AdviceSessionFetchOption options);
63
+
64
+ /** Return a single AdviceSession */
65
+ array<AdviceSession> show(int id);
66
+
67
+ /** Create a new AdviceSession */
68
+ array<AdviceSession> create(AdviceSessionCreateParams advice_session);
69
+
70
+ /** Apply an Advice Session Promo Code */
71
+ array<AdviceSessionPromoCode> find_promo_code(string promo_code);
72
+ }
@@ -0,0 +1,16 @@
1
+ @namespace("Switchboard")
2
+
3
+ protocol AdviceSessionImage {
4
+ /** The main class for this protocol */
5
+ record AdviceSessionImage {
6
+ string token;
7
+ }
8
+
9
+ record AdviceSessionImageCreateParams {
10
+ string data;
11
+ string content_type;
12
+ }
13
+
14
+ /** Create a new AdviceSessionImage */
15
+ array<AdviceSessionImage> create(AdviceSessionImageCreateParams advice_session_image);
16
+ }
@@ -0,0 +1,40 @@
1
+ @namespace("Switchboard")
2
+
3
+ protocol AdviceSessionReview {
4
+ /** The main class for this protocol */
5
+ record AdviceSessionReview {
6
+ /** The primary key */
7
+ int id;
8
+ int advice_session_id;
9
+
10
+ int rating;
11
+ string body;
12
+ int approval_status_id;
13
+ }
14
+
15
+ /** Params to create a new Review */
16
+ record AdviceSessionReviewCreateParams {
17
+ int advice_session_id;
18
+
19
+ int rating;
20
+ string body;
21
+ }
22
+
23
+ /** Return a single Review */
24
+ array<AdviceSessionReview> show(int id);
25
+
26
+ /** Create a new Review */
27
+ array<AdviceSessionReview> create(AdviceSessionReviewCreateParams advice_session_review);
28
+
29
+ /** Options you can send for limiting Review results */
30
+ record AdviceSessionReviewFetchOption {
31
+ /** Which page of records to fetch */
32
+ int page = 1;
33
+
34
+ /** How many records per page */
35
+ int per_page = 20;
36
+ }
37
+
38
+ /** Returns a list of Review */
39
+ array<AdviceSessionReview> index(AdviceSessionReviewFetchOption options);
40
+ }
@@ -0,0 +1,30 @@
1
+ @namespace("Switchboard")
2
+
3
+ protocol Advisor {
4
+ /** The main class for this protocol */
5
+ record Advisor {
6
+ /** The primary key */
7
+ int id;
8
+ int lawyer_id;
9
+
10
+ array<int> specialty_ids;
11
+ array<string> states;
12
+ boolean available;
13
+ array<int> offer_ids;
14
+ }
15
+
16
+ /** Options you can send for limiting Advisor results */
17
+ record AdvisorFetchOption {
18
+ /** Which page of records to fetch */
19
+ int page = 1;
20
+
21
+ /** How many records per page */
22
+ int per_page = 30;
23
+ }
24
+
25
+ /** Returns a list of Advisor */
26
+ array<Advisor> index(AdvisorFetchOption options);
27
+
28
+ /** Return a single Advisor */
29
+ array<Advisor> show(int id);
30
+ }
@@ -0,0 +1,17 @@
1
+ @namespace("Switchboard")
2
+
3
+ protocol AdvisorConfig {
4
+ /** The main class for this protocol */
5
+ record AdvisorConfig {
6
+ array<string> enabled_states;
7
+
8
+ array<int> enabled_specialty_ids;
9
+
10
+ int default_advice_session_price_in_cents;
11
+
12
+ union {null, string} payment_gateway;
13
+ }
14
+
15
+ /** Return the Config */
16
+ array<AdvisorConfig> index();
17
+ }
@@ -0,0 +1,20 @@
1
+ @namespace("Switchboard")
2
+
3
+ protocol Common {
4
+
5
+ /** The main User class */
6
+ record User {
7
+ /** The primary key */
8
+ int id;
9
+
10
+ /** Their name */
11
+ string name;
12
+
13
+ /** The email address of the user */
14
+ string email_address;
15
+
16
+ /** An array of the names of all permissions the user has */
17
+ array<string> permissions;
18
+ }
19
+
20
+ }
@@ -0,0 +1,45 @@
1
+ @namespace("Switchboard")
2
+
3
+ protocol Lawyer {
4
+
5
+ /** The main class for this protocol */
6
+ record Lawyer {
7
+ /** The primary key */
8
+ int id;
9
+
10
+ /** Their name */
11
+ string firstname;
12
+ string middlename;
13
+ string lastname;
14
+
15
+ /** Is the lawyer claimed? */
16
+ boolean claimed;
17
+
18
+ /** id of claiming user **/
19
+ int claimed_by;
20
+
21
+ /** Url to their full-size headshot photo */
22
+ string headshot_url;
23
+
24
+ /** Avvo Rating (Scale of 1-10) */
25
+ float avvo_rating;
26
+
27
+ /** Average client review score (Scale of 1-5) */
28
+ float aggregate_client_review_score;
29
+
30
+ /** Number of reviews the average is based upon */
31
+ int client_review_count;
32
+
33
+ /** List of specialties this lawyer practices */
34
+ array<int> specialty_ids;
35
+
36
+ /** List of states this lawyer is licensed in */
37
+ array<string> licensed_states;
38
+ }
39
+
40
+ /** Look up many lawyers in bulk */
41
+ array<Lawyer> index();
42
+
43
+ /** Look up a single lawyer by id */
44
+ array<Lawyer> show(int id);
45
+ }
@@ -0,0 +1,76 @@
1
+ @namespace("Switchboard")
2
+
3
+ protocol Location {
4
+
5
+ /** The main class for this protocol */
6
+ record Location {
7
+ /** The primary key */
8
+ int id;
9
+
10
+ /** What type of record this is. (Gnomon::Country, Gnomon::State, Gnomon::County, Gnomon::City, Gnomon::PostalCode, Gnomon::Neighborhood) */
11
+ string type;
12
+
13
+ /** Name of the county this location is in (or nil) */
14
+ string county_name;
15
+
16
+ /** Name of the state this location is in (or nil) */
17
+ string state_name;
18
+
19
+ /** Short name of state **/
20
+ string state_code;
21
+
22
+ /** Name of the country this location is in (or nil) */
23
+ string country_name;
24
+
25
+ /** Name of the city this location is in (or nil) */
26
+ string city_name;
27
+
28
+ /** Name of the neighborhood this location is in (or nil) */
29
+ string neighborhood_name;
30
+
31
+ /** Zip code of this location (or nil) */
32
+ string postal_code_name;
33
+
34
+ /** Most common description of this location */
35
+ string to_location;
36
+
37
+ /** Shorter description of this location */
38
+ string to_short_location;
39
+
40
+ /** More verbose description of this location */
41
+ string to_long_location;
42
+
43
+ /** More verbose description of this location, usually with 3 levels of detail */
44
+ string to_location_with_region;
45
+
46
+ /** Latitude of the center of this location */
47
+ float latitude;
48
+
49
+ /** Longitude of the center of this location */
50
+ float longitude;
51
+
52
+ /** Approximate population of this location */
53
+ int population;
54
+
55
+ /** Datetime string of when this location was last updated */
56
+ string updated_at;
57
+ }
58
+
59
+ /** Options you can send for limiting Location results */
60
+ record LocationFetchOption {
61
+ /** Which page of records to fetch */
62
+ int page = 1;
63
+
64
+ /** How many records per page */
65
+ int per_page = 30;
66
+ }
67
+
68
+ /** Returns a list of Locations */
69
+ array<Location> index(LocationFetchOption options);
70
+
71
+ /** Return a single Location */
72
+ array<Location> show(int id);
73
+
74
+ /** Try to guess a location from a given string */
75
+ array<Location> resolve(string q);
76
+ }
@@ -0,0 +1,51 @@
1
+ @namespace("Switchboard")
2
+
3
+ protocol Offer {
4
+
5
+ record Package {
6
+ /** The primary key */
7
+ int id;
8
+ string name;
9
+ string short_description;
10
+ boolean call;
11
+ int call_duration_in_minutes;
12
+ boolean document;
13
+ int max_document_length_in_pages;
14
+ boolean claim_game;
15
+ boolean offline;
16
+ int specialty_id;
17
+ string micro_description;
18
+ }
19
+
20
+ /** The main class for this protocol */
21
+ record Offer {
22
+ /** The primary key */
23
+ int id;
24
+ int state_id;
25
+ int consumer_fee_in_cents;
26
+ Package package;
27
+ }
28
+
29
+ record OfferFetchOption {
30
+ /** Which page of records to fetch */
31
+ int page = 1;
32
+
33
+ /** How many records per page */
34
+ int per_page = 10;
35
+
36
+ /** The ID of the package this offer is associated with. */
37
+ int package_id;
38
+
39
+ /** Enabled meaning it is available for the public to purchase. */
40
+ boolean enabled;
41
+
42
+ /** The name of the package this offer is associated with. */
43
+ string name;
44
+ }
45
+
46
+ /** Returns a list of Offers */
47
+ array<Offer> index(OfferFetchOption options);
48
+
49
+ /** Return a single Offer */
50
+ array<Offer> show(int id);
51
+ }
@@ -0,0 +1,36 @@
1
+ @namespace("Switchboard")
2
+
3
+ protocol Package {
4
+
5
+ /** The main class for this protocol */
6
+ record Package {
7
+ /** The primary key */
8
+ int id;
9
+ string name;
10
+ string short_description;
11
+ boolean call;
12
+ int call_duration_in_minutes;
13
+ boolean document;
14
+ int max_document_length_in_pages;
15
+ boolean claim_game;
16
+ boolean offline;
17
+ int specialty_id;
18
+ string micro_description;
19
+ }
20
+
21
+ record PackageFetchOption {
22
+ /** Which page of records to fetch */
23
+ int page = 1;
24
+
25
+ /** How many records per page */
26
+ int per_page = 10;
27
+
28
+ int specialty_id;
29
+ }
30
+
31
+ /** Returns a list of Packages */
32
+ array<Package> index(PackageFetchOption options);
33
+
34
+ /** Return a single Package */
35
+ array<Package> show(int id);
36
+ }
@@ -0,0 +1,41 @@
1
+ @namespace("Switchboard")
2
+
3
+ protocol PackageDetail {
4
+
5
+ /** The main class for this protocol */
6
+ record Package {
7
+ /** The primary key */
8
+ int id;
9
+ string name;
10
+ string short_description;
11
+ boolean call;
12
+ int call_duration_in_minutes;
13
+ boolean document;
14
+ int max_document_length_in_pages;
15
+ boolean claim_game;
16
+ boolean offline;
17
+ int specialty_id;
18
+ string how_it_works;
19
+ string whats_included;
20
+ string whats_not_included;
21
+ string micro_description;
22
+ string right_for_you_if;
23
+ string hero_image_url;
24
+ }
25
+
26
+ record PackageFetchOption {
27
+ /** Which page of records to fetch */
28
+ int page = 1;
29
+
30
+ /** How many records per page */
31
+ int per_page = 10;
32
+
33
+ int specialty_id;
34
+ }
35
+
36
+ /** Returns a list of Packages */
37
+ array<Package> index(PackageFetchOption options);
38
+
39
+ /** Return a single Package */
40
+ array<Package> show(int id);
41
+ }