PATCH Method
Overview
The HTTP PATCH method allows you to update information based on data that you include in the body of the request.
For example, here is a list of artifacts included in the request body (in JSON format):
[ { "Id": 220914, "Properties": [ { "PropertyTypeId": 9988, "TextOrChoiceValue": "Traveler Booking 1" } ] } ]
Note: XML data in the request body must adhere to the Blueprint REST API XML Schema.
What should I do if I cannot use the PATCH method?
In some environments, the firewall may not support the PATCH method, or the PATCH method may be disabled. It is possible to use HTTP POST method instead of HTTP PATCH.
To submit information using the HTTP POST method instead of HTTP PATCH, you must add the following information to the request header to override the PATCH method:
X-HTTP-Method-Override: PATCH
Python Example
Below is a python example that submits an Update Artifacts request using the PATCH method.
def update_artifacts(): # obtain a token from our get_token() function token = get_token() # Of course, this ID would generally come from somewhere else instead of hardcoding it. project_id = "220870" # build the resource uri for listing artifacts in a given project resource_uri = 'https://production.blueprintcloud.com/api/v1/projects/' + project_id + '/artifacts/' # specify header parameters request_header={ 'Authorization' : 'BlueprintToken ' + token, 'Accept' : 'application/json', 'Content-Type' : 'text/json' } # specify the uri parameters uri_parameters_list={ } # create the request uri with the uri parameters request_uri = resource_uri + '?' + urllib.parse.urlencode(uri_parameters_list) output_requesturi(request_uri) # the request body would generally built from external data instead of hardcoding it # for demonstration purposes, an example is provided in both xml and json format artifactid_to_update = "220914" propertyid_to_update = "9988" new_property_value = "Traveler Booking 1" xml_request_body = (''' <Artifacts xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.blueprintsys.com/blueprint/api/v1"> <Artifact> <Id>%s</Id> <Properties> <Property> <PropertyTypeId>%s</PropertyTypeId> <TextOrChoiceValue>%s</TextOrChoiceValue> </Property> </Properties> </Artifact> </Artifacts> ''')% (artifactid_to_update, propertyid_to_update, new_property_value) json_request_body = (''' [ { "Id": %s, "Properties": [ { "PropertyTypeId": %s, "TextOrChoiceValue": "%s" } ] } ] ''')% (artifactid_to_update, propertyid_to_update, new_property_value) # set the request body to the proper format for Content-Type:text/json request_body=json_request_body output_requestbody(request_body) # submit the request using HTTP PATCH method response = requests.patch(request_uri, request_body, headers=request_header) return response