crunchbase4 0.1.1 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +5 -0
- data/CHANGELOG.md +66 -0
- data/Gemfile.lock +1 -1
- data/README.md +392 -40
- data/crunchbase4.gemspec +2 -2
- data/lib/crunchbase.rb +30 -1
- data/lib/crunchbase/autocompletes/client.rb +75 -0
- data/lib/crunchbase/client.rb +4 -0
- data/lib/crunchbase/deleted_entities/client.rb +69 -0
- data/lib/crunchbase/entities/client.rb +24 -12
- data/lib/crunchbase/models.rb +10 -1
- data/lib/crunchbase/models/address.rb +36 -0
- data/lib/crunchbase/models/autocomplete_entity.rb +25 -0
- data/lib/crunchbase/models/concerns/entity.rb +53 -0
- data/lib/crunchbase/models/concerns/mappings.rb +37 -0
- data/lib/crunchbase/models/deleted_entity.rb +26 -0
- data/lib/crunchbase/models/event_appearance.rb +39 -0
- data/lib/crunchbase/models/fund.rb +43 -0
- data/lib/crunchbase/models/ipo.rb +48 -0
- data/lib/crunchbase/models/job.rb +42 -0
- data/lib/crunchbase/models/organization.rb +9 -0
- data/lib/crunchbase/models/ownership.rb +39 -0
- data/lib/crunchbase/models/principal.rb +112 -0
- data/lib/crunchbase/utilities/autocomplete.rb +51 -0
- data/lib/crunchbase/utilities/deleted_entities.rb +47 -0
- data/lib/crunchbase/utilities/entity_endpoints.rb +58 -24
- data/lib/crunchbase/utilities/request.rb +28 -11
- data/lib/crunchbase/utilities/response.rb +1 -1
- data/lib/crunchbase/utilities/search_endpoints.rb +22 -0
- data/lib/crunchbase/utilities/search_query_parameters.rb +64 -0
- data/lib/crunchbase/utilities/veriables.rb +335 -0
- data/lib/crunchbase/version.rb +1 -1
- metadata +23 -7
- data/lib/crunchbase/models/entity.rb +0 -32
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative '../errors'
|
4
|
+
|
3
5
|
module Crunchbase
|
4
6
|
# Utilities
|
5
7
|
module Utilities
|
@@ -15,8 +17,8 @@ module Crunchbase
|
|
15
17
|
# limit: Number of rows to return. Default is 100, min is 1, max is 100.
|
16
18
|
|
17
19
|
# Lookup an Organization or single card
|
18
|
-
def organization(entity_id,
|
19
|
-
lookup_for('organization', entity_id,
|
20
|
+
def organization(entity_id, **card_args)
|
21
|
+
lookup_for('organization', entity_id, card_args)
|
20
22
|
end
|
21
23
|
|
22
24
|
# Lookup Organization's all cards
|
@@ -25,53 +27,83 @@ module Crunchbase
|
|
25
27
|
end
|
26
28
|
|
27
29
|
# Lookup a Person or single card
|
28
|
-
def person(entity_id,
|
29
|
-
lookup_for('person', entity_id,
|
30
|
+
def person(entity_id, **card_args)
|
31
|
+
lookup_for('person', entity_id, card_args)
|
30
32
|
end
|
31
33
|
|
32
34
|
# Lookup Person's all cards
|
33
|
-
def person_cards(entity_id)
|
34
|
-
entities('person', entity_id).fetch_cards
|
35
|
+
def person_cards(entity_id, cards: [])
|
36
|
+
entities('person', entity_id).fetch_cards(cards)
|
35
37
|
end
|
36
38
|
|
37
39
|
# Lookup a Funding Round or single card
|
38
|
-
def funding_round(entity_id,
|
39
|
-
lookup_for('funding_round', entity_id,
|
40
|
+
def funding_round(entity_id, **card_args)
|
41
|
+
lookup_for('funding_round', entity_id, card_args)
|
40
42
|
end
|
41
43
|
|
42
44
|
# Lookup Funding Round's all cards
|
43
|
-
def funding_round_cards(entity_id)
|
44
|
-
entities('funding_round', entity_id).fetch_cards
|
45
|
+
def funding_round_cards(entity_id, cards: [])
|
46
|
+
entities('funding_round', entity_id).fetch_cards(cards)
|
45
47
|
end
|
46
48
|
|
47
49
|
# Lookup an Acquisition or Single card
|
48
|
-
def acquisition(entity_id,
|
49
|
-
lookup_for('acquisition', entity_id,
|
50
|
+
def acquisition(entity_id, **card_args)
|
51
|
+
lookup_for('acquisition', entity_id, card_args)
|
50
52
|
end
|
51
53
|
|
52
54
|
# Lookup Acquisition's all card
|
53
|
-
def acquisition_cards(entity_id)
|
54
|
-
entities('acquisition', entity_id).fetch_cards
|
55
|
+
def acquisition_cards(entity_id, cards: [])
|
56
|
+
entities('acquisition', entity_id).fetch_cards(cards)
|
55
57
|
end
|
56
58
|
|
57
59
|
# Lookup an Investment or Single card
|
58
|
-
def investment(entity_id,
|
59
|
-
lookup_for('investment', entity_id,
|
60
|
+
def investment(entity_id, **card_args)
|
61
|
+
lookup_for('investment', entity_id, card_args)
|
60
62
|
end
|
61
63
|
|
62
64
|
# Lookup Investment's all card
|
63
|
-
def investment_cards(entity_id)
|
64
|
-
entities('investment', entity_id).fetch_cards
|
65
|
+
def investment_cards(entity_id, cards: [])
|
66
|
+
entities('investment', entity_id).fetch_cards(cards)
|
65
67
|
end
|
66
68
|
|
67
69
|
# Lookup an PressReference or Single card
|
68
|
-
def press_reference(entity_id,
|
69
|
-
lookup_for('press_reference', entity_id,
|
70
|
+
def press_reference(entity_id, **card_args)
|
71
|
+
lookup_for('press_reference', entity_id, card_args)
|
70
72
|
end
|
71
73
|
|
72
74
|
# Lookup PressReference's all card
|
73
|
-
def press_reference_cards(entity_id)
|
74
|
-
entities('press_reference', entity_id).fetch_cards
|
75
|
+
def press_reference_cards(entity_id, cards: [])
|
76
|
+
entities('press_reference', entity_id).fetch_cards(cards)
|
77
|
+
end
|
78
|
+
|
79
|
+
# Lookup an Ipo or Single card
|
80
|
+
def ipo(entity_id, **card_args)
|
81
|
+
lookup_for('ipo', entity_id, card_args)
|
82
|
+
end
|
83
|
+
|
84
|
+
# Lookup Ipo's all card
|
85
|
+
def ipo_cards(entity_id, cards: [])
|
86
|
+
entities('ipo', entity_id).fetch_cards(cards)
|
87
|
+
end
|
88
|
+
|
89
|
+
# Lookup an fund or Single card
|
90
|
+
def fund(entity_id, **card_args)
|
91
|
+
lookup_for('fund', entity_id, card_args)
|
92
|
+
end
|
93
|
+
|
94
|
+
# Lookup fund's all card
|
95
|
+
def fund_cards(entity_id, cards: [])
|
96
|
+
entities('fund', entity_id).fetch_cards(cards)
|
97
|
+
end
|
98
|
+
|
99
|
+
# Lookup an fund or Single card
|
100
|
+
def ownership(entity_id, **card_args)
|
101
|
+
lookup_for('ownership', entity_id, card_args)
|
102
|
+
end
|
103
|
+
|
104
|
+
# Lookup fund's all card
|
105
|
+
def ownership_cards(entity_id, cards: [])
|
106
|
+
entities('ownership', entity_id).fetch_cards(cards)
|
75
107
|
end
|
76
108
|
|
77
109
|
private
|
@@ -80,11 +112,13 @@ module Crunchbase
|
|
80
112
|
Crunchbase::Entities::Client.new(entity_id, entity_type)
|
81
113
|
end
|
82
114
|
|
83
|
-
def lookup_for(entity_type, entity_id,
|
115
|
+
def lookup_for(entity_type, entity_id, **card_args)
|
84
116
|
kobject = entities(entity_type, entity_id)
|
117
|
+
|
118
|
+
card_id = card_args&.delete(:card_id)
|
85
119
|
return kobject.fetch if card_id.nil?
|
86
120
|
|
87
|
-
kobject.cards(card_id)
|
121
|
+
kobject.cards(card_id, card_args)
|
88
122
|
end
|
89
123
|
end
|
90
124
|
end
|
@@ -9,23 +9,28 @@ require_relative '../errors'
|
|
9
9
|
module Crunchbase
|
10
10
|
# Utilities
|
11
11
|
module Utilities
|
12
|
-
#
|
12
|
+
# Key Reminder
|
13
|
+
#
|
14
|
+
# entity_id must be provided in the request
|
15
|
+
# entity_id can be the uuid or the permalink of the entity
|
16
|
+
# you can pass your API key in the request's header if you do not want to pass the API key in the URL
|
13
17
|
module Request
|
14
18
|
module_function
|
15
19
|
|
20
|
+
# Autocompletes endpoint
|
21
|
+
def get(uri, *args)
|
22
|
+
fetch_request(uri, *args)
|
23
|
+
end
|
24
|
+
|
25
|
+
def deleted(uri, *args)
|
26
|
+
fetch_request(uri, *args)
|
27
|
+
end
|
28
|
+
|
16
29
|
# Entity endpoints
|
17
30
|
#
|
18
31
|
# https://app.swaggerhub.com/apis-docs/Crunchbase/crunchbase-enterprise_api/1.0.1#/Entity/get_entities_organizations__entity_id_
|
19
32
|
def entity(uri, *args)
|
20
|
-
|
21
|
-
faraday.adapter Faraday.default_adapter
|
22
|
-
faraday.response :json
|
23
|
-
faraday.response :logger, ::Logger.new(STDOUT), bodies: true if debug_mode?
|
24
|
-
end.get(uri, *args)
|
25
|
-
|
26
|
-
return response.body if response.status == 200
|
27
|
-
|
28
|
-
raise Error, response.reason_phrase
|
33
|
+
fetch_request(uri, *args)
|
29
34
|
end
|
30
35
|
|
31
36
|
# Search endpoints
|
@@ -41,11 +46,23 @@ module Crunchbase
|
|
41
46
|
|
42
47
|
return response.body if response.status == 200
|
43
48
|
|
44
|
-
raise Error, response.
|
49
|
+
raise Error, response.body[0]['message']
|
45
50
|
end
|
46
51
|
|
47
52
|
private
|
48
53
|
|
54
|
+
def fetch_request(uri, *args)
|
55
|
+
response = Faraday.new(url: BASE_URI, headers: headers) do |faraday|
|
56
|
+
faraday.adapter Faraday.default_adapter
|
57
|
+
faraday.response :json
|
58
|
+
faraday.response :logger, ::Logger.new(STDOUT), bodies: true if debug_mode?
|
59
|
+
end.get(uri, *args)
|
60
|
+
|
61
|
+
return response.body if response.status == 200
|
62
|
+
|
63
|
+
raise Error, response.status == 400 ? response.body[0]['message'] : response.body['error']
|
64
|
+
end
|
65
|
+
|
49
66
|
def debug_mode?
|
50
67
|
Crunchbase.config.debug || false
|
51
68
|
end
|
@@ -17,7 +17,7 @@ module Crunchbase
|
|
17
17
|
attribute_names.delete(attribute_name)
|
18
18
|
hash_datas = response&.dig(attribute_name)
|
19
19
|
|
20
|
-
values = hash_datas&.map { |k, v| v if %w[uuid permalink].include?(k) }&.compact || []
|
20
|
+
values = hash_datas&.map { |k, v| v if %w[uuid permalink value].include?(k) }&.compact || []
|
21
21
|
dynamic_define_method(object, attribute_name, values)
|
22
22
|
hash_datas&.keys&.each do |key|
|
23
23
|
next unless %w[uuid permalink].include?(key)
|
@@ -1,10 +1,28 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative './search_query_parameters'
|
4
|
+
|
3
5
|
module Crunchbase
|
4
6
|
# Utilities
|
5
7
|
module Utilities
|
6
8
|
# All Searches API endpoint
|
7
9
|
module SearchEndpoints
|
10
|
+
include SearchQueryParameters
|
11
|
+
|
12
|
+
# Example to searching organizations
|
13
|
+
#
|
14
|
+
# {
|
15
|
+
# scope_name: 'organization',
|
16
|
+
# date: '2020-05-05',
|
17
|
+
# field_ids: %w[name website permalink],
|
18
|
+
# sort: 'desc'
|
19
|
+
# before_id: 'uuid'
|
20
|
+
# after_id: 'uuid'
|
21
|
+
# }
|
22
|
+
def recent_updates(args)
|
23
|
+
searches(query_parameters(args), args[:scope_name]).searches
|
24
|
+
end
|
25
|
+
|
8
26
|
# For Searches
|
9
27
|
def search_organizations(raw_data)
|
10
28
|
searches(raw_data, 'organization').searches
|
@@ -14,6 +32,10 @@ module Crunchbase
|
|
14
32
|
searches(raw_data, 'funding_round').searches
|
15
33
|
end
|
16
34
|
|
35
|
+
def search_people(raw_data)
|
36
|
+
searches(raw_data, 'person').searches
|
37
|
+
end
|
38
|
+
|
17
39
|
private
|
18
40
|
|
19
41
|
def searches(raw_data, scope_name)
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Crunchbase
|
4
|
+
# Utilities
|
5
|
+
module Utilities
|
6
|
+
# All Searches Query Parameters
|
7
|
+
module SearchQueryParameters
|
8
|
+
module_function
|
9
|
+
|
10
|
+
# https://app.swaggerhub.com/apis-docs/Crunchbase/crunchbase-enterprise_api/1.0.1#/Search/post_searches_people
|
11
|
+
#
|
12
|
+
# Search Query Parameters
|
13
|
+
#
|
14
|
+
# field_ids: array of field_id strings
|
15
|
+
# Fields to include as columns in the search result entities
|
16
|
+
# query: Search query to perform on the designated entity
|
17
|
+
# order: (field_id, sort, nulls)
|
18
|
+
# Order in which the search results should be returned
|
19
|
+
# limit: integer
|
20
|
+
# Number of rows to return. Default is 100, min is 1, max is 1000.
|
21
|
+
# before_id: string($uuid)
|
22
|
+
# Used to paginate search results to the previous page.
|
23
|
+
# before_id should be the uuid of the first item in the current page. May not be provided simultaneously with after_id.
|
24
|
+
# after_id: string($uuid)
|
25
|
+
# Used to paginate search results to the next page.
|
26
|
+
# after_id should be the uuid of the last item in the current page. May not be provided simultaneously with before_id.
|
27
|
+
def query_parameters(args)
|
28
|
+
params = {
|
29
|
+
'field_ids' => %w[
|
30
|
+
uuid
|
31
|
+
created_at
|
32
|
+
updated_at
|
33
|
+
] + (args[:field_ids] || []).uniq,
|
34
|
+
'order' => [
|
35
|
+
{
|
36
|
+
'field_id' => 'updated_at',
|
37
|
+
'sort' => (args[:sort] || 'desc'),
|
38
|
+
'nulls' => 'last'
|
39
|
+
}
|
40
|
+
],
|
41
|
+
'limit' => args[:limit] || 1000
|
42
|
+
}
|
43
|
+
|
44
|
+
unless args[:date].nil?
|
45
|
+
params.merge!(
|
46
|
+
'query' => [
|
47
|
+
{
|
48
|
+
'type' => 'predicate',
|
49
|
+
'field_id' => 'updated_at',
|
50
|
+
'operator_id' => 'gte',
|
51
|
+
'values' => [
|
52
|
+
args[:date]
|
53
|
+
]
|
54
|
+
}
|
55
|
+
]
|
56
|
+
)
|
57
|
+
end
|
58
|
+
params.merge!('before_id' => args[:before_id]) unless args[:before_id].nil?
|
59
|
+
params.merge!('after_id' => args[:after_id]) unless args[:after_id].nil?
|
60
|
+
params
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,335 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Crunchbase
|
4
|
+
# Utilities
|
5
|
+
module Utilities
|
6
|
+
# Veriables
|
7
|
+
module Veriables
|
8
|
+
# Description of operators
|
9
|
+
QUERY_OPERATORS = {
|
10
|
+
'blank' => 'Blank',
|
11
|
+
'eq' => 'Equal',
|
12
|
+
'not_eq' => 'Not equal',
|
13
|
+
'gt' => 'Greater than',
|
14
|
+
'gte' => 'Greater than or equal',
|
15
|
+
'lt' => 'Less than',
|
16
|
+
'lte' => 'Less than or equal',
|
17
|
+
'starts' => 'Starts',
|
18
|
+
'contains' => 'Contains',
|
19
|
+
'between' => 'Between',
|
20
|
+
'includes' => 'Includes',
|
21
|
+
'not_includes' => 'Does not include',
|
22
|
+
'includes_all' => 'Includes all',
|
23
|
+
'not_includes_all' => 'Does not include all'
|
24
|
+
}.freeze
|
25
|
+
|
26
|
+
COMPANY_TYPES = {
|
27
|
+
'for_profit' => 'For Profit',
|
28
|
+
'non_profit' => 'Non-profit'
|
29
|
+
}.freeze
|
30
|
+
|
31
|
+
FACET_IDS = {
|
32
|
+
'company' => 'Company',
|
33
|
+
'investor' => 'Investor',
|
34
|
+
'school' => 'School'
|
35
|
+
}.freeze
|
36
|
+
|
37
|
+
IPO_STATUS = {
|
38
|
+
'delisted' => 'Delisted',
|
39
|
+
'private' => 'Private',
|
40
|
+
'public' => 'Public'
|
41
|
+
}.freeze
|
42
|
+
|
43
|
+
FUNDING_STAGES = {
|
44
|
+
'early_stage_venture' => 'Early Stage Venture',
|
45
|
+
'ipo' => 'IPO',
|
46
|
+
'late_stage_venture' => 'Late Stage Venture',
|
47
|
+
'm_and_a' => 'M&A',
|
48
|
+
'private_equity' => 'Private Equity',
|
49
|
+
'seed' => 'Seed'
|
50
|
+
}.freeze
|
51
|
+
|
52
|
+
FUNDING_TYPES = {
|
53
|
+
'angel' => 'Angel',
|
54
|
+
'convertible_note' => 'Convertible Note',
|
55
|
+
'corporate_round' => 'Corporate Round',
|
56
|
+
'debt_financing' => 'Debt Financing',
|
57
|
+
'equity_crowdfunding' => 'Equity Crowdfunding',
|
58
|
+
'grant' => 'Grant',
|
59
|
+
'initial_coin_offering' => 'Initial Coin Offering',
|
60
|
+
'non_equity_assistance' => 'Non-equity Assistance',
|
61
|
+
'post_ipo_debt' => 'Post-IPO Debt',
|
62
|
+
'post_ipo_equity' => 'Post-IPO Equity',
|
63
|
+
'post_ipo_secondary' => 'Post-IPO Secondary',
|
64
|
+
'pre_seed' => 'Pre-Seed',
|
65
|
+
'private_equity' => 'Private Equity',
|
66
|
+
'product_crowdfunding' => 'Product Crowdfunding',
|
67
|
+
'secondary_market' => 'Secondary Market',
|
68
|
+
'seed' => 'Seed',
|
69
|
+
'series_a' => 'Series A',
|
70
|
+
'series_b' => 'Series B',
|
71
|
+
'series_c' => 'Series C',
|
72
|
+
'series_d' => 'Series D',
|
73
|
+
'series_e' => 'Series E',
|
74
|
+
'series_f' => 'Series F',
|
75
|
+
'series_g' => 'Series G',
|
76
|
+
'series_h' => 'Series H',
|
77
|
+
'series_i' => 'Series I',
|
78
|
+
'series_j' => 'Series J',
|
79
|
+
'series_unknown' => 'Venture - Series Unknown',
|
80
|
+
'undisclosed' => 'Undisclosed'
|
81
|
+
}.freeze
|
82
|
+
|
83
|
+
CURRENCY_ENUM = %w[
|
84
|
+
AED AFN ALL AMD ANG AOA ARS AUD AWG AZN BAM BBD BDT BGN BHD
|
85
|
+
BIF BMD BND BOB BRL BSD BTN BWP BYN BYR BZD CAD CDF CHF CLF
|
86
|
+
CLP CNY COP CRC CUC CUP CVE CZK DJF DKK DOP DZD EGP ERN ETB
|
87
|
+
EUR FJD FKP GBP GEL GHS GIP GMD GNF GTQ GYD HKD HNL HRK HTG
|
88
|
+
HUF IDR ILS INR IQD IRR ISK JMD JOD JPY KES KGS KHR KMF KPW
|
89
|
+
KRW KWD KYD KZT LAK LBP LKR LRD LSL LTL LVL LYD MAD MDL MGA
|
90
|
+
MKD MMK MNT MOP MRO MUR MVR MWK MXN MYR MZN NAD NGN NIO NOK
|
91
|
+
NPR NZD OMR PAB PEN PGK PHP PKR PLN PYG QAR RON RSD RUB RWF
|
92
|
+
SAR SBD SCR SDG SEK SGD SHP SKK SLL SOS SRD SSP STD SVC SYP
|
93
|
+
SZL THB TJS TMT TND TOP TRY TTD TWD TZS UAH UGX USD UYU UZS
|
94
|
+
VEF VND VUV WST XAF XAG XAU XBA XBB XBC XBD XCD XDR XOF XPD
|
95
|
+
XPF XPT YER ZAR ZMK ZMW xts
|
96
|
+
].freeze
|
97
|
+
|
98
|
+
DATE_PRECISIONS = %w[none year month day].freeze
|
99
|
+
|
100
|
+
LAYOUT_IDS = {
|
101
|
+
'default' => 'Default Layout',
|
102
|
+
'investor' => 'Investor Layout',
|
103
|
+
'school' => 'School Layout'
|
104
|
+
}.freeze
|
105
|
+
|
106
|
+
NUM_EMPLOYEES_ENUM = {
|
107
|
+
'c_00001_00010' => '1-10',
|
108
|
+
'c_00011_00050' => '11-50',
|
109
|
+
'c_00051_00100' => '51-100',
|
110
|
+
'c_00101_00250' => '101-250',
|
111
|
+
'c_00251_00500' => '251-500',
|
112
|
+
'c_00501_01000' => '501-1000',
|
113
|
+
'c_01001_05000' => '1001-5000',
|
114
|
+
'c_05001_10000' => '5001-10000',
|
115
|
+
'c_10001_max' => '10001+'
|
116
|
+
}.freeze
|
117
|
+
|
118
|
+
OPERATING_STATUS = {
|
119
|
+
'active' => 'Active',
|
120
|
+
'closed' => 'Closed'
|
121
|
+
}.freeze
|
122
|
+
|
123
|
+
PROGRAM_TYPES = {
|
124
|
+
'on_site' => 'On-Site',
|
125
|
+
'online' => 'Online'
|
126
|
+
}.freeze
|
127
|
+
|
128
|
+
REVENUE_RANGES = {
|
129
|
+
'r_00000000' => 'Less than $1M',
|
130
|
+
'r_00001000' => '$1M to $10M',
|
131
|
+
'r_00010000' => '$10M to $50M',
|
132
|
+
'r_00050000' => '$50M to $100M',
|
133
|
+
'r_00100000' => '$100M to $500M',
|
134
|
+
'r_00500000' => '$500M to $1B',
|
135
|
+
'r_01000000' => '$1B to $10B',
|
136
|
+
'r_10000000' => '$10B+'
|
137
|
+
}.freeze
|
138
|
+
|
139
|
+
SCHOOL_METHODS = {
|
140
|
+
'on_compus' => 'On Campus',
|
141
|
+
'online' => 'Online',
|
142
|
+
'online_and_on_campus' => 'Online and On Campus'
|
143
|
+
}.freeze
|
144
|
+
|
145
|
+
SCHOOL_PROGRAMS = {
|
146
|
+
'bootcamp' => 'Bootcamp',
|
147
|
+
'community_college' => 'Community College',
|
148
|
+
'four_year_university' => 'Four Year University',
|
149
|
+
'graduate_university' => 'Graduate University',
|
150
|
+
'high_school' => 'High School',
|
151
|
+
'trade_school' => 'Trade School',
|
152
|
+
'two_year_university' => 'Two Year University'
|
153
|
+
}.freeze
|
154
|
+
|
155
|
+
SCHOOL_TYPES = {
|
156
|
+
'for_profit_private' => 'Private',
|
157
|
+
'non_profit_private' => 'Private (Non-Profit)',
|
158
|
+
'public' => 'Public'
|
159
|
+
}.freeze
|
160
|
+
|
161
|
+
STATUS = {
|
162
|
+
'closed' => 'Closed',
|
163
|
+
'ipo' => 'IPO',
|
164
|
+
'operating' => 'Operating',
|
165
|
+
'was_acquired' => 'Was Acquired'
|
166
|
+
}.freeze
|
167
|
+
|
168
|
+
STOCK_EXCHANGE_SYMBOLS = {
|
169
|
+
'adx' => 'ADX - Abu Dhabi Securities Exchange',
|
170
|
+
'afx' => 'AFX - Afghanistan Stock Exchange',
|
171
|
+
'altx' => 'ALTX - ALTX East Africa Exchange',
|
172
|
+
'amex' => 'AMEX - American Stock Exchange',
|
173
|
+
'ams' => 'AMS - Euronext Amsterdam',
|
174
|
+
'amx' => 'AMX - Armenia Securities Exchange',
|
175
|
+
'asce' => 'ASCE - Abuja Securities and Commodities Exchange',
|
176
|
+
'asx' => 'ASX - Australian Securities Exchange',
|
177
|
+
'ath' => 'ATH - Athens Stock Exchange',
|
178
|
+
'bcba' => 'BCBA - Buenos Aires Stock Exchange',
|
179
|
+
'bdp' => 'BDP - Budapest Stock Exchange',
|
180
|
+
'belex' => 'BELEX - Belgrade Stock Exchange',
|
181
|
+
'ber' => 'BER - Berliner Börse',
|
182
|
+
'bfb' => 'BFB - Baku Stock Exchange',
|
183
|
+
'bit' => 'BIT - Italian Stock Exchange',
|
184
|
+
'bkk' => 'BKK - Thailand Stock Exchange',
|
185
|
+
'blse' => 'BLSE - Banja Luka Stock Exchange',
|
186
|
+
'bme' => 'BME - Madrid Stock Exchange',
|
187
|
+
'bmv' => 'BMV - Mexican Stock Exchange',
|
188
|
+
'bom' => 'BOM - Bombay Stock Exchange',
|
189
|
+
'brvm' => 'BRVM - Regional Securities Exchange SA',
|
190
|
+
'bse' => 'BSE - Bulgarian Stock Exchange',
|
191
|
+
'bse_lb' => 'BSE - Beirut Stock Exchange',
|
192
|
+
'bsse' => 'BSSE - Bratislava Stock Exchange',
|
193
|
+
'bsx' => 'BSX - Bermuda Stock Exchange',
|
194
|
+
'bvb' => 'BVB - Bucharest Stock Exchange',
|
195
|
+
'bvc' => 'BVC - Colombian Stock Exchange',
|
196
|
+
'bvfb' => 'BVFB - Belarusian Currency and Stock Exchange',
|
197
|
+
'bvm' => 'BVM - Montevideo Stock Exchange',
|
198
|
+
'bvmf' => 'B3 - Brazil Stock Exchange and OTC Market',
|
199
|
+
'bvmt' => 'BVMT - Tunis Stock Exchange',
|
200
|
+
'bx' => 'BX - Berne Stock Exchange',
|
201
|
+
'cas' => 'CAS - Casablanca Stock Exchange',
|
202
|
+
'cise' => 'CISE - Channel Islands Stock Exchange',
|
203
|
+
'cnsx' => 'CNSX - Canadian National Stock Exchange',
|
204
|
+
'col' => 'COL - Colombo Stock Exchange',
|
205
|
+
'cph' => 'CPH - Copenhagen Stock Exchange',
|
206
|
+
'cse' => 'CSE - Canadian Securities Exchange',
|
207
|
+
'cse_cy' => 'CSE - Cyprus Stock Exchange',
|
208
|
+
'csx' => 'CSX - Cambodia Securities Exchange',
|
209
|
+
'cve' => 'TSX-V - Toronto TSX Venture Exchange',
|
210
|
+
'dfm' => 'DFM - Dubai Financial Market',
|
211
|
+
'dse' => 'DSE - Dhaka Stock Exchange',
|
212
|
+
'dsx' => 'DSX - Douala Stock Exchange',
|
213
|
+
'dus' => 'DUS - Börse Düsseldorf',
|
214
|
+
'ebr' => 'EBR - Euronext Brussels',
|
215
|
+
'egx' => 'EGX - Egypt Stock Exchange',
|
216
|
+
'eli' => 'ELI - Euronext Lisbon',
|
217
|
+
'epa' => 'EPA - Euronext Paris',
|
218
|
+
'etr' => 'ETR - Deutsche Börse XETRA',
|
219
|
+
'eurex' => 'EUREX - Eurex Exchange',
|
220
|
+
'fra' => 'FRA - Frankfurt Stock Exchange',
|
221
|
+
'fwb' => 'FWB - Börse Frankfurt Stock Exchange',
|
222
|
+
'gha' => 'GHA - Ghana Stock Exchange',
|
223
|
+
'gsx' => 'GSX - Georgian Stock Exchange',
|
224
|
+
'gsx_gi' => 'GSX - Gibraltar Stock Exchange',
|
225
|
+
'hel' => 'HEL - Helsinki Stock Exchange',
|
226
|
+
'hkg' => 'HKG - Hong Kong Stock Exchange',
|
227
|
+
'hnx' => 'HNX - Hanoi Stock Exchange',
|
228
|
+
'hose' => 'HOSE - Ho Chi Minh Stock Exchange',
|
229
|
+
'ice' => 'ICE - Iceland Stock Exchange',
|
230
|
+
'idx' => 'IDX - Indonesia Stock Exchange',
|
231
|
+
'iex' => 'IEX - Investors Exchange',
|
232
|
+
'ifb' => 'IFB - Iran Fara Bourse',
|
233
|
+
'ime' => 'IME - Iran Mercantile Exchange',
|
234
|
+
'irenex' => 'IRENEX - Iran Energy Exchange',
|
235
|
+
'ise' => 'ISE - Irish Stock Exchange',
|
236
|
+
'ist' => 'IST - Istanbul Stock Exchange',
|
237
|
+
'isx' => 'ISX - Iraq Stock Exchange',
|
238
|
+
'jp' => 'JP - Japan Exchange',
|
239
|
+
'jsc' => 'JSC - Belarusian Currency and Stock Exchange',
|
240
|
+
'jse' => 'JSE - Johannesburg Stock Exchange',
|
241
|
+
'jse_jam' => 'JSE - Jamaica Stock Exchange',
|
242
|
+
'kase' => 'KASE - Kazakhstan Stock Exchange',
|
243
|
+
'klse' => 'KLSE - Malaysia Stock Exchange',
|
244
|
+
'kosdaq' => 'KOSDAQ - Korean Securities Dealers Automated Quotations',
|
245
|
+
'krx' => 'KRX - Korea Stock Exchange',
|
246
|
+
'kse' => 'KSE - Kuwait Stock Exchange',
|
247
|
+
'lje' => 'LJE - Ljubljana Stock Exchange',
|
248
|
+
'lse' => 'LSE - London Stock Exchange',
|
249
|
+
'lsm' => 'LSM - Libyan Stock Market',
|
250
|
+
'lsx' => 'LSX - Lao Securities Exchange',
|
251
|
+
'luse' => 'LuSE - Lusaka Securities Exchange',
|
252
|
+
'luxse' => 'LuxSE - Luxembourg Stock Exchange',
|
253
|
+
'mal' => 'MAL - Malta Stock Exchange',
|
254
|
+
'mcx' => 'MCX - Multi Commodity Exchange of India',
|
255
|
+
'meff' => 'MEFF - Mercado Spanish Financial Futures Market',
|
256
|
+
'mnse' => 'MNSE - Montenegro Stock Exchange',
|
257
|
+
'moex' => 'MOEX - Moscow Exchange',
|
258
|
+
'mse' => 'MSE - Metropolitan Stock Exchange',
|
259
|
+
'mse_md' => 'MSE - Moldova Stock Exchange',
|
260
|
+
'mse_mk' => 'MSE - Macedonian Stock Exchange',
|
261
|
+
'msei' => 'MSEI - Metropolitan Stock Exchange of India',
|
262
|
+
'msm' => 'MSM - Muscat Securities Market',
|
263
|
+
'mun' => 'MUN - Börse München',
|
264
|
+
'nasdaq' => 'NASDAQ',
|
265
|
+
'nbo' => 'NSE - Nairobi Securities Exchange',
|
266
|
+
'neeq' => 'NEEQ - National Equities Exchange and Quotations',
|
267
|
+
'nepse' => 'NEPSE - Nepal Stock Exchange',
|
268
|
+
'nex' => 'NEX - NEX Exchange',
|
269
|
+
'ngm' => 'NGM - Nordic Growth Market Exchange',
|
270
|
+
'nig' => 'NIG - Nigerian Stock Exchange',
|
271
|
+
'notc' => 'NOTC - Norwegian OTC',
|
272
|
+
'npex' => 'NPEX - NPEX Stock Exchange',
|
273
|
+
'nse' => 'NSE - National Stock Exchange of India',
|
274
|
+
'nsx' => 'NSX - National Stock Exchange of Australia',
|
275
|
+
'nyse' => 'NYSE - New York Stock Exchange',
|
276
|
+
'nysearca' => 'NYSEARCA - NYSE Arca',
|
277
|
+
'nysemkt' => 'NYSEAMERICAN - NYSE American',
|
278
|
+
'nze' => 'NZE - New Zealand Stock Exchange',
|
279
|
+
'ose' => 'OSE - Oslo Stock Exchange',
|
280
|
+
'otcbb' => 'OTCBB - FINRA OTC Bulletin Board',
|
281
|
+
'otcpink' => 'OTC Pink',
|
282
|
+
'otcqb' => 'OTCQB',
|
283
|
+
'otcqx' => 'OTCQX',
|
284
|
+
'pdex' => 'PDEx - Philippine Dealing Exchange',
|
285
|
+
'pex' => 'PEX - Palestine Exchange',
|
286
|
+
'pfts' => 'PFTS - PFTS Ukraine Stock Exchange',
|
287
|
+
'pomsox' => 'POMSoX - Port Moresby Stock Exchange',
|
288
|
+
'prg' => 'PRA - Prague Stock Exchange',
|
289
|
+
'pse' => 'PSE - Philippine Stock Exchange',
|
290
|
+
'psx' => 'PSX - Pakistan Stock Exchange',
|
291
|
+
'qse' => 'QSE - Qatar Stock Exchange',
|
292
|
+
'rfb' => 'RFB - Riga Stock Exchange',
|
293
|
+
'rse' => 'RSE - Rwanda Stock Exchange',
|
294
|
+
'rsebl' => 'RSEBL - Royal Securities Exchange of Bhutan',
|
295
|
+
'sase' => 'SASE - Sarajevo Stock Exchange',
|
296
|
+
'sbx' => 'SBX - BX Swiss',
|
297
|
+
'sehk' => 'SEHK - The Stock Exchange of Hong Kong',
|
298
|
+
'sem' => 'SEM - Stock Exchange of Mauritius',
|
299
|
+
'sgbv' => 'SGBV - Algiers Stock Exchange',
|
300
|
+
'sgx' => 'SGX - Singapore Stock Exchange',
|
301
|
+
'six' => 'SIX - SIX Swiss Exchange',
|
302
|
+
'spbex' => 'SPBEX - Saint Petersburg Stock Exchange',
|
303
|
+
'spse' => 'SPSE - South Pacific Stock Exchange',
|
304
|
+
'sse' => 'SSE - Shanghai Stock Exchange',
|
305
|
+
'ssx' => 'SSX - Sydney Stock Exchange',
|
306
|
+
'sto' => 'STO - Stockholm Stock Exchange',
|
307
|
+
'stu' => 'STU - Börse Stuttgart',
|
308
|
+
'swx' => 'SWX - SIX Swiss Exchange',
|
309
|
+
'szse' => 'SZSE - Shenzhen Stock Exchange',
|
310
|
+
'tadawul' => 'Tadawul - Saudi Stock Exchange',
|
311
|
+
'tal' => 'TSE - Tallinn Stock Exchange',
|
312
|
+
'tfex' => 'TFEX - Thailand Futures Exchange',
|
313
|
+
'tise' => 'TISE - The International Stock Exchange',
|
314
|
+
'tlv' => 'TLV - Tel Aviv Stock Exchange',
|
315
|
+
'tpe' => 'TWSE - Taiwan Stock Exchange',
|
316
|
+
'tse_al' => 'TSE - Tirana Stock Exchange',
|
317
|
+
'tse_ir' => 'TSE - Tehran Stock Exchange',
|
318
|
+
'tsec' => 'TWO - Taiwan OTC Exchange',
|
319
|
+
'tsx' => 'TSX - Toronto Stock Exchange',
|
320
|
+
'ttse' => 'TTSE - Trinidad and Tobago Stock Exchange',
|
321
|
+
'tyo' => 'TYO - Tokyo Stock Exchange',
|
322
|
+
'use' => 'USE - Uganda Securities Exchange',
|
323
|
+
'ux' => 'UX - Ukrainian Exchange',
|
324
|
+
'vie' => 'VIE - Vienna Stock Exchange',
|
325
|
+
'vmf' => 'VMF - Faroese Securities Market',
|
326
|
+
'vse' => 'VSE - Vancouver Stock Exchange',
|
327
|
+
'wse' => 'WSE - Warsaw Stock Exchange',
|
328
|
+
'ysx' => 'YSX - Yangon Stock Exchange',
|
329
|
+
'zamace' => 'ZAMACE - Zambian Commodity Exchange',
|
330
|
+
'zse' => 'ZSE - Zimbabwe Stock Exchange',
|
331
|
+
'zse_hr' => 'ZSE - Zagreb Stock Exchange'
|
332
|
+
}.freeze
|
333
|
+
end
|
334
|
+
end
|
335
|
+
end
|