NowAttachmentService クラス - iOS

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:63分
  • NowAttachmentService クラスは、ServiceNowインスタンスのテーブル内のレコードに関連付けられている添付ファイルをアップロードしてクエリを実行できるようにする関数を提供します。

    要求ごとに 1 つのファイルをアップロードまたは取得できます。NowAttachmentService は、最大ファイルサイズや許可されている添付ファイルタイプなど、アップロードされたファイルに対するシステム制限を尊重します。これらの設定は、インスタンスプロパティ com.glide.attachment.max_size (デフォルトでは 1024MB)、および glide.attachment.extensions を使用して制御できます。

    注:
    NowAttachmentService は、すべての Content-Type 値 (/) を受け入れます。添付ファイルのアップロード時のファイルコンテンツタイプを指定します。コンテンツ タイプはファイル メタデータと共に格納されるため、他のツールでファイルを正しく識別して解析できます。
    表 : 1. プロパティ
    名前 タイプ 説明
    構成 NowServiceConfiguration サービスの初期化時に指定された構成設定。

    NowAttachmentService - attachment(sysId:文字列、validateAttachment:ブールの場合) 非同期がスローします

    指定されたsys_idの添付ファイルを取得し、添付ファイルの計算済みハッシュを予想される SHA256 チェックサムと比較して添付ファイルを検証します。

    注:
    添付ファイルの検証は、パフォーマンスに影響を与える可能性があります。validateAttachment パラメーターを false に設定すると、検証ステップをスキップできます。必要に応じて、 Attachment.validate() 関数を呼び出すことで、後の段階で添付ファイルを検証できます。
    表 : 2. パラメーター
    名前 タイプ 説明
    sysId 用 文字列 取得する添付ファイルのSys_id。
    validateAttachment ブール 添付ファイルを検証するかどうかを示すフラグ。
    有効な値:
    • true:添付ファイルを検証します。
    • false:添付ファイルを検証しません。

    デフォルト:true

    表 : 3. 返される内容
    タイプ 説明
    NowAttachment メソッドが成功したときに返されます。指定された添付ファイル。
    NowDataError メソッドが失敗したときにスローされます。
    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError:アクセストークンプロバイダーのエラーコードまたはメッセージ。
        • アクセストークン回収失敗
        • userSessionError(_ error: Error)

      アクセストークンにエラーがある場合にスローされます。

    • attachmentValidation

      添付ファイルが検証に失敗した場合にスローされます。

    • badResponse (statusCode: HTTPStatusCode)
      • HTTPStatusCode:インスタンスから受信したステータスコード。

      要求が予期しない応答を返すとスローされます

    • cannotDecodeModel(デコードエラー)
      • DecodingError:デコードエラーが検出されました。

      コード可能なモデルを JSON からデコードできない場合にスローされます。

    • cannotDecodeProperty(type: Any, from: String)
      • type:文字列からデコードするためのラップされた型。
      • from:指定したタイプにデコードする文字列。

      文字列でラップされた値を JSON からデコードできない場合にスローされます。

    • cannotEncodeModel(EncodingError)
      • EncodingError:エンコードエラーが検出されました。

      コード可能なモデルを JSON にエンコードできない場合にスローされます。

    • 応答を解析できません

      インスタンスからの応答を想定される形式に解析できない場合にスローされます。

    • 無効なURL

      URL を形成できない場合にスローされます。たとえば、文字列に URL で無効な文字が含まれている場合や、空の文字列である場合などです。

    • missingAttachmentMetadata

      添付ファイルのメタデータヘッダーがない場合にスローされます。

    • missingServiceConfiguration

      想定されるサービス構成がない場合にスローされます。

    • missingSysID

      想定されるsys_idパラメーターがない場合にスローされます。

    • ネットワーク (NetworkServiceError)
      • genericError(文字列)
      • operationCanceled
      • サービス無効
      • serverError(エラー)
      • systemError(エラー)

      ネットワークサービスでエラーが発生するとスローされます。

    次のコード例は、このメソッドを呼び出す方法を示しています。

    func downloadAttachment(sysId: String) async throws -> NowAttachment {
        do {
            let nowAttachment = try await attachmentService.attachment(for: sysId, validateAttachment: false)
            return nowAttachment
        } catch {
            // Handle NowDataError
            throw error
        }
    }

    NowAttachmentService - attachment(sysId の場合:String, validateAttachment: Boolean, completion: @escaping (Result<NowAttachment, NowDataError>))

    指定されたsys_idの添付ファイルを取得し、添付ファイルの計算済みハッシュを予想される SHA256 チェックサムと比較して添付ファイルを検証します。完了すると、渡された完了ハンドラーが実行されます。

    注:
    添付ファイルの検証は、パフォーマンスに影響を与える可能性があります。validateAttachment パラメーターを false に設定すると、検証ステップをスキップできます。必要に応じて、 Attachment.validate() 関数を呼び出すことで、後の段階で添付ファイルを検証できます。
    表 : 4. パラメーター
    名前 タイプ 説明
    sysId 用 文字列 取得する添付ファイルのSys_id。
    validateAttachment ブール 添付ファイルを検証するかどうかを示すフラグ。
    有効な値:
    • true:添付ファイルを検証します。
    • false:添付ファイルを検証しません。

    デフォルト:true

    完了 @escaping (Result<NowAttachment, NowDataError>) 添付ファイルを取得した後に実行する補完ハンドラー。
    補完ハンドラーの戻り値:
    • 成功: NowAttachment :要求された添付ファイル
    • エラー:NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError:アクセストークンプロバイダーのエラーコードまたはメッセージ。
          • アクセストークン回収失敗
          • userSessionError(_ error: Error)

        アクセストークンにエラーがある場合にスローされます。

      • attachmentValidation

        添付ファイルが検証に失敗した場合にスローされます。

      • badResponse (statusCode: HTTPStatusCode)
        • HTTPStatusCode:インスタンスから受信したステータスコード。

        要求が予期しない応答を返すとスローされます

      • cannotDecodeModel(デコードエラー)
        • DecodingError:デコードエラーが検出されました。

        コード可能なモデルを JSON からデコードできない場合にスローされます。

      • cannotDecodeProperty(type: Any, from: String)
        • type:文字列からデコードするためのラップされた型。
        • from:指定したタイプにデコードする文字列。

        文字列でラップされた値を JSON からデコードできない場合にスローされます。

      • cannotEncodeModel(EncodingError)
        • EncodingError:エンコードエラーが検出されました。

        コード可能なモデルを JSON にエンコードできない場合にスローされます。

      • 応答を解析できません

        インスタンスからの応答を想定される形式に解析できない場合にスローされます。

      • 無効なURL

        URL を形成できない場合にスローされます。たとえば、文字列に URL で無効な文字が含まれている場合や、空の文字列である場合などです。

      • missingAttachmentMetadata

        添付ファイルのメタデータヘッダーがない場合にスローされます。

      • missingServiceConfiguration

        想定されるサービス構成がない場合にスローされます。

      • missingSysID

        想定されるsys_idパラメーターがない場合にスローされます。

      • ネットワーク (NetworkServiceError)
        • genericError(文字列)
        • operationCanceled
        • サービス無効
        • serverError(エラー)
        • systemError(エラー)

        ネットワークサービスでエラーが発生するとスローされます。

    表 : 5. 戻り値
    タイプ 説明
    なし

    次のコード例は、この関数を呼び出す方法を示しています。

    let sysId = UUID().uuidString  // UUID for the attachment
    private func downloadAttachment(sysId: String) {
      attachmentService.attachment(for: sysId, validateAttachment: false) { (result) in
        switch result {
          case .success(let attachment):
            // Attachment retrieved successful, return attachment
          case .failure(let error):
            // Attachment retrieved failed, return NowDataError
        }
      }
    }

    NowAttachmentService - attachment(sysId の場合:文字列、validateAttachment:ブール)

    指定されたsys_idの添付ファイルを取得し、添付ファイルの計算済みハッシュと予想されるハッシュを比較して添付ファイルを検証します。

    注:
    添付ファイルの検証は、パフォーマンスに影響を与える可能性があります。validateAttachment パラメーターを false に設定すると、検証ステップをスキップできます。必要に応じて、後の段階で Attachment.validate() 関数を呼び出して添付ファイルを検証できます。
    注:
    このメソッドは廃止されました。代わりに、メソッドの async/await 実装を使用する必要があります。
    表 : 6. パラメーター
    名前 タイプ 説明
    sysId 用 文字列 取得する添付ファイルのSys_id。
    validateAttachment ブール 添付ファイルを検証するかどうかを示すフラグ。
    有効な値:
    • true:添付ファイルを検証します。
    • false:添付ファイルを検証しません。

    デフォルト:true

    表 : 7. 返される内容
    タイプ 説明
    AnyPublisher<NowAttachment、NowDataError> 成功: NowAttachment :指定された添付ファイルが含まれます。

    エラー:NowDataError

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError:アクセストークンプロバイダーのエラーコードまたはメッセージ。
        • アクセストークン回収失敗
        • userSessionError(_ error: Error)

      アクセストークンにエラーがある場合にスローされます。

    • attachmentValidation

      添付ファイルが検証に失敗した場合にスローされます。

    • badResponse (statusCode: HTTPStatusCode)
      • HTTPStatusCode:インスタンスから受信したステータスコード。

      要求が予期しない応答を返すとスローされます

    • cannotDecodeModel(デコードエラー)
      • DecodingError:デコードエラーが検出されました。

      コード可能なモデルを JSON からデコードできない場合にスローされます。

    • cannotDecodeProperty(type: Any, from: String)
      • type:文字列からデコードするためのラップされた型。
      • from:指定したタイプにデコードする文字列。

      文字列でラップされた値を JSON からデコードできない場合にスローされます。

    • cannotEncodeModel(EncodingError)
      • EncodingError:エンコードエラーが検出されました。

      コード可能なモデルを JSON にエンコードできない場合にスローされます。

    • 応答を解析できません

      インスタンスからの応答を想定される形式に解析できない場合にスローされます。

    • 無効なURL

      URL を形成できない場合にスローされます。たとえば、文字列に URL で無効な文字が含まれている場合や、空の文字列である場合などです。

    • missingAttachmentMetadata

      添付ファイルのメタデータヘッダーがない場合にスローされます。

    • missingServiceConfiguration

      想定されるサービス構成がない場合にスローされます。

    • missingSysID

      想定されるsys_idパラメーターがない場合にスローされます。

    • ネットワーク (NetworkServiceError)
      • genericError(文字列)
      • operationCanceled
      • サービス無効
      • serverError(エラー)
      • systemError(エラー)

      ネットワークサービスでエラーが発生するとスローされます。

    次のコード例は、この関数を呼び出す方法を示しています。

    let sysId = UUID().uuidString  // UUID for the attachment
    private func downloadAttachment(sysId: String) {
      let publisher = self.attachmentService.attachment(for: sysId, validateAttachment: false)
      publisher
        .receive(on: DispatchQueue.main)
        .sink { [weak self] completion in
          if case let .failure(error) = completion {
            // Attachment retrieved failed, return NowDataError
          }
        } receiveValue: { [weak self] (attachment) in
          // Attachment retrieved successful, return attachment
        }
        .store(in: &subscriptions)
    }

    NowAttachmentService - attachmentMetadata(filter: Filter, limit: Int) async throws

    指定された基準を満たすすべての添付ファイルのメタデータを取得します。

    表 : 8. パラメーター
    名前 タイプ 説明
    フィルター フィルター オプション。メタデータを返す添付ファイルをフィルタリングするために使用するクエリ文字列。

    デフォルト:nil - 利用可能なすべての添付ファイルのメタデータを返します。limitパラメーターが考慮されます。

    limit 整数 オプション。返す添付ファイルのメタデータの最大数。

    デフォルト:nil - filter パラメーターの仕様を満たすすべてのメタデータを返します。

    表 : 9. 戻り値
    タイプ 説明
    [NowAttachmentMetadata] メソッドが成功したときに返されます。一致する添付ファイルのメタデータを含むアレイ。
    NowDataError メソッドが失敗したときにスローされます。
    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError:アクセストークンプロバイダーのエラーコードまたはメッセージ。
        • アクセストークン回収失敗
        • userSessionError(_ error: Error)

      アクセストークンにエラーがある場合にスローされます。

    • attachmentValidation

      添付ファイルが検証に失敗した場合にスローされます。

    • badResponse (statusCode: HTTPStatusCode)
      • HTTPStatusCode:インスタンスから受信したステータスコード。

      要求が予期しない応答を返すとスローされます

    • cannotDecodeModel(デコードエラー)
      • DecodingError:デコードエラーが検出されました。

      コード可能なモデルを JSON からデコードできない場合にスローされます。

    • cannotDecodeProperty(type: Any, from: String)
      • type:文字列からデコードするためのラップされた型。
      • from:指定したタイプにデコードする文字列。

      文字列でラップされた値を JSON からデコードできない場合にスローされます。

    • cannotEncodeModel(EncodingError)
      • EncodingError:エンコードエラーが検出されました。

      コード可能なモデルを JSON にエンコードできない場合にスローされます。

    • 応答を解析できません

      インスタンスからの応答を想定される形式に解析できない場合にスローされます。

    • 無効なURL

      URL を形成できない場合にスローされます。たとえば、文字列に URL で無効な文字が含まれている場合や、空の文字列である場合などです。

    • missingAttachmentMetadata

      添付ファイルのメタデータヘッダーがない場合にスローされます。

    • missingServiceConfiguration

      想定されるサービス構成がない場合にスローされます。

    • missingSysID

      想定されるsys_idパラメーターがない場合にスローされます。

    • ネットワーク (NetworkServiceError)
      • genericError(文字列)
      • operationCanceled
      • サービス無効
      • serverError(エラー)
      • systemError(エラー)

      ネットワークサービスでエラーが発生するとスローされます。

    次のコード例は、このメソッドを呼び出す方法を示しています。

    let filter = Filter(criteria: [], sortBy: [.desc("created")],
                 queryCategory: nil)
    do {
        let metadata = try await attachmentService.attachmentMetadata(filter: filter, limit: 10)
        // Metadata retrieval successful
    } catch {
        // Metadata retrieval failed, NowDataError thrown
    }

    NowAttachmentService - attachmentMetadata(filter: Filter, limit: Int, completion: @escaping (Result<[NowAttachmentMetadata], NowDataError>))

    指定された基準を満たすすべての添付ファイルのメタデータを取得します。

    表 : 10. パラメーター
    名前 タイプ 説明
    フィルター フィルター オプション。メタデータを返す添付ファイルをフィルタリングするために使用するクエリ文字列。

    デフォルト:nil - 利用可能なすべての添付ファイルのメタデータを返します。limitパラメーターが考慮されます。

    limit 整数 オプション。返す添付ファイルのメタデータの最大数。

    デフォルト:nil - filter パラメーターの仕様を満たすすべてのメタデータを返します。

    完了 @escaping (結果<[NowAttachmentMetadata], NowDataError>) メタデータが取得された後に実行する補完ハンドラー。
    補完ハンドラーの戻り値:
    • 成功:NowAttachmentMetadata:要求されたメタデータを含むオブジェクト。
    • エラー:NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError:アクセストークンプロバイダーのエラーコードまたはメッセージ。
          • アクセストークン回収失敗
          • userSessionError(_ error: Error)

        アクセストークンにエラーがある場合にスローされます。

      • attachmentValidation

        添付ファイルが検証に失敗した場合にスローされます。

      • badResponse (statusCode: HTTPStatusCode)
        • HTTPStatusCode:インスタンスから受信したステータスコード。

        要求が予期しない応答を返すとスローされます

      • cannotDecodeModel(デコードエラー)
        • DecodingError:デコードエラーが検出されました。

        コード可能なモデルを JSON からデコードできない場合にスローされます。

      • cannotDecodeProperty(type: Any, from: String)
        • type:文字列からデコードするためのラップされた型。
        • from:指定したタイプにデコードする文字列。

        文字列でラップされた値を JSON からデコードできない場合にスローされます。

      • cannotEncodeModel(EncodingError)
        • EncodingError:エンコードエラーが検出されました。

        コード可能なモデルを JSON にエンコードできない場合にスローされます。

      • 応答を解析できません

        インスタンスからの応答を想定される形式に解析できない場合にスローされます。

      • 無効なURL

        URL を形成できない場合にスローされます。たとえば、文字列に URL で無効な文字が含まれている場合や、空の文字列である場合などです。

      • missingAttachmentMetadata

        添付ファイルのメタデータヘッダーがない場合にスローされます。

      • missingServiceConfiguration

        想定されるサービス構成がない場合にスローされます。

      • missingSysID

        想定されるsys_idパラメーターがない場合にスローされます。

      • ネットワーク (NetworkServiceError)
        • genericError(文字列)
        • operationCanceled
        • サービス無効
        • serverError(エラー)
        • systemError(エラー)

        ネットワークサービスでエラーが発生するとスローされます。

    表 : 11. 戻り値
    タイプ 説明
    なし

    次のコード例は、この関数を呼び出す方法を示しています。

    let query = "active=true^short_descriptionLIKEbroken"
    let filter = Filter(query: query)
    attachmentService.attachmentMetadata(filter: filter, limit: limit) { (result) in
      DispatchQueue.main.async { [weak self] in
        switch result {
        case .success(let response):
          do {
            let data = try JSONEncoder().encode(response)
            // Retrieve metadata successfully, return data
          } catch {
            // Retrieve metadata failed, return error 
          }
        case .failure(let error):
          // Retrieve metadata failed, return NowDataError
        }	
      }
    }

    NowAttachmentService - attachmentMetadata(filter: Filter, limit: Int)

    指定された基準を満たすすべての添付ファイルのメタデータを取得します。

    注:
    このメソッドは廃止されました。代わりに、メソッドの async/await 実装を使用する必要があります。
    表 : 12. パラメーター
    名前 タイプ 説明
    フィルター フィルター オプション。メタデータを返す添付ファイルをフィルタリングするために使用するクエリ文字列。

    デフォルト:nil - 利用可能なすべての添付ファイルのメタデータを返します。limitパラメーターが考慮されます。

    limit 整数 オプション。返す添付ファイルのメタデータの最大数。

    デフォルト:nil - filter パラメーターの仕様を満たすすべてのメタデータを返します。

    表 : 13. 戻り値
    タイプ 説明
    AnyPublisher<[NowAttachmentMetadata]、NowDataError> 成功:NowAttachmentMetadata:一致する添付ファイルのメタデータを含むオブジェクト。

    エラー:NowDataError

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError:アクセストークンプロバイダーのエラーコードまたはメッセージ。
        • アクセストークン回収失敗
        • userSessionError(_ error: Error)

      アクセストークンにエラーがある場合にスローされます。

    • attachmentValidation

      添付ファイルが検証に失敗した場合にスローされます。

    • badResponse (statusCode: HTTPStatusCode)
      • HTTPStatusCode:インスタンスから受信したステータスコード。

      要求が予期しない応答を返すとスローされます

    • cannotDecodeModel(デコードエラー)
      • DecodingError:デコードエラーが検出されました。

      コード可能なモデルを JSON からデコードできない場合にスローされます。

    • cannotDecodeProperty(type: Any, from: String)
      • type:文字列からデコードするためのラップされた型。
      • from:指定したタイプにデコードする文字列。

      文字列でラップされた値を JSON からデコードできない場合にスローされます。

    • cannotEncodeModel(EncodingError)
      • EncodingError:エンコードエラーが検出されました。

      コード可能なモデルを JSON にエンコードできない場合にスローされます。

    • 応答を解析できません

      インスタンスからの応答を想定される形式に解析できない場合にスローされます。

    • 無効なURL

      URL を形成できない場合にスローされます。たとえば、文字列に URL で無効な文字が含まれている場合や、空の文字列である場合などです。

    • missingAttachmentMetadata

      添付ファイルのメタデータヘッダーがない場合にスローされます。

    • missingServiceConfiguration

      想定されるサービス構成がない場合にスローされます。

    • missingSysID

      想定されるsys_idパラメーターがない場合にスローされます。

    • ネットワーク (NetworkServiceError)
      • genericError(文字列)
      • operationCanceled
      • サービス無効
      • serverError(エラー)
      • systemError(エラー)

      ネットワークサービスでエラーが発生するとスローされます。

    次のコード例は、この関数を呼び出す方法を示しています。

    let query = "active=true^short_descriptionLIKEbroken"
    let filter = Filter(query: query)
    let publisher = self.attachmentService.attachmentMetadata(filter: filter)
    publisher
      .receive(on: DispatchQueue.main)
      .encode(encoder: JSONEncoder())
      .sink { [weak self] completion in
        if case let .failure(error) = completion {
          // Retrieve metadata failed, return NowDataError
      } receiveValue: { [weak self] (data) in
         // Retrieve metadata successfully, return data
      }
    .store(in: &subscriptions

    NowAttachmentService - attachmentMetadata(sysId の場合:文字列) 非同期がスローします

    指定されたsys_idに関連付けられている添付ファイルのメタデータを取得します。

    表 : 14. パラメーター
    名前 タイプ 説明
    sysId 用 文字列 メタデータを取得する添付ファイルのSys_id。
    表 : 15. 戻り値
    タイプ 説明
    NowAttachmentMetadata メソッドが成功したときに返されます。要求された添付ファイルのメタデータ。
    NowDataError メソッドが失敗したときにスローされます。
    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError:アクセストークンプロバイダーのエラーコードまたはメッセージ。
        • アクセストークン回収失敗
        • userSessionError(_ error: Error)

      アクセストークンにエラーがある場合にスローされます。

    • attachmentValidation

      添付ファイルが検証に失敗した場合にスローされます。

    • badResponse (statusCode: HTTPStatusCode)
      • HTTPStatusCode:インスタンスから受信したステータスコード。

      要求が予期しない応答を返すとスローされます

    • cannotDecodeModel(デコードエラー)
      • DecodingError:デコードエラーが検出されました。

      コード可能なモデルを JSON からデコードできない場合にスローされます。

    • cannotDecodeProperty(type: Any, from: String)
      • type:文字列からデコードするためのラップされた型。
      • from:指定したタイプにデコードする文字列。

      文字列でラップされた値を JSON からデコードできない場合にスローされます。

    • cannotEncodeModel(EncodingError)
      • EncodingError:エンコードエラーが検出されました。

      コード可能なモデルを JSON にエンコードできない場合にスローされます。

    • 応答を解析できません

      インスタンスからの応答を想定される形式に解析できない場合にスローされます。

    • 無効なURL

      URL を形成できない場合にスローされます。たとえば、文字列に URL で無効な文字が含まれている場合や、空の文字列である場合などです。

    • missingAttachmentMetadata

      添付ファイルのメタデータヘッダーがない場合にスローされます。

    • missingServiceConfiguration

      想定されるサービス構成がない場合にスローされます。

    • missingSysID

      想定されるsys_idパラメーターがない場合にスローされます。

    • ネットワーク (NetworkServiceError)
      • genericError(文字列)
      • operationCanceled
      • サービス無効
      • serverError(エラー)
      • systemError(エラー)

      ネットワークサービスでエラーが発生するとスローされます。

    次のコード例は、このメソッドを呼び出す方法を示しています。

    do {
        let metadata = try await attachmentService.attachmentMetadata(for: sysId)
        // Metadata retrieval successful
    } catch {
        // Metadata retrieval failed, NowDataError thrown
    }

    NowAttachmentService - attachmentMetadata(sysId: String, completion: @escaping (Result<NowAttachmentMetadata, NowDataError>))

    指定されたsys_idに関連付けられた添付ファイルのメタデータを取得し、メタデータが取得された後に補完ハンドラーを実行します。

    表 : 16. パラメーター
    名前 タイプ 説明
    sysId 用 文字列 メタデータを取得する添付ファイルのSys_id。
    完了 @escaping (Result<NowAttachmentMetadata, NowDataError>) メタデータが取得された後に実行する補完ハンドラー。
    補完ハンドラーの戻り値:
    • 成功: NowAttachmentMetadata :要求されたメタデータ
    • エラー:NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError:アクセストークンプロバイダーのエラーコードまたはメッセージ。
          • アクセストークン回収失敗
          • userSessionError(_ error: Error)

        アクセストークンにエラーがある場合にスローされます。

      • attachmentValidation

        添付ファイルが検証に失敗した場合にスローされます。

      • badResponse (statusCode: HTTPStatusCode)
        • HTTPStatusCode:インスタンスから受信したステータスコード。

        要求が予期しない応答を返すとスローされます

      • cannotDecodeModel(デコードエラー)
        • DecodingError:デコードエラーが検出されました。

        コード可能なモデルを JSON からデコードできない場合にスローされます。

      • cannotDecodeProperty(type: Any, from: String)
        • type:文字列からデコードするためのラップされた型。
        • from:指定したタイプにデコードする文字列。

        文字列でラップされた値を JSON からデコードできない場合にスローされます。

      • cannotEncodeModel(EncodingError)
        • EncodingError:エンコードエラーが検出されました。

        コード可能なモデルを JSON にエンコードできない場合にスローされます。

      • 応答を解析できません

        インスタンスからの応答を想定される形式に解析できない場合にスローされます。

      • 無効なURL

        URL を形成できない場合にスローされます。たとえば、文字列に URL で無効な文字が含まれている場合や、空の文字列である場合などです。

      • missingAttachmentMetadata

        添付ファイルのメタデータヘッダーがない場合にスローされます。

      • missingServiceConfiguration

        想定されるサービス構成がない場合にスローされます。

      • missingSysID

        想定されるsys_idパラメーターがない場合にスローされます。

      • ネットワーク (NetworkServiceError)
        • genericError(文字列)
        • operationCanceled
        • サービス無効
        • serverError(エラー)
        • systemError(エラー)

        ネットワークサービスでエラーが発生するとスローされます。

    表 : 17. 戻り値
    タイプ 説明
    なし

    次のコード例は、この関数を呼び出す方法を示しています。

    let sysId = UUID().uuidString  // UUID for the attachment
    attachmentService.attachmentMetadata(for: sysId) { (result) in
      DispatchQueue.main.async { [weak self] in
        switch result {
          case .success(let response):
            do {
              let data = try JSONEncoder().encode(response)
              // Retrieve metadata successfully, return data
            } catch {
              // Retrieve metadata failed, return error      
            }
          case .failure(let error):
            // Retrieve metadata failed, return NowDataError
        }	
      }
    }

    NowAttachmentService - attachmentMetadata(sysId の場合:文字列)

    指定されたsys_idに関連付けられている添付ファイルのメタデータを取得します。

    注:
    このメソッドは廃止されました。代わりに、メソッドの async/await 実装を使用する必要があります。
    表 : 18. パラメーター
    名前 タイプ 説明
    sysId 用 文字列 メタデータを取得する添付ファイルのSys_id。
    表 : 19. 戻り値
    タイプ 説明
    AnyPublisher<[NowAttachmentMetadata]、NowDataError> 成功:NowAttachmentMetadata:要求された添付ファイルのメタデータを含むオブジェクト。

    エラー:NowDataError

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError:アクセストークンプロバイダーのエラーコードまたはメッセージ。
        • アクセストークン回収失敗
        • userSessionError(_ error: Error)

      アクセストークンにエラーがある場合にスローされます。

    • attachmentValidation

      添付ファイルが検証に失敗した場合にスローされます。

    • badResponse (statusCode: HTTPStatusCode)
      • HTTPStatusCode:インスタンスから受信したステータスコード。

      要求が予期しない応答を返すとスローされます

    • cannotDecodeModel(デコードエラー)
      • DecodingError:デコードエラーが検出されました。

      コード可能なモデルを JSON からデコードできない場合にスローされます。

    • cannotDecodeProperty(type: Any, from: String)
      • type:文字列からデコードするためのラップされた型。
      • from:指定したタイプにデコードする文字列。

      文字列でラップされた値を JSON からデコードできない場合にスローされます。

    • cannotEncodeModel(EncodingError)
      • EncodingError:エンコードエラーが検出されました。

      コード可能なモデルを JSON にエンコードできない場合にスローされます。

    • 応答を解析できません

      インスタンスからの応答を想定される形式に解析できない場合にスローされます。

    • 無効なURL

      URL を形成できない場合にスローされます。たとえば、文字列に URL で無効な文字が含まれている場合や、空の文字列である場合などです。

    • missingAttachmentMetadata

      添付ファイルのメタデータヘッダーがない場合にスローされます。

    • missingServiceConfiguration

      想定されるサービス構成がない場合にスローされます。

    • missingSysID

      想定されるsys_idパラメーターがない場合にスローされます。

    • ネットワーク (NetworkServiceError)
      • genericError(文字列)
      • operationCanceled
      • サービス無効
      • serverError(エラー)
      • systemError(エラー)

      ネットワークサービスでエラーが発生するとスローされます。

    次のコード例は、この関数を呼び出す方法を示しています。

    let sysId = UUID().uuidString  // UUID for the attachment
    let publisher = self.attachmentService.attachmentMetadata(for: sysId)
    publisher
      .receive(on: DispatchQueue.main)
      .encode(encoder: JSONEncoder())
      .sink { [weak self] completion in
        if case let .failure(error) = completion {
          // Retrieve metadata failed, return NowDataError
        }
      } receiveValue: { [weak self] (data) in
         // Retrieve metadata successfully, return data
      }
    .store(in: &subscriptions)

    NowAttachmentService - attachmentMetadataPaginator(filter: Filter, limit: Int)

    指定された基準を満たすすべての添付ファイルのメタデータを取得し、返されたメタデータのページを反復処理するための Paginator オブジェクトを返します。

    表 : 20. パラメーター
    名前 タイプ 説明
    フィルター フィルター オプション。メタデータを返す添付ファイルをフィルタリングするために使用するクエリ文字列。

    デフォルト:nil - 利用可能なすべての添付ファイルのメタデータを返します。limitパラメーターが考慮されます。

    limit 整数 オプション。返す添付ファイルのメタデータの最大数。

    デフォルト:nil - filter パラメーターの仕様を満たすすべてのメタデータを返します。

    表 : 21. 戻り値
    タイプ 説明
    Paginator<[NowAttachmentMetadata]> 成功:NowAttachmentMetadata オブジェクトのアレイ。

    失敗:NowDataError オブジェクト。

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError:アクセストークンプロバイダーのエラーコードまたはメッセージ。
        • アクセストークン回収失敗
        • userSessionError(_ error: Error)

      アクセストークンにエラーがある場合にスローされます。

    • attachmentValidation

      添付ファイルが検証に失敗した場合にスローされます。

    • badResponse (statusCode: HTTPStatusCode)
      • HTTPStatusCode:インスタンスから受信したステータスコード。

      要求が予期しない応答を返すとスローされます

    • cannotDecodeModel(デコードエラー)
      • DecodingError:デコードエラーが検出されました。

      コード可能なモデルを JSON からデコードできない場合にスローされます。

    • cannotDecodeProperty(type: Any, from: String)
      • type:文字列からデコードするためのラップされた型。
      • from:指定したタイプにデコードする文字列。

      文字列でラップされた値を JSON からデコードできない場合にスローされます。

    • cannotEncodeModel(EncodingError)
      • EncodingError:エンコードエラーが検出されました。

      コード可能なモデルを JSON にエンコードできない場合にスローされます。

    • 応答を解析できません

      インスタンスからの応答を想定される形式に解析できない場合にスローされます。

    • 無効なURL

      URL を形成できない場合にスローされます。たとえば、文字列に URL で無効な文字が含まれている場合や、空の文字列である場合などです。

    • missingAttachmentMetadata

      添付ファイルのメタデータヘッダーがない場合にスローされます。

    • missingServiceConfiguration

      想定されるサービス構成がない場合にスローされます。

    • missingSysID

      想定されるsys_idパラメーターがない場合にスローされます。

    • ネットワーク (NetworkServiceError)
      • genericError(文字列)
      • operationCanceled
      • サービス無効
      • serverError(エラー)
      • systemError(エラー)

      ネットワークサービスでエラーが発生するとスローされます。

    次のコード例は、この関数を呼び出す方法を示しています。

    let paginator: Paginator<T> = makePaginator(query: query, fetchLimit: 1)
    
    func makePaginator(query: String, fetchLimit: Int?) -> Paginator<[NowAttachmentMetadata]> {
      attachmentsService.attachmentMetadataPaginator(filter: Filter(query: query), limit: fetchLimit)
    }

    NowAttachmentService - delete(sysId: String) 非同期がスローします

    指定したsys_idの添付ファイルを削除します。

    表 : 22. パラメーター
    名前 タイプ 説明
    sysId 文字列 削除する添付ファイルの sys_id。
    表 : 23. 戻り値
    タイプ 説明
    なし メソッドが成功した場合は何も返されません。
    NowDataError メソッドが失敗したときにスローされます。
    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError:アクセストークンプロバイダーのエラーコードまたはメッセージ。
        • アクセストークン回収失敗
        • userSessionError(_ error: Error)

      アクセストークンにエラーがある場合にスローされます。

    • attachmentValidation

      添付ファイルが検証に失敗した場合にスローされます。

    • badResponse (statusCode: HTTPStatusCode)
      • HTTPStatusCode:インスタンスから受信したステータスコード。

      要求が予期しない応答を返すとスローされます

    • cannotDecodeModel(デコードエラー)
      • DecodingError:デコードエラーが検出されました。

      コード可能なモデルを JSON からデコードできない場合にスローされます。

    • cannotDecodeProperty(type: Any, from: String)
      • type:文字列からデコードするためのラップされた型。
      • from:指定したタイプにデコードする文字列。

      文字列でラップされた値を JSON からデコードできない場合にスローされます。

    • cannotEncodeModel(EncodingError)
      • EncodingError:エンコードエラーが検出されました。

      コード可能なモデルを JSON にエンコードできない場合にスローされます。

    • 応答を解析できません

      インスタンスからの応答を想定される形式に解析できない場合にスローされます。

    • 無効なURL

      URL を形成できない場合にスローされます。たとえば、文字列に URL で無効な文字が含まれている場合や、空の文字列である場合などです。

    • missingAttachmentMetadata

      添付ファイルのメタデータヘッダーがない場合にスローされます。

    • missingServiceConfiguration

      想定されるサービス構成がない場合にスローされます。

    • missingSysID

      想定されるsys_idパラメーターがない場合にスローされます。

    • ネットワーク (NetworkServiceError)
      • genericError(文字列)
      • operationCanceled
      • サービス無効
      • serverError(エラー)
      • systemError(エラー)

      ネットワークサービスでエラーが発生するとスローされます。

    次のコード例は、このメソッドを呼び出す方法を示しています。

    do {
        try await attachmentService.delete(sysId: sysId)
        // Deletion successful
    } catch {
        // Deletion failed, NowDataError thrown
    }

    NowAttachmentService - delete(sysId: String, completion: @escaping (Result<Void, NowDataError>))

    指定されたsys_idの添付ファイルを削除し、添付ファイルが削除された後に、渡された完了ハンドラーを実行します。

    表 : 24. パラメーター
    名前 タイプ 説明
    sysId 文字列 削除する添付ファイルの sys_id。
    完了 @escaping (Result<Void, NowDataError>) 添付ファイルが削除された後に実行する補完ハンドラー。
    補完ハンドラーの戻り値:
    • 成功:無効
    • エラー:NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError:アクセストークンプロバイダーのエラーコードまたはメッセージ。
          • アクセストークン回収失敗
          • userSessionError(_ error: Error)

        アクセストークンにエラーがある場合にスローされます。

      • attachmentValidation

        添付ファイルが検証に失敗した場合にスローされます。

      • badResponse (statusCode: HTTPStatusCode)
        • HTTPStatusCode:インスタンスから受信したステータスコード。

        要求が予期しない応答を返すとスローされます

      • cannotDecodeModel(デコードエラー)
        • DecodingError:デコードエラーが検出されました。

        コード可能なモデルを JSON からデコードできない場合にスローされます。

      • cannotDecodeProperty(type: Any, from: String)
        • type:文字列からデコードするためのラップされた型。
        • from:指定したタイプにデコードする文字列。

        文字列でラップされた値を JSON からデコードできない場合にスローされます。

      • cannotEncodeModel(EncodingError)
        • EncodingError:エンコードエラーが検出されました。

        コード可能なモデルを JSON にエンコードできない場合にスローされます。

      • 応答を解析できません

        インスタンスからの応答を想定される形式に解析できない場合にスローされます。

      • 無効なURL

        URL を形成できない場合にスローされます。たとえば、文字列に URL で無効な文字が含まれている場合や、空の文字列である場合などです。

      • missingAttachmentMetadata

        添付ファイルのメタデータヘッダーがない場合にスローされます。

      • missingServiceConfiguration

        想定されるサービス構成がない場合にスローされます。

      • missingSysID

        想定されるsys_idパラメーターがない場合にスローされます。

      • ネットワーク (NetworkServiceError)
        • genericError(文字列)
        • operationCanceled
        • サービス無効
        • serverError(エラー)
        • systemError(エラー)

        ネットワークサービスでエラーが発生するとスローされます。

    表 : 25. 戻り値
    タイプ 説明
    なし

    次のコード例は、この関数を呼び出す方法を示しています。

    let sysId = UUID().uuidString  // UUID for the attachment
    attachmentService.delete(sysId: sysId) { (result) in
      DispatchQueue.main.async { [weak self] in
        switch result {
          case .success:
            // Attachment with sysId is deleted
          case .failure(let error):
            // Failed to delete, with NowDataError
        }
      }
    }

    NowAttachmentService - delete(sysId: String)

    指定したsys_idの添付ファイルを削除します。

    注:
    このメソッドは廃止されました。代わりに、メソッドの async/await 実装を使用する必要があります。
    表 : 26. パラメーター
    名前 タイプ 説明
    sysId 文字列 削除する添付ファイルの sys_id。
    表 : 27. 戻り値
    タイプ 説明
    AnyPublisher<Void、NowDataError> 成功:何も返されませんでした

    エラー:NowDataError

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError:アクセストークンプロバイダーのエラーコードまたはメッセージ。
        • アクセストークン回収失敗
        • userSessionError(_ error: Error)

      アクセストークンにエラーがある場合にスローされます。

    • attachmentValidation

      添付ファイルが検証に失敗した場合にスローされます。

    • badResponse (statusCode: HTTPStatusCode)
      • HTTPStatusCode:インスタンスから受信したステータスコード。

      要求が予期しない応答を返すとスローされます

    • cannotDecodeModel(デコードエラー)
      • DecodingError:デコードエラーが検出されました。

      コード可能なモデルを JSON からデコードできない場合にスローされます。

    • cannotDecodeProperty(type: Any, from: String)
      • type:文字列からデコードするためのラップされた型。
      • from:指定したタイプにデコードする文字列。

      文字列でラップされた値を JSON からデコードできない場合にスローされます。

    • cannotEncodeModel(EncodingError)
      • EncodingError:エンコードエラーが検出されました。

      コード可能なモデルを JSON にエンコードできない場合にスローされます。

    • 応答を解析できません

      インスタンスからの応答を想定される形式に解析できない場合にスローされます。

    • 無効なURL

      URL を形成できない場合にスローされます。たとえば、文字列に URL で無効な文字が含まれている場合や、空の文字列である場合などです。

    • missingAttachmentMetadata

      添付ファイルのメタデータヘッダーがない場合にスローされます。

    • missingServiceConfiguration

      想定されるサービス構成がない場合にスローされます。

    • missingSysID

      想定されるsys_idパラメーターがない場合にスローされます。

    • ネットワーク (NetworkServiceError)
      • genericError(文字列)
      • operationCanceled
      • サービス無効
      • serverError(エラー)
      • systemError(エラー)

      ネットワークサービスでエラーが発生するとスローされます。

    次のコード例は、この関数を呼び出す方法を示しています。

    let publisher = attachmentService.delete(sysId: sysId)
    publisher
      .receive(on: DispatchQueue.main)
      .sink { [weak self] completion in
        switch completion {
          case .finished:
            // Attachment with sysId is deleted
          case .failure(let error):
           // Failed to delete, with NowDataError
       }
     } receiveValue: {
     }
     .store(in: &subscriptions)

    NowAttachmentService - init(configuration: NowServiceConfiguration, coreServiceProvider: NowCoreServiceProviding)

    新しい NowAttachmentService インスタンスを初期化します。

    表 : 28. パラメーター
    名前 タイプ 説明
    構成 NowServiceConfiguration サービスを適切に初期化するために必要な構成情報。
    コアサービスプロバイダ NowCoreServiceProviding オプション。NowCoreServiceProviding プロトコルを実装するオブジェクト。

    デフォルト:nil

    次のコード例は、この関数を呼び出す方法を示しています。

    guard let coreService = NowSDK.core() else {
      // Error with NowServiceError.sdkNotConfigured
      return
    }
    guard 
      let instanceUrl = URL(string: "http://sample.service-now.com"), 
      let serviceConfig = NowSDK.makeServiceConfiguration(for: instanceUrl) else {
        // Could not create service – 
        // NowServiceError.serviceConfigurationInvalid
        return
    }
    let attachmentService = NowAttachmentService(configuration: serviceConfig, coreServiceProvider: coreService)

    NowAttachmentService - upload(data: Data, configuration: NowAttachmentUploadConfiguration, progressUpdate: @escaping ProgressUpdate) async throws

    添付ファイルデータをアップロードし、アップロード構成で指定されたテーブルのレコードに添付します。

    ProgressUpdate コールバックは、UI フィードバックを提供するために使用できるアップロードの進行状況情報を提供します。

    表 : 29. パラメーター
    名前 タイプ 説明
    データ データ アップロードする添付ファイル。
    構成 NowAttachmentUpload 構成 次のような、添付ファイルのアップロードパラメーターを定義する構成情報。
    • ファイルを添付するテーブルとレコード
    • 添付ファイル名
    • 添付ファイルのタイプ
    • ファイルが暗号化されているかどうか
    進行状況の更新 @escaping ProgressUpdate 添付ファイルを取得した後に実行する補完ハンドラー。これは、アップロードプロセスが完了するまで複数回呼び出されます。

    補完ハンドラーの戻り値:

    ProgressUpdate - アップロードの現在の進行状況を返します。

    ProgressUpdate = (_bytesWritten: Int64, _totalBytesWritten: Int64, _totalBytesExpectedToWrite: Int64) -> Void

    表 : 30. 戻り値
    タイプ 説明
    NowAttachmentMetadata メソッドが成功したときに返されます。アップロードされたメタデータを含むオブジェクト。
    NowDataError メソッドが失敗したときにスローされます。
    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError:アクセストークンプロバイダーのエラーコードまたはメッセージ。
        • アクセストークン回収失敗
        • userSessionError(_ error: Error)

      アクセストークンにエラーがある場合にスローされます。

    • attachmentValidation

      添付ファイルが検証に失敗した場合にスローされます。

    • badResponse (statusCode: HTTPStatusCode)
      • HTTPStatusCode:インスタンスから受信したステータスコード。

      要求が予期しない応答を返すとスローされます

    • cannotDecodeModel(デコードエラー)
      • DecodingError:デコードエラーが検出されました。

      コード可能なモデルを JSON からデコードできない場合にスローされます。

    • cannotDecodeProperty(type: Any, from: String)
      • type:文字列からデコードするためのラップされた型。
      • from:指定したタイプにデコードする文字列。

      文字列でラップされた値を JSON からデコードできない場合にスローされます。

    • cannotEncodeModel(EncodingError)
      • EncodingError:エンコードエラーが検出されました。

      コード可能なモデルを JSON にエンコードできない場合にスローされます。

    • 応答を解析できません

      インスタンスからの応答を想定される形式に解析できない場合にスローされます。

    • 無効なURL

      URL を形成できない場合にスローされます。たとえば、文字列に URL で無効な文字が含まれている場合や、空の文字列である場合などです。

    • missingAttachmentMetadata

      添付ファイルのメタデータヘッダーがない場合にスローされます。

    • missingServiceConfiguration

      想定されるサービス構成がない場合にスローされます。

    • missingSysID

      想定されるsys_idパラメーターがない場合にスローされます。

    • ネットワーク (NetworkServiceError)
      • genericError(文字列)
      • operationCanceled
      • サービス無効
      • serverError(エラー)
      • systemError(エラー)

      ネットワークサービスでエラーが発生するとスローされます。

    次のコード例は、このメソッドを呼び出す方法を示しています。

    func uploadFile(for tableName: String, sysId: String, mimeType: String, encryptionContext: String?, data: Data, filename: String) async throws -> NowAttachmentMetadata { 
    
        let mimeType = MediaUtilities.mimeType(forFileName: filename)
        let uploadConfig = NowAttachmentUploadConfiguration(tableName: tableName, 
                                                            recordSysId: sysId,
                                                            fileName: filename,
                                                            contentType: mimeType,
                                                            encryptionContext: encryptionContext) 
    
        do {
            let attachmentMetadata = try await attachmentService.upload(data: data, configuration: uploadConfig) { (_, _, _) in }
            return attachmentMetadata
        } catch {
            // Handle NowDataError
            throw error
        }
    }

    NowAttachmentService - upload(data: Data, configuration: NowAttachmentUploadConfiguration, progressUpdate: @escaping ProgressUpdate, completion: @escaping (Result<NowAttachmentMetadata, NowDataError>))

    添付ファイルデータをアップロードし、アップロード構成で指定されたテーブルのレコードに添付します。

    ProgressUpdate コールバックは、UI フィードバックを提供するために使用できるアップロードの進行状況情報を提供します。

    表 : 31. パラメーター
    名前 タイプ 説明
    データ データ アップロードする添付ファイル。
    構成 NowAttachmentUpload 構成 次のような、添付ファイルのアップロードパラメーターを定義する構成情報。
    • ファイルを添付するテーブルとレコード
    • 添付ファイル名
    • 添付ファイルのタイプ
    • ファイルが暗号化されているかどうか
    進行状況の更新 @escaping ProgressUpdate 添付ファイルを取得した後に実行する補完ハンドラー。これは、アップロードプロセスが完了するまで複数回呼び出されます。

    補完ハンドラーの戻り値:

    ProgressUpdate - アップロードの現在の進行状況を返します。

    ProgressUpdate = (_bytesWritten: Int64, _totalBytesWritten: Int64, _totalBytesExpectedToWrite: Int64) -> Void

    完了 @escaping (Result<NowAttachmentMetadata, NowDataError>) メタデータがアップロードされた後に実行する補完ハンドラー。
    補完ハンドラーの戻り値:
    • 成功: NowAttachmentMetadata :アップロードされた添付ファイルのメタデータを含むオブジェクト。
    • エラー:NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError:アクセストークンプロバイダーのエラーコードまたはメッセージ。
          • アクセストークン回収失敗
          • userSessionError(_ error: Error)

        アクセストークンにエラーがある場合にスローされます。

      • attachmentValidation

        添付ファイルが検証に失敗した場合にスローされます。

      • badResponse (statusCode: HTTPStatusCode)
        • HTTPStatusCode:インスタンスから受信したステータスコード。

        要求が予期しない応答を返すとスローされます

      • cannotDecodeModel(デコードエラー)
        • DecodingError:デコードエラーが検出されました。

        コード可能なモデルを JSON からデコードできない場合にスローされます。

      • cannotDecodeProperty(type: Any, from: String)
        • type:文字列からデコードするためのラップされた型。
        • from:指定したタイプにデコードする文字列。

        文字列でラップされた値を JSON からデコードできない場合にスローされます。

      • cannotEncodeModel(EncodingError)
        • EncodingError:エンコードエラーが検出されました。

        コード可能なモデルを JSON にエンコードできない場合にスローされます。

      • 応答を解析できません

        インスタンスからの応答を想定される形式に解析できない場合にスローされます。

      • 無効なURL

        URL を形成できない場合にスローされます。たとえば、文字列に URL で無効な文字が含まれている場合や、空の文字列である場合などです。

      • missingAttachmentMetadata

        添付ファイルのメタデータヘッダーがない場合にスローされます。

      • missingServiceConfiguration

        想定されるサービス構成がない場合にスローされます。

      • missingSysID

        想定されるsys_idパラメーターがない場合にスローされます。

      • ネットワーク (NetworkServiceError)
        • genericError(文字列)
        • operationCanceled
        • サービス無効
        • serverError(エラー)
        • systemError(エラー)

        ネットワークサービスでエラーが発生するとスローされます。

    表 : 32. 戻り値
    タイプ 説明
    なし

    次のコード例は、この関数を呼び出す方法を示しています。

    typealias ProgressUpdate = (_ bytesWritten: Int64, _ totalBytesWritten: Int64, _ totalBytesExpectedToWrite: Int64) -> Void
    
    let image = UIImage(named: "photo.png") 
    let data = image.pngData() 
    let recordSysId = "" // Sys_id of the record on the SN instance
    
    let config = NowAttachmentUploadConfiguration(
      tableName: "tableName", 
      recordSysId: recordSysId, 
      fileName: "photo.png",
      contentType: "image/png",
      encryptionContext: nil)
    
    private func uploadFile(
      data: Data,
      config: NowAttachmentUploadConfiguration,
      progress: @escaping ProgressUpdate) {
        attachmentService.upload(data: data, configuration: config, progressUpdate: progress) { (result) in
          DispatchQueue.main.async { [weak self] in
            switch result {
              case .success(let response)
                do {
                  let data = try JSONEncoder().encode(response)
                    // Upload file successfully, return data
                } catch
                    // Upload file decode failed, return error
                }
              case .failure(let error):
                    // Upload file failed, return NowDataError
          }
        }
      }
    

    NowAttachmentService - upload(data: Data, configuration: NowAttachmentUploadConfiguration, progressUpdate: @escaping ProgressUpdate)

    添付ファイルデータをアップロードし、アップロード構成で指定されたテーブルのレコードに添付します。

    ProgressUpdate コールバックは、UI フィードバックを提供するために使用できるアップロードの進行状況情報を提供します。

    注:
    このメソッドは廃止されました。代わりに、メソッドの async/await 実装を使用する必要があります。
    表 : 33. パラメーター
    名前 タイプ 説明
    データ データ アップロードする添付ファイル。アップロードできる添付ファイルのデータサイズとタイプは、 ServiceNow インスタンスによって制御されます。
    構成 NowAttachmentUploadConfiguration 次のような、添付ファイルのアップロードパラメーターを定義する構成情報。
    • ファイルを添付するテーブルとレコード
    • 添付ファイル名
    • 添付ファイルのタイプ
    • ファイルが暗号化されているかどうか
    進行状況の更新 @escaping ProgressUpdate 添付ファイルを取得した後に実行する補完ハンドラー。

    補完ハンドラーの戻り値:

    ProgressUpdate - アップロードの現在の進行状況を返します。これは、アップロードプロセスが完了するまで複数回呼び出されます。

    ProgressUpdate = (_bytesWritten: Int64, _totalBytesWritten: Int64, _totalBytesExpectedToWrite: Int64) -> Void

    表 : 34. 戻り値
    タイプ 説明
    AnyPublisher<NowAttachmentMetadata、NowDataError> 成功: NowAttachmentMetadata :要求された添付ファイルのメタデータを含むオブジェクト。

    エラー:NowDataError

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError:アクセストークンプロバイダーのエラーコードまたはメッセージ。
        • アクセストークン回収失敗
        • userSessionError(_ error: Error)

      アクセストークンにエラーがある場合にスローされます。

    • attachmentValidation

      添付ファイルが検証に失敗した場合にスローされます。

    • badResponse (statusCode: HTTPStatusCode)
      • HTTPStatusCode:インスタンスから受信したステータスコード。

      要求が予期しない応答を返すとスローされます

    • cannotDecodeModel(デコードエラー)
      • DecodingError:デコードエラーが検出されました。

      コード可能なモデルを JSON からデコードできない場合にスローされます。

    • cannotDecodeProperty(type: Any, from: String)
      • type:文字列からデコードするためのラップされた型。
      • from:指定したタイプにデコードする文字列。

      文字列でラップされた値を JSON からデコードできない場合にスローされます。

    • cannotEncodeModel(EncodingError)
      • EncodingError:エンコードエラーが検出されました。

      コード可能なモデルを JSON にエンコードできない場合にスローされます。

    • 応答を解析できません

      インスタンスからの応答を想定される形式に解析できない場合にスローされます。

    • 無効なURL

      URL を形成できない場合にスローされます。たとえば、文字列に URL で無効な文字が含まれている場合や、空の文字列である場合などです。

    • missingAttachmentMetadata

      添付ファイルのメタデータヘッダーがない場合にスローされます。

    • missingServiceConfiguration

      想定されるサービス構成がない場合にスローされます。

    • missingSysID

      想定されるsys_idパラメーターがない場合にスローされます。

    • ネットワーク (NetworkServiceError)
      • genericError(文字列)
      • operationCanceled
      • サービス無効
      • serverError(エラー)
      • systemError(エラー)

      ネットワークサービスでエラーが発生するとスローされます。

    次のコード例は、この関数を呼び出す方法を示しています。

    typealias ProgressUpdate = (_ bytesWritten: Int64, _ totalBytesWritten: Int64, _ totalBytesExpectedToWrite: Int64) -> Void
    
    let image = UIImage(named: "photo.png") 
    let data = image.pngData() 
    let recordSysId = "" // Sys_id of the record on the SN instance
    let config = NowAttachmentUploadConfiguration(
      tableName: "tableName", 
      recordSysId: recordSysId, 
      fileName: "photo.png",
      contentType: "image/png", 
      encryptionContext: nil)
    
    private func uploadFile(data: Data,
      config: NowAttachmentUploadConfiguration,
      progress: @escaping ProgressUpdate) {
        let publisher = attachmentService.upload(data: data, configuration: config, progressUpdate: progress)
    
        publisher
          .receive(on: DispatchQueue.main)
          .encode(encoder: JSONEncoder())
          .sink { [weak self] completion in
            if case let .failure(error) = completion {
              // Upload file failed, return NowDataError
            }
          } receiveValue: { [weak self] (data) in
            // Upload file successfully, return data
          }
          .store(in: &subscriptions)
      }