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'
#include <C_CkRest.h>
#include <C_CkStream.h>
#include <C_CkJsonArray.h>
#include <C_CkJsonObject.h>
void ChilkatSample(void)
{
HCkRest rest;
BOOL success;
BOOL bTls;
int port;
BOOL bAutoReconnect;
HCkStream fileStream1;
HCkStream fileStream2;
HCkStream fileStream3;
const char *strResponseBody;
int respStatusCode;
HCkJsonArray jsonResponse;
int arrIdx;
int numArrayObjects;
HCkJsonObject jObj;
rest = CkRest_Create();
// URL: https://your-domain.atlassian.net/rest/api/2/issue/SCRUM-15/attachments
bTls = TRUE;
port = 443;
bAutoReconnect = TRUE;
success = CkRest_Connect(rest,"your-domain.atlassian.net",port,bTls,bAutoReconnect);
if (success != TRUE) {
printf("ConnectFailReason: %d\n",CkRest_getConnectFailReason(rest));
printf("%s\n",CkRest_lastErrorText(rest));
CkRest_Dispose(rest);
return;
}
CkRest_SetAuthBasic(rest,"jira@example.com","JIRA_API_TOKEN");
CkRest_putPartSelector(rest,"1");
fileStream1 = CkStream_Create();
CkStream_putSourceFile(fileStream1,"starfish.jpg");
CkRest_AddHeader(rest,"Content-Disposition","form-data; name=\"file\"; filename=\"starfish.jpg\"");
CkRest_AddHeader(rest,"Content-Type","image/jpeg");
CkRest_SetMultipartBodyStream(rest,fileStream1);
CkRest_putPartSelector(rest,"2");
fileStream2 = CkStream_Create();
CkStream_putSourceFile(fileStream2,"sample2.docx");
CkRest_AddHeader(rest,"Content-Disposition","form-data; name=\"file\"; filename=\"sample2.docx\"");
CkRest_AddHeader(rest,"Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document");
CkRest_SetMultipartBodyStream(rest,fileStream2);
CkRest_putPartSelector(rest,"3");
fileStream3 = CkStream_Create();
CkStream_putSourceFile(fileStream3,"sample.pdf");
CkRest_AddHeader(rest,"Content-Disposition","form-data; name=\"file\"; filename=\"sample.pdf\"");
CkRest_AddHeader(rest,"Content-Type","application/pdf");
CkRest_SetMultipartBodyStream(rest,fileStream3);
CkRest_putPartSelector(rest,"0");
CkRest_AddHeader(rest,"Content-Type","multipart/form-data");
CkRest_AddHeader(rest,"X-Atlassian-Token","no-check");
CkRest_AddHeader(rest,"Accept","application/json");
strResponseBody = CkRest_fullRequestMultipart(rest,"POST","/rest/api/2/issue/SCRUM-15/attachments");
if (CkRest_getLastMethodSuccess(rest) != TRUE) {
printf("%s\n",CkRest_lastErrorText(rest));
CkRest_Dispose(rest);
CkStream_Dispose(fileStream1);
CkStream_Dispose(fileStream2);
CkStream_Dispose(fileStream3);
return;
}
respStatusCode = CkRest_getResponseStatusCode(rest);
if (respStatusCode >= 400) {
printf("Response Status Code = %d\n",respStatusCode);
printf("Response Header:\n");
printf("%s\n",CkRest_responseHeader(rest));
printf("Response Body:\n");
printf("%s\n",strResponseBody);
CkRest_Dispose(rest);
CkStream_Dispose(fileStream1);
CkStream_Dispose(fileStream2);
CkStream_Dispose(fileStream3);
return;
}
jsonResponse = CkJsonArray_Create();
CkJsonArray_Load(jsonResponse,strResponseBody);
arrIdx = 0;
numArrayObjects = CkJsonArray_getSize(jsonResponse);
// Iterate over the members of the array.
while (arrIdx < numArrayObjects) {
// Make sure the array member at this index is a JSON object.
if (CkJsonArray_TypeAt(jsonResponse,arrIdx) == 3) {
jObj = CkJsonArray_ObjectAt(jsonResponse,arrIdx);
// ...
CkJsonObject_Dispose(jObj);
}
arrIdx = arrIdx + 1;
}
CkRest_Dispose(rest);
CkStream_Dispose(fileStream1);
CkStream_Dispose(fileStream2);
CkStream_Dispose(fileStream3);
CkJsonArray_Dispose(jsonResponse);
}
[
{
"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"
}
]