NowAPIService class - iOS
On this page
NowAPIService class- iOS
The NowAPIService class provides functions that enable you to perform requests to a specified ServiceNow REST API.
Name Type Description configuration NowServiceConfiguration Service configuration to associate with the protocol.Parent Topic:Mobile SDK - iOS
NowAPIService - data(for endpoint: NowAPIEndpoint, queryItems: [String: String], httpHeaders: [String: String], body: Data, completion: @escaping (Result<DataResponse, NowDataError>)
Requests data from the specified ServiceNow REST API and then executes the completion handler.
<table id=“table_jck_kyp_5pb” class=“parameters”><thead><tr><th>
Name
</th><th>
Type
</th><th>
Description
</th></tr></thead><tbody><tr><td>
for endpoint
</td><td>
</td><td>
Object containing the ServiceNow REST API endpoint to access, including the HTTP method, relative path to the endpoint, path parameters, and whether authentication is required.
</td></tr><tr><td>
queryItems
</td><td>
Array
</td><td>
Optional. Query parameters for the endpoint as key/value pairs.Default: nil
</td></tr><tr><td>
httpHeaders
</td><td>
Array
</td><td>
Optional. Request HTTP headers required by the endpoint as key/value pairs. Default: nil
</td></tr><tr><td>
body
</td><td>
String
</td><td>
Optional. Request body parameters.Default: nil
</td></tr><tr id=“mobilesdkiOS-completion_data_dataerror-row”><td>
completion
</td><td>
@escaping (Result<DataResponse, NowDataError>)
</td><td>
Completion handler to execute after the REST API call completes. Return values for the completion handler:
-
Success: DataResponse that contains the returned data from the REST API call.
-
Failure: NowDataError
-
accessToken(AccessTokenProviderError) -
accessToken(AccessTokenProviderError)-
AccessTokenProviderError: The access token provider’s error code or message.
-
accessTokenRetrievalFailed
-
userSessionError(_ error: Error) Thrown when there is an error in the access token.
-
-
-
attachmentValidation
-
Thrown when an attachment fails validation.
- `badResponse(statusCode: HTTPStatusCode)`
- **HTTPStatusCode**: Status code received from the instance.
Thrown when a request returns an unexpected response
- `cannotDecodeModel(DecodingError)`
- **DecodingError**: Decoding error detected.
Thrown when a Codable model cannot be decoded from JSON.
- `cannotDecodeProperty(type: Any, from: String)`
- **type**: Wrapped type to decode from a string.
- **from**: String to decode to the specified type.
Thrown when a string-wrapped value cannot be decoded from JSON.
- `cannotEncodeModel(EncodingError)`
- **EncodingError**: Encoding error detected.
Thrown when a Codable model cannot be encoded to JSON.
- `cannotParseResponse`
Thrown when a response from the instance cannot be parsed into its expected format.
- `invalidURL`
Thrown when a URL cannot be formed. For example, if the string contains characters that are illegal in a URL or is an empty string.
- `missingAttachmentMetadata`
Thrown when the attachment metadata header is missing.
- `missingServiceConfiguration`
Thrown when an expected service configuration is missing.
- `missingSysID`
Thrown when an expected sys_id parameter is missing.
- `network(NetworkServiceError)`
- genericError\(String\)
- operationCanceled
- serviceDisabled
- serverError\(Error\)
- systemError\(Error\)
Thrown when a network service encountered an error.
</td></tr></tbody> </table>|Type|Description| |—-|———–| |None| |
The following code example shows how to call this function.
struct Endpoint: NowAPIEndpoint {
let httpMethod: HTTPMethod
let relativePath: String
let requiresAuthentication: Bool
}
/// HTTP request method
public enum HTTPMethod: CaseIterable {
case options, get, head, post, put, patch, delete, trace, connect
}
let relativePath = “/api/now/account”
let endPoint = Endpoint(httpMethod: HTTPMethod.get, relativePath: relativePath, requiresAuthentication: true)
apiService.data(for: endPoint, queryItems: [“name”: “abel”], httpHeaders: httpHeaders, body: body.data(using: .utf8)) { [weak self] (result) in
switch result {
case .success(let response):
// Data request successful
case .failure(let error):
// Data request failed, return NowDataError
// .failure(error)
}
}
NowAPIService - data(for endpoint: NowAPIEndpoint, queryItems: [String: String], httpHeaders: [String: String], body: Data) async throws
Requests data from the specified ServiceNow REST API.
<table id=“table_jck_kyp_5pb” class=“parameters”><thead><tr><th>
Name
</th><th>
Type
</th><th>
Description
</th></tr></thead><tbody><tr><td>
for endpoint
</td><td>
</td><td>
Object containing the ServiceNow REST API endpoint to access, including the HTTP method, relative path to the endpoint, path parameters, and whether authentication is required.
</td></tr><tr><td>
queryItems
</td><td>
Array
</td><td>
Optional. Query parameters for the endpoint as key/value pairs.Default: nil
</td></tr><tr><td>
httpHeaders
</td><td>
Array
</td><td>
Optional. Request HTTP headers required by the endpoint as key/value pairs. Default: nil
</td></tr><tr><td>
body
</td><td>
String
</td><td>
Optional. Request body parameters.Default: nil
</td></tr></tbody> </table><table id=“table_kck_kyp_5pb” class=“returns”><thead><tr><th>
Type
</th><th>
Description
</th></tr></thead><tbody><tr><td>
DataResponse
</td><td>
Returned when the method is successful. Data from the REST API call.
</td></tr><tr><td>
NowDataError
</td><td>
Thrown when the method fails. - accessToken(AccessTokenProviderError)
- **AccessTokenProviderError**: The access token provider's error code or message.
- accessTokenRetrievalFailed
- userSessionError\(\_ error: Error\)
Thrown when there is an error in the access token.
-
attachmentValidation
Thrown when an attachment fails validation.
-
badResponse(statusCode: HTTPStatusCode)-
HTTPStatusCode: Status code received from the instance. Thrown when a request returns an unexpected response
-
-
cannotDecodeModel(DecodingError)-
DecodingError: Decoding error detected. Thrown when a Codable model cannot be decoded from JSON.
-
-
cannotDecodeProperty(type: Any, from: String)-
type: Wrapped type to decode from a string.
-
from: String to decode to the specified type. Thrown when a string-wrapped value cannot be decoded from JSON.
-
-
cannotEncodeModel(EncodingError)-
EncodingError: Encoding error detected. Thrown when a Codable model cannot be encoded to JSON.
-
-
cannotParseResponse
Thrown when a response from the instance cannot be parsed into its expected format.
-
invalidURL
Thrown when a URL cannot be formed. For example, if the string contains characters that are illegal in a URL or is an empty string.
-
missingAttachmentMetadata
Thrown when the attachment metadata header is missing.
-
missingServiceConfiguration
Thrown when an expected service configuration is missing.
-
missingSysID
Thrown when an expected sys_id parameter is missing.
-
network(NetworkServiceError)-
genericError(String)
-
operationCanceled
-
serviceDisabled
-
serverError(Error)
-
systemError(Error) Thrown when a network service encountered an error.
-
</td></tr></tbody> </table>The following code examples shows how to call this method.
do {
let dataResponse = try await apiService.data(for: endpoint, queryItems: queryItems, httpHeaders: httpHeaders, body: body)
// Data request successful
} catch {
// Data request failed, NowDataError thrown
}
NowAPIService - data(for endpoint: NowAPIEndpoint, queryItems: [String: String]? = nil, httpHeaders: [String: String]? = nil, body: Data? = nil)
Requests data from the specified ServiceNow REST API.
Note: This method has been deprecated. You should use the async/await implementation of the method instead.
<table id=“table_sfb_5tp_5pb” class=“parameters”><thead><tr><th>
Name
</th><th>
Type
</th><th>
Description
</th></tr></thead><tbody><tr><td>
for endpoint
</td><td>
</td><td>
Object containing the ServiceNow REST API endpoint to access, including the HTTP method, relative path to the endpoint, path parameters, and whether authentication is required.
</td></tr><tr><td>
queryItems
</td><td>
Array
</td><td>
Optional. Query parameters for the endpoint as key/value pairs.Default: nil
</td></tr><tr><td>
httpHeaders
</td><td>
Array
</td><td>
Optional. Request HTTP headers required by the endpoint as key/value pairs.Default: nil
</td></tr><tr><td>
body
</td><td>
Data
</td><td>
Optional. Request body parameters. Default: nil
</td></tr></tbody> </table><table id=“table_tfb_5tp_5pb” class=“returns”><thead><tr><th>
Type
</th><th>
Description
</th></tr></thead><tbody><tr><td>
AnyPublisher<DataResponse, NowDataError>
</td><td>
Success: Data returned by the REST API.Failure: NowDataError
-
accessToken(AccessTokenProviderError)-
AccessTokenProviderError: The access token provider’s error code or message.
-
accessTokenRetrievalFailed
-
userSessionError(_ error: Error) Thrown when there is an error in the access token.
-
-
-
attachmentValidation
Thrown when an attachment fails validation.
-
badResponse(statusCode: HTTPStatusCode)-
HTTPStatusCode: Status code received from the instance. Thrown when a request returns an unexpected response
-
-
cannotDecodeModel(DecodingError)-
DecodingError: Decoding error detected. Thrown when a Codable model cannot be decoded from JSON.
-
-
cannotDecodeProperty(type: Any, from: String)-
type: Wrapped type to decode from a string.
-
from: String to decode to the specified type. Thrown when a string-wrapped value cannot be decoded from JSON.
-
-
cannotEncodeModel(EncodingError)-
EncodingError: Encoding error detected. Thrown when a Codable model cannot be encoded to JSON.
-
-
cannotParseResponse
Thrown when a response from the instance cannot be parsed into its expected format.
-
invalidURL
Thrown when a URL cannot be formed. For example, if the string contains characters that are illegal in a URL or is an empty string.
-
missingAttachmentMetadata
Thrown when the attachment metadata header is missing.
-
missingServiceConfiguration
Thrown when an expected service configuration is missing.
-
missingSysID
Thrown when an expected sys_id parameter is missing.
-
network(NetworkServiceError)-
genericError(String)
-
operationCanceled
-
serviceDisabled
-
serverError(Error)
-
systemError(Error) Thrown when a network service encountered an error.
-
</td></tr></tbody> </table>The following code example shows how to call this function.
struct Endpoint: NowAPIEndpoint {
let httpMethod: HTTPMethod
let relativePath: String
let requiresAuthentication: Bool
}
/// HTTP request method
public enum HTTPMethod: CaseIterable {
case options, get, head, post, put, patch, delete, trace, connect
}
let relativePath = "/api/now/account"
let endPoint = Endpoint(httpMethod: HTTPMethod.get, relativePath: relativePath, requiresAuthentication: true)
// Using Combine
apiService.data(for: Endpoint(httpMethod: httpMethod, relativePath: endpointPath, requiresAuthentication: requiresAuthentication), queryItems: queryItems, httpHeaders: httpHeaders, body: body.data(using: .utf8))
.receive(on: DispatchQueue.main)
.sink { [weak self] (comp) in
if case let .failure(error) = comp {
// Data request failed, return NowDataError
}
} receiveValue: { [weak self] (response) in
// Data request successful
self?.publish(data: response.data)
}
.store(in: &self.subscriptions)
}
Keep exploring.
Find another answer, or bring this documentation into your own tools.