Class: FdxV660Api::PayStubInformationController

Inherits:
BaseController show all
Defined in:
lib/fdx_v660_api/controllers/pay_stub_information_controller.rb

Overview

PayStubInformationController

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, user_agent_parameters

Constructor Details

This class inherits a constructor from FdxV660Api::BaseController

Instance Method Details

#get_paystub(paystub_id, x_fapi_interaction_id, fdx_api_actor_type: nil, fdx_api_client_public_key: nil, fdx_api_data_provider_id: nil, fdx_api_data_recipient_id: nil) ⇒ ApiResponse

Retrieve the employee's specified paystub as a Base64 PDF file retrieve. This can be any ID which the data provider creates specific to the consenting person's paystub, perhaps simply the pay date as a string optionally followed by a sequence number: "2024-09-30-01". Need only be unique within the current employee's consent / token, according to data provider's preference identifier for this interaction, as defined by [FAPI 2.0 Implementation Advice, 2.2.1 x-fapi-interaction-id](https://openid.bitbucket.io/fapi/fapi-2_0-implement ation_advice.html#name-x-fapi-interaction-id) whether the customer is present (USER) or it is a BATCH operation for data provider to encrypt sensitive response data financial institution responding to the request for the data recipient(s) on whose behalf the request is being made

Parameters:

  • paystub_id (String)

    Required parameter: The specific paystub ID to

  • x_fapi_interaction_id (UUID | String)

    Required parameter: Unique

  • fdx_api_actor_type (FdxApiActorType) (defaults to: nil)

    Optional parameter: Identifies

  • fdx_api_client_public_key (String) (defaults to: nil)

    Optional parameter: Public key

  • fdx_api_data_provider_id (String) (defaults to: nil)

    Optional parameter: ID for the

  • fdx_api_data_recipient_id (Array[String]) (defaults to: nil)

    Optional parameter: ID(s)

Returns:

  • (ApiResponse)

    Complete http response with raw body and status code.



137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
# File 'lib/fdx_v660_api/controllers/pay_stub_information_controller.rb', line 137

def get_paystub(paystub_id,
                x_fapi_interaction_id,
                fdx_api_actor_type: nil,
                fdx_api_client_public_key: nil,
                fdx_api_data_provider_id: nil,
                fdx_api_data_recipient_id: nil)
  @api_call
    .request(new_request_builder(HttpMethodEnum::GET,
                                 '/payroll/paystubs/{paystubId}',
                                 Server::DEFAULT)
               .template_param(new_parameter(paystub_id, key: 'paystubId')
                                .is_required(true)
                                .should_encode(true))
               .header_param(new_parameter(x_fapi_interaction_id, key: 'x-fapi-interaction-id')
                              .is_required(true))
               .header_param(new_parameter(fdx_api_actor_type, key: 'FDX-API-Actor-Type'))
               .header_param(new_parameter(fdx_api_client_public_key, key: 'FDX-API-Client-Public-Key'))
               .header_param(new_parameter(fdx_api_data_provider_id, key: 'FDX-API-Data-Provider-Id'))
               .header_param(new_parameter(fdx_api_data_recipient_id, key: 'FDX-API-Data-Recipient-Id'))
               .header_param(new_parameter('application/json', key: 'accept')))
    .response(new_response_handler
                .deserializer(APIHelper.method(:custom_type_deserializer))
                .deserialize_into(PaystubEntity2.method(:from_hash))
                .is_api_response(true)
                .local_error('400',
                             'Required input data not sent',
                             ErrorException)
                .local_error('404',
                             'Pay Stub with provided ID was not found',
                             ErrorException)
                .local_error('500',
                             'Catch-all exception where request was not processed due to an'\
                              ' internal outage/issue. Consider other more specific errors'\
                              ' before using this error',
                             ErrorException)
                .local_error('501',
                             'Error when FdxVersion in Header is not one of those'\
                              ' implemented at backend',
                             ErrorException)
                .local_error('503',
                             'System is down for maintenance',
                             ErrorException))
    .execute
end

#get_paystubs(x_fapi_interaction_id, fdx_api_actor_type: nil, fdx_api_client_public_key: nil, fdx_api_data_provider_id: nil, fdx_api_data_recipient_id: nil, start_date: nil, end_date: nil, page_key: nil) ⇒ ApiResponse

Search for and retrieve the employee's latest paystubs identifier for this interaction, as defined by [FAPI 2.0 Implementation Advice, 2.2.1 x-fapi-interaction-id](https://openid.bitbucket.io/fapi/fapi-2_0-implement ation_advice.html#name-x-fapi-interaction-id) whether the customer is present (USER) or it is a BATCH operation for data provider to encrypt sensitive response data financial institution responding to the request for the data recipient(s) on whose behalf the request is being made retrieval of elements (ISO 8601 format). Provider to define the date ranges and behaviors they will support. Example of defined behavior: - Recipients need to either specify both start date and end date or neither. If both start date and end date are not specified; default provided. Default range: 7 Days of past data. (Today's date - 6 days both dates are inclusive) - Recipient can specify the same start date and end date. The returned data will reflect transactions from that date - If start date and end date both are specified and if start date is later than end date, return 'invalid date range' error code: 703, HTTPS 400 per the FDX spec - If start Date and end date both are specified and if start date is older than what the Data Provider supports, then the Data Provider should return 'invalid date range' error code: 703, HTTPS 400 per the FDX spec. Example: If today is 5/14/2024 and the DP supports 24 months, the start date should be 5/14/2022 and newer; it should not be 5/13/2022 or older - If start date is specified but end date is not specified or vice versa; Data Provider should return 'invalid date range' error code: 703, HTTPS 400 per the FDX spec of elements (ISO 8601 format). Provider to define the date ranges and behaviors they will support. Example of defined behavior: - Recipients need to either specify both start date and end date or neither. If both start date and end date are not specified; default provided. Default range: 7 Days of past data. (Today's date - 6 days both dates are inclusive) - Recipient can specify the same start date and end date. The returned data will reflect transactions from that date - If start date and end date both are specified and if start date is later than end date, return 'invalid date range' error code: 703, HTTPS 400 per the FDX spec

  • If start Date and end date both are specified and if start date is older than what the Data Provider supports, then the Data Provider should return 'invalid date range' error code: 703, HTTPS 400 per the FDX spec. Example: If today is 5/14/2024 and the DP supports 24 months, the start date should be 5/14/2022 and newer; it should not be 5/13/2022 or older - If start date is specified but end date is not specified or vice versa; Data Provider should return 'invalid date range' error code: 703, HTTPS 400 per the FDX spec - If end date is today's date, the most recent transactions from the time the request is received will be returned provider to send the next set of records. Pagination can be implemented per provider's preference

Parameters:

  • x_fapi_interaction_id (UUID | String)

    Required parameter: Unique

  • fdx_api_actor_type (FdxApiActorType) (defaults to: nil)

    Optional parameter: Identifies

  • fdx_api_client_public_key (String) (defaults to: nil)

    Optional parameter: Public key

  • fdx_api_data_provider_id (String) (defaults to: nil)

    Optional parameter: ID for the

  • fdx_api_data_recipient_id (Array[String]) (defaults to: nil)

    Optional parameter: ID(s)

  • start_date (Date) (defaults to: nil)

    Optional parameter: Start date for use in

  • end_date (Date) (defaults to: nil)

    Optional parameter: End date for use in retrieval

  • page_key (String) (defaults to: nil)

    Optional parameter: Opaque cursor used by the

Returns:

  • (ApiResponse)

    Complete http response with raw body and status code.



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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
# File 'lib/fdx_v660_api/controllers/pay_stub_information_controller.rb', line 65

def get_paystubs(x_fapi_interaction_id,
                 fdx_api_actor_type: nil,
                 fdx_api_client_public_key: nil,
                 fdx_api_data_provider_id: nil,
                 fdx_api_data_recipient_id: nil,
                 start_date: nil,
                 end_date: nil,
                 page_key: nil)
  @api_call
    .request(new_request_builder(HttpMethodEnum::GET,
                                 '/payroll/paystubs',
                                 Server::DEFAULT)
               .header_param(new_parameter(x_fapi_interaction_id, key: 'x-fapi-interaction-id')
                              .is_required(true))
               .header_param(new_parameter(fdx_api_actor_type, key: 'FDX-API-Actor-Type'))
               .header_param(new_parameter(fdx_api_client_public_key, key: 'FDX-API-Client-Public-Key'))
               .header_param(new_parameter(fdx_api_data_provider_id, key: 'FDX-API-Data-Provider-Id'))
               .header_param(new_parameter(fdx_api_data_recipient_id, key: 'FDX-API-Data-Recipient-Id'))
               .query_param(new_parameter(start_date, key: 'startDate'))
               .query_param(new_parameter(end_date, key: 'endDate'))
               .query_param(new_parameter(page_key, key: 'pageKey'))
               .header_param(new_parameter('application/json', key: 'accept')))
    .response(new_response_handler
                .deserializer(APIHelper.method(:custom_type_deserializer))
                .deserialize_into(PaystubListEntity1.method(:from_hash))
                .is_api_response(true)
                .local_error('400',
                             'Input sent by client does not satisfy API specification',
                             ErrorException)
                .local_error('401',
                             'Request lacks valid authentication credentials for the target'\
                              ' resource',
                             ErrorException)
                .local_error('404',
                             'Data not found for request parameters',
                             ErrorException)
                .local_error('500',
                             'Catch-all exception where request was not processed due to an'\
                              ' internal outage/issue. Consider other more specific errors'\
                              ' before using this error',
                             ErrorException)
                .local_error('501',
                             'Error when FdxVersion in Header is not one of those'\
                              ' implemented at backend',
                             ErrorException)
                .local_error('503',
                             'System is down for maintenance',
                             ErrorException))
    .execute
end