Add one or more attachments to an issue. This example will add 3 attachments to the issue "SCRUM-15".
curl -X POST --user jira@example.com:JIRA_API_TOKEN \
--header 'Accept: application/json' \
--header 'Content-Type: multipart/form-data' \
--header 'X-Atlassian-Token: no-check' \
--form 'name=file; file=@starfish.jpg' \
--form 'name=file; file=@sample2.docx' \
--form 'name=file; file=@sample.pdf' \
--url 'https://your-domain.atlassian.net/rest/api/2/issue/SCRUM-15/attachments'
CREATE PROCEDURE ChilkatSample
AS
BEGIN
DECLARE @hr int
DECLARE @iTmp0 int
DECLARE @sTmp0 nvarchar(4000)
DECLARE @rest int
EXEC @hr = sp_OACreate 'Chilkat_9_5_0.Rest', @rest OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
DECLARE @success int
-- URL: https://your-domain.atlassian.net/rest/api/2/issue/SCRUM-15/attachments
DECLARE @bTls int
SELECT @bTls = 1
DECLARE @port int
SELECT @port = 443
DECLARE @bAutoReconnect int
SELECT @bAutoReconnect = 1
EXEC sp_OAMethod @rest, 'Connect', @success OUT, 'your-domain.atlassian.net', STR(@port), STR(@bTls), STR(@bAutoReconnect)
IF STR(@success) <> 1
BEGIN
EXEC sp_OAGetProperty @rest, 'ConnectFailReason', @iTmp0 OUT
PRINT 'ConnectFailReason: ' + @iTmp0
EXEC sp_OAGetProperty @rest, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @rest
RETURN
END
EXEC sp_OAMethod @rest, 'SetAuthBasic', @success OUT, 'jira@example.com', 'JIRA_API_TOKEN'
EXEC sp_OASetProperty @rest, 'PartSelector', '1'
DECLARE @fileStream1 int
EXEC @hr = sp_OACreate 'Chilkat_9_5_0.Stream', @fileStream1 OUT
EXEC sp_OASetProperty @fileStream1, 'SourceFile', 'starfish.jpg'
EXEC sp_OAMethod @rest, 'AddHeader', @success OUT, 'Content-Disposition', 'form-data; name="file"; filename="starfish.jpg"'
EXEC sp_OAMethod @rest, 'AddHeader', @success OUT, 'Content-Type', 'image/jpeg'
EXEC sp_OAMethod @rest, 'SetMultipartBodyStream', @success OUT, STR(@fileStream1)
EXEC sp_OASetProperty @rest, 'PartSelector', '2'
DECLARE @fileStream2 int
EXEC @hr = sp_OACreate 'Chilkat_9_5_0.Stream', @fileStream2 OUT
EXEC sp_OASetProperty @fileStream2, 'SourceFile', 'sample2.docx'
EXEC sp_OAMethod @rest, 'AddHeader', @success OUT, 'Content-Disposition', 'form-data; name="file"; filename="sample2.docx"'
EXEC sp_OAMethod @rest, 'AddHeader', @success OUT, 'Content-Type', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
EXEC sp_OAMethod @rest, 'SetMultipartBodyStream', @success OUT, STR(@fileStream2)
EXEC sp_OASetProperty @rest, 'PartSelector', '3'
DECLARE @fileStream3 int
EXEC @hr = sp_OACreate 'Chilkat_9_5_0.Stream', @fileStream3 OUT
EXEC sp_OASetProperty @fileStream3, 'SourceFile', 'sample.pdf'
EXEC sp_OAMethod @rest, 'AddHeader', @success OUT, 'Content-Disposition', 'form-data; name="file"; filename="sample.pdf"'
EXEC sp_OAMethod @rest, 'AddHeader', @success OUT, 'Content-Type', 'application/pdf'
EXEC sp_OAMethod @rest, 'SetMultipartBodyStream', @success OUT, STR(@fileStream3)
EXEC sp_OASetProperty @rest, 'PartSelector', '0'
EXEC sp_OAMethod @rest, 'AddHeader', @success OUT, 'Content-Type', 'multipart/form-data'
EXEC sp_OAMethod @rest, 'AddHeader', @success OUT, 'X-Atlassian-Token', 'no-check'
EXEC sp_OAMethod @rest, 'AddHeader', @success OUT, 'Accept', 'application/json'
DECLARE @strResponseBody nvarchar(4000)
EXEC sp_OAMethod @rest, 'FullRequestMultipart', @strResponseBody OUT, 'POST', '/rest/api/2/issue/SCRUM-15/attachments'
EXEC sp_OAGetProperty @rest, 'LastMethodSuccess', @iTmp0 OUT
IF @iTmp0 <> 1
BEGIN
EXEC sp_OAGetProperty @rest, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @rest
EXEC @hr = sp_OADestroy @fileStream1
EXEC @hr = sp_OADestroy @fileStream2
EXEC @hr = sp_OADestroy @fileStream3
RETURN
END
DECLARE @respStatusCode int
EXEC sp_OAGetProperty @rest, 'ResponseStatusCode', @respStatusCode OUT
IF STR(@respStatusCode) >= 400
BEGIN
PRINT 'Response Status Code = ' + STR(@respStatusCode)
PRINT 'Response Header:'
EXEC sp_OAGetProperty @rest, 'ResponseHeader', @sTmp0 OUT
PRINT @sTmp0
PRINT 'Response Body:'
PRINT @strResponseBody
EXEC @hr = sp_OADestroy @rest
EXEC @hr = sp_OADestroy @fileStream1
EXEC @hr = sp_OADestroy @fileStream2
EXEC @hr = sp_OADestroy @fileStream3
RETURN
END
DECLARE @jsonResponse int
EXEC @hr = sp_OACreate 'Chilkat_9_5_0.JsonArray', @jsonResponse OUT
EXEC sp_OAMethod @jsonResponse, 'Load', @success OUT, @strResponseBody
DECLARE @arrIdx int
SELECT @arrIdx = 0
DECLARE @numArrayObjects int
EXEC sp_OAGetProperty @jsonResponse, 'Size', @numArrayObjects OUT
-- Iterate over the members of the array.
WHILE STR(@arrIdx) < STR(@numArrayObjects)
BEGIN
-- Make sure the array member at this index is a JSON object.
EXEC sp_OAMethod @jsonResponse, 'TypeAt', @iTmp0 OUT, STR(@arrIdx)
IF @iTmp0 = 3
BEGIN
DECLARE @jObj int
EXEC sp_OAMethod @jsonResponse, 'ObjectAt', @jObj OUT, STR(@arrIdx)
-- ...
EXEC @hr = sp_OADestroy @jObj
END
SELECT @arrIdx = STR(@arrIdx) + 1
END
EXEC @hr = sp_OADestroy @rest
EXEC @hr = sp_OADestroy @fileStream1
EXEC @hr = sp_OADestroy @fileStream2
EXEC @hr = sp_OADestroy @fileStream3
EXEC @hr = sp_OADestroy @jsonResponse
END
GO
[
{
"self": "https://chilkat.atlassian.net/rest/api/2/attachment/10001",
"id": "10001",
"filename": "starfish.jpg",
"author": {
"self": "https://chilkat.atlassian.net/rest/api/2/user?username=admin",
"name": "admin",
"key": "admin",
"accountId": "557058:be8b47b5-3bc0-43f6-b6b2-2cca0de12204",
"emailAddress": "admin@@chilkatsoft.com",
"avatarUrls": {
"48x48": "https://avatar-cdn.atlassian.com/16d54dcc6d4bef86fd7ee62a7cf6334a?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2F16d54dcc6d4bef86fd7ee62a7cf6334a%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue",
"24x24": "https://avatar-cdn.atlassian.com/16d54dcc6d4bef86fd7ee62a7cf6334a?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2F16d54dcc6d4bef86fd7ee62a7cf6334a%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue",
"16x16": "https://avatar-cdn.atlassian.com/16d54dcc6d4bef86fd7ee62a7cf6334a?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2F16d54dcc6d4bef86fd7ee62a7cf6334a%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue",
"32x32": "https://avatar-cdn.atlassian.com/16d54dcc6d4bef86fd7ee62a7cf6334a?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2F16d54dcc6d4bef86fd7ee62a7cf6334a%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"
},
"displayName": "Chilkat Admin",
"active": true,
"timeZone": "America/Chicago"
},
"created": "2018-04-13T10:04:44.966-0500",
"size": 6229,
"mimeType": "image/jpeg",
"content": "https://chilkat.atlassian.net/secure/attachment/10001/starfish.jpg",
"thumbnail": "https://chilkat.atlassian.net/secure/thumbnail/10001/starfish.jpg"
},
{
"self": "https://chilkat.atlassian.net/rest/api/2/attachment/10002",
"id": "10002",
"filename": "sample2.docx",
"author": {
"self": "https://chilkat.atlassian.net/rest/api/2/user?username=admin",
"name": "admin",
"key": "admin",
"accountId": "557058:be8b47b5-3bc0-43f6-b6b2-2cca0de12204",
"emailAddress": "admin@@chilkatsoft.com",
"avatarUrls": {
"48x48": "https://avatar-cdn.atlassian.com/16d54dcc6d4bef86fd7ee62a7cf6334a?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2F16d54dcc6d4bef86fd7ee62a7cf6334a%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue",
"24x24": "https://avatar-cdn.atlassian.com/16d54dcc6d4bef86fd7ee62a7cf6334a?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2F16d54dcc6d4bef86fd7ee62a7cf6334a%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue",
"16x16": "https://avatar-cdn.atlassian.com/16d54dcc6d4bef86fd7ee62a7cf6334a?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2F16d54dcc6d4bef86fd7ee62a7cf6334a%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue",
"32x32": "https://avatar-cdn.atlassian.com/16d54dcc6d4bef86fd7ee62a7cf6334a?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2F16d54dcc6d4bef86fd7ee62a7cf6334a%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"
},
"displayName": "Chilkat Admin",
"active": true,
"timeZone": "America/Chicago"
},
"created": "2018-04-13T10:04:45.706-0500",
"size": 21082,
"mimeType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"content": "https://chilkat.atlassian.net/secure/attachment/10002/sample2.docx"
},
{
"self": "https://chilkat.atlassian.net/rest/api/2/attachment/10003",
"id": "10003",
"filename": "sample.pdf",
"author": {
"self": "https://chilkat.atlassian.net/rest/api/2/user?username=admin",
"name": "admin",
"key": "admin",
"accountId": "557058:be8b47b5-3bc0-43f6-b6b2-2cca0de12204",
"emailAddress": "admin@@chilkatsoft.com",
"avatarUrls": {
"48x48": "https://avatar-cdn.atlassian.com/16d54dcc6d4bef86fd7ee62a7cf6334a?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2F16d54dcc6d4bef86fd7ee62a7cf6334a%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue",
"24x24": "https://avatar-cdn.atlassian.com/16d54dcc6d4bef86fd7ee62a7cf6334a?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2F16d54dcc6d4bef86fd7ee62a7cf6334a%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue",
"16x16": "https://avatar-cdn.atlassian.com/16d54dcc6d4bef86fd7ee62a7cf6334a?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2F16d54dcc6d4bef86fd7ee62a7cf6334a%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue",
"32x32": "https://avatar-cdn.atlassian.com/16d54dcc6d4bef86fd7ee62a7cf6334a?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2F16d54dcc6d4bef86fd7ee62a7cf6334a%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"
},
"displayName": "Chilkat Admin",
"active": true,
"timeZone": "America/Chicago"
},
"created": "2018-04-13T10:04:46.292-0500",
"size": 178399,
"mimeType": "application/pdf",
"content": "https://chilkat.atlassian.net/secure/attachment/10003/sample.pdf"
}
]