openapi: 3.2.0 info: title: Confluence Cloud REST Content - macro body API description: This document describes the REST API and resources provided by Confluence. termsOfService: https://atlassian.com/terms/ version: 1.0.0 servers: - url: //your-domain.atlassian.net tags: - name: Content - Macro Body description: '' paths: /wiki/rest/api/content/{id}/history/{version}/macro/id/{macroId}: get: tags: - Content - Macro Body summary: Get macro body by macro ID description: 'Returns the body of a macro in storage format, for the given macro ID. This includes information like the name of the macro, the body of the macro, and any macro parameters. This method is mainly used by Cloud apps. About the macro ID: When a macro is created in a new version of content, Confluence will generate a random ID for it, unless an ID is specified (by an app). The macro ID will look similar to this: ''50884bd9-0cb8-41d5-98be-f80943c14f96''. The ID is then persisted as new versions of content are created, and is only modified by Confluence if there are conflicting IDs. For Forge macros, the value for macro ID is the "local ID" of that particular ADF node. This value can be retrieved either client-side by calling view.getContext() and accessing "localId" on the resulting object, or server-side by examining the "local-id" parameter node inside the "parameters" node. Note that there are other attributes named "local-id", but only this particular one is used to store the macro ID. Example: com.atlassian.ecosystem e9c4aa10-73fa-417c-888d-48c719ae4165 Note, to preserve backwards compatibility this resource will also match on the hash of the macro body, even if a macro ID is found. This check will eventually become redundant, as macro IDs are generated for pages and transparently propagate out to all instances. This backwards compatibility logic does not apply to Forge macros; those can only be retrieved by their ID. **Permissions required**: Permission to view the content that the macro is in.' operationId: getMacroBodyByMacroId parameters: - name: id in: path description: The ID for the content that contains the macro. required: true schema: type: string - name: version in: path description: 'The version of the content that contains the macro. Specifying `0` as the `version` will return the macro body for the latest content version.' required: true schema: type: integer format: int32 - name: macroId in: path description: 'The ID of the macro. This is usually passed by the app that the macro is in. Otherwise, find the macro ID by querying the desired content and version, then expanding the body in storage format. For example, ''/content/196611/version/7?expand=content.body.storage''.' required: true schema: type: string responses: '200': description: Returned if the requested macro body is returned. content: application/json: schema: $ref: '#/components/schemas/MacroInstance' '401': description: 'Returned if the authentication credentials are incorrect or missing from the request.' content: {} '404': description: 'Returned if; - There is no content with the given ID. - The calling user does not have permission to view the content. - The macro does not exist in the specified version. - There is no macro matching the given macro ID or hash.' content: {} security: - basicAuth: [] - oAuthDefinitions: - read:confluence-content.all x-atlassian-oauth2-scopes: - scheme: oAuthDefinitions state: Current scopes: - read:confluence-content.all - scheme: oAuthDefinitions state: Beta scopes: - read:content.metadata:confluence x-atlassian-data-security-policy: - app-access-rule-exempt: false x-atlassian-connect-scope: READ /wiki/rest/api/content/{id}/history/{version}/macro/id/{macroId}/convert/{to}: get: tags: - Content - Macro Body summary: Get macro body by macro ID and convert the representation synchronously description: 'Returns the body of a macro in format specified in path, for the given macro ID. This includes information like the name of the macro, the body of the macro, and any macro parameters. About the macro ID: When a macro is created in a new version of content, Confluence will generate a random ID for it, unless an ID is specified (by an app). The macro ID will look similar to this: ''50884bd9-0cb8-41d5-98be-f80943c14f96''. The ID is then persisted as new versions of content are created, and is only modified by Confluence if there are conflicting IDs. For Forge macros, the value for macro ID is the "local ID" of that particular ADF node. This value can be retrieved either client-side by calling view.getContext() and accessing "localId" on the resulting object, or server-side by examining the "local-id" parameter node inside the "parameters" node. Note that there are other attributes named "local-id", but only this particular one is used to store the macro ID. Example: com.atlassian.ecosystem e9c4aa10-73fa-417c-888d-48c719ae4165 Note, to preserve backwards compatibility this resource will also match on the hash of the macro body, even if a macro ID is found. This check will eventually become redundant, as macro IDs are generated for pages and transparently propagate out to all instances. This backwards compatibility logic does not apply to Forge macros; those can only be retrieved by their ID. **Permissions required**: Permission to view the content that the macro is in.' operationId: getAndConvertMacroBodyByMacroId parameters: - name: id in: path description: The ID for the content that contains the macro. required: true schema: type: string - name: version in: path description: 'The version of the content that contains the macro. Specifying `0` as the `version` will return the macro body for the latest content version.' required: true schema: type: integer format: int32 - name: macroId in: path description: 'The ID of the macro. This is usually passed by the app that the macro is in. Otherwise, find the macro ID by querying the desired content and version, then expanding the body in storage format. For example, ''/content/196611/version/7?expand=content.body.storage''.' required: true schema: type: string - name: to in: path required: true description: The content representation to return the macro in. schema: type: string - $ref: '#/components/parameters/bodyConversionExpand' - name: spaceKeyContext in: query description: 'The space key used for resolving embedded content (page includes, files, and links) in the content body. For example, if the source content contains the link `` and the `spaceKeyContext=TEST` parameter is provided, then the link will be converted to a link to the "Example page" page in the "TEST" space.' schema: type: string - name: embeddedContentRender in: query description: 'Mode used for rendering embedded content, like attachments. - `current` renders the embedded content using the latest version. - `version-at-save` renders the embedded content using the version at the time of save.' schema: type: string default: current enum: - current - version-at-save responses: '200': description: Returned if the requested content body is returned. content: application/json: schema: $ref: '#/components/schemas/ContentBody' '400': description: Returned if invalid content representation is requested, or context is missing. '401': description: 'Returned if the authentication credentials are incorrect or missing from the request.' content: {} '404': description: 'Returned if; - There is no content with the given ID. - The calling user does not have permission to view the content. - The macro does not exist in the specified version. - There is no macro matching the given macro ID or hash.' content: {} security: - basicAuth: [] - oAuthDefinitions: - read:confluence-content.all x-atlassian-oauth2-scopes: - scheme: oAuthDefinitions state: Current scopes: - read:confluence-content.all - scheme: oAuthDefinitions state: Beta scopes: - read:content.metadata:confluence x-atlassian-data-security-policy: - app-access-rule-exempt: false x-atlassian-connect-scope: READ /wiki/rest/api/content/{id}/history/{version}/macro/id/{macroId}/convert/async/{to}: get: tags: - Content - Macro Body summary: Get macro body by macro ID and convert representation Asynchronously description: 'Returns Async Id of the conversion task which will convert the macro into a content body of the desired format. The result will be available for 5 minutes after completion of the conversion. About the macro ID: When a macro is created in a new version of content, Confluence will generate a random ID for it, unless an ID is specified (by an app). The macro ID will look similar to this: ''884bd9-0cb8-41d5-98be-f80943c14f96''. The ID is then persisted as new versions of content are created, and is only modified by Confluence if there are conflicting IDs. For Forge macros, the value for macro ID is the "local ID" of that particular ADF node. This value can be retrieved either client-side by calling view.getContext() and accessing "localId" on the resulting object, or server-side by examining the "local-id" parameter node inside the "parameters" node. Note that there are other attributes named "local-id", but only this particular one is used to store the macro ID. Example: com.atlassian.ecosystem e9c4aa10-73fa-417c-888d-48c719ae4165 Note, to preserve backwards compatibility this resource will also match on the hash of the macro body, even if a macro ID is found. This check will eventually become redundant, as macro IDs are generated for pages and transparently propagate out to all instances. This backwards compatibility logic does not apply to Forge macros; those can only be retrieved by their ID. **Permissions required**: Permission to view the content that the macro is in.' operationId: getAndAsyncConvertMacroBodyByMacroId parameters: - name: id in: path description: The ID for the content that contains the macro. required: true schema: type: string - name: version in: path description: 'The version of the content that contains the macro. Specifying `0` as the `version` will return the macro body for the latest content version.' required: true schema: type: integer format: int32 - name: macroId in: path description: 'The ID of the macro. For apps, this is passed to the macro by the Connect/Forge framework. Otherwise, find the macro ID by querying the desired content and version, then expanding the body in storage format. For example, ''/content/196611/version/7?expand=content.body.storage''.' required: true schema: type: string - name: to in: path required: true description: 'The content representation to return the macro in. Currently, the following conversions are allowed: - `export_view` - `styled_view` - `view`' schema: type: string enum: - export_view - view - styled_view - $ref: '#/components/parameters/bodyConversionExpand' - name: allowCache in: query description: "Controls whether conversion results are cached and reused for identical requests.\n\n- `false`: Each request creates a new conversion task, even if an identical request was made previously.\n- `true`: Enables caching behavior for identical requests from the same user.\n - If no cached result exists, a new conversion task is created\n - If a cached result exists, the existing task is marked as RERUNNING and will complete with status COMPLETED\n - Returns the same task ID for identical requests, allowing you to retrieve the cached result\n\nFor large macros that are slow to convert and for which it is acceptable to show cached data, set this field to `true`." schema: type: boolean default: false - name: spaceKeyContext in: query description: 'The space key used for resolving embedded content (page includes, files, and links) in the content body. For example, if the source content contains the link `` and the `spaceKeyContext=TEST` parameter is provided, then the link will be converted to a link to the "Example page" page in the "TEST" space.' schema: type: string - name: embeddedContentRender in: query description: 'Mode used for rendering embedded content, like attachments. - `current` renders the embedded content using the latest version. - `version-at-save` renders the embedded content using the version at the time of save.' schema: type: string default: current enum: - current - version-at-save responses: '200': description: Returned if the requested macro conversion request is created. content: application/json: schema: $ref: '#/components/schemas/AsyncId' '401': description: 'Returned if the authentication credentials are incorrect or missing from the request.' content: {} '404': description: 'Returned if; - There is no content with the given ID. - The calling user does not have permission to view the content. - The macro does not exist in the specified version. - There is no macro matching the given macro ID or hash.' content: {} security: - basicAuth: [] - oAuthDefinitions: - read:confluence-content.all x-atlassian-oauth2-scopes: - scheme: oAuthDefinitions state: Current scopes: - read:confluence-content.all - scheme: oAuthDefinitions state: Beta scopes: - read:content.metadata:confluence x-atlassian-data-security-policy: - app-access-rule-exempt: false x-atlassian-connect-scope: READ components: schemas: ContentBody: required: - representation - value type: object properties: value: type: string representation: type: string enum: - view - export_view - styled_view - storage - editor - editor2 - anonymous_export_view - wiki - atlas_doc_format - raw embeddedContent: type: array items: $ref: '#/components/schemas/EmbeddedContent' webresource: $ref: '#/components/schemas/WebResourceDependencies' mediaToken: type: object properties: collectionIds: type: array items: type: string contentId: type: string expiryDateTime: type: string fileIds: type: array items: type: string token: type: string _expandable: type: object properties: content: type: string embeddedContent: type: string webresource: type: string mediaToken: type: string _links: $ref: '#/components/schemas/GenericLinks' MacroInstance: type: object properties: name: type: string body: type: string parameters: type: object _links: $ref: '#/components/schemas/GenericLinks' AsyncId: required: - asyncId type: object properties: asyncId: type: string GenericLinks: type: object additionalProperties: oneOf: - type: object additionalProperties: true - type: string Embeddable: type: object additionalProperties: true WebResourceDependencies: type: object properties: _expandable: type: object additionalProperties: true properties: uris: oneOf: - type: string - type: object additionalProperties: true keys: type: array items: type: string contexts: type: array items: type: string uris: type: object properties: all: oneOf: - type: array items: type: string - type: string css: oneOf: - type: array items: type: string - type: string js: oneOf: - type: array items: type: string - type: string _expandable: type: object additionalProperties: true properties: css: oneOf: - type: array items: type: string - type: string js: oneOf: - type: array items: type: string - type: string tags: type: object properties: all: type: string css: type: string data: type: string js: type: string _expandable: type: object additionalProperties: true superbatch: $ref: '#/components/schemas/SuperBatchWebResources' EmbeddedContent: type: object additionalProperties: true properties: entityId: type: integer format: int64 entityType: type: string entity: $ref: '#/components/schemas/Embeddable' SuperBatchWebResources: type: object properties: uris: type: object properties: all: oneOf: - type: array items: type: string - type: string css: oneOf: - type: array items: type: string - type: string js: oneOf: - type: array items: type: string - type: string tags: type: object properties: all: type: string css: type: string data: type: string js: type: string metatags: type: string _expandable: type: object additionalProperties: true parameters: bodyConversionExpand: name: expand in: query description: "A multi-value parameter indicating which properties of the content to expand and populate. Expands are dependent on the\n`to` conversion format and may be irrelevant for certain conversions (e.g. `macroRenderedOutput` is redundant when\nconverting to `view` format). \n\nIf rendering to `view` format, and the body content being converted includes arbitrary nested content (such as macros); then it is \nnecessary to include webresource expands in the request. Webresources for content body are the batched JS and CSS dependencies for\nany nested dynamic content (i.e. macros).\n\n- `embeddedContent` returns metadata for nested content (e.g. page included using page include macro)\n- `mediaToken` returns JWT token for retrieving attachment data from Media API\n- `macroRenderedOutput` additionally converts body to view format\n- `webresource.superbatch.uris.js` returns all common JS dependencies as static URLs\n- `webresource.superbatch.uris.css` returns all common CSS dependencies as static URLs\n- `webresource.superbatch.uris.all` returns all common dependencies as static URLs\n- `webresource.superbatch.tags.all` returns all common JS dependencies as html `