---
sourceDocument: Referência de API do Xanadu
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/pt-BR/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - pt-BR

ft:publication_title :

    - Referência de API do Xanadu

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# Recuperar anexos e metadados de anexos

# Recuperar anexos e metadados de anexos {#ariaid-title1}

* Versão de lançamento: Xanadu
* 
* Atualizado 1 de ago. de 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 2 min. de leitura

A API NowAttachmentService permite que você execute operações CRUD em anexos e recupere metadados de anexo da sua instância ServiceNow.
Nota:  
A API NowAttachment funciona para usuários convidados no sistema base ServiceNow.  
Usando esta API, você pode:

* Carregar anexos para sua instância ServiceNow e associá-los a um registro específico.
* Baixe um ou mais anexos.
* Excluir anexos.
* Valide um anexo comparando o hash calculado do anexo com o hash esperado.
* Baixar metadados de anexo. Esses metadados são gerados por sua instância ServiceNow quando um anexo é carregado.
{#mobsdk-and-retrieve_attach_metadata__ul_l5y_qjw_3qb}

Para obter informações adicionais sobre como trabalhar com anexos, consulte [API de anexos](https://servicenow-prod.fluidtopics.net/ucSwEIgNhdaEXR1UlTX~9A#c_AttachmentAPI "A API de anexos fornece endpoints que permitem carregar e consultar anexos de arquivo.").  
Veja a seguir como instanciar o NowAttachmentService:

    /**
     * Helper class used to handle different Now service instances. 
     * It has an application scope or is a Singleton.
     */
    @Singleton
    class SdkManager @Inject constructor() {


        private var nowAttachmentService: NowAttachmentService? = null

        /**
         * Create the NowAttachmentService once in the lifetime of the application 
         * inside the Application class or another manager class
         * that will be injected into other classes via dagger/hilt.
         * NowAttachmentService should be created after initializing the NowSDK
         */
        suspend fun getNowAttachmentService(): NowAttachmentService? {
            if (nowAttachmentService != null) return nowAttachmentService

            return NowDataSDK.makeAttachmentService(URL("https://instance-name.service-now.com"))
                .getOrThrow()
                .also { this.nowAttachmentService = it }
        }
    }

Veja a seguir como obter um objeto [Call](https://servicenow-prod.fluidtopics.net/3pSuthm1bUG8QcZWbXf62g#CallAndroidInterface "A interface Chamada representa uma solicitação que está preparada para processamento.") que busca metadados para anexos específicos. Ele cria um objeto executável que é capaz de executar a solicitação especificada e retornar a `resposta`\<NowAttachmentMetadata\> .  

    suspend fun fetchMetadata(sysId: String) {
        val response = runCatching {
            sdkManager.getNowAttachmentService()?.attachmentMetadata(sysId)?.execute()
        }

        if (response.isSuccess) {
            val nowAttachmentMetadata = response.getOrNull()?.body
        } else {
            Log.e("NowSDK", "result not successful")
        }
    }

Veja a seguir como obter um objeto [Call](https://servicenow-prod.fluidtopics.net/3pSuthm1bUG8QcZWbXf62g#CallAndroidInterface "A interface Chamada representa uma solicitação que está preparada para processamento.") que busca metadados para vários anexos. Ele cria um objeto executável que é capaz de executar a solicitação especificada e retornar a `lista Response<`\<NowAttachmentMetadata\> \> .  

    suspend fun fetchMultipleMetadata() {
        val filterQuery = "content_type=text/plain"
        val limit = 5

        val response = runCatching {
            sdkManager.getNowAttachmentService()?.attachmentMetadata(Filter(filterQuery), limit)?.execute()
        }

        if (response.isSuccess) {
            val attachmentMetadataList = response.getOrNull()?.body
        } else {
            Log.e("NowSDK", "result not successful")
        }
    }

## Paginação de metadados de anexo {#mobsdk-and-retrieve_attach_metadata__section_stt_34w_3qb}

Você pode usar os métodos NowAttachmentService para baixar metadados de anexo para um ou mais anexos. Ao baixar metadados de vários anexos, convém usar o método [NowAttachmentService - attachmentMetadataPaginator (filtro: filtro? = nulo, limite: int? = nulo)](https://servicenow-prod.fluidtopics.net/g3qh8i_t8JFpXTR1HKl6NA#NAttServ-attachMetadataPaginat_S_I "Recupera os metadados de todos os anexos que atendem aos critérios especificados e cria um paginador para iterar nas páginas dos metadados retornados."), que retorna um objeto Paginator que permite iterar facilmente sobre a quantidade potencialmente grande de dados retornados.  
Você pode iterar por meio dos metadados retornados usando métodos do Paginator e recebendo a resposta no retorno de chamada observe().

     suspend fun createAttachmentMetadataPaginator() {
      val filterQuery: String = "content_type=text/plain"
      val filter = filterQuery.let(::Filter)
      val limit = 10

      val paginator = sdkmanager.getNowAttachmentService()?.attachmentMetadataPaginator(filter, limit)
        ?.observe(object : PaginatorCallBack<NowAttachmentMetadata> {
          override fun onSuccess(response: Response<List<NowAttachmentMetadata>>) {
            // Handle response
          }

          override fun onFailure(e: NowDataError) {
            // Handle error
          }

        })
        ?: throw Exception("Response is null")

      // Use paginator operators to navigate. Example
      while (paginator.hasNext() && !paginator.isBusy()) {
        paginator.next()
      }
    }

O objeto Paginator retornado fornece os seguintes métodos que permitem paginar os registros retornados. Você deve primeiro chamar a função observe() para definir o retorno de chamada do paginador.

* primeiro ()
* temPróximo()
* temAnterior
* estáOcupado
* último ()
* próximo ()
* observar ()
* anterior ()
* redefinir ()

{#mobsdk-and-retrieve_attach_metadata__ul_pyb_2w3_3qb}  
Nota:  
Alguns métodos do Paginador podem gerar uma exceção, como quando não há mais páginas para buscar.

