Skip to content

Atlassian: Add attachment

Atlassian issueAttachments.addAttachment: arguments, response, policy and SDK examples.

← Issue attachments operations · Get started

Operation atlassian.addattachment

Provider route: POST /{cloudId}/rest/api/3/issue/{issueIdOrKey}/attachments. Alter supplies the connection’s credentials and routing.

Install @alter-ai/sdk @alter-ai/atlassian with npm, or alter-sdk-atlassian with pip. Supply your connected customer’s grant ID and the arguments described below.

import { App } from "@alter-ai/sdk";
import { AtlassianIntegration } from "@alter-ai/atlassian";
async function execute(input: Parameters<AtlassianIntegration["issueAttachments"]["addAttachment"]>[0]) {
const app = new App({ apiKey: process.env.ALTER_API_KEY! });
try {
const provider = new AtlassianIntegration(app, { grantId: process.env.PROVIDER_GRANT_ID! });
const call = await provider.issueAttachments.addAttachment(input);
const result = await call.wait();
return result.bodyJson();
} finally {
await app.close();
}
}
import os
from alter_sdk import App
from alter_sdk_atlassian import AtlassianIntegration
async def execute(arguments):
async with App(api_key=os.environ["ALTER_API_KEY"]) as app:
provider = AtlassianIntegration(app, {"grant_id": os.environ["PROVIDER_GRANT_ID"]})
call = await provider.issue_attachments.add_attachment(arguments)
result = await call.wait()
return result.body_json()
FieldTypePresenceDescription and constraints
$objectRootAdditional keys: not allowed
pathobjectRequired within parentAdditional keys: not allowed
path.cloudIdstringRequired within parentPattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
path.issueIdOrKeystringRequired within parent
bodyobjectRequired within parentAdditional keys: not allowed
body.fileJSONRequired within parentOne or more files to attach to the issue.
body.file (anyOf 1)objectAlternativeAdditional keys: not allowed
body.file (anyOf 1).filenamestringRequired within parentMinimum length: 1
body.file (anyOf 1).content_typestringRequired within parentMinimum length: 1
body.file (anyOf 1).content_base64stringRequired within parent
body.file (anyOf 2)arrayAlternativeMinimum items: 1
body.file (anyOf 2)[]objectEach itemAdditional keys: not allowed
body.file (anyOf 2)[].filenamestringRequired within parentMinimum length: 1
body.file (anyOf 2)[].content_typestringRequired within parentMinimum length: 1
body.file (anyOf 2)[].content_base64stringRequired within parent

Response media type: application/json. The table describes the pinned successful response. Referenced models link to their complete fields.

FieldTypePresenceDescription and constraints
$arrayRoot
$[]ModelEach itemExpand Add attachment — response body — item

Referenced models: Add attachment — response body — item

Add attachment — response body — item
FieldTypePresenceDescription and constraints
$objectRootDetails about an attachment.
Additional keys: allowed
authorJSONOptional
author (anyOf 1)ModelAlternativeExpand Add comment — response body — author account Id, account Type, active, avatar Urls, display Name, email Address, key, name, self, time Zone
Details of the user who added the attachment.
Read only: true
author (anyOf 2)nullAlternative
contentJSONOptional
content (anyOf 1)stringAlternativeThe content of the attachment.
Read only: true
content (anyOf 2)nullAlternative
createdJSONOptional
created (anyOf 1)JSONAlternative
created (anyOf 1) (anyOf 1)stringAlternativeThe datetime the attachment was created.
Read only: true
created (anyOf 1) (anyOf 2)integerAlternative
created (anyOf 2)nullAlternative
filenameJSONOptional
filename (anyOf 1)stringAlternativeThe file name of the attachment.
Read only: true
filename (anyOf 2)nullAlternative
idJSONOptional
id (anyOf 1)stringAlternativeThe ID of the attachment.
Read only: true
id (anyOf 2)nullAlternative
mimeTypeJSONOptional
mimeType (anyOf 1)stringAlternativeThe MIME type of the attachment.
Read only: true
mimeType (anyOf 2)nullAlternative
selfJSONOptional
self (anyOf 1)stringAlternativeThe URL of the attachment details response.
Read only: true
self (anyOf 2)nullAlternative
sizeJSONOptional
size (anyOf 1)JSONAlternative
size (anyOf 1) (anyOf 1)integerAlternativeThe size of the attachment.
Format: int64
Read only: true
size (anyOf 1) (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
size (anyOf 2)nullAlternative
thumbnailJSONOptional
thumbnail (anyOf 1)stringAlternativeThe URL of a thumbnail representing the attachment.
Read only: true
thumbnail (anyOf 2)nullAlternative

Referenced models: Add comment — response body — author account Id, account Type, active, avatar Urls, display Name, email Address, key, name, self, time Zone

Add comment — response body — author account Id, account Type, active, avatar Urls, display Name, email Address, key, name, self, time Zone
FieldTypePresenceDescription and constraints
$objectRootUser details permitted by the user's Atlassian Account privacy settings. However, be aware of these exceptions:

* User record deleted from Atlassian: This occurs as the result of a right to be forgotten request. In this case, `displayName` provides an indication and other parameters have default values or are blank (for example, email is blank).
* User record corrupted: This occurs as a results of events such as a server import and can only happen to deleted users. In this case, `accountId` returns *unknown* and all other parameters have fallback values.
* User record unavailable: This usually occurs due to an internal service outage. In this case, all parameters have fallback values.
accountIdJSONOptional
accountId (anyOf 1)stringAlternativeThe account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*.
Maximum length: 128
accountId (anyOf 2)nullAlternative
accountTypeJSONOptional
accountType (anyOf 1)stringAlternativeThe type of account represented by this user. This will be one of 'atlassian' (normal users), 'app' (application user) or 'customer' (Jira Service Desk customer user)
Read only: true
accountType (anyOf 2)nullAlternative
activeJSONOptional
active (anyOf 1)booleanAlternativeWhether the user is active.
Read only: true
active (anyOf 2)nullAlternative
avatarUrlsJSONOptional
avatarUrls (anyOf 1)ModelAlternativeExpand Get user — response body — avatar Urls 16x16, 24x24, 32x32, 48x48
The avatars of the user.
Read only: true
avatarUrls (anyOf 2)nullAlternative
displayNameJSONOptional
displayName (anyOf 1)stringAlternativeThe display name of the user. Depending on the user’s privacy settings, this may return an alternative value.
Read only: true
displayName (anyOf 2)nullAlternative
emailAddressJSONOptional
emailAddress (anyOf 1)stringAlternativeThe email address of the user. Depending on the user’s privacy settings, this may be returned as null.
Read only: true
emailAddress (anyOf 2)nullAlternative
keyJSONOptional
key (anyOf 1)stringAlternativeThis property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details.
Read only: true
key (anyOf 2)nullAlternative
nameJSONOptional
name (anyOf 1)stringAlternativeThis property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details.
Read only: true
name (anyOf 2)nullAlternative
selfJSONOptional
self (anyOf 1)stringAlternativeThe URL of the user.
Read only: true
self (anyOf 2)nullAlternative
timeZoneJSONOptional
timeZone (anyOf 1)stringAlternativeThe time zone specified in the user's profile. Depending on the user’s privacy settings, this may be returned as null.
Read only: true
timeZone (anyOf 2)nullAlternative

Referenced models: Get user — response body — avatar Urls 16x16, 24x24, 32x32, 48x48

Get user — response body — avatar Urls 16x16, 24x24, 32x32, 48x48
FieldTypePresenceDescription and constraints
$objectRoot
16x16JSONOptional
16x16 (anyOf 1)stringAlternativeThe URL of the item's 16x16 pixel avatar.
Format: uri
16x16 (anyOf 2)nullAlternative
24x24JSONOptional
24x24 (anyOf 1)stringAlternativeThe URL of the item's 24x24 pixel avatar.
Format: uri
24x24 (anyOf 2)nullAlternative
32x32JSONOptional
32x32 (anyOf 1)stringAlternativeThe URL of the item's 32x32 pixel avatar.
Format: uri
32x32 (anyOf 2)nullAlternative
48x48JSONOptional
48x48 (anyOf 1)stringAlternativeThe URL of the item's 48x48 pixel avatar.
Format: uri
48x48 (anyOf 2)nullAlternative

SDK function policy ID: atlassian.addattachment. Catalog operation: addAttachment. Rules can name either ID; function rules distinguish managed calls and conservatively cover raw calls sharing the route. Existing grant permissions and policy rules apply. wait() returns an immediate result or waits for a required approval; it never approves the request itself. Persist the approval ID to resume after a restart.

Provider errors retain their response; JSON decoding raises ProviderAPIError for provider failures. ManagedOperationError identifies contract/input/retention errors. See error handling and provider-specific behavior. Sensitive input may be refused before approval storage. A decoding error never resubmits a write.

Required provider scopes: ["write:jira-work"]

Pinned headers: {"X-Atlassian-Token": "no-check"}

Official provider source

Report an issue with this page

Necessary

Required for sign-in, security, authorization, and remembering your choices.

Always active

Analytics

Helps us understand which product and documentation features are useful.

Performance diagnostics

Uses performance tracing and privacy-masked session replay to diagnose problems.

You can change these choices at any time from Cookie settings.