Attaching a file

Shows how to upload a binary file specified in the request body, providing information about the attachment using the pysnow.ParamsBuilder API exposed in Resource.parameters.

Note

The attachment API (/api/now/attachment/file), as with all ServiceNow APIs that doesn’t conform with the standard REST principles, requires you to use Client.resource.request() and create a custom request.

import pysnow

# Create client object
c = pysnow.Client(instance='myinstance', user='myusername', password='mypassword')

# Create a resource
attachment = c.resource(api_path='/attachment/file')

# Provide the required information about the attachment
attachment.parameters.add_custom({
    'table_name': 'incident',
    'table_sys_id': '<incident_sys_id>',
    'file_name': 'attachment.txt'
})

# Set the payload
data = open('/tmp/attachment.txt', 'rb').read()

# Override the content-type header
headers = { "Content-Type": "text/plain" }

# Fire off the request
attachment.request(method='POST', data=data, headers=headers)