Swift Jira - Issues: Add a Comment

Back to Index

Adds a new comment to an issue. This example adds a comment for the issue with key = "SCRUM-15".

Documentation: https://developers.atlassian.com/cloud/jira/platform/rest/#api-api-2-issue-issueIdOrKey-comment-post

CURL Command

curl --user jira@example.com:JIRA_API_TOKEN \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '
    {
      "body": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget venenatis elit. Duis eu justo eget augue iaculis fermentum. Sed semper quam laoreet nisi egestas at posuere augue semper.",
      "visibility": {
        "type": "role",
        "value": "Administrators"
      }
    }' \
  --url 'https://your-domain.atlassian.net/rest/api/2/issue/SCRUM-15/comment'

Swift Example


func chilkatTest() {
    let rest = CkoRest()
    var success: Bool

    //  URL: https://your-domain.atlassian.net/rest/api/2/issue/SCRUM-15/comment
    var bTls: Bool = true
    var port: Int = 443
    var bAutoReconnect: Bool = true
    success = rest.Connect("your-domain.atlassian.net", port: port, tls: bTls, autoReconnect: bAutoReconnect)
    if success != true {
        print("ConnectFailReason: \(rest.ConnectFailReason.intValue)")
        print("\(rest.LastErrorText)")
        return
    }

    rest.SetAuthBasic("jira@example.com", password: "JIRA_API_TOKEN")

    let json = CkoJsonObject()
    json.UpdateString("body", value: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget venenatis elit. Duis eu justo eget augue iaculis fermentum. Sed semper quam laoreet nisi egestas at posuere augue semper.")
    json.UpdateString("visibility.type", value: "role")
    json.UpdateString("visibility.value", value: "Administrators")

    rest.AddHeader("Content-Type", value: "application/json")
    rest.AddHeader("Accept", value: "application/json")

    let sbRequestBody = CkoStringBuilder()
    json.EmitSb(sbRequestBody)
    let sbResponseBody = CkoStringBuilder()
    success = rest.FullRequestSb("POST", uriPath: "/rest/api/2/issue/SCRUM-15/comment", requestBody: sbRequestBody, responseBody: sbResponseBody)
    if success != true {
        print("\(rest.LastErrorText)")
        return
    }

    var respStatusCode: Int = rest.ResponseStatusCode.intValue
    if respStatusCode >= 400 {
        print("Response Status Code = \(respStatusCode)")
        print("Response Header:")
        print("\(rest.ResponseHeader)")
        print("Response Body:")
        print("\(sbResponseBody.GetAsString())")
        return
    }

    let jsonResponse = CkoJsonObject()
    jsonResponse.LoadSb(sbResponseBody)

    var self: String?
    var id: String?
    var authorSelf: String?
    var authorName: String?
    var authorKey: String?
    var authorAccountId: String?
    var authorEmailAddress: String?
    var authorAvatarUrls48x48: String?
    var authorAvatarUrls24x24: String?
    var authorAvatarUrls16x16: String?
    var authorAvatarUrls32x32: String?
    var authorDisplayName: String?
    var authorActive: Bool
    var authorTimeZone: String?
    var body: String?
    var updateAuthorSelf: String?
    var updateAuthorName: String?
    var updateAuthorKey: String?
    var updateAuthorAccountId: String?
    var updateAuthorEmailAddress: String?
    var updateAuthorAvatarUrls48x48: String?
    var updateAuthorAvatarUrls24x24: String?
    var updateAuthorAvatarUrls16x16: String?
    var updateAuthorAvatarUrls32x32: String?
    var updateAuthorDisplayName: String?
    var updateAuthorActive: Bool
    var updateAuthorTimeZone: String?
    var created: String?
    var updated: String?
    var visibilityType: String?
    var visibilityValue: String?

    self = jsonResponse.StringOf("self")
    id = jsonResponse.StringOf("id")
    authorSelf = jsonResponse.StringOf("author.self")
    authorName = jsonResponse.StringOf("author.name")
    authorKey = jsonResponse.StringOf("author.key")
    authorAccountId = jsonResponse.StringOf("author.accountId")
    authorEmailAddress = jsonResponse.StringOf("author.emailAddress")
    authorAvatarUrls48x48 = jsonResponse.StringOf("author.avatarUrls.48x48")
    authorAvatarUrls24x24 = jsonResponse.StringOf("author.avatarUrls.24x24")
    authorAvatarUrls16x16 = jsonResponse.StringOf("author.avatarUrls.16x16")
    authorAvatarUrls32x32 = jsonResponse.StringOf("author.avatarUrls.32x32")
    authorDisplayName = jsonResponse.StringOf("author.displayName")
    authorActive = jsonResponse.BoolOf("author.active")
    authorTimeZone = jsonResponse.StringOf("author.timeZone")
    body = jsonResponse.StringOf("body")
    updateAuthorSelf = jsonResponse.StringOf("updateAuthor.self")
    updateAuthorName = jsonResponse.StringOf("updateAuthor.name")
    updateAuthorKey = jsonResponse.StringOf("updateAuthor.key")
    updateAuthorAccountId = jsonResponse.StringOf("updateAuthor.accountId")
    updateAuthorEmailAddress = jsonResponse.StringOf("updateAuthor.emailAddress")
    updateAuthorAvatarUrls48x48 = jsonResponse.StringOf("updateAuthor.avatarUrls.48x48")
    updateAuthorAvatarUrls24x24 = jsonResponse.StringOf("updateAuthor.avatarUrls.24x24")
    updateAuthorAvatarUrls16x16 = jsonResponse.StringOf("updateAuthor.avatarUrls.16x16")
    updateAuthorAvatarUrls32x32 = jsonResponse.StringOf("updateAuthor.avatarUrls.32x32")
    updateAuthorDisplayName = jsonResponse.StringOf("updateAuthor.displayName")
    updateAuthorActive = jsonResponse.BoolOf("updateAuthor.active")
    updateAuthorTimeZone = jsonResponse.StringOf("updateAuthor.timeZone")
    created = jsonResponse.StringOf("created")
    updated = jsonResponse.StringOf("updated")
    visibilityType = jsonResponse.StringOf("visibility.type")
    visibilityValue = jsonResponse.StringOf("visibility.value")

}

Sample JSON Response Body

{
  "self": "https://chilkat.atlassian.net/rest/api/2/issue/10014/comment/10019",
  "id": "10019",
  "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"
  },
  "body": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget venenatis elit. Duis eu justo eget augue iaculis fermentum. Sed semper quam laoreet nisi egestas at posuere augue semper.",
  "updateAuthor": {
    "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-14T10:14:41.741-0500",
  "updated": "2018-04-14T10:14:41.741-0500",
  "visibility": {
    "type": "role",
    "value": "Administrators"
  }
}