---
sourceDocument: Xanadu API Reference
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - en-US

ft:publication_title :

    - Xanadu API Reference

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# NowAttachmentMetadata structure - iOS

# NowAttachmentMetadata structure - iOS {#ariaid-title1}

* Release version: Xanadu
* 
* Updated August 1, 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 2 minutes to read

The NowAttachmentMetadata structure provides functions that enable
you to encode and manage attachment metadata.
{#NowAttachmentMetadataiOSStructure__table_vx2_klw_5pb__entry__3}

| Name | Type | Description |
|-|-|-|
| averageImageColor | String | Most dominant color in the associated image. |
| chunkSizeInBytes | Integer | Size of the chunk. Unit: Bytes |
| compressed​Size​InBytes | Integer | Compressed size of the attachment. Unit: Bytes |
| created | Date | Date on which the attachment was created. |
| createdBy | String | Entity that created the attachment. |
| download | URL | URL of the attachment on the ServiceNow instance. |
| fileName | String | Name of the attachment file. |
| hash | String | Expected SHA256 digest for the attachment. A downloaded attachment is [validated](https://servicenow-prod.fluidtopics.net/g7KJD1~RU_nHzDzc18~DNg#NAttachiOS-validate "Validates the attachment by comparing the computed hash for the attachment data to the digest stored in the attachment metadata.") by comparing its computed digest to this SHA256 digest. |
| imageHeight | Integer | Height of image. Unit: Pixels |
| imageWidth | Integer | Width of image. Unit: Pixels |
| isCompressed | Boolean | Flag that indicates whether the attachment file is compressed. Possible values: * true: Attachment is compressed. * false: Attachment in not compressed. |
| mimeType | String | Attachment MIME type. |
| modificationCount | Integer | Number of times that the attachment was modified. |
| sizeInBytes | Integer | Size of the attachment. Unit: Bytes |
| sourceSysId | String | Sys_id of the attachment file. |
| sourceTableName | String | Name of the source table in which the attachment resides. |
| state |   | Availability state, such as conditionally, unavailable, available, and pending. |
| sysId | String | Unique 32-character Globally Unique ID (GUID), that identifies each record in a ServiceNow instance. |
| tags | String | List of tags associated with the attachment. |
| updated | Date | Date on which the attachment was last modified. |
| updatedBy | String | Entity that updated the attachment. |
[Table 1. Properties]

{#NowAttachmentMetadataiOSStructure__table_vx2_klw_5pb}

## NowAttachmentMetadata - encode(to encoder: Encoder) {#ariaid-title2}

Encodes the current object value into data using the specified encoder.
If the object fails to be encoded into data, the encoder encodes an empty [keyed container](https://developer.apple.com/documentation/swift/keyeddecodingcontainer) in its place. This function also
throws an error if any values are invalid for the specified encoder's format.
{#NAttMeta-encode_S__table_vx2_klw_5pb__entry__3}

| Name | Type | Description |
|-|-|-|
| to encoder | [Encoder](https://developer.apple.com/documentation/swift/encoder) | Encoder that defines the structure of the encoded output. |
[Table 2. Parameters]

{#NAttMeta-encode_S__table_vx2_klw_5pb} {#NAttMeta-encode_S__table_wx2_klw_5pb__entry__2}

| Type | Description |
|-|-|
| None |   |
[Table 3. Returns]

{#NAttMeta-encode_S__table_wx2_klw_5pb}  
The following code example shows how to call this function.

    let query = "active=true^short_descriptionLIKEbroken"
    let filter = Filter(query: query)
    metadataPublisher(filter: filter, limit: 1)
    private func metadataPublisher(filter: Filter?, limit: Int?) {
      let publisher = attachmentService.attachmentMetadata(filter: filter, limit: limit)
      publisher
      .receive(on: DispatchQueue.main)
      .encode(encoder: JSONEncoder())
      .sink { [weak self] completion in
        if case let .failure(error) = completion {
          // attachment published failed, return NowDataError
        }
      } receiveValue: { [weak self] (data) in
        // Attachment published successful, return data
      }
      .store(in: &subscriptions)
    }

## NowAttachmentMetadata - init(from decoder: Decoder) {#ariaid-title3}

Creates a new NowAttachmentMetadata instance by decoding data into an object from the
specified decoder.
This method throws an error if reading from the decoder fails or if the data read is
corrupt or otherwise invalid.
{#NAttMeta-init_S__table_phq_nkw_5pb__entry__3}

| Name | Type | Description |
|-|-|-|
| decoder | Decoder | Decoder to read data from. |
[Table 4. Parameters]

{#NAttMeta-init_S__table_phq_nkw_5pb} {#NAttMeta-init_S__table_qhq_nkw_5pb__entry__2}

| Type | Description |
|-|-|
| None |   |
[Table 5. Returns]

{#NAttMeta-init_S__table_qhq_nkw_5pb}  
The following code example shows how to call this function.

    guard 
      let metadataHeader = response.httpResponse?.value(forHTTPHeaderField: NowAttachment.attachmentMetadataHeaderKey),
      let metadataHeaderData = metadataHeader.data(using: .utf8) else {
        throw NowDataError.missingAttachmentMetadata
      }
                
    let metadata = try coder.decode(NowAttachmentMetadata.self, from: metadataHeaderData)
    let attachment = NowAttachment(metadata: metadata, data: response.data)


