Class: NewStoreApi::JobsController

Inherits:
BaseController show all
Defined in:
lib/new_store_api/controllers/jobs_controller.rb

Overview

JobsController

Constant Summary

Constants inherited from BaseController

BaseController::GLOBAL_ERRORS

Instance Attribute Summary

Attributes inherited from BaseController

#config, #http_call_back

Instance Method Summary collapse

Methods inherited from BaseController

#initialize, #new_parameter, #new_request_builder, #new_response_handler, user_agent

Constructor Details

This class inherits a constructor from NewStoreApi::BaseController

Instance Method Details

#create_job(x_new_store_tenant, body, store_id: nil, user_id: nil, format: 'json') ⇒ JobIdResponse | SyncJobResponse

🚧 BETA: This endpoint is in beta and may change.
See API Lifecycle Documentation for details.
Create a new export job (synchronous or asynchronous) here ID ID 'json' or 'csv'

Parameters:

  • x_new_store_tenant (String)

    Required parameter: Tenant identifier

  • body (CreateJobRequest)

    Required parameter: TODO: type description

  • store_id (String | Object | nil) (defaults to: nil)

    Optional parameter: Optional store

  • user_id (String | Object | nil) (defaults to: nil)

    Optional parameter: Optional user

  • format (String) (defaults to: 'json')

    Optional parameter: Export format for sync jobs:

Returns:



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/new_store_api/controllers/jobs_controller.rb', line 90

def create_job(x_new_store_tenant,
               body,
               store_id: nil,
               user_id: nil,
               format: 'json')
  @api_call
    .request(new_request_builder(HttpMethodEnum::POST,
                                 '/data-exports/jobs',
                                 Server::API)
               .header_param(new_parameter(x_new_store_tenant, key: 'X-NewStore-Tenant'))
               .header_param(new_parameter('application/json', key: 'Content-Type'))
               .body_param(new_parameter(body))
               .query_param(new_parameter(store_id, key: 'store_id')
                             .validator(proc do |value|
                               UnionTypeLookUp.get(:CreateJobStoreId)
                                              .validate(value)
                             end))
               .query_param(new_parameter(user_id, key: 'user_id')
                             .validator(proc do |value|
                               UnionTypeLookUp.get(:CreateJobUserId)
                                              .validate(value)
                             end))
               .query_param(new_parameter(format, key: 'format'))
               .header_param(new_parameter('application/json', key: 'accept'))
               .body_serializer(proc do |param| param.to_json unless param.nil? end)
               .auth(Single.new('oauth')))
    .response(new_response_handler
                .deserializer(proc do |response, should_symbolize|
                  APIHelper.deserialize_union_type(
                    UnionTypeLookUp.get(:CreateJobResponse),
                    response, should_symbolize, true
                  )
                end)
                .deserialize_into(ResponseCreatejob.method(:from_hash)))
    .execute
end

#destroy_job(job_id, x_new_store_tenant) ⇒ JobResponse

🚧 BETA: This endpoint is in beta and may change.
See API Lifecycle Documentation for details.
Cancel an export job export job

Parameters:

  • job_id (String)

    Required parameter: The unique identifier of the

  • x_new_store_tenant (String)

    Required parameter: Tenant identifier

Returns:



141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# File 'lib/new_store_api/controllers/jobs_controller.rb', line 141

def destroy_job(job_id,
                x_new_store_tenant)
  @api_call
    .request(new_request_builder(HttpMethodEnum::DELETE,
                                 '/data-exports/jobs/{job_id}',
                                 Server::API)
               .template_param(new_parameter(job_id, key: 'job_id')
                                .should_encode(true))
               .header_param(new_parameter(x_new_store_tenant, key: 'X-NewStore-Tenant'))
               .header_param(new_parameter('application/json', key: 'accept'))
               .auth(Single.new('oauth')))
    .response(new_response_handler
                .deserializer(APIHelper.method(:custom_type_deserializer))
                .deserialize_into(JobResponse.method(:from_hash)))
    .execute
end

#list_jobs(x_new_store_tenant, created_after: nil, created_before: nil, status: nil, dataset: nil) ⇒ JobListResponse

🚧 BETA: This endpoint is in beta and may change.
See API Lifecycle Documentation for details.
List all export jobs for a tenant with optional filtering by date range, status, and dataset name jobs created after this date (ISO 8601 format, e.g., 2024-01-01T00:00:00Z) jobs created before this date (ISO 8601 format, e.g., 2024-01-31T23:59:59Z) status (COMPLETED, RUNNING, FAILED, CANCELLED, PENDING) dataset name (exact match)

Parameters:

  • x_new_store_tenant (String)

    Required parameter: Tenant identifier

  • created_after (String | Object | nil) (defaults to: nil)

    Optional parameter: Filter

  • created_before (String | Object | nil) (defaults to: nil)

    Optional parameter: Filter

  • status (String | Object | nil) (defaults to: nil)

    Optional parameter: Filter jobs by

  • dataset (String | Object | nil) (defaults to: nil)

    Optional parameter: Filter jobs by

Returns:



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/new_store_api/controllers/jobs_controller.rb', line 32

def list_jobs(x_new_store_tenant,
              created_after: nil,
              created_before: nil,
              status: nil,
              dataset: nil)
  @api_call
    .request(new_request_builder(HttpMethodEnum::GET,
                                 '/data-exports/jobs',
                                 Server::API)
               .header_param(new_parameter(x_new_store_tenant, key: 'X-NewStore-Tenant'))
               .query_param(new_parameter(created_after, key: 'created_after')
                             .validator(proc do |value|
                               UnionTypeLookUp.get(:ListJobsCreatedAfter)
                                              .validate(value)
                             end))
               .query_param(new_parameter(created_before, key: 'created_before')
                             .validator(proc do |value|
                               UnionTypeLookUp.get(:ListJobsCreatedBefore)
                                              .validate(value)
                             end))
               .query_param(new_parameter(status, key: 'status')
                             .validator(proc do |value|
                               UnionTypeLookUp.get(:ListJobsStatus)
                                              .validate(value)
                             end))
               .query_param(new_parameter(dataset, key: 'dataset')
                             .validator(proc do |value|
                               UnionTypeLookUp.get(:ListJobsDataset)
                                              .validate(value)
                             end))
               .header_param(new_parameter('application/json', key: 'accept'))
               .auth(Single.new('oauth')))
    .response(new_response_handler
                .deserializer(APIHelper.method(:custom_type_deserializer))
                .deserialize_into(JobListResponse.method(:from_hash)))
    .execute
end

#show_download_url(job_id, x_new_store_tenant, expiration_minutes: 5) ⇒ JobDownloadResponse

🚧 BETA: This endpoint is in beta and may change.
See API Lifecycle Documentation for details.
Generate signed URLs for downloading job results export job time in minutes

Parameters:

  • job_id (String)

    Required parameter: The unique identifier of the

  • x_new_store_tenant (String)

    Required parameter: Tenant identifier

  • expiration_minutes (Integer) (defaults to: 5)

    Optional parameter: URL expiration

Returns:



205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
# File 'lib/new_store_api/controllers/jobs_controller.rb', line 205

def show_download_url(job_id,
                      x_new_store_tenant,
                      expiration_minutes: 5)
  @api_call
    .request(new_request_builder(HttpMethodEnum::GET,
                                 '/data-exports/jobs/{job_id}/downloads',
                                 Server::API)
               .template_param(new_parameter(job_id, key: 'job_id')
                                .should_encode(true))
               .header_param(new_parameter(x_new_store_tenant, key: 'X-NewStore-Tenant'))
               .query_param(new_parameter(expiration_minutes, key: 'expiration_minutes'))
               .header_param(new_parameter('application/json', key: 'accept'))
               .auth(Single.new('oauth')))
    .response(new_response_handler
                .deserializer(APIHelper.method(:custom_type_deserializer))
                .deserialize_into(JobDownloadResponse.method(:from_hash)))
    .execute
end

#show_job_status(job_id, x_new_store_tenant) ⇒ JobResponse

🚧 BETA: This endpoint is in beta and may change.
See API Lifecycle Documentation for details.
Get the status and details of an export job export job

Parameters:

  • job_id (String)

    Required parameter: The unique identifier of the

  • x_new_store_tenant (String)

    Required parameter: Tenant identifier

Returns:



172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
# File 'lib/new_store_api/controllers/jobs_controller.rb', line 172

def show_job_status(job_id,
                    x_new_store_tenant)
  @api_call
    .request(new_request_builder(HttpMethodEnum::GET,
                                 '/data-exports/jobs/{job_id}',
                                 Server::API)
               .template_param(new_parameter(job_id, key: 'job_id')
                                .should_encode(true))
               .header_param(new_parameter(x_new_store_tenant, key: 'X-NewStore-Tenant'))
               .header_param(new_parameter('application/json', key: 'accept'))
               .auth(Single.new('oauth')))
    .response(new_response_handler
                .deserializer(APIHelper.method(:custom_type_deserializer))
                .deserialize_into(JobResponse.method(:from_hash)))
    .execute
end