crisphive 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +90 -11
- data/crisphive.gemspec +5 -5
- data/lib/crisphive/api/business_skill_api.rb +154 -8
- data/lib/crisphive/api/customer_api.rb +15 -12
- data/lib/crisphive/api/job_request_business_api.rb +1002 -112
- data/lib/crisphive/api/job_types_api.rb +6 -2
- data/lib/crisphive/api/service_area_api.rb +6 -6
- data/lib/crisphive/api/technician_api.rb +510 -6
- data/lib/crisphive/api/vehicle_api.rb +6 -6
- data/lib/crisphive/api_client.rb +2 -2
- data/lib/crisphive/api_error.rb +2 -2
- data/lib/crisphive/configuration.rb +3 -3
- data/lib/crisphive/models/commit_emergency_reschedule200_response.rb +253 -0
- data/lib/crisphive/models/commit_job_request_move200_response.rb +253 -0
- data/lib/crisphive/models/create_customer200_response.rb +5 -2
- data/lib/crisphive/models/create_job_request200_response.rb +5 -2
- data/lib/crisphive/models/create_technician200_response.rb +253 -0
- data/lib/crisphive/models/customer.rb +2 -2
- data/lib/crisphive/models/customer_address.rb +2 -2
- data/lib/crisphive/models/customer_address_request.rb +11 -2
- data/lib/crisphive/models/customer_contact.rb +2 -2
- data/lib/crisphive/models/customer_create_request.rb +2 -2
- data/lib/crisphive/models/customer_create_response.rb +2 -2
- data/lib/crisphive/models/customer_list.rb +3 -3
- data/lib/crisphive/models/customer_list_item.rb +2 -2
- data/lib/crisphive/models/customer_profile.rb +2 -2
- data/lib/crisphive/models/customer_spending.rb +2 -2
- data/lib/crisphive/models/customer_tier_progress.rb +2 -2
- data/lib/crisphive/models/customer_update_request.rb +2 -2
- data/lib/crisphive/models/get_customer200_response.rb +5 -2
- data/lib/crisphive/models/get_job_request200_response.rb +5 -2
- data/lib/crisphive/models/get_job_request_timeline200_response.rb +5 -2
- data/lib/crisphive/models/get_job_type200_response.rb +5 -2
- data/lib/crisphive/models/get_service_area200_response.rb +5 -2
- data/lib/crisphive/models/get_technician200_response.rb +5 -2
- data/lib/crisphive/models/get_technician_schedule200_response.rb +253 -0
- data/lib/crisphive/models/get_vehicle200_response.rb +5 -2
- data/lib/crisphive/models/job_date.rb +5 -3
- data/lib/crisphive/models/job_date_business_range.rb +7 -3
- data/lib/crisphive/models/job_date_period.rb +2 -2
- data/lib/crisphive/models/job_date_period_entry.rb +4 -2
- data/lib/crisphive/models/job_request.rb +46 -6
- data/lib/crisphive/models/job_request_action_audit_by.rb +2 -2
- data/lib/crisphive/models/job_request_action_audit_entry.rb +3 -3
- data/lib/crisphive/models/job_request_action_summary.rb +2 -2
- data/lib/crisphive/models/job_request_address_summary.rb +2 -2
- data/lib/crisphive/models/job_request_archive_summary.rb +2 -2
- data/lib/crisphive/models/job_request_arrival_window.rb +4 -4
- data/lib/crisphive/models/job_request_assigned_vehicle.rb +2 -2
- data/lib/crisphive/models/job_request_assignment_summary.rb +2 -2
- data/lib/crisphive/models/job_request_attention_summary.rb +259 -0
- data/lib/crisphive/models/job_request_available_vehicle.rb +235 -0
- data/lib/crisphive/models/job_request_booking_windows.rb +2 -2
- data/lib/crisphive/models/job_request_buddy_slot_candidates.rb +239 -0
- data/lib/crisphive/models/job_request_business_time_range.rb +3 -3
- data/lib/crisphive/models/job_request_changes.rb +2 -2
- data/lib/crisphive/models/job_request_confirm_request.rb +245 -0
- data/lib/crisphive/models/job_request_create_request.rb +60 -6
- data/lib/crisphive/models/job_request_create_response.rb +2 -2
- data/lib/crisphive/models/job_request_crew_candidates.rb +227 -0
- data/lib/crisphive/models/job_request_crew_change.rb +299 -0
- data/lib/crisphive/models/job_request_crew_member.rb +7 -4
- data/lib/crisphive/models/job_request_crew_member_input.rb +284 -0
- data/lib/crisphive/models/job_request_crew_recommendation.rb +255 -0
- data/lib/crisphive/models/job_request_customer_summary.rb +2 -2
- data/lib/crisphive/models/job_request_day_windows.rb +3 -3
- data/lib/crisphive/models/job_request_emergency_candidate.rb +297 -0
- data/lib/crisphive/models/job_request_emergency_candidates.rb +311 -0
- data/lib/crisphive/models/job_request_emergency_candidates_request.rb +328 -0
- data/lib/crisphive/models/job_request_emergency_commit_request.rb +351 -0
- data/lib/crisphive/models/job_request_emergency_plan.rb +345 -0
- data/lib/crisphive/models/job_request_emergency_preview_request.rb +329 -0
- data/lib/crisphive/models/job_request_job_date_business_range_request.rb +3 -3
- data/lib/crisphive/models/job_request_job_date_period_request.rb +2 -2
- data/lib/crisphive/models/job_request_job_date_request.rb +3 -3
- data/lib/crisphive/models/job_request_lead_candidate.rb +311 -0
- data/lib/crisphive/models/job_request_list.rb +2 -2
- data/lib/crisphive/models/job_request_move_commit_req.rb +343 -0
- data/lib/crisphive/models/job_request_move_member.rb +299 -0
- data/lib/crisphive/models/job_request_move_plan.rb +377 -0
- data/lib/crisphive/models/job_request_move_preview_req.rb +290 -0
- data/lib/crisphive/models/job_request_move_warning.rb +311 -0
- data/lib/crisphive/models/job_request_period.rb +2 -2
- data/lib/crisphive/models/job_request_quote_request.rb +340 -0
- data/lib/crisphive/models/job_request_quote_summary.rb +2 -2
- data/lib/crisphive/models/job_request_rating_summary.rb +2 -2
- data/lib/crisphive/models/job_request_reschedule_day.rb +227 -0
- data/lib/crisphive/models/job_request_reschedule_move.rb +319 -0
- data/lib/crisphive/models/job_request_reschedule_reassignment.rb +339 -0
- data/lib/crisphive/models/job_request_schedule.rb +2 -2
- data/lib/crisphive/models/job_request_session.rb +8 -7
- data/lib/crisphive/models/job_request_skill_summary.rb +2 -2
- data/lib/crisphive/models/job_request_status_summary.rb +2 -2
- data/lib/crisphive/models/job_request_tech_candidate.rb +287 -0
- data/lib/crisphive/models/job_request_technician_info.rb +2 -2
- data/lib/crisphive/models/job_request_time_segments.rb +287 -0
- data/lib/crisphive/models/job_request_time_segments_business_time.rb +321 -0
- data/lib/crisphive/models/job_request_time_segments_day.rb +247 -0
- data/lib/crisphive/models/job_request_time_segments_slot.rb +375 -0
- data/lib/crisphive/models/job_request_time_segments_worker.rb +295 -0
- data/lib/crisphive/models/job_request_timeline.rb +2 -2
- data/lib/crisphive/models/job_request_timeline_action.rb +2 -2
- data/lib/crisphive/models/job_request_timeline_event.rb +2 -2
- data/lib/crisphive/models/job_request_update_priority_request.rb +295 -0
- data/lib/crisphive/models/job_type.rb +2 -2
- data/lib/crisphive/models/list_crew_candidates200_response.rb +253 -0
- data/lib/crisphive/models/list_customers200_response.rb +5 -2
- data/lib/crisphive/models/list_emergency_candidates200_response.rb +253 -0
- data/lib/crisphive/models/list_job_request_booking_windows200_response.rb +5 -2
- data/lib/crisphive/models/list_job_request_changes200_response.rb +5 -2
- data/lib/crisphive/models/list_job_requests200_response.rb +5 -2
- data/lib/crisphive/models/list_job_types200_response.rb +5 -2
- data/lib/crisphive/models/list_matching_slots200_response.rb +253 -0
- data/lib/crisphive/models/list_nearby_technicians200_response.rb +253 -0
- data/lib/crisphive/models/list_service_areas200_response.rb +5 -2
- data/lib/crisphive/models/list_skill_categories200_response.rb +5 -2
- data/lib/crisphive/models/list_skills200_response.rb +5 -2
- data/lib/crisphive/models/list_skills_by_category200_response.rb +5 -2
- data/lib/crisphive/models/list_technician_skills200_response.rb +253 -0
- data/lib/crisphive/models/list_technicians200_response.rb +5 -2
- data/lib/crisphive/models/list_vehicles200_response.rb +5 -2
- data/lib/crisphive/models/nearby_technician.rb +319 -0
- data/lib/crisphive/models/nearby_technicians.rb +237 -0
- data/lib/crisphive/models/pagination.rb +7 -2
- data/lib/crisphive/models/replace_technician_service_areas200_response.rb +253 -0
- data/lib/crisphive/models/response_envelope.rb +6 -2
- data/lib/crisphive/models/service_area.rb +2 -2
- data/lib/crisphive/models/service_area_list.rb +2 -2
- data/lib/crisphive/models/skill.rb +9 -2
- data/lib/crisphive/models/skill_by_category_list.rb +4 -2
- data/lib/crisphive/models/skill_category.rb +7 -2
- data/lib/crisphive/models/skill_category_list.rb +4 -2
- data/lib/crisphive/models/skill_list.rb +2 -2
- data/lib/crisphive/models/skill_summary.rb +2 -2
- data/lib/crisphive/models/technician.rb +2 -2
- data/lib/crisphive/models/technician_address.rb +2 -2
- data/lib/crisphive/models/technician_address_input.rb +408 -0
- data/lib/crisphive/models/technician_buddies_request.rb +236 -0
- data/lib/crisphive/models/technician_create_request.rb +600 -0
- data/lib/crisphive/models/technician_create_response.rb +215 -0
- data/lib/crisphive/models/technician_lead_ref.rb +2 -2
- data/lib/crisphive/models/technician_leads_request.rb +236 -0
- data/lib/crisphive/models/technician_list.rb +3 -3
- data/lib/crisphive/models/technician_schedule.rb +279 -0
- data/lib/crisphive/models/technician_schedule_block.rb +225 -0
- data/lib/crisphive/models/technician_schedule_session.rb +311 -0
- data/lib/crisphive/models/technician_service_area_ref.rb +2 -2
- data/lib/crisphive/models/technician_service_areas_request.rb +236 -0
- data/lib/crisphive/models/technician_service_areas_response.rb +217 -0
- data/lib/crisphive/models/technician_skill.rb +265 -0
- data/lib/crisphive/models/technician_skill_list.rb +227 -0
- data/lib/crisphive/models/technician_skills_request.rb +236 -0
- data/lib/crisphive/models/technician_status.rb +2 -2
- data/lib/crisphive/models/technician_update_request.rb +507 -0
- data/lib/crisphive/models/technician_vehicles_request.rb +236 -0
- data/lib/crisphive/models/vehicle.rb +26 -4
- data/lib/crisphive/models/vehicle_list.rb +2 -2
- data/lib/crisphive/models/vehicle_owner.rb +2 -2
- data/lib/crisphive/version.rb +3 -3
- data/lib/crisphive.rb +60 -2
- data/spec/spec_helper.rb +2 -2
- metadata +63 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 71b2a478a83f8320f01b296506cbb17bd70b801b970e18a537af9473d9c9743b
|
|
4
|
+
data.tar.gz: 75572a02ef55d26a27e188166fca4d1d6231f248d4ed360daee199559a4592fb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3eedb643d1a7a07cb41a29db6fc8403d303207e0140e6b8ed05295c98c0641a692244445eadd32e95b618b3dcff23e5954860a366daf9e8c98d457b1a803e628
|
|
7
|
+
data.tar.gz: da14ba0c96b235482afd9e9668e1851f8242ef1b1c073636317b4f166a68ad774aeb2588298eda494bff7231c6855dd07c6da53b15af5d351caac74f308505b6
|
data/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# crisphive
|
|
2
2
|
|
|
3
|
-
Crisphive - the Ruby gem for the
|
|
3
|
+
Crisphive - the Ruby gem for the Crisphive Developer API
|
|
4
4
|
|
|
5
|
-
Public REST API for integrating
|
|
5
|
+
Public REST API for integrating Crisphive from your own backend. Authenticate every request with a secret API key as a Bearer token (`Authorization: Bearer chsk_live_…`). The key prefix selects the data environment: `chsk_live_…` → production (live), `chsk_test_…` → sandbox (isolated test).
|
|
6
6
|
|
|
7
7
|
**Key scopes (restricted keys).** A key is either *full-access* (can call every endpoint below) or *restricted* to a set of permission codes chosen at creation — the same codes as the dashboard permission grid (e.g. `customers_view`, `job_create`, `team_manage`). A restricted key calling an endpoint outside its scope gets `403`. The full code list is the permission catalog (`GET /permission/modules` on the dashboard API). Create, scope, and revoke keys from the business dashboard.
|
|
8
8
|
|
|
@@ -11,7 +11,7 @@ Every response is wrapped in the envelope `{ \"error_code\": 0, \"message\": \"S
|
|
|
11
11
|
This SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
|
|
12
12
|
|
|
13
13
|
- API version: 1.0
|
|
14
|
-
- Package version: 0.
|
|
14
|
+
- Package version: 0.2.0
|
|
15
15
|
- Generator version: 7.11.0
|
|
16
16
|
- Build package: org.openapitools.codegen.languages.RubyClientCodegen
|
|
17
17
|
|
|
@@ -28,16 +28,16 @@ gem build crisphive.gemspec
|
|
|
28
28
|
Then either install the gem locally:
|
|
29
29
|
|
|
30
30
|
```shell
|
|
31
|
-
gem install ./crisphive-0.
|
|
31
|
+
gem install ./crisphive-0.2.0.gem
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
-
(for development, run `gem install --dev ./crisphive-0.
|
|
34
|
+
(for development, run `gem install --dev ./crisphive-0.2.0.gem` to install the development dependencies)
|
|
35
35
|
|
|
36
36
|
or publish the gem to a gem hosting service, e.g. [RubyGems](https://rubygems.org/).
|
|
37
37
|
|
|
38
38
|
Finally add this to the Gemfile:
|
|
39
39
|
|
|
40
|
-
gem 'crisphive', '~> 0.
|
|
40
|
+
gem 'crisphive', '~> 0.2.0'
|
|
41
41
|
|
|
42
42
|
### Install from Git
|
|
43
43
|
|
|
@@ -63,7 +63,7 @@ require 'crisphive'
|
|
|
63
63
|
|
|
64
64
|
# Setup authorization
|
|
65
65
|
Crisphive.configure do |config|
|
|
66
|
-
# Configure Bearer authorization (
|
|
66
|
+
# Configure Bearer authorization (Crisphive secret key): ApiKeyAuth
|
|
67
67
|
config.access_token = 'YOUR_BEARER_TOKEN'
|
|
68
68
|
# Configure a proc to get access tokens in lieu of the static access_token configuration
|
|
69
69
|
config.access_token_getter = -> { 'YOUR TOKEN GETTER PROC' }
|
|
@@ -96,31 +96,55 @@ Class | Method | HTTP request | Description
|
|
|
96
96
|
*Crisphive::BusinessSkillApi* | [**list_skill_categories**](docs/BusinessSkillApi.md#list_skill_categories) | **GET** /skill-categories | List skill categories
|
|
97
97
|
*Crisphive::BusinessSkillApi* | [**list_skills**](docs/BusinessSkillApi.md#list_skills) | **GET** /skills | List all skills
|
|
98
98
|
*Crisphive::BusinessSkillApi* | [**list_skills_by_category**](docs/BusinessSkillApi.md#list_skills_by_category) | **GET** /skill-categories/{id}/skills | List skills in a category
|
|
99
|
+
*Crisphive::BusinessSkillApi* | [**list_technician_skills**](docs/BusinessSkillApi.md#list_technician_skills) | **GET** /technicians/{id}/skills | List skills for a technician
|
|
100
|
+
*Crisphive::BusinessSkillApi* | [**replace_technician_skills**](docs/BusinessSkillApi.md#replace_technician_skills) | **PATCH** /technicians/{id}/skills | Replace a technician's skills
|
|
99
101
|
*Crisphive::CustomerApi* | [**create_customer**](docs/CustomerApi.md#create_customer) | **POST** /customers | Create a customer
|
|
100
102
|
*Crisphive::CustomerApi* | [**delete_customer**](docs/CustomerApi.md#delete_customer) | **DELETE** /customers/{id} | Delete a customer
|
|
101
103
|
*Crisphive::CustomerApi* | [**get_customer**](docs/CustomerApi.md#get_customer) | **GET** /customers/{id} | Get a customer
|
|
102
104
|
*Crisphive::CustomerApi* | [**list_customers**](docs/CustomerApi.md#list_customers) | **GET** /customers | List customers
|
|
103
105
|
*Crisphive::CustomerApi* | [**update_customer**](docs/CustomerApi.md#update_customer) | **PUT** /customers/{id} | Update a customer
|
|
104
|
-
*Crisphive::JobRequestBusinessApi* | [**
|
|
106
|
+
*Crisphive::JobRequestBusinessApi* | [**commit_emergency_reschedule**](docs/JobRequestBusinessApi.md#commit_emergency_reschedule) | **POST** /job-requests/emergency/commit | Commit emergency insert + cascade reschedule
|
|
107
|
+
*Crisphive::JobRequestBusinessApi* | [**commit_job_request_move**](docs/JobRequestBusinessApi.md#commit_job_request_move) | **POST** /job-requests/{id}/move/commit | Commit a schedule-board job move
|
|
108
|
+
*Crisphive::JobRequestBusinessApi* | [**confirm_job_request**](docs/JobRequestBusinessApi.md#confirm_job_request) | **POST** /job-requests/{id}/confirm | Confirm a booking on behalf of the customer
|
|
109
|
+
*Crisphive::JobRequestBusinessApi* | [**create_job_request**](docs/JobRequestBusinessApi.md#create_job_request) | **POST** /job-requests | Create a job request
|
|
105
110
|
*Crisphive::JobRequestBusinessApi* | [**get_job_request**](docs/JobRequestBusinessApi.md#get_job_request) | **GET** /job-requests/{id} | Get a job request
|
|
106
|
-
*Crisphive::JobRequestBusinessApi* | [**get_job_request_timeline**](docs/JobRequestBusinessApi.md#get_job_request_timeline) | **GET** /job-requests/{id}/timeline | Job timeline
|
|
107
|
-
*Crisphive::JobRequestBusinessApi* | [**
|
|
111
|
+
*Crisphive::JobRequestBusinessApi* | [**get_job_request_timeline**](docs/JobRequestBusinessApi.md#get_job_request_timeline) | **GET** /job-requests/{id}/timeline | Job timeline
|
|
112
|
+
*Crisphive::JobRequestBusinessApi* | [**get_technician_schedule**](docs/JobRequestBusinessApi.md#get_technician_schedule) | **GET** /technicians/{id}/schedule | One technician's real schedule (sessions + time off)
|
|
113
|
+
*Crisphive::JobRequestBusinessApi* | [**list_crew_candidates**](docs/JobRequestBusinessApi.md#list_crew_candidates) | **GET** /job-requests/{id}/crew-candidates | Matching crew candidates for a job
|
|
114
|
+
*Crisphive::JobRequestBusinessApi* | [**list_emergency_candidates**](docs/JobRequestBusinessApi.md#list_emergency_candidates) | **POST** /job-requests/emergency/candidates | Rank technicians for a P0 emergency insert
|
|
115
|
+
*Crisphive::JobRequestBusinessApi* | [**list_job_request_booking_windows**](docs/JobRequestBusinessApi.md#list_job_request_booking_windows) | **GET** /job-requests/booking-windows | Booking availability
|
|
108
116
|
*Crisphive::JobRequestBusinessApi* | [**list_job_request_changes**](docs/JobRequestBusinessApi.md#list_job_request_changes) | **GET** /job-requests/changes | Poll for new & changed job requests (sync feed)
|
|
109
117
|
*Crisphive::JobRequestBusinessApi* | [**list_job_requests**](docs/JobRequestBusinessApi.md#list_job_requests) | **GET** /job-requests | List job requests
|
|
118
|
+
*Crisphive::JobRequestBusinessApi* | [**list_matching_slots**](docs/JobRequestBusinessApi.md#list_matching_slots) | **GET** /job-requests/{id}/time-segments | Matching time slots for a quoted job
|
|
119
|
+
*Crisphive::JobRequestBusinessApi* | [**list_nearby_technicians**](docs/JobRequestBusinessApi.md#list_nearby_technicians) | **GET** /technicians/nearby | Find nearby feasible technicians (job-less location query)
|
|
120
|
+
*Crisphive::JobRequestBusinessApi* | [**preview_emergency_reschedule**](docs/JobRequestBusinessApi.md#preview_emergency_reschedule) | **POST** /job-requests/emergency/preview | Preview emergency insert + cascade reschedule
|
|
121
|
+
*Crisphive::JobRequestBusinessApi* | [**preview_job_request_move**](docs/JobRequestBusinessApi.md#preview_job_request_move) | **POST** /job-requests/{id}/move/preview | Preview a schedule-board job move
|
|
122
|
+
*Crisphive::JobRequestBusinessApi* | [**quote_job_request**](docs/JobRequestBusinessApi.md#quote_job_request) | **POST** /job-requests/{id}/quote | Fire quote (FIXED action — business)
|
|
123
|
+
*Crisphive::JobRequestBusinessApi* | [**update_job_priority**](docs/JobRequestBusinessApi.md#update_job_priority) | **PATCH** /job-requests/{id}/priority | Set job priority (scheduling staff)
|
|
110
124
|
*Crisphive::JobTypesApi* | [**get_job_type**](docs/JobTypesApi.md#get_job_type) | **GET** /job-types/{id} | Get a job type
|
|
111
125
|
*Crisphive::JobTypesApi* | [**list_job_types**](docs/JobTypesApi.md#list_job_types) | **GET** /job-types | List job types
|
|
112
126
|
*Crisphive::ServiceAreaApi* | [**get_service_area**](docs/ServiceAreaApi.md#get_service_area) | **GET** /service-areas/{id} | Get a service area
|
|
113
127
|
*Crisphive::ServiceAreaApi* | [**list_service_areas**](docs/ServiceAreaApi.md#list_service_areas) | **GET** /service-areas | List service areas
|
|
128
|
+
*Crisphive::TechnicianApi* | [**create_technician**](docs/TechnicianApi.md#create_technician) | **POST** /technicians | Add a technician
|
|
129
|
+
*Crisphive::TechnicianApi* | [**delete_technician**](docs/TechnicianApi.md#delete_technician) | **DELETE** /technicians/{id} | Remove a technician
|
|
114
130
|
*Crisphive::TechnicianApi* | [**get_technician**](docs/TechnicianApi.md#get_technician) | **GET** /technicians/{id} | Get a technician
|
|
115
131
|
*Crisphive::TechnicianApi* | [**list_technicians**](docs/TechnicianApi.md#list_technicians) | **GET** /technicians | List technicians
|
|
132
|
+
*Crisphive::TechnicianApi* | [**replace_technician_buddies**](docs/TechnicianApi.md#replace_technician_buddies) | **PUT** /technicians/{id}/buddies | Replace a technician's buddies
|
|
133
|
+
*Crisphive::TechnicianApi* | [**replace_technician_leads**](docs/TechnicianApi.md#replace_technician_leads) | **PUT** /technicians/{id}/leads | Replace a buddy's leaders (buddy side)
|
|
134
|
+
*Crisphive::TechnicianApi* | [**replace_technician_service_areas**](docs/TechnicianApi.md#replace_technician_service_areas) | **PUT** /technicians/{id}/service-areas | Replace a technician's service areas
|
|
135
|
+
*Crisphive::TechnicianApi* | [**replace_technician_vehicles**](docs/TechnicianApi.md#replace_technician_vehicles) | **PUT** /technicians/{id}/vehicles | Replace a technician's vehicles
|
|
136
|
+
*Crisphive::TechnicianApi* | [**update_technician**](docs/TechnicianApi.md#update_technician) | **PUT** /technicians/{id} | Update a technician
|
|
116
137
|
*Crisphive::VehicleApi* | [**get_vehicle**](docs/VehicleApi.md#get_vehicle) | **GET** /vehicles/{id} | Get a vehicle
|
|
117
138
|
*Crisphive::VehicleApi* | [**list_vehicles**](docs/VehicleApi.md#list_vehicles) | **GET** /vehicles | List vehicles
|
|
118
139
|
|
|
119
140
|
|
|
120
141
|
## Documentation for Models
|
|
121
142
|
|
|
143
|
+
- [Crisphive::CommitEmergencyReschedule200Response](docs/CommitEmergencyReschedule200Response.md)
|
|
144
|
+
- [Crisphive::CommitJobRequestMove200Response](docs/CommitJobRequestMove200Response.md)
|
|
122
145
|
- [Crisphive::CreateCustomer200Response](docs/CreateCustomer200Response.md)
|
|
123
146
|
- [Crisphive::CreateJobRequest200Response](docs/CreateJobRequest200Response.md)
|
|
147
|
+
- [Crisphive::CreateTechnician200Response](docs/CreateTechnician200Response.md)
|
|
124
148
|
- [Crisphive::Customer](docs/Customer.md)
|
|
125
149
|
- [Crisphive::CustomerAddress](docs/CustomerAddress.md)
|
|
126
150
|
- [Crisphive::CustomerAddressRequest](docs/CustomerAddressRequest.md)
|
|
@@ -139,6 +163,7 @@ Class | Method | HTTP request | Description
|
|
|
139
163
|
- [Crisphive::GetJobType200Response](docs/GetJobType200Response.md)
|
|
140
164
|
- [Crisphive::GetServiceArea200Response](docs/GetServiceArea200Response.md)
|
|
141
165
|
- [Crisphive::GetTechnician200Response](docs/GetTechnician200Response.md)
|
|
166
|
+
- [Crisphive::GetTechnicianSchedule200Response](docs/GetTechnicianSchedule200Response.md)
|
|
142
167
|
- [Crisphive::GetVehicle200Response](docs/GetVehicle200Response.md)
|
|
143
168
|
- [Crisphive::JobDate](docs/JobDate.md)
|
|
144
169
|
- [Crisphive::JobDateBusinessRange](docs/JobDateBusinessRange.md)
|
|
@@ -153,42 +178,81 @@ Class | Method | HTTP request | Description
|
|
|
153
178
|
- [Crisphive::JobRequestArrivalWindow](docs/JobRequestArrivalWindow.md)
|
|
154
179
|
- [Crisphive::JobRequestAssignedVehicle](docs/JobRequestAssignedVehicle.md)
|
|
155
180
|
- [Crisphive::JobRequestAssignmentSummary](docs/JobRequestAssignmentSummary.md)
|
|
181
|
+
- [Crisphive::JobRequestAttentionSummary](docs/JobRequestAttentionSummary.md)
|
|
182
|
+
- [Crisphive::JobRequestAvailableVehicle](docs/JobRequestAvailableVehicle.md)
|
|
156
183
|
- [Crisphive::JobRequestBookingWindows](docs/JobRequestBookingWindows.md)
|
|
184
|
+
- [Crisphive::JobRequestBuddySlotCandidates](docs/JobRequestBuddySlotCandidates.md)
|
|
157
185
|
- [Crisphive::JobRequestBusinessTimeRange](docs/JobRequestBusinessTimeRange.md)
|
|
158
186
|
- [Crisphive::JobRequestChanges](docs/JobRequestChanges.md)
|
|
187
|
+
- [Crisphive::JobRequestConfirmRequest](docs/JobRequestConfirmRequest.md)
|
|
159
188
|
- [Crisphive::JobRequestCreateRequest](docs/JobRequestCreateRequest.md)
|
|
160
189
|
- [Crisphive::JobRequestCreateResponse](docs/JobRequestCreateResponse.md)
|
|
190
|
+
- [Crisphive::JobRequestCrewCandidates](docs/JobRequestCrewCandidates.md)
|
|
191
|
+
- [Crisphive::JobRequestCrewChange](docs/JobRequestCrewChange.md)
|
|
161
192
|
- [Crisphive::JobRequestCrewMember](docs/JobRequestCrewMember.md)
|
|
193
|
+
- [Crisphive::JobRequestCrewMemberInput](docs/JobRequestCrewMemberInput.md)
|
|
194
|
+
- [Crisphive::JobRequestCrewRecommendation](docs/JobRequestCrewRecommendation.md)
|
|
162
195
|
- [Crisphive::JobRequestCustomerSummary](docs/JobRequestCustomerSummary.md)
|
|
163
196
|
- [Crisphive::JobRequestDayWindows](docs/JobRequestDayWindows.md)
|
|
197
|
+
- [Crisphive::JobRequestEmergencyCandidate](docs/JobRequestEmergencyCandidate.md)
|
|
198
|
+
- [Crisphive::JobRequestEmergencyCandidates](docs/JobRequestEmergencyCandidates.md)
|
|
199
|
+
- [Crisphive::JobRequestEmergencyCandidatesRequest](docs/JobRequestEmergencyCandidatesRequest.md)
|
|
200
|
+
- [Crisphive::JobRequestEmergencyCommitRequest](docs/JobRequestEmergencyCommitRequest.md)
|
|
201
|
+
- [Crisphive::JobRequestEmergencyPlan](docs/JobRequestEmergencyPlan.md)
|
|
202
|
+
- [Crisphive::JobRequestEmergencyPreviewRequest](docs/JobRequestEmergencyPreviewRequest.md)
|
|
164
203
|
- [Crisphive::JobRequestJobDateBusinessRangeRequest](docs/JobRequestJobDateBusinessRangeRequest.md)
|
|
165
204
|
- [Crisphive::JobRequestJobDatePeriodRequest](docs/JobRequestJobDatePeriodRequest.md)
|
|
166
205
|
- [Crisphive::JobRequestJobDateRequest](docs/JobRequestJobDateRequest.md)
|
|
206
|
+
- [Crisphive::JobRequestLeadCandidate](docs/JobRequestLeadCandidate.md)
|
|
167
207
|
- [Crisphive::JobRequestList](docs/JobRequestList.md)
|
|
208
|
+
- [Crisphive::JobRequestMoveCommitReq](docs/JobRequestMoveCommitReq.md)
|
|
209
|
+
- [Crisphive::JobRequestMoveMember](docs/JobRequestMoveMember.md)
|
|
210
|
+
- [Crisphive::JobRequestMovePlan](docs/JobRequestMovePlan.md)
|
|
211
|
+
- [Crisphive::JobRequestMovePreviewReq](docs/JobRequestMovePreviewReq.md)
|
|
212
|
+
- [Crisphive::JobRequestMoveWarning](docs/JobRequestMoveWarning.md)
|
|
168
213
|
- [Crisphive::JobRequestPeriod](docs/JobRequestPeriod.md)
|
|
214
|
+
- [Crisphive::JobRequestQuoteRequest](docs/JobRequestQuoteRequest.md)
|
|
169
215
|
- [Crisphive::JobRequestQuoteSummary](docs/JobRequestQuoteSummary.md)
|
|
170
216
|
- [Crisphive::JobRequestRatingSummary](docs/JobRequestRatingSummary.md)
|
|
217
|
+
- [Crisphive::JobRequestRescheduleDay](docs/JobRequestRescheduleDay.md)
|
|
218
|
+
- [Crisphive::JobRequestRescheduleMove](docs/JobRequestRescheduleMove.md)
|
|
219
|
+
- [Crisphive::JobRequestRescheduleReassignment](docs/JobRequestRescheduleReassignment.md)
|
|
171
220
|
- [Crisphive::JobRequestSchedule](docs/JobRequestSchedule.md)
|
|
172
221
|
- [Crisphive::JobRequestSession](docs/JobRequestSession.md)
|
|
173
222
|
- [Crisphive::JobRequestSkillSummary](docs/JobRequestSkillSummary.md)
|
|
174
223
|
- [Crisphive::JobRequestStatusSummary](docs/JobRequestStatusSummary.md)
|
|
224
|
+
- [Crisphive::JobRequestTechCandidate](docs/JobRequestTechCandidate.md)
|
|
175
225
|
- [Crisphive::JobRequestTechnicianInfo](docs/JobRequestTechnicianInfo.md)
|
|
226
|
+
- [Crisphive::JobRequestTimeSegments](docs/JobRequestTimeSegments.md)
|
|
227
|
+
- [Crisphive::JobRequestTimeSegmentsBusinessTime](docs/JobRequestTimeSegmentsBusinessTime.md)
|
|
228
|
+
- [Crisphive::JobRequestTimeSegmentsDay](docs/JobRequestTimeSegmentsDay.md)
|
|
229
|
+
- [Crisphive::JobRequestTimeSegmentsSlot](docs/JobRequestTimeSegmentsSlot.md)
|
|
230
|
+
- [Crisphive::JobRequestTimeSegmentsWorker](docs/JobRequestTimeSegmentsWorker.md)
|
|
176
231
|
- [Crisphive::JobRequestTimeline](docs/JobRequestTimeline.md)
|
|
177
232
|
- [Crisphive::JobRequestTimelineAction](docs/JobRequestTimelineAction.md)
|
|
178
233
|
- [Crisphive::JobRequestTimelineEvent](docs/JobRequestTimelineEvent.md)
|
|
234
|
+
- [Crisphive::JobRequestUpdatePriorityRequest](docs/JobRequestUpdatePriorityRequest.md)
|
|
179
235
|
- [Crisphive::JobType](docs/JobType.md)
|
|
236
|
+
- [Crisphive::ListCrewCandidates200Response](docs/ListCrewCandidates200Response.md)
|
|
180
237
|
- [Crisphive::ListCustomers200Response](docs/ListCustomers200Response.md)
|
|
238
|
+
- [Crisphive::ListEmergencyCandidates200Response](docs/ListEmergencyCandidates200Response.md)
|
|
181
239
|
- [Crisphive::ListJobRequestBookingWindows200Response](docs/ListJobRequestBookingWindows200Response.md)
|
|
182
240
|
- [Crisphive::ListJobRequestChanges200Response](docs/ListJobRequestChanges200Response.md)
|
|
183
241
|
- [Crisphive::ListJobRequests200Response](docs/ListJobRequests200Response.md)
|
|
184
242
|
- [Crisphive::ListJobTypes200Response](docs/ListJobTypes200Response.md)
|
|
243
|
+
- [Crisphive::ListMatchingSlots200Response](docs/ListMatchingSlots200Response.md)
|
|
244
|
+
- [Crisphive::ListNearbyTechnicians200Response](docs/ListNearbyTechnicians200Response.md)
|
|
185
245
|
- [Crisphive::ListServiceAreas200Response](docs/ListServiceAreas200Response.md)
|
|
186
246
|
- [Crisphive::ListSkillCategories200Response](docs/ListSkillCategories200Response.md)
|
|
187
247
|
- [Crisphive::ListSkills200Response](docs/ListSkills200Response.md)
|
|
188
248
|
- [Crisphive::ListSkillsByCategory200Response](docs/ListSkillsByCategory200Response.md)
|
|
249
|
+
- [Crisphive::ListTechnicianSkills200Response](docs/ListTechnicianSkills200Response.md)
|
|
189
250
|
- [Crisphive::ListTechnicians200Response](docs/ListTechnicians200Response.md)
|
|
190
251
|
- [Crisphive::ListVehicles200Response](docs/ListVehicles200Response.md)
|
|
252
|
+
- [Crisphive::NearbyTechnician](docs/NearbyTechnician.md)
|
|
253
|
+
- [Crisphive::NearbyTechnicians](docs/NearbyTechnicians.md)
|
|
191
254
|
- [Crisphive::Pagination](docs/Pagination.md)
|
|
255
|
+
- [Crisphive::ReplaceTechnicianServiceAreas200Response](docs/ReplaceTechnicianServiceAreas200Response.md)
|
|
192
256
|
- [Crisphive::ResponseEnvelope](docs/ResponseEnvelope.md)
|
|
193
257
|
- [Crisphive::ServiceArea](docs/ServiceArea.md)
|
|
194
258
|
- [Crisphive::ServiceAreaList](docs/ServiceAreaList.md)
|
|
@@ -200,10 +264,25 @@ Class | Method | HTTP request | Description
|
|
|
200
264
|
- [Crisphive::SkillSummary](docs/SkillSummary.md)
|
|
201
265
|
- [Crisphive::Technician](docs/Technician.md)
|
|
202
266
|
- [Crisphive::TechnicianAddress](docs/TechnicianAddress.md)
|
|
267
|
+
- [Crisphive::TechnicianAddressInput](docs/TechnicianAddressInput.md)
|
|
268
|
+
- [Crisphive::TechnicianBuddiesRequest](docs/TechnicianBuddiesRequest.md)
|
|
269
|
+
- [Crisphive::TechnicianCreateRequest](docs/TechnicianCreateRequest.md)
|
|
270
|
+
- [Crisphive::TechnicianCreateResponse](docs/TechnicianCreateResponse.md)
|
|
203
271
|
- [Crisphive::TechnicianLeadRef](docs/TechnicianLeadRef.md)
|
|
272
|
+
- [Crisphive::TechnicianLeadsRequest](docs/TechnicianLeadsRequest.md)
|
|
204
273
|
- [Crisphive::TechnicianList](docs/TechnicianList.md)
|
|
274
|
+
- [Crisphive::TechnicianSchedule](docs/TechnicianSchedule.md)
|
|
275
|
+
- [Crisphive::TechnicianScheduleBlock](docs/TechnicianScheduleBlock.md)
|
|
276
|
+
- [Crisphive::TechnicianScheduleSession](docs/TechnicianScheduleSession.md)
|
|
205
277
|
- [Crisphive::TechnicianServiceAreaRef](docs/TechnicianServiceAreaRef.md)
|
|
278
|
+
- [Crisphive::TechnicianServiceAreasRequest](docs/TechnicianServiceAreasRequest.md)
|
|
279
|
+
- [Crisphive::TechnicianServiceAreasResponse](docs/TechnicianServiceAreasResponse.md)
|
|
280
|
+
- [Crisphive::TechnicianSkill](docs/TechnicianSkill.md)
|
|
281
|
+
- [Crisphive::TechnicianSkillList](docs/TechnicianSkillList.md)
|
|
282
|
+
- [Crisphive::TechnicianSkillsRequest](docs/TechnicianSkillsRequest.md)
|
|
206
283
|
- [Crisphive::TechnicianStatus](docs/TechnicianStatus.md)
|
|
284
|
+
- [Crisphive::TechnicianUpdateRequest](docs/TechnicianUpdateRequest.md)
|
|
285
|
+
- [Crisphive::TechnicianVehiclesRequest](docs/TechnicianVehiclesRequest.md)
|
|
207
286
|
- [Crisphive::Vehicle](docs/Vehicle.md)
|
|
208
287
|
- [Crisphive::VehicleList](docs/VehicleList.md)
|
|
209
288
|
- [Crisphive::VehicleOwner](docs/VehicleOwner.md)
|
|
@@ -215,5 +294,5 @@ Class | Method | HTTP request | Description
|
|
|
215
294
|
Authentication schemes defined for the API:
|
|
216
295
|
### ApiKeyAuth
|
|
217
296
|
|
|
218
|
-
- **Type**: Bearer authentication (
|
|
297
|
+
- **Type**: Bearer authentication (Crisphive secret key)
|
|
219
298
|
|
data/crisphive.gemspec
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
2
|
|
|
3
3
|
=begin
|
|
4
|
-
#
|
|
4
|
+
#Crisphive Developer API
|
|
5
5
|
|
|
6
|
-
#Public REST API for integrating
|
|
6
|
+
#Public REST API for integrating Crisphive from your own backend. Authenticate every request with a secret API key as a Bearer token (`Authorization: Bearer chsk_live_…`). The key prefix selects the data environment: `chsk_live_…` → production (live), `chsk_test_…` → sandbox (isolated test). **Key scopes (restricted keys).** A key is either *full-access* (can call every endpoint below) or *restricted* to a set of permission codes chosen at creation — the same codes as the dashboard permission grid (e.g. `customers_view`, `job_create`, `team_manage`). A restricted key calling an endpoint outside its scope gets `403`. The full code list is the permission catalog (`GET /permission/modules` on the dashboard API). Create, scope, and revoke keys from the business dashboard. Every response is wrapped in the envelope `{ \"error_code\": 0, \"message\": \"Success\", \"data\": <payload> }`.
|
|
7
7
|
|
|
8
8
|
The version of the OpenAPI document: 1.0
|
|
9
9
|
|
|
@@ -19,11 +19,11 @@ Gem::Specification.new do |s|
|
|
|
19
19
|
s.name = "crisphive"
|
|
20
20
|
s.version = Crisphive::VERSION
|
|
21
21
|
s.platform = Gem::Platform::RUBY
|
|
22
|
-
s.authors = ["
|
|
22
|
+
s.authors = ["Crisphive"]
|
|
23
23
|
s.email = ["developer@crisphive.com"]
|
|
24
24
|
s.homepage = "https://docs.crisphive.com"
|
|
25
|
-
s.summary = "Official Ruby SDK for the
|
|
26
|
-
s.description = "Official Ruby SDK for the
|
|
25
|
+
s.summary = "Official Ruby SDK for the Crisphive API"
|
|
26
|
+
s.description = "Official Ruby SDK for the Crisphive API. Typed access to the public /v1 API - customers, bookings, catalog, team and fleet."
|
|
27
27
|
s.license = "MIT"
|
|
28
28
|
s.required_ruby_version = ">= 2.7"
|
|
29
29
|
s.metadata = { "source_code_uri" => "https://github.com/crisphive/crisphive-ruby", "documentation_uri" => "https://docs.crisphive.com" }
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
=begin
|
|
2
|
-
#
|
|
2
|
+
#Crisphive Developer API
|
|
3
3
|
|
|
4
|
-
#Public REST API for integrating
|
|
4
|
+
#Public REST API for integrating Crisphive from your own backend. Authenticate every request with a secret API key as a Bearer token (`Authorization: Bearer chsk_live_…`). The key prefix selects the data environment: `chsk_live_…` → production (live), `chsk_test_…` → sandbox (isolated test). **Key scopes (restricted keys).** A key is either *full-access* (can call every endpoint below) or *restricted* to a set of permission codes chosen at creation — the same codes as the dashboard permission grid (e.g. `customers_view`, `job_create`, `team_manage`). A restricted key calling an endpoint outside its scope gets `403`. The full code list is the permission catalog (`GET /permission/modules` on the dashboard API). Create, scope, and revoke keys from the business dashboard. Every response is wrapped in the envelope `{ \"error_code\": 0, \"message\": \"Success\", \"data\": <payload> }`.
|
|
5
5
|
|
|
6
6
|
The version of the OpenAPI document: 1.0
|
|
7
7
|
|
|
@@ -20,7 +20,7 @@ module Crisphive
|
|
|
20
20
|
@api_client = api_client
|
|
21
21
|
end
|
|
22
22
|
# List skill categories
|
|
23
|
-
# Returns paginated skill categories
|
|
23
|
+
# Returns paginated skill categories — how the business groups technician qualifications by trade or specialty (e.g. HVAC, plumbing, electrical) — ordered alphabetically.
|
|
24
24
|
# @param [Hash] opts the optional parameters
|
|
25
25
|
# @option opts [Integer] :page Page number (default: 1)
|
|
26
26
|
# @option opts [Integer] :limit Page size (default: 15, max: 1000)
|
|
@@ -31,7 +31,7 @@ module Crisphive
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
# List skill categories
|
|
34
|
-
# Returns paginated skill categories
|
|
34
|
+
# Returns paginated skill categories — how the business groups technician qualifications by trade or specialty (e.g. HVAC, plumbing, electrical) — ordered alphabetically.
|
|
35
35
|
# @param [Hash] opts the optional parameters
|
|
36
36
|
# @option opts [Integer] :page Page number (default: 1)
|
|
37
37
|
# @option opts [Integer] :limit Page size (default: 15, max: 1000)
|
|
@@ -83,7 +83,7 @@ module Crisphive
|
|
|
83
83
|
end
|
|
84
84
|
|
|
85
85
|
# List all skills
|
|
86
|
-
# Returns the flat list of all active skills for the current business
|
|
86
|
+
# Returns the flat list of all active technician skills / qualifications for the current business — the vocabulary the dispatch engine uses for skill-based matching when assigning technicians and crews. Use it to discover the skill UUIDs accepted in `skill_ids` when creating a job request. (For a category-grouped view, use GET /skill-categories and GET /skill-categories/{id}/skills.)
|
|
87
87
|
# @param [Hash] opts the optional parameters
|
|
88
88
|
# @return [ListSkills200Response]
|
|
89
89
|
def list_skills(opts = {})
|
|
@@ -92,7 +92,7 @@ module Crisphive
|
|
|
92
92
|
end
|
|
93
93
|
|
|
94
94
|
# List all skills
|
|
95
|
-
# Returns the flat list of all active skills for the current business
|
|
95
|
+
# Returns the flat list of all active technician skills / qualifications for the current business — the vocabulary the dispatch engine uses for skill-based matching when assigning technicians and crews. Use it to discover the skill UUIDs accepted in `skill_ids` when creating a job request. (For a category-grouped view, use GET /skill-categories and GET /skill-categories/{id}/skills.)
|
|
96
96
|
# @param [Hash] opts the optional parameters
|
|
97
97
|
# @return [Array<(ListSkills200Response, Integer, Hash)>] ListSkills200Response data, response status code and response headers
|
|
98
98
|
def list_skills_with_http_info(opts = {})
|
|
@@ -140,7 +140,7 @@ module Crisphive
|
|
|
140
140
|
end
|
|
141
141
|
|
|
142
142
|
# List skills in a category
|
|
143
|
-
# Returns paginated skills belonging to the given category, ordered alphabetically. The `members` field on each skill is the count of active technicians currently
|
|
143
|
+
# Returns paginated skills (technician qualifications/certifications) belonging to the given trade/specialty category, ordered alphabetically. The `members` field on each skill is the count of active technicians currently holding it — a quick capacity check per capability.
|
|
144
144
|
# @param id [String] Skill category ID (UUID)
|
|
145
145
|
# @param [Hash] opts the optional parameters
|
|
146
146
|
# @option opts [Integer] :page Page number (default: 1)
|
|
@@ -152,7 +152,7 @@ module Crisphive
|
|
|
152
152
|
end
|
|
153
153
|
|
|
154
154
|
# List skills in a category
|
|
155
|
-
# Returns paginated skills belonging to the given category, ordered alphabetically. The `members` field on each skill is the count of active technicians currently
|
|
155
|
+
# Returns paginated skills (technician qualifications/certifications) belonging to the given trade/specialty category, ordered alphabetically. The `members` field on each skill is the count of active technicians currently holding it — a quick capacity check per capability.
|
|
156
156
|
# @param id [String] Skill category ID (UUID)
|
|
157
157
|
# @param [Hash] opts the optional parameters
|
|
158
158
|
# @option opts [Integer] :page Page number (default: 1)
|
|
@@ -207,5 +207,151 @@ module Crisphive
|
|
|
207
207
|
end
|
|
208
208
|
return data, status_code, headers
|
|
209
209
|
end
|
|
210
|
+
|
|
211
|
+
# List skills for a technician
|
|
212
|
+
# Returns paginated skills assigned to the technician. By default (`eligible_only` omitted or `true`) only active skills are returned — pass `eligible_only=false` to include inactive skills.
|
|
213
|
+
# @param id [String] Technician ID — business_user_profiles.id (UUID)
|
|
214
|
+
# @param [Hash] opts the optional parameters
|
|
215
|
+
# @option opts [Boolean] :eligible_only true (default) = active skills only; false = all assigned skills including inactive
|
|
216
|
+
# @option opts [Integer] :page Page number (default: 1)
|
|
217
|
+
# @option opts [Integer] :limit Page size (default: 15, max: 1000)
|
|
218
|
+
# @return [ListTechnicianSkills200Response]
|
|
219
|
+
def list_technician_skills(id, opts = {})
|
|
220
|
+
data, _status_code, _headers = list_technician_skills_with_http_info(id, opts)
|
|
221
|
+
data
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
# List skills for a technician
|
|
225
|
+
# Returns paginated skills assigned to the technician. By default (`eligible_only` omitted or `true`) only active skills are returned — pass `eligible_only=false` to include inactive skills.
|
|
226
|
+
# @param id [String] Technician ID — business_user_profiles.id (UUID)
|
|
227
|
+
# @param [Hash] opts the optional parameters
|
|
228
|
+
# @option opts [Boolean] :eligible_only true (default) = active skills only; false = all assigned skills including inactive
|
|
229
|
+
# @option opts [Integer] :page Page number (default: 1)
|
|
230
|
+
# @option opts [Integer] :limit Page size (default: 15, max: 1000)
|
|
231
|
+
# @return [Array<(ListTechnicianSkills200Response, Integer, Hash)>] ListTechnicianSkills200Response data, response status code and response headers
|
|
232
|
+
def list_technician_skills_with_http_info(id, opts = {})
|
|
233
|
+
if @api_client.config.debugging
|
|
234
|
+
@api_client.config.logger.debug 'Calling API: BusinessSkillApi.list_technician_skills ...'
|
|
235
|
+
end
|
|
236
|
+
# verify the required parameter 'id' is set
|
|
237
|
+
if @api_client.config.client_side_validation && id.nil?
|
|
238
|
+
fail ArgumentError, "Missing the required parameter 'id' when calling BusinessSkillApi.list_technician_skills"
|
|
239
|
+
end
|
|
240
|
+
# resource path
|
|
241
|
+
local_var_path = '/technicians/{id}/skills'.sub('{' + 'id' + '}', CGI.escape(id.to_s))
|
|
242
|
+
|
|
243
|
+
# query parameters
|
|
244
|
+
query_params = opts[:query_params] || {}
|
|
245
|
+
query_params[:'eligible_only'] = opts[:'eligible_only'] if !opts[:'eligible_only'].nil?
|
|
246
|
+
query_params[:'page'] = opts[:'page'] if !opts[:'page'].nil?
|
|
247
|
+
query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
|
|
248
|
+
|
|
249
|
+
# header parameters
|
|
250
|
+
header_params = opts[:header_params] || {}
|
|
251
|
+
# HTTP header 'Accept' (if needed)
|
|
252
|
+
header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
|
|
253
|
+
|
|
254
|
+
# form parameters
|
|
255
|
+
form_params = opts[:form_params] || {}
|
|
256
|
+
|
|
257
|
+
# http body (model)
|
|
258
|
+
post_body = opts[:debug_body]
|
|
259
|
+
|
|
260
|
+
# return_type
|
|
261
|
+
return_type = opts[:debug_return_type] || 'ListTechnicianSkills200Response'
|
|
262
|
+
|
|
263
|
+
# auth_names
|
|
264
|
+
auth_names = opts[:debug_auth_names] || ['ApiKeyAuth']
|
|
265
|
+
|
|
266
|
+
new_options = opts.merge(
|
|
267
|
+
:operation => :"BusinessSkillApi.list_technician_skills",
|
|
268
|
+
:header_params => header_params,
|
|
269
|
+
:query_params => query_params,
|
|
270
|
+
:form_params => form_params,
|
|
271
|
+
:body => post_body,
|
|
272
|
+
:auth_names => auth_names,
|
|
273
|
+
:return_type => return_type
|
|
274
|
+
)
|
|
275
|
+
|
|
276
|
+
data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
|
|
277
|
+
if @api_client.config.debugging
|
|
278
|
+
@api_client.config.logger.debug "API called: BusinessSkillApi#list_technician_skills\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
279
|
+
end
|
|
280
|
+
return data, status_code, headers
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
# Replace a technician's skills
|
|
284
|
+
# Sets the technician's full skill set in one call (replace semantics): skills not in the list are removed, new ones added. Pass an empty list to clear all. All skills must be active and belong to the business — on SKILL_NOT_FOUND (404) the `data` field contains `{\"missing_ids\": [\"uuid\", ...]}`; on SKILL_INACTIVE (409) it contains `{\"inactive_ids\": [\"uuid\", ...]}`.
|
|
285
|
+
# @param id [String] Technician ID — business_user_profiles.id (UUID)
|
|
286
|
+
# @param technician_skills_request [TechnicianSkillsRequest] Full list of skill_ids (business_skills.id), 0–100 UUIDs
|
|
287
|
+
# @param [Hash] opts the optional parameters
|
|
288
|
+
# @return [ResponseEnvelope]
|
|
289
|
+
def replace_technician_skills(id, technician_skills_request, opts = {})
|
|
290
|
+
data, _status_code, _headers = replace_technician_skills_with_http_info(id, technician_skills_request, opts)
|
|
291
|
+
data
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
# Replace a technician's skills
|
|
295
|
+
# Sets the technician's full skill set in one call (replace semantics): skills not in the list are removed, new ones added. Pass an empty list to clear all. All skills must be active and belong to the business — on SKILL_NOT_FOUND (404) the `data` field contains `{\"missing_ids\": [\"uuid\", ...]}`; on SKILL_INACTIVE (409) it contains `{\"inactive_ids\": [\"uuid\", ...]}`.
|
|
296
|
+
# @param id [String] Technician ID — business_user_profiles.id (UUID)
|
|
297
|
+
# @param technician_skills_request [TechnicianSkillsRequest] Full list of skill_ids (business_skills.id), 0–100 UUIDs
|
|
298
|
+
# @param [Hash] opts the optional parameters
|
|
299
|
+
# @return [Array<(ResponseEnvelope, Integer, Hash)>] ResponseEnvelope data, response status code and response headers
|
|
300
|
+
def replace_technician_skills_with_http_info(id, technician_skills_request, opts = {})
|
|
301
|
+
if @api_client.config.debugging
|
|
302
|
+
@api_client.config.logger.debug 'Calling API: BusinessSkillApi.replace_technician_skills ...'
|
|
303
|
+
end
|
|
304
|
+
# verify the required parameter 'id' is set
|
|
305
|
+
if @api_client.config.client_side_validation && id.nil?
|
|
306
|
+
fail ArgumentError, "Missing the required parameter 'id' when calling BusinessSkillApi.replace_technician_skills"
|
|
307
|
+
end
|
|
308
|
+
# verify the required parameter 'technician_skills_request' is set
|
|
309
|
+
if @api_client.config.client_side_validation && technician_skills_request.nil?
|
|
310
|
+
fail ArgumentError, "Missing the required parameter 'technician_skills_request' when calling BusinessSkillApi.replace_technician_skills"
|
|
311
|
+
end
|
|
312
|
+
# resource path
|
|
313
|
+
local_var_path = '/technicians/{id}/skills'.sub('{' + 'id' + '}', CGI.escape(id.to_s))
|
|
314
|
+
|
|
315
|
+
# query parameters
|
|
316
|
+
query_params = opts[:query_params] || {}
|
|
317
|
+
|
|
318
|
+
# header parameters
|
|
319
|
+
header_params = opts[:header_params] || {}
|
|
320
|
+
# HTTP header 'Accept' (if needed)
|
|
321
|
+
header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
|
|
322
|
+
# HTTP header 'Content-Type'
|
|
323
|
+
content_type = @api_client.select_header_content_type(['application/json'])
|
|
324
|
+
if !content_type.nil?
|
|
325
|
+
header_params['Content-Type'] = content_type
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
# form parameters
|
|
329
|
+
form_params = opts[:form_params] || {}
|
|
330
|
+
|
|
331
|
+
# http body (model)
|
|
332
|
+
post_body = opts[:debug_body] || @api_client.object_to_http_body(technician_skills_request)
|
|
333
|
+
|
|
334
|
+
# return_type
|
|
335
|
+
return_type = opts[:debug_return_type] || 'ResponseEnvelope'
|
|
336
|
+
|
|
337
|
+
# auth_names
|
|
338
|
+
auth_names = opts[:debug_auth_names] || ['ApiKeyAuth']
|
|
339
|
+
|
|
340
|
+
new_options = opts.merge(
|
|
341
|
+
:operation => :"BusinessSkillApi.replace_technician_skills",
|
|
342
|
+
:header_params => header_params,
|
|
343
|
+
:query_params => query_params,
|
|
344
|
+
:form_params => form_params,
|
|
345
|
+
:body => post_body,
|
|
346
|
+
:auth_names => auth_names,
|
|
347
|
+
:return_type => return_type
|
|
348
|
+
)
|
|
349
|
+
|
|
350
|
+
data, status_code, headers = @api_client.call_api(:PATCH, local_var_path, new_options)
|
|
351
|
+
if @api_client.config.debugging
|
|
352
|
+
@api_client.config.logger.debug "API called: BusinessSkillApi#replace_technician_skills\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
353
|
+
end
|
|
354
|
+
return data, status_code, headers
|
|
355
|
+
end
|
|
210
356
|
end
|
|
211
357
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
=begin
|
|
2
|
-
#
|
|
2
|
+
#Crisphive Developer API
|
|
3
3
|
|
|
4
|
-
#Public REST API for integrating
|
|
4
|
+
#Public REST API for integrating Crisphive from your own backend. Authenticate every request with a secret API key as a Bearer token (`Authorization: Bearer chsk_live_…`). The key prefix selects the data environment: `chsk_live_…` → production (live), `chsk_test_…` → sandbox (isolated test). **Key scopes (restricted keys).** A key is either *full-access* (can call every endpoint below) or *restricted* to a set of permission codes chosen at creation — the same codes as the dashboard permission grid (e.g. `customers_view`, `job_create`, `team_manage`). A restricted key calling an endpoint outside its scope gets `403`. The full code list is the permission catalog (`GET /permission/modules` on the dashboard API). Create, scope, and revoke keys from the business dashboard. Every response is wrapped in the envelope `{ \"error_code\": 0, \"message\": \"Success\", \"data\": <payload> }`.
|
|
5
5
|
|
|
6
6
|
The version of the OpenAPI document: 1.0
|
|
7
7
|
|
|
@@ -20,9 +20,10 @@ module Crisphive
|
|
|
20
20
|
@api_client = api_client
|
|
21
21
|
end
|
|
22
22
|
# Create a customer
|
|
23
|
-
#
|
|
23
|
+
# Creates a customer record — the client/account profile a job request (work order) is booked against; use it to import or sync customers from your own CRM, website lead form or intake flow. Address (street, city, postal_code, ...) and coordinates (latitude/longitude) live under the nested `address` object. service_area_id must be a valid service area UUID belonging to this business.
|
|
24
24
|
# @param customer_create_request [CustomerCreateRequest] Customer details
|
|
25
25
|
# @param [Hash] opts the optional parameters
|
|
26
|
+
# @option opts [String] :idempotency_key Unique key making retries safe: a repeat send with the same key replays the original response (header Idempotent-Replayed: true) instead of re-running the operation. Reusing a key with a different body returns 422 IDEMPOTENCY_KEY_REUSE.
|
|
26
27
|
# @return [CreateCustomer200Response]
|
|
27
28
|
def create_customer(customer_create_request, opts = {})
|
|
28
29
|
data, _status_code, _headers = create_customer_with_http_info(customer_create_request, opts)
|
|
@@ -30,9 +31,10 @@ module Crisphive
|
|
|
30
31
|
end
|
|
31
32
|
|
|
32
33
|
# Create a customer
|
|
33
|
-
#
|
|
34
|
+
# Creates a customer record — the client/account profile a job request (work order) is booked against; use it to import or sync customers from your own CRM, website lead form or intake flow. Address (street, city, postal_code, ...) and coordinates (latitude/longitude) live under the nested `address` object. service_area_id must be a valid service area UUID belonging to this business.
|
|
34
35
|
# @param customer_create_request [CustomerCreateRequest] Customer details
|
|
35
36
|
# @param [Hash] opts the optional parameters
|
|
37
|
+
# @option opts [String] :idempotency_key Unique key making retries safe: a repeat send with the same key replays the original response (header Idempotent-Replayed: true) instead of re-running the operation. Reusing a key with a different body returns 422 IDEMPOTENCY_KEY_REUSE.
|
|
36
38
|
# @return [Array<(CreateCustomer200Response, Integer, Hash)>] CreateCustomer200Response data, response status code and response headers
|
|
37
39
|
def create_customer_with_http_info(customer_create_request, opts = {})
|
|
38
40
|
if @api_client.config.debugging
|
|
@@ -57,6 +59,7 @@ module Crisphive
|
|
|
57
59
|
if !content_type.nil?
|
|
58
60
|
header_params['Content-Type'] = content_type
|
|
59
61
|
end
|
|
62
|
+
header_params[:'Idempotency-Key'] = opts[:'idempotency_key'] if !opts[:'idempotency_key'].nil?
|
|
60
63
|
|
|
61
64
|
# form parameters
|
|
62
65
|
form_params = opts[:form_params] || {}
|
|
@@ -88,7 +91,7 @@ module Crisphive
|
|
|
88
91
|
end
|
|
89
92
|
|
|
90
93
|
# Delete a customer
|
|
91
|
-
# Soft-deletes a customer record.
|
|
94
|
+
# Soft-deletes a customer record, removing it from the active customer directory; existing bookings keep their customer snapshot.
|
|
92
95
|
# @param id [String] Customer ID
|
|
93
96
|
# @param [Hash] opts the optional parameters
|
|
94
97
|
# @return [ResponseEnvelope]
|
|
@@ -98,7 +101,7 @@ module Crisphive
|
|
|
98
101
|
end
|
|
99
102
|
|
|
100
103
|
# Delete a customer
|
|
101
|
-
# Soft-deletes a customer record.
|
|
104
|
+
# Soft-deletes a customer record, removing it from the active customer directory; existing bookings keep their customer snapshot.
|
|
102
105
|
# @param id [String] Customer ID
|
|
103
106
|
# @param [Hash] opts the optional parameters
|
|
104
107
|
# @return [Array<(ResponseEnvelope, Integer, Hash)>] ResponseEnvelope data, response status code and response headers
|
|
@@ -151,7 +154,7 @@ module Crisphive
|
|
|
151
154
|
end
|
|
152
155
|
|
|
153
156
|
# Get a customer
|
|
154
|
-
# Returns the full profile, contact details and spending summary. contact.preferred_technician includes {id, name}. contact.service_area includes {id, name}. contact.address.latitude / contact.address.longitude are null if no coordinates saved.
|
|
157
|
+
# Returns the full customer record: profile, contact details, tier and lifetime spending summary — a 360° client view for support, upsell or CRM enrichment. contact.preferred_technician includes {id, name}. contact.service_area includes {id, name}. contact.address.latitude / contact.address.longitude are null if no coordinates saved.
|
|
155
158
|
# @param id [String] Customer ID (UUID)
|
|
156
159
|
# @param [Hash] opts the optional parameters
|
|
157
160
|
# @return [GetCustomer200Response]
|
|
@@ -161,7 +164,7 @@ module Crisphive
|
|
|
161
164
|
end
|
|
162
165
|
|
|
163
166
|
# Get a customer
|
|
164
|
-
# Returns the full profile, contact details and spending summary. contact.preferred_technician includes {id, name}. contact.service_area includes {id, name}. contact.address.latitude / contact.address.longitude are null if no coordinates saved.
|
|
167
|
+
# Returns the full customer record: profile, contact details, tier and lifetime spending summary — a 360° client view for support, upsell or CRM enrichment. contact.preferred_technician includes {id, name}. contact.service_area includes {id, name}. contact.address.latitude / contact.address.longitude are null if no coordinates saved.
|
|
165
168
|
# @param id [String] Customer ID (UUID)
|
|
166
169
|
# @param [Hash] opts the optional parameters
|
|
167
170
|
# @return [Array<(GetCustomer200Response, Integer, Hash)>] GetCustomer200Response data, response status code and response headers
|
|
@@ -214,7 +217,7 @@ module Crisphive
|
|
|
214
217
|
end
|
|
215
218
|
|
|
216
219
|
# List customers
|
|
217
|
-
# Returns a paginated, searchable
|
|
220
|
+
# Returns a paginated, searchable directory of the business's customer records — the customer database (CRM) behind every booking and work order. Supports the `since`/`next_since` cursor for incremental sync into an external CRM, ERP or marketing tool.
|
|
218
221
|
# @param [Hash] opts the optional parameters
|
|
219
222
|
# @option opts [String] :q Search name, UID, phone, email
|
|
220
223
|
# @option opts [Array<String>] :tier Filter by tier: regular|vip (repeatable)
|
|
@@ -231,7 +234,7 @@ module Crisphive
|
|
|
231
234
|
end
|
|
232
235
|
|
|
233
236
|
# List customers
|
|
234
|
-
# Returns a paginated, searchable
|
|
237
|
+
# Returns a paginated, searchable directory of the business's customer records — the customer database (CRM) behind every booking and work order. Supports the `since`/`next_since` cursor for incremental sync into an external CRM, ERP or marketing tool.
|
|
235
238
|
# @param [Hash] opts the optional parameters
|
|
236
239
|
# @option opts [String] :q Search name, UID, phone, email
|
|
237
240
|
# @option opts [Array<String>] :tier Filter by tier: regular|vip (repeatable)
|
|
@@ -295,7 +298,7 @@ module Crisphive
|
|
|
295
298
|
end
|
|
296
299
|
|
|
297
300
|
# Update a customer
|
|
298
|
-
# Replaces mutable fields on a customer record. Pass service_area_id=\"\" to clear the service area. Address fields (including latitude/longitude) live under the nested `address` object.
|
|
301
|
+
# Replaces mutable fields on a customer record — two-way CRM sync friendly (push changes from your system of record). Pass service_area_id=\"\" to clear the service area. Address fields (including latitude/longitude) live under the nested `address` object.
|
|
299
302
|
# @param id [String] Customer ID (UUID)
|
|
300
303
|
# @param customer_update_request [CustomerUpdateRequest] Fields to update
|
|
301
304
|
# @param [Hash] opts the optional parameters
|
|
@@ -306,7 +309,7 @@ module Crisphive
|
|
|
306
309
|
end
|
|
307
310
|
|
|
308
311
|
# Update a customer
|
|
309
|
-
# Replaces mutable fields on a customer record. Pass service_area_id=\"\" to clear the service area. Address fields (including latitude/longitude) live under the nested `address` object.
|
|
312
|
+
# Replaces mutable fields on a customer record — two-way CRM sync friendly (push changes from your system of record). Pass service_area_id=\"\" to clear the service area. Address fields (including latitude/longitude) live under the nested `address` object.
|
|
310
313
|
# @param id [String] Customer ID (UUID)
|
|
311
314
|
# @param customer_update_request [CustomerUpdateRequest] Fields to update
|
|
312
315
|
# @param [Hash] opts the optional parameters
|