7376 lines
251 KiB
YAML
7376 lines
251 KiB
YAML
openapi: 3.0.0
|
|
info:
|
|
contact:
|
|
name: Canva Developer Community
|
|
url: https://community.canva.dev/
|
|
description: API for building integrations with Canva via a REST api
|
|
license:
|
|
name: ©2023 All Rights Reserved
|
|
termsOfService: https://www.canva.com/trust/legal/
|
|
title: Canva Connect API
|
|
version: 2024-06-18
|
|
servers:
|
|
- description: Canva Connect API
|
|
url: https://api.canva.com/rest
|
|
tags:
|
|
- description: Allow management of brands
|
|
name: brands
|
|
- name: app
|
|
- name: asset
|
|
- name: autofill
|
|
- name: brand_template
|
|
- name: comment
|
|
- name: connect
|
|
- name: design
|
|
- name: design_import
|
|
- name: export
|
|
- name: folder
|
|
- name: oauth
|
|
- name: oidc
|
|
- name: resize
|
|
- name: user
|
|
paths:
|
|
/v1/apps/{appId}/jwks:
|
|
get:
|
|
description: |-
|
|
Returns the Json Web Key Set (public keys) of an app. These keys are used to
|
|
verify JWTs sent to app backends.
|
|
operationId: getAppJwks
|
|
parameters:
|
|
- description: The app ID.
|
|
explode: false
|
|
in: path
|
|
name: appId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetAppJwksResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
tags:
|
|
- app
|
|
/v1/assets/{assetId}:
|
|
delete:
|
|
description: |-
|
|
You can delete an asset by specifying its `assetId`. This operation mirrors the behavior
|
|
in the Canva UI. Deleting an item moves it to the trash.
|
|
Deleting an asset doesn't remove it from designs that already use it.
|
|
operationId: deleteAsset
|
|
parameters:
|
|
- description: The ID of the asset.
|
|
explode: false
|
|
in: path
|
|
name: assetId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
responses:
|
|
"204":
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- asset:write
|
|
tags:
|
|
- asset
|
|
x-rate-limit-per-client-user: 30
|
|
get:
|
|
description: You can retrieve the metadata of an asset by specifying its `assetId`.
|
|
operationId: getAsset
|
|
parameters:
|
|
- description: The ID of the asset.
|
|
explode: false
|
|
in: path
|
|
name: assetId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetAssetResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- asset:read
|
|
tags:
|
|
- asset
|
|
x-rate-limit-per-client-user: 100
|
|
patch:
|
|
description: |-
|
|
You can update the name and tags of an asset by specifying its `assetId`. Updating the tags
|
|
replaces all existing tags of the asset.
|
|
operationId: updateAsset
|
|
parameters:
|
|
- description: The ID of the asset.
|
|
explode: false
|
|
in: path
|
|
name: assetId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UpdateAssetRequest'
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UpdateAssetResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- asset:write
|
|
tags:
|
|
- asset
|
|
x-rate-limit-per-client-user: 30
|
|
/v1/asset-uploads:
|
|
post:
|
|
description: |-
|
|
Starts a new [asynchronous job](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints) to upload an asset to the user's content library. Supported file types for assets are listed in the [Assets API overview](https://www.canva.dev/docs/connect/api-reference/assets/).
|
|
|
|
The request format for this endpoint is an `application/octet-stream` body of bytes. Attach
|
|
information about the upload using an `Asset-Upload-Metadata` header.
|
|
|
|
|
|
<Note>
|
|
|
|
For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints). You can check the status and get the results of asset upload jobs created with this API using the [Get asset upload job API](https://www.canva.dev/docs/connect/api-reference/assets/get-asset-upload-job/).
|
|
|
|
</Note>
|
|
operationId: CreateAssetUploadJob
|
|
parameters:
|
|
- content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/AssetUploadMetadata'
|
|
in: header
|
|
name: Asset-Upload-Metadata
|
|
required: true
|
|
requestBody:
|
|
content:
|
|
application/octet-stream:
|
|
schema:
|
|
format: binary
|
|
type: string
|
|
description: Binary of the asset to upload.
|
|
required: true
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
in_progress:
|
|
$ref: '#/components/examples/InProgressAssetUploadJobExample'
|
|
success:
|
|
$ref: '#/components/examples/SuccessAssetUploadJobExample'
|
|
failed:
|
|
$ref: '#/components/examples/FailedAssetUploadJobExample'
|
|
schema:
|
|
$ref: '#/components/schemas/CreateAssetUploadJobResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- asset:write
|
|
tags:
|
|
- asset
|
|
x-rate-limit-per-client-user: 30
|
|
/v1/asset-uploads/{jobId}:
|
|
get:
|
|
description: |-
|
|
Get the result of an asset upload job that was created using the [Create asset upload job API](https://www.canva.dev/docs/connect/api-reference/assets/create-asset-upload-job/).
|
|
|
|
You might need to make multiple requests to this endpoint until you get a `success` or `failed` status. For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints).
|
|
operationId: GetAssetUploadJob
|
|
parameters:
|
|
- description: The asset upload job ID.
|
|
explode: false
|
|
in: path
|
|
name: jobId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
in_progress:
|
|
$ref: '#/components/examples/InProgressAssetUploadJobExample'
|
|
success:
|
|
$ref: '#/components/examples/SuccessAssetUploadJobExample'
|
|
failed:
|
|
$ref: '#/components/examples/FailedAssetUploadJobExample'
|
|
schema:
|
|
$ref: '#/components/schemas/GetAssetUploadJobResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- asset:read
|
|
tags:
|
|
- asset
|
|
x-rate-limit-per-client-user: 180
|
|
/v1/url-asset-uploads:
|
|
post:
|
|
description: |-
|
|
<Warning>
|
|
|
|
This API is currently provided as a preview. Be aware of the following:
|
|
|
|
- There might be unannounced breaking changes.
|
|
- Any breaking changes to preview APIs won't produce a new [API version](https://www.canva.dev/docs/connect/versions/).
|
|
- Public integrations that use preview APIs will not pass the review process, and can't be made available to all Canva users.
|
|
|
|
</Warning>
|
|
|
|
Starts a new [asynchronous job](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints) to upload an asset from a URL to the user's content library. Supported file types for assets are listed in the [Assets API overview](https://www.canva.dev/docs/connect/api-reference/assets/).
|
|
|
|
<Note>
|
|
Uploading a video asset from a URL is limited to a maximum 100MB file size. For importing larger video files, use the [Create asset upload job API](https://www.canva.dev/docs/connect/api-reference/assets/create-asset-upload-job/).
|
|
</Note>
|
|
|
|
<Note>
|
|
For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints). You can check the status and get the results of asset upload jobs created with this API using the [Get asset upload job via URL API](https://www.canva.dev/docs/connect/api-reference/assets/get-url-asset-upload-job/).
|
|
</Note>
|
|
operationId: createUrlAssetUploadJob
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateUrlAssetUploadJobRequest'
|
|
required: true
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
in_progress:
|
|
$ref: '#/components/examples/InProgressAssetUploadJobExample'
|
|
success:
|
|
$ref: '#/components/examples/SuccessAssetUploadJobExample'
|
|
failed:
|
|
$ref: '#/components/examples/FailedAssetUploadJobExample'
|
|
schema:
|
|
$ref: '#/components/schemas/CreateUrlAssetUploadJobResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- asset:write
|
|
tags:
|
|
- asset
|
|
x-rate-limit-per-client-user: 30
|
|
/v1/url-asset-uploads/{jobId}:
|
|
get:
|
|
description: |-
|
|
<Warning>
|
|
|
|
This API is currently provided as a preview. Be aware of the following:
|
|
|
|
- There might be unannounced breaking changes.
|
|
- Any breaking changes to preview APIs won't produce a new [API version](https://www.canva.dev/docs/connect/versions/).
|
|
- Public integrations that use preview APIs will not pass the review process, and can't be made available to all Canva users.
|
|
|
|
</Warning>
|
|
|
|
Get the result of an asset upload job that was created using the [Create asset upload job via URL API](https://www.canva.dev/docs/connect/api-reference/assets/create-url-asset-upload-job/).
|
|
|
|
You might need to make multiple requests to this endpoint until you get a `success` or `failed` status. For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints).
|
|
operationId: getUrlAssetUploadJob
|
|
parameters:
|
|
- description: The asset upload job ID.
|
|
explode: false
|
|
in: path
|
|
name: jobId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
in_progress:
|
|
$ref: '#/components/examples/InProgressAssetUploadJobExample'
|
|
success:
|
|
$ref: '#/components/examples/SuccessAssetUploadJobExample'
|
|
failed:
|
|
$ref: '#/components/examples/FailedAssetUploadJobExample'
|
|
schema:
|
|
$ref: '#/components/schemas/GetUrlAssetUploadJobResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- asset:read
|
|
tags:
|
|
- asset
|
|
x-rate-limit-per-client-user: 180
|
|
/v1/autofills:
|
|
post:
|
|
description: |-
|
|
<Warning>
|
|
|
|
Brand templates were migrated to use a new ID format in September 2025. If your integration stores brand template IDs, you'll need to migrate to use the new IDs. Old brand template IDs will continue to be accepted for 6 months to give you time to migrate to the new IDs.
|
|
|
|
</Warning>
|
|
|
|
<Note>
|
|
|
|
To use this API, your integration must act on behalf of a user that's a member of a [Canva Enterprise](https://www.canva.com/enterprise/) organization.
|
|
|
|
</Note>
|
|
|
|
Starts a new [asynchronous job](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints) to autofill a Canva design using a brand template and input data.
|
|
|
|
To get a list of input data fields, use the [Get brand template dataset
|
|
API](https://www.canva.dev/docs/connect/api-reference/brand-templates/get-brand-template-dataset/).
|
|
|
|
Available data field types to autofill include:
|
|
|
|
- Images
|
|
- Text
|
|
- Charts
|
|
|
|
WARNING: Chart data fields are a [preview feature](https://www.canva.dev/docs/connect/#preview-apis). There might be unannounced breaking changes to this feature which won't produce a new API version.
|
|
|
|
<Note>
|
|
|
|
For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints). You can check the status and get the results of autofill jobs created with this API using the [Get design autofill job API](https://www.canva.dev/docs/connect/api-reference/autofills/get-design-autofill-job/).
|
|
|
|
</Note>
|
|
operationId: createDesignAutofillJob
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateDesignAutofillJobRequest'
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
in_progress:
|
|
$ref: '#/components/examples/InProgressAutofillJobExample'
|
|
success:
|
|
$ref: '#/components/examples/SuccessAutofillJobExample'
|
|
failed:
|
|
$ref: '#/components/examples/FailedAutofillJobExample'
|
|
schema:
|
|
$ref: '#/components/schemas/CreateDesignAutofillJobResponse'
|
|
description: OK
|
|
"400":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
design_title_invalid:
|
|
$ref: '#/components/examples/DesignTitleInvalidError'
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Bad Request
|
|
"403":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
brand_template_forbidden:
|
|
$ref: '#/components/examples/BrandTemplateForbiddenError'
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Forbidden
|
|
"404":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
brand_template_not_found:
|
|
$ref: '#/components/examples/BrandTemplateNotFoundError'
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Not Found
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- design:content:write
|
|
tags:
|
|
- autofill
|
|
x-rate-limit-per-client-user: 10
|
|
/v1/autofills/{jobId}:
|
|
get:
|
|
description: |-
|
|
<Note>
|
|
|
|
To use this API, your integration must act on behalf of a user that's a member of a [Canva Enterprise](https://www.canva.com/enterprise/) organization.
|
|
|
|
</Note>
|
|
|
|
Get the result of a design autofill job that was created using the [Create design autofill job
|
|
API](https://www.canva.dev/docs/connect/api-reference/autofills/create-design-autofill-job/).
|
|
|
|
You might need to make multiple requests to this endpoint until you get a `success` or `failed` status. For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints).
|
|
operationId: getDesignAutofillJob
|
|
parameters:
|
|
- description: The design autofill job ID.
|
|
explode: false
|
|
in: path
|
|
name: jobId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
in_progress:
|
|
$ref: '#/components/examples/InProgressAutofillJobExample'
|
|
success:
|
|
$ref: '#/components/examples/SuccessAutofillJobExample'
|
|
failed:
|
|
$ref: '#/components/examples/FailedAutofillJobExample'
|
|
schema:
|
|
$ref: '#/components/schemas/GetDesignAutofillJobResponse'
|
|
description: OK
|
|
"404":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
design_autofill_job_not_found:
|
|
$ref: '#/components/examples/DesignAutofillJobNotFoundError'
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Not Found
|
|
"403":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
design_autofill_job_forbidden:
|
|
$ref: '#/components/examples/DesignAutofillJobForbiddenError'
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Forbidden
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- design:meta:read
|
|
tags:
|
|
- autofill
|
|
x-rate-limit-per-client-user: 60
|
|
/v1/brand-templates:
|
|
get:
|
|
description: |-
|
|
<Warning>
|
|
|
|
Brand templates were migrated to use a new ID format in September 2025. If your integration stores brand template IDs, you'll need to migrate to use the new IDs. Old brand template IDs will continue to be accepted for 6 months to give you time to migrate to the new IDs.
|
|
|
|
</Warning>
|
|
|
|
<Note>
|
|
|
|
To use this API, your integration must act on behalf of a user that's a member of a [Canva Enterprise](https://www.canva.com/enterprise/) organization.
|
|
|
|
</Note>
|
|
|
|
Get a list of the [brand templates](https://www.canva.com/help/publish-team-template/) the user has access to.
|
|
operationId: listBrandTemplates
|
|
parameters:
|
|
- description: Lets you search the brand templates available to the user using
|
|
a search term or terms.
|
|
explode: true
|
|
in: query
|
|
name: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
style: form
|
|
- description: |-
|
|
If the success response contains a continuation token, the user has access to more
|
|
brand templates you can list. You can use this token as a query parameter and retrieve
|
|
more templates from the list, for example
|
|
`/v1/brand-templates?continuation={continuation}`.
|
|
To retrieve all the brand templates available to the user, you might need to make
|
|
multiple requests.
|
|
explode: true
|
|
in: query
|
|
name: continuation
|
|
required: false
|
|
schema:
|
|
type: string
|
|
style: form
|
|
- description: Filter the list of brand templates based on the user's ownership
|
|
of the brand templates.
|
|
explode: true
|
|
in: query
|
|
name: ownership
|
|
required: false
|
|
schema:
|
|
$ref: '#/components/schemas/OwnershipType'
|
|
style: form
|
|
- description: Sort the list of brand templates.
|
|
explode: true
|
|
in: query
|
|
name: sort_by
|
|
required: false
|
|
schema:
|
|
$ref: '#/components/schemas/SortByType'
|
|
style: form
|
|
- description: |-
|
|
Filter the list of brand templates based on the brand templates' dataset definitions.
|
|
Brand templates with dataset definitions are mainly used with the [Autofill APIs](https://www.canva.dev/docs/connect/api-reference/autofills/).
|
|
explode: true
|
|
in: query
|
|
name: dataset
|
|
required: false
|
|
schema:
|
|
$ref: '#/components/schemas/DatasetFilter'
|
|
style: form
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ListBrandTemplatesResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- brandtemplate:meta:read
|
|
tags:
|
|
- brand_template
|
|
x-rate-limit-per-client-user: 100
|
|
/v1/brand-templates/{brandTemplateId}:
|
|
get:
|
|
description: |-
|
|
<Warning>
|
|
|
|
Brand templates were migrated to use a new ID format in September 2025. If your integration stores brand template IDs, you'll need to migrate to use the new IDs. Old brand template IDs will continue to be accepted for 6 months to give you time to migrate to the new IDs.
|
|
|
|
</Warning>
|
|
|
|
<Note>
|
|
|
|
To use this API, your integration must act on behalf of a user that's a member of a [Canva Enterprise](https://www.canva.com/enterprise/) organization.
|
|
|
|
</Note>
|
|
|
|
Retrieves the metadata for a brand template.
|
|
operationId: getBrandTemplate
|
|
parameters:
|
|
- description: The brand template ID.
|
|
explode: false
|
|
in: path
|
|
name: brandTemplateId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetBrandTemplateResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- brandtemplate:meta:read
|
|
tags:
|
|
- brand_template
|
|
x-rate-limit-per-client-user: 100
|
|
/v1/brand-templates/{brandTemplateId}/dataset:
|
|
get:
|
|
description: |-
|
|
<Warning>
|
|
|
|
Brand templates were migrated to use a new ID format in September 2025. If your integration stores brand template IDs, you'll need to migrate to use the new IDs. Old brand template IDs will continue to be accepted for 6 months to give you time to migrate to the new IDs.
|
|
|
|
</Warning>
|
|
|
|
<Note>
|
|
|
|
To use this API, your integration must act on behalf of a user that's a member of a [Canva Enterprise](https://www.canva.com/enterprise/) organization.
|
|
|
|
</Note>
|
|
|
|
Gets the dataset definition of a brand template. If the brand
|
|
template contains autofill data fields, this API returns an object with the data field
|
|
names and the type of data they accept.
|
|
|
|
Available data field types include:
|
|
|
|
- Images
|
|
- Text
|
|
- Charts
|
|
|
|
You can autofill a brand template using the [Create a design autofill job
|
|
API](https://www.canva.dev/docs/connect/api-reference/autofills/create-design-autofill-job/).
|
|
|
|
WARNING: Chart data fields are a [preview feature](https://www.canva.dev/docs/connect/#preview-apis). There might be unannounced breaking changes to this feature which won't produce a new API version.
|
|
operationId: getBrandTemplateDataset
|
|
parameters:
|
|
- description: The brand template ID.
|
|
explode: false
|
|
in: path
|
|
name: brandTemplateId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetBrandTemplateDatasetResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- brandtemplate:content:read
|
|
tags:
|
|
- brand_template
|
|
x-rate-limit-per-client-user: 100
|
|
/v1/comments:
|
|
post:
|
|
deprecated: true
|
|
description: |-
|
|
<Warning>
|
|
|
|
This API is deprecated, so you should use the [Create thread](https://www.canva.dev/docs/connect/api-reference/comments/create-thread/) API instead.
|
|
|
|
</Warning>
|
|
|
|
<Warning>
|
|
|
|
This API is currently provided as a preview. Be aware of the following:
|
|
|
|
- There might be unannounced breaking changes.
|
|
- Any breaking changes to preview APIs won't produce a new [API version](https://www.canva.dev/docs/connect/versions/).
|
|
- Public integrations that use preview APIs will not pass the review process, and can't be made available to all Canva users.
|
|
|
|
</Warning>
|
|
|
|
Create a new top-level comment on a design.
|
|
For information on comments and how they're used in the Canva UI, see the
|
|
[Canva Help Center](https://www.canva.com/help/comments/). A design can have a maximum
|
|
of 1000 comments.
|
|
operationId: createComment
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateCommentRequest'
|
|
required: true
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateCommentResponse'
|
|
description: OK
|
|
"400":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
assignee_not_mentioned:
|
|
$ref: '#/components/examples/AssigneeNotMentionedError'
|
|
message_too_long:
|
|
$ref: '#/components/examples/MessageTooLongError'
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Bad Request
|
|
"403":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
too_many_comments:
|
|
$ref: '#/components/examples/TooManyCommentsError'
|
|
not_allowed_to_comment:
|
|
$ref: '#/components/examples/NotAllowedToCommentError'
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Forbidden
|
|
"404":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
design_not_found:
|
|
$ref: '#/components/examples/DesignNotFoundError'
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Not Found
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- comment:write
|
|
tags:
|
|
- comment
|
|
x-rate-limit-per-client-user: 20
|
|
/v1/comments/{commentId}/replies:
|
|
post:
|
|
deprecated: true
|
|
description: |-
|
|
<Warning>
|
|
|
|
This API is deprecated, so you should use the [Create reply](https://www.canva.dev/docs/connect/api-reference/comments/create-reply/) API instead.
|
|
|
|
</Warning>
|
|
|
|
<Warning>
|
|
|
|
This API is currently provided as a preview. Be aware of the following:
|
|
- There might be unannounced breaking changes.
|
|
- Any breaking changes to preview APIs won't produce a new [API version](https://www.canva.dev/docs/connect/versions/).
|
|
- Public integrations that use preview APIs will not pass the review process, and can't be made available to all Canva users.
|
|
|
|
</Warning>
|
|
|
|
Creates a reply to a comment in a design.
|
|
To reply to an existing thread of comments, you can use either the `id` of the parent
|
|
(original) comment, or the `thread_id` of a comment in the thread. Each comment can
|
|
have a maximum of 100 replies created for it.
|
|
|
|
For information on comments and how they're used in the Canva UI, see the
|
|
[Canva Help Center](https://www.canva.com/help/comments/).
|
|
operationId: createReplyDeprecated
|
|
parameters:
|
|
- description: The ID of the comment.
|
|
example: KeAZEAjijEb
|
|
explode: false
|
|
in: path
|
|
name: commentId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateReplyRequest'
|
|
required: true
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateReplyResponse'
|
|
description: OK
|
|
"400":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
message_too_long:
|
|
$ref: '#/components/examples/MessageTooLongError'
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Bad Request
|
|
"403":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
too_many_replies:
|
|
$ref: '#/components/examples/TooManyRepliesError'
|
|
not_allowed_to_reply:
|
|
$ref: '#/components/examples/NotAllowedToReplyError'
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Forbidden
|
|
"404":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
design_or_comment_not_found:
|
|
$ref: '#/components/examples/DesignOrCommentNotFoundForReplyError'
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Not Found
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- comment:write
|
|
tags:
|
|
- comment
|
|
x-rate-limit-per-client-user: 20
|
|
/v1/designs/{designId}/comments/{threadId}/replies:
|
|
get:
|
|
description: |-
|
|
<Warning>
|
|
This API is currently provided as a preview. Be aware of the following:
|
|
- There might be unannounced breaking changes.
|
|
- Any breaking changes to preview APIs won't produce a new [API version](https://www.canva.dev/docs/connect/versions/).
|
|
- Public integrations that use preview APIs will not pass the review process, and can't be made available to all Canva users.
|
|
</Warning>
|
|
|
|
Retrieves a list of replies for a comment or suggestion thread on a design.
|
|
|
|
For information on comments and how they're used in the Canva UI, see the
|
|
[Canva Help Center](https://www.canva.com/help/comments/).
|
|
operationId: listReplies
|
|
parameters:
|
|
- description: The design ID.
|
|
explode: false
|
|
in: path
|
|
name: designId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
- description: The ID of the thread.
|
|
example: KeAbiEAjZEj
|
|
explode: false
|
|
in: path
|
|
name: threadId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
- explode: true
|
|
in: query
|
|
name: limit
|
|
required: false
|
|
schema:
|
|
default: 50
|
|
description: The number of replies to return.
|
|
maximum: 100
|
|
minimum: 1
|
|
type: integer
|
|
style: form
|
|
- description: |-
|
|
If the success response contains a continuation token, the list contains more items you can list. You can use this token as a query parameter and retrieve more items from the list, for example `?continuation={continuation}`.
|
|
|
|
To retrieve all items, you might need to make multiple requests.
|
|
explode: true
|
|
in: query
|
|
name: continuation
|
|
required: false
|
|
schema:
|
|
type: string
|
|
style: form
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ListRepliesResponse'
|
|
description: OK
|
|
"403":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
not_allowed_to_fetch_replies:
|
|
$ref: '#/components/examples/NotAllowedToFetchRepliesError'
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Forbidden
|
|
"404":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
design_or_thread_not_found:
|
|
$ref: '#/components/examples/DesignOrThreadNotFoundError'
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Not Found
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- comment:read
|
|
tags:
|
|
- comment
|
|
x-rate-limit-per-client-user: 100
|
|
post:
|
|
description: |-
|
|
<Warning>
|
|
|
|
This API is currently provided as a preview. Be aware of the following:
|
|
|
|
- There might be unannounced breaking changes.
|
|
- Any breaking changes to preview APIs won't produce a new [API version](https://www.canva.dev/docs/connect/versions/).
|
|
- Public integrations that use preview APIs will not pass the review process, and can't be made available to all Canva users.
|
|
|
|
</Warning>
|
|
|
|
Creates a reply to a comment or suggestion thread on a design.
|
|
To reply to an existing thread, you must provide the ID of the thread
|
|
which is returned when a thread is created, or from the `thread_id` value
|
|
of an existing reply in the thread. Each thread can
|
|
have a maximum of 100 replies created for it.
|
|
|
|
For information on comments and how they're used in the Canva UI, see the
|
|
[Canva Help Center](https://www.canva.com/help/comments/).
|
|
operationId: createReply
|
|
parameters:
|
|
- description: The design ID.
|
|
explode: false
|
|
in: path
|
|
name: designId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
- description: The ID of the thread.
|
|
example: KeAbiEAjZEj
|
|
explode: false
|
|
in: path
|
|
name: threadId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateReplyV2Request'
|
|
required: true
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateReplyV2Response'
|
|
description: OK
|
|
"400":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
message_too_long:
|
|
$ref: '#/components/examples/MessageTooLongError'
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Bad Request
|
|
"403":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
too_many_replies:
|
|
$ref: '#/components/examples/TooManyRepliesError'
|
|
not_allowed_to_reply:
|
|
$ref: '#/components/examples/NotAllowedToReplyError'
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Forbidden
|
|
"404":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
design_or_comment_not_found:
|
|
$ref: '#/components/examples/DesignOrCommentNotFoundForReplyError'
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Not Found
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- comment:write
|
|
tags:
|
|
- comment
|
|
x-rate-limit-per-client-user: 20
|
|
/v1/designs/{designId}/comments/{threadId}:
|
|
get:
|
|
description: |-
|
|
<Warning>
|
|
|
|
This API is currently provided as a preview. Be aware of the following:
|
|
|
|
- There might be unannounced breaking changes.
|
|
- Any breaking changes to preview APIs won't produce a new [API version](https://www.canva.dev/docs/connect/versions/).
|
|
- Public integrations that use preview APIs will not pass the review process, and can't be made available to all Canva users.
|
|
|
|
</Warning>
|
|
|
|
Gets a comment or suggestion thread on a design.
|
|
To retrieve a reply to a comment thread, use the [Get reply](https://www.canva.dev/docs/connect/api-reference/comments/get-reply/) API.
|
|
For information on comments and how they're used in the Canva UI, see the
|
|
[Canva Help Center](https://www.canva.com/help/comments/).
|
|
operationId: getThread
|
|
parameters:
|
|
- description: The design ID.
|
|
explode: false
|
|
in: path
|
|
name: designId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
- description: The ID of the thread.
|
|
example: KeAbiEAjZEj
|
|
explode: false
|
|
in: path
|
|
name: threadId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetThreadResponse'
|
|
description: OK
|
|
"403":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
not_allowed_to_fetch_comment:
|
|
$ref: '#/components/examples/NotAllowedToFetchCommentError'
|
|
not_allowed_to_fetch_suggestion:
|
|
$ref: '#/components/examples/NotAllowedToFetchSuggestionError'
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Forbidden
|
|
"404":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
thread_not_found:
|
|
$ref: '#/components/examples/ThreadNotFoundError'
|
|
thread_not_attached_to_design:
|
|
$ref: '#/components/examples/ThreadNotAttachedToDesignError'
|
|
suggestion_not_found:
|
|
$ref: '#/components/examples/SuggestionNotFoundError'
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Not Found
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- comment:read
|
|
tags:
|
|
- comment
|
|
x-rate-limit-per-client-user: 100
|
|
/v1/designs/{designId}/comments/{threadId}/replies/{replyId}:
|
|
get:
|
|
description: |-
|
|
<Warning>
|
|
|
|
This API is currently provided as a preview. Be aware of the following:
|
|
|
|
- There might be unannounced breaking changes.
|
|
- Any breaking changes to preview APIs won't produce a new [API version](https://www.canva.dev/docs/connect/versions/).
|
|
- Public integrations that use preview APIs will not pass the review process, and can't be made available to all Canva users.
|
|
|
|
</Warning>
|
|
|
|
Gets a reply to a comment or suggestion thread on a design.
|
|
For information on comments and how they're used in the Canva UI, see the
|
|
[Canva Help Center](https://www.canva.com/help/comments/).
|
|
operationId: getReply
|
|
parameters:
|
|
- description: The design ID.
|
|
explode: false
|
|
in: path
|
|
name: designId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
- description: The ID of the thread.
|
|
example: KeAbiEAjZEj
|
|
explode: false
|
|
in: path
|
|
name: threadId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
- description: The ID of the reply.
|
|
example: KeAZEAjijEb
|
|
explode: false
|
|
in: path
|
|
name: replyId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetReplyResponse'
|
|
description: OK
|
|
"403":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
not_allowed_to_fetch_reply:
|
|
$ref: '#/components/examples/NotAllowedToFetchReplyError'
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Forbidden
|
|
"404":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
reply_not_found:
|
|
$ref: '#/components/examples/ReplyNotFoundError'
|
|
suggestion_reply_not_found:
|
|
$ref: '#/components/examples/SuggestionReplyNotFoundError'
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Not Found
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- comment:read
|
|
tags:
|
|
- comment
|
|
x-rate-limit-per-client-user: 100
|
|
/v1/designs/{designId}/comments:
|
|
post:
|
|
description: |-
|
|
<Warning>
|
|
This API is currently provided as a preview. Be aware of the following:
|
|
- There might be unannounced breaking changes.
|
|
- Any breaking changes to preview APIs won't produce a new [API version](https://www.canva.dev/docs/connect/versions/).
|
|
- Public integrations that use preview APIs will not pass the review process, and can't be made available to all Canva users.
|
|
</Warning>
|
|
|
|
Creates a new comment thread on a design.
|
|
For information on comments and how they're used in the Canva UI, see the
|
|
[Canva Help Center](https://www.canva.com/help/comments/).
|
|
operationId: createThread
|
|
parameters:
|
|
- description: The design ID.
|
|
explode: false
|
|
in: path
|
|
name: designId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateThreadRequest'
|
|
required: true
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateThreadResponse'
|
|
description: OK
|
|
"400":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
assignee_not_mentioned:
|
|
$ref: '#/components/examples/AssigneeNotMentionedError'
|
|
message_too_long:
|
|
$ref: '#/components/examples/MessageTooLongError'
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Bad Request
|
|
"403":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
too_many_comments:
|
|
$ref: '#/components/examples/TooManyCommentsError'
|
|
not_allowed_to_comment:
|
|
$ref: '#/components/examples/NotAllowedToCommentError'
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Forbidden
|
|
"404":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
design_not_found:
|
|
$ref: '#/components/examples/DesignNotFoundError'
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Not Found
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- comment:write
|
|
tags:
|
|
- comment
|
|
x-rate-limit-per-client-user: 100
|
|
/v1/connect/keys:
|
|
get:
|
|
description: |-
|
|
<Warning>
|
|
|
|
This API is currently provided as a preview. Be aware of the following:
|
|
|
|
- There might be unannounced breaking changes.
|
|
- Any breaking changes to preview APIs won't produce a new [API version](https://www.canva.dev/docs/connect/versions/).
|
|
- Public integrations that use preview APIs will not pass the review process, and can't be made available to all Canva users.
|
|
|
|
</Warning>
|
|
|
|
The Keys API (`connect/keys`) is a security measure you can use to verify the authenticity
|
|
of webhooks you receive from Canva Connect. The Keys API returns a
|
|
[JSON Web Key (JWK)](https://www.rfc-editor.org/rfc/rfc7517#section-2), which you can use to
|
|
decrypt the webhook signature and verify it came from Canva and not a potentially malicious
|
|
actor. This helps to protect your systems from
|
|
[Replay attacks](https://owasp.org/Top10/A08_2021-Software_and_Data_Integrity_Failures/).
|
|
|
|
The keys returned by the Keys API can rotate. We recommend you cache the keys you receive
|
|
from this API where possible, and only access this API when you receive a webhook signed
|
|
with an unrecognized key. This allows you to verify webhooks quicker than accessing this API
|
|
every time you receive a webhook.
|
|
operationId: getSigningPublicKeys
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetSigningPublicKeysResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
tags:
|
|
- connect
|
|
/v1/designs:
|
|
get:
|
|
description: |-
|
|
Lists metadata for all the designs in a Canva user's
|
|
[projects](https://www.canva.com/help/find-designs-and-folders/). You can also:
|
|
|
|
- Use search terms to filter the listed designs.
|
|
- Show designs either created by, or shared with the user.
|
|
- Sort the results.
|
|
operationId: listDesigns
|
|
parameters:
|
|
- description: "Lets you search the user's designs, and designs shared with\
|
|
\ the user, using a search term or terms."
|
|
example: party invites
|
|
explode: true
|
|
in: query
|
|
name: query
|
|
required: false
|
|
schema:
|
|
maxLength: 255
|
|
type: string
|
|
style: form
|
|
- description: |-
|
|
If the success response contains a continuation token, the list contains more designs
|
|
you can list. You can use this token as a query parameter and retrieve more
|
|
designs from the list, for example
|
|
`/v1/designs?continuation={continuation}`.
|
|
|
|
To retrieve all of a user's designs, you might need to make multiple requests.
|
|
example: RkFGMgXlsVTDbMd:MR3L0QjiaUzycIAjx0yMyuNiV0OildoiOwL0x32G4NjNu4FwtAQNxowUQNMMYN
|
|
explode: true
|
|
in: query
|
|
name: continuation
|
|
required: false
|
|
schema:
|
|
type: string
|
|
style: form
|
|
- description: Filter the list of designs based on the user's ownership of the
|
|
designs.
|
|
example: any
|
|
explode: true
|
|
in: query
|
|
name: ownership
|
|
required: false
|
|
schema:
|
|
$ref: '#/components/schemas/OwnershipType'
|
|
style: form
|
|
- description: Sort the list of designs.
|
|
example: relevance
|
|
explode: true
|
|
in: query
|
|
name: sort_by
|
|
required: false
|
|
schema:
|
|
$ref: '#/components/schemas/SortByType'
|
|
style: form
|
|
- description: The number of designs to return.
|
|
explode: true
|
|
in: query
|
|
name: limit
|
|
required: false
|
|
schema:
|
|
default: 25
|
|
format: int32
|
|
maximum: 100
|
|
minimum: 1
|
|
type: integer
|
|
style: form
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetListDesignResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- design:meta:read
|
|
tags:
|
|
- design
|
|
x-rate-limit-per-client-user: 100
|
|
post:
|
|
description: |-
|
|
Creates a new Canva design. To create a new design, you can either:
|
|
|
|
- Use a preset design type.
|
|
- Set height and width dimensions for a custom design.
|
|
|
|
Additionally, you can also provide the `asset_id` of an asset in the user's [projects](https://www.canva.com/help/find-designs-and-folders/) to add to the new design. Currently, this only supports image assets. To list the assets in a folder in the user's projects, use the [List folder items API](https://www.canva.dev/docs/connect/api-reference/folders/list-folder-items/).
|
|
|
|
NOTE: Blank designs created with this API are automatically deleted if they're not edited within 7 days. These blank designs bypass the user's Canva trash and are permanently deleted.
|
|
operationId: createDesign
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateDesignRequest'
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateDesignResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- design:content:write
|
|
tags:
|
|
- design
|
|
x-rate-limit-per-client-user: 20
|
|
/v1/designs/{designId}:
|
|
get:
|
|
description: "Gets the metadata for a design. This includes owner information,\
|
|
\ URLs for editing and viewing, and thumbnail information."
|
|
operationId: getDesign
|
|
parameters:
|
|
- description: The design ID.
|
|
explode: false
|
|
in: path
|
|
name: designId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetDesignResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- design:meta:read
|
|
tags:
|
|
- design
|
|
x-rate-limit-per-client-user: 100
|
|
/v1/designs/{designId}/pages:
|
|
get:
|
|
description: |-
|
|
<Warning>
|
|
|
|
This API is currently provided as a preview. Be aware of the following:
|
|
|
|
- There might be unannounced breaking changes.
|
|
- Any breaking changes to preview APIs won't produce a new [API version](https://www.canva.dev/docs/connect/versions/).
|
|
- Public integrations that use preview APIs will not pass the review process, and can't be made available to all Canva users.
|
|
|
|
</Warning>
|
|
|
|
Lists metadata for pages in a design, such as page-specific thumbnails.
|
|
|
|
For the specified design, you can provide `offset` and `limit` values to specify the range of pages to return.
|
|
|
|
NOTE: Some design types don't have pages (for example, Canva docs).
|
|
operationId: getDesignPages
|
|
parameters:
|
|
- description: The design ID.
|
|
explode: false
|
|
in: path
|
|
name: designId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
- description: |
|
|
The page index to start the range of pages to return.
|
|
|
|
Pages are indexed using one-based numbering, so the first page in a design has the index value `1`.
|
|
explode: true
|
|
in: query
|
|
name: offset
|
|
required: false
|
|
schema:
|
|
default: 1
|
|
format: int32
|
|
maximum: 500
|
|
minimum: 1
|
|
type: integer
|
|
style: form
|
|
- description: "The number of pages to return, starting at the page index specified\
|
|
\ using the `offset` parameter."
|
|
explode: true
|
|
in: query
|
|
name: limit
|
|
required: false
|
|
schema:
|
|
default: 50
|
|
format: int32
|
|
maximum: 200
|
|
minimum: 1
|
|
type: integer
|
|
style: form
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetDesignPagesResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- design:content:read
|
|
tags:
|
|
- design
|
|
x-rate-limit-per-client-user: 100
|
|
/v1/designs/{designId}/export-formats:
|
|
get:
|
|
description: |-
|
|
<Warning>
|
|
|
|
This API is currently provided as a preview. Be aware of the following:
|
|
|
|
- There might be unannounced breaking changes.
|
|
- Any breaking changes to preview APIs won't produce a new [API version](https://www.canva.dev/docs/connect/versions/).
|
|
- Public integrations that use preview APIs will not pass the review process, and can't be made available to all Canva users.
|
|
|
|
</Warning>
|
|
|
|
Lists the available file formats for [exporting a design](https://www.canva.dev/docs/connect/api-reference/exports/create-design-export-job/).
|
|
operationId: getDesignExportFormats
|
|
parameters:
|
|
- description: The design ID.
|
|
explode: false
|
|
in: path
|
|
name: designId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetDesignExportFormatsResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- design:content:read
|
|
tags:
|
|
- design
|
|
x-rate-limit-per-client-user: 100
|
|
/v1/imports:
|
|
post:
|
|
description: |-
|
|
Starts a new [asynchronous job](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints) to import an external file as a new design in Canva.
|
|
|
|
The request format for this endpoint has an `application/octet-stream` body of bytes,
|
|
and the information about the import is provided using an `Import-Metadata` header.
|
|
|
|
Supported file types for imports are listed in [Design imports overview](https://www.canva.dev/docs/connect/api-reference/design-imports/#supported-file-types).
|
|
|
|
<Note>
|
|
|
|
For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints). You can check the status and get the results of design import jobs created with this API using the [Get design import job API](https://www.canva.dev/docs/connect/api-reference/design-imports/get-design-import-job/).
|
|
|
|
</Note>
|
|
operationId: createDesignImportJob
|
|
parameters:
|
|
- content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/DesignImportMetadata'
|
|
in: header
|
|
name: Import-Metadata
|
|
required: true
|
|
requestBody:
|
|
content:
|
|
application/octet-stream:
|
|
schema:
|
|
format: binary
|
|
type: string
|
|
description: Binary of the file to import.
|
|
required: true
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
in_progress:
|
|
$ref: '#/components/examples/InProgressDesignImportJobExample'
|
|
success:
|
|
$ref: '#/components/examples/SuccessDesignImportJobExample'
|
|
failed:
|
|
$ref: '#/components/examples/FailedDesignImportJobExample'
|
|
schema:
|
|
$ref: '#/components/schemas/CreateDesignImportJobResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- design:content:write
|
|
tags:
|
|
- design_import
|
|
x-rate-limit-per-client-user: 20
|
|
/v1/imports/{jobId}:
|
|
get:
|
|
description: |-
|
|
Gets the result of a design import job created using the [Create design import job API](https://www.canva.dev/docs/connect/api-reference/design-imports/create-design-import-job/).
|
|
|
|
You might need to make multiple requests to this endpoint until you get a `success` or `failed` status. For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints).
|
|
operationId: getDesignImportJob
|
|
parameters:
|
|
- description: The design import job ID.
|
|
example: f81b26fd-a33d-4c2d-9e8c-4a7aca798b17
|
|
explode: false
|
|
in: path
|
|
name: jobId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
in_progress:
|
|
$ref: '#/components/examples/InProgressDesignImportJobExample'
|
|
success:
|
|
$ref: '#/components/examples/SuccessDesignImportJobExample'
|
|
failed:
|
|
$ref: '#/components/examples/FailedDesignImportJobExample'
|
|
schema:
|
|
$ref: '#/components/schemas/GetDesignImportJobResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- design:content:write
|
|
tags:
|
|
- design_import
|
|
x-rate-limit-per-client-user: 120
|
|
/v1/url-imports:
|
|
post:
|
|
description: |-
|
|
Starts a new [asynchronous job](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints) to import an external file from a URL as a new design in Canva.
|
|
|
|
Supported file types for imports are listed in [Design imports overview](https://www.canva.dev/docs/connect/api-reference/design-imports/#supported-file-types).
|
|
|
|
<Note>
|
|
|
|
For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints). You can check the status and get the results of design import jobs created with this API using the [Get URL import job API](https://www.canva.dev/docs/connect/api-reference/design-imports/get-url-import-job/).
|
|
|
|
</Note>
|
|
operationId: createUrlImportJob
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateUrlImportJobRequest'
|
|
required: true
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
in_progress:
|
|
$ref: '#/components/examples/InProgressDesignImportJobExample'
|
|
success:
|
|
$ref: '#/components/examples/SuccessDesignImportJobExample'
|
|
failed:
|
|
$ref: '#/components/examples/FailedDesignImportJobExample'
|
|
schema:
|
|
$ref: '#/components/schemas/CreateUrlImportJobResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- design:content:write
|
|
tags:
|
|
- design_import
|
|
x-rate-limit-per-client-user: 20
|
|
/v1/url-imports/{jobId}:
|
|
get:
|
|
description: |-
|
|
Gets the result of a URL import job created using the [Create URL import job API](https://www.canva.dev/docs/connect/api-reference/design-imports/create-url-import-job/).
|
|
|
|
You might need to make multiple requests to this endpoint until you get a `success` or `failed` status. For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints).
|
|
operationId: getUrlImportJob
|
|
parameters:
|
|
- description: The ID of the URL import job.
|
|
example: f81b26fd-a33d-4c2d-9e8c-4a7aca798b17
|
|
explode: false
|
|
in: path
|
|
name: jobId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
in_progress:
|
|
$ref: '#/components/examples/InProgressDesignImportJobExample'
|
|
success:
|
|
$ref: '#/components/examples/SuccessDesignImportJobExample'
|
|
failed:
|
|
$ref: '#/components/examples/FailedDesignImportJobExample'
|
|
schema:
|
|
$ref: '#/components/schemas/GetUrlImportJobResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- design:content:write
|
|
tags:
|
|
- design_import
|
|
x-rate-limit-per-client-user: 120
|
|
/v1/exports:
|
|
post:
|
|
description: |-
|
|
Starts a new [asynchronous job](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints) to export a file from Canva. Once the exported file is generated, you can download
|
|
it using the URL(s) provided. The download URLs are only valid for 24 hours.
|
|
|
|
The request requires the design ID and the exported file format type.
|
|
|
|
Supported file formats (and export file type values): PDF (`pdf`), JPG (`jpg`), PNG (`png`), GIF (`gif`), Microsoft PowerPoint (`pptx`), and MP4 (`mp4`).
|
|
|
|
<Note>
|
|
|
|
For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints). You can check the status and get the results of export jobs created with this API using the [Get design export job API](https://www.canva.dev/docs/connect/api-reference/exports/get-design-export-job/).
|
|
|
|
</Note>
|
|
operationId: createDesignExportJob
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateDesignExportJobRequest'
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
in_progress:
|
|
$ref: '#/components/examples/InProgressExportJobExample'
|
|
success:
|
|
$ref: '#/components/examples/SuccessExportJobExample'
|
|
failed:
|
|
$ref: '#/components/examples/FailedExportJobExample'
|
|
schema:
|
|
$ref: '#/components/schemas/CreateDesignExportJobResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- design:content:read
|
|
tags:
|
|
- export
|
|
x-rate-limit-per-client-user: 20
|
|
/v1/exports/{exportId}:
|
|
get:
|
|
description: |-
|
|
Gets the result of a design export job that was created using the [Create design export job API](https://www.canva.dev/docs/connect/api-reference/exports/create-design-export-job/).
|
|
|
|
If the job is successful, the response includes an array
|
|
of download URLs. Depending on the design type and export format, there is a download URL for each page in the design. The download URLs are only valid for 24 hours.
|
|
|
|
You might need to make multiple requests to this endpoint until you get a `success` or `failed` status. For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints).
|
|
operationId: getDesignExportJob
|
|
parameters:
|
|
- description: The export job ID.
|
|
explode: false
|
|
in: path
|
|
name: exportId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
in_progress:
|
|
$ref: '#/components/examples/InProgressExportJobExample'
|
|
success:
|
|
$ref: '#/components/examples/SuccessExportJobExample'
|
|
failed:
|
|
$ref: '#/components/examples/FailedExportJobExample'
|
|
schema:
|
|
$ref: '#/components/schemas/GetDesignExportJobResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- design:content:read
|
|
tags:
|
|
- export
|
|
x-rate-limit-per-client-user: 120
|
|
/v1/folders/{folderId}:
|
|
delete:
|
|
description: |-
|
|
Deletes a folder with the specified `folderID`.
|
|
Deleting a folder moves the user's content in the folder to the
|
|
[Trash](https://www.canva.com/help/deleted-designs/) and content owned by
|
|
other users is moved to the top level of the owner's
|
|
[projects](https://www.canva.com/help/find-designs-and-folders/).
|
|
operationId: deleteFolder
|
|
parameters:
|
|
- description: The folder ID.
|
|
example: FAF2lZtloor
|
|
explode: false
|
|
in: path
|
|
name: folderId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
responses:
|
|
"204":
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- folder:write
|
|
tags:
|
|
- folder
|
|
x-rate-limit-per-client-user: 20
|
|
get:
|
|
description: Gets the name and other details of a folder using a folder's `folderID`.
|
|
operationId: getFolder
|
|
parameters:
|
|
- description: The folder ID.
|
|
example: FAF2lZtloor
|
|
explode: false
|
|
in: path
|
|
name: folderId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetFolderResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- folder:read
|
|
tags:
|
|
- folder
|
|
x-rate-limit-per-client-user: 100
|
|
patch:
|
|
description: |-
|
|
Updates a folder's details using its `folderID`.
|
|
Currently, you can only update a folder's name.
|
|
operationId: updateFolder
|
|
parameters:
|
|
- description: The folder ID.
|
|
example: FAF2lZtloor
|
|
explode: false
|
|
in: path
|
|
name: folderId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UpdateFolderRequest'
|
|
required: true
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UpdateFolderResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- folder:write
|
|
tags:
|
|
- folder
|
|
x-rate-limit-per-client-user: 20
|
|
/v1/folders/{folderId}/items:
|
|
get:
|
|
description: |-
|
|
Lists the items in a folder, including each item's `type`.
|
|
|
|
Folders can contain:
|
|
|
|
- Other folders.
|
|
- Designs, such as Instagram posts, Presentations, and Documents ([Canva Docs](https://www.canva.com/create/documents/)).
|
|
- Image assets.
|
|
|
|
Currently, video assets are not returned in the response.
|
|
operationId: listFolderItems
|
|
parameters:
|
|
- description: The folder ID.
|
|
example: FAF2lZtloor
|
|
explode: false
|
|
in: path
|
|
name: folderId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
- description: |-
|
|
If the success response contains a continuation token, the folder contains more items
|
|
you can list. You can use this token as a query parameter and retrieve more
|
|
items from the list, for example
|
|
`/v1/folders/{folderId}/items?continuation={continuation}`.
|
|
|
|
To retrieve all the items in a folder, you might need to make multiple requests.
|
|
example: RkFGMgXlsVTDbMd:MR3L0QjiaUzycIAjx0yMyuNiV0OildoiOwL0x32G4NjNu4FwtAQNxowUQNMMYN
|
|
explode: true
|
|
in: query
|
|
name: continuation
|
|
required: false
|
|
schema:
|
|
type: string
|
|
style: form
|
|
- description: |-
|
|
Filter the folder items to only return specified types. The available types are:
|
|
`design`, `folder`, and `image`. To filter for more than one item type, provide a comma-
|
|
delimited list.
|
|
explode: false
|
|
in: query
|
|
name: item_types
|
|
required: false
|
|
schema:
|
|
items:
|
|
$ref: '#/components/schemas/FolderItemType'
|
|
type: array
|
|
style: form
|
|
- description: Sort the list of folder items.
|
|
example: title_ascending
|
|
explode: true
|
|
in: query
|
|
name: sort_by
|
|
required: false
|
|
schema:
|
|
$ref: '#/components/schemas/FolderItemSortBy'
|
|
style: form
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ListFolderItemsResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- folder:read
|
|
tags:
|
|
- folder
|
|
x-rate-limit-per-client-user: 100
|
|
/v1/folders/move:
|
|
post:
|
|
description: |-
|
|
Moves an item to another folder. You must specify the folder ID of the destination folder, as well as the ID of the item you want to move.
|
|
|
|
NOTE: In some situations, a single item can exist in multiple folders. If you attempt to move an item that exists in multiple folders, the API returns an `item_in_multiple_folders` error. In this case, you must use the Canva UI to move the item to another folder.
|
|
operationId: moveFolderItem
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MoveFolderItemRequest'
|
|
responses:
|
|
"204":
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- folder:write
|
|
tags:
|
|
- folder
|
|
x-rate-limit-per-client-user: 100
|
|
/v1/folders:
|
|
post:
|
|
description: |-
|
|
Creates a folder in one of the following locations:
|
|
|
|
- The top level of a Canva user's [projects](https://www.canva.com/help/find-designs-and-folders/) (using the ID `root`),
|
|
- The user's Uploads folder (using the ID `uploads`),
|
|
- Another folder (using the parent folder's ID).
|
|
|
|
When a folder is successfully created, the
|
|
endpoint returns its folder ID, along with other information.
|
|
operationId: createFolder
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateFolderRequest'
|
|
required: true
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateFolderResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- folder:write
|
|
tags:
|
|
- folder
|
|
x-rate-limit-per-client-user: 20
|
|
/v1/oauth/token:
|
|
post:
|
|
description: |-
|
|
This endpoint implements the OAuth 2.0 `token` endpoint, as part of the Authorization Code flow with Proof Key for Code Exchange (PKCE). For more information, see [Authentication](https://www.canva.dev/docs/connect/authentication/).
|
|
|
|
To generate an access token, you must provide one of the following:
|
|
|
|
- An authorization code
|
|
- A refresh token
|
|
|
|
Generating a token using either an authorization code or a refresh token allows your integration to act on behalf of a user. You must first [obtain user authorization and get an authorization code](https://www.canva.dev/docs/connect/authentication/#obtain-user-authorization).
|
|
|
|
Access tokens may be up to 4 KB in size, and are only valid for a specified period of time. The expiry time (currently 4 hours) is shown in the endpoint response and is subject to change.
|
|
|
|
**Endpoint authentication**
|
|
|
|
Requests to this endpoint require authentication with your client ID and client secret, using _one_ of the following methods:
|
|
|
|
- **Basic access authentication** (Recommended): For [basic access authentication](https://en.wikipedia.org/wiki/Basic_access_authentication), the `{credentials}` string must be a Base64 encoded value of `{client id}:{client secret}`.
|
|
- **Body parameters**: Provide your integration's credentials using the `client_id` and `client_secret` body parameters.
|
|
|
|
This endpoint can't be called from a user's web-browser client because it uses client authentication with client secrets. Requests must come from your integration's backend, otherwise they'll be blocked by Canva's [Cross-Origin Resource Sharing (CORS)](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) policy.
|
|
|
|
**Generate an access token using an authorization code**
|
|
|
|
To generate an access token with an authorization code, you must:
|
|
|
|
- Set `grant_type` to `authorization_code`.
|
|
- Provide the `code_verifier` value that you generated when creating the user authorization URL.
|
|
- Provide the authorization code you received after the user authorized the integration.
|
|
|
|
**Generate an access token using a refresh token**
|
|
|
|
Using the `refresh_token` value from a previous user token request, you can get a new access token with the same or smaller scope as the previous one, but with a refreshed expiry time. You will also receive a new refresh token that you can use to refresh the access token again.
|
|
|
|
To refresh an existing access token, you must:
|
|
|
|
- Set `grant_type` to `refresh_token`.
|
|
- Provide the `refresh_token` from a previous token request.
|
|
operationId: exchangeAccessToken
|
|
requestBody:
|
|
content:
|
|
application/x-www-form-urlencoded:
|
|
schema:
|
|
$ref: '#/components/schemas/ExchangeAccessTokenRequest'
|
|
required: true
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ExchangeAccessTokenResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/OauthError'
|
|
description: Error Response
|
|
security:
|
|
- {}
|
|
- basicAuth: []
|
|
tags:
|
|
- oauth
|
|
/v1/oauth/introspect:
|
|
post:
|
|
description: |-
|
|
Introspect an access token to see whether it is valid and active. You can also verify some token properties, such as its claims, scopes, and validity times.
|
|
|
|
Requests to this endpoint require authentication with your client ID and client secret, using _one_ of the following methods:
|
|
|
|
- **Basic access authentication** (Recommended): For [basic access authentication](https://en.wikipedia.org/wiki/Basic_access_authentication), the `{credentials}` string must be a Base64 encoded value of `{client id}:{client secret}`.
|
|
- **Body parameters**: Provide your integration's credentials using the `client_id` and `client_secret` body parameters.
|
|
|
|
This endpoint can't be called from a user's web-browser client because it uses client authentication with client secrets. Requests must come from your integration's backend, otherwise they'll be blocked by Canva's [Cross-Origin Resource Sharing (CORS)](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) policy.
|
|
operationId: introspectToken
|
|
requestBody:
|
|
content:
|
|
application/x-www-form-urlencoded:
|
|
schema:
|
|
$ref: '#/components/schemas/IntrospectTokenRequest'
|
|
required: true
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/IntrospectTokenResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/OauthError'
|
|
description: Error Response
|
|
security:
|
|
- {}
|
|
- basicAuth: []
|
|
tags:
|
|
- oauth
|
|
/v1/oauth/revoke:
|
|
post:
|
|
description: |-
|
|
Revoke an access token or a refresh token.
|
|
|
|
If you revoke a _refresh token_, be aware that:
|
|
|
|
- The refresh token's lineage is also revoked. This means that access tokens created from that refresh token are also revoked.
|
|
- The user's consent for your integration is also revoked. This means that the user must go through the OAuth process again to use your integration.
|
|
|
|
Requests to this endpoint require authentication with your client ID and client secret, using _one_ of the following methods:
|
|
|
|
- **Basic access authentication** (Recommended): For [basic access authentication](https://en.wikipedia.org/wiki/Basic_access_authentication), the `{credentials}` string must be a Base64 encoded value of `{client id}:{client secret}`.
|
|
- **Body parameters**: Provide your integration's credentials using the `client_id` and `client_secret` body parameters.
|
|
|
|
This endpoint can't be called from a user's web-browser client because it uses client authentication with client secrets. Requests must come from your integration's backend, otherwise they'll be blocked by Canva's [Cross-Origin Resource Sharing (CORS)](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) policy.
|
|
operationId: revokeTokens
|
|
requestBody:
|
|
content:
|
|
application/x-www-form-urlencoded:
|
|
schema:
|
|
$ref: '#/components/schemas/RevokeTokensRequest'
|
|
required: true
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RevokeTokensResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/OauthError'
|
|
description: Error Response
|
|
security:
|
|
- {}
|
|
- basicAuth: []
|
|
tags:
|
|
- oauth
|
|
/v1/oidc/jwks:
|
|
get:
|
|
description: Gets the JSON Web Key Set (public keys) for OIDC. These keys are
|
|
used to verify JWTs in OpenID Connect flows.
|
|
operationId: getOidcJwks
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/JsonWebKeySet'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security: []
|
|
tags:
|
|
- oidc
|
|
/v1/oidc/userinfo:
|
|
get:
|
|
description: |-
|
|
Fetches the current UserInfo claims for the authorized user. This is the same fields
|
|
returned by a id_token returns during authorization.
|
|
operationId: userInfo
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UserInfoResponse'
|
|
description: OK
|
|
"401":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Unauthorized
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- openid
|
|
- profile
|
|
- email
|
|
tags:
|
|
- oidc
|
|
x-rate-limit-per-client-user: 10
|
|
/v1/resizes:
|
|
post:
|
|
description: |-
|
|
<Note>
|
|
|
|
To use this API, your integration must act on behalf of a user that's on a Canva plan with premium features (such as Canva Pro).
|
|
|
|
</Note>
|
|
|
|
Starts a new [asynchronous job](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints)
|
|
to create a resized copy of a design. The new resized design is
|
|
added to the top level of the user's
|
|
[projects](https://www.canva.com/help/find-designs-and-folders/) (`root` folder).
|
|
|
|
To resize a design into a new design, you can either:
|
|
|
|
- Use a preset design type.
|
|
- Set height and width dimensions for a custom design.
|
|
|
|
Note the following behaviors and restrictions when resizing designs:
|
|
- Designs can be resized to a maximum area of 25,000,000 pixels squared.
|
|
- Resizing designs using the Connect API always creates a new design. In-place resizing is currently not available in the Connect API, but can be done in the Canva UI.
|
|
- Resizing a multi-page design results in all pages of the design being resized. Resizing a section of a design is only available in the Canva UI.
|
|
- [Canva docs](https://www.canva.com/create/documents/) can't be resized, and other design types can't be resized to a Canva doc.
|
|
- Canva Code designs can't be resized, and other design types can't be resized to a Canva Code design.
|
|
|
|
<Note>
|
|
For more information on the workflow for using asynchronous jobs,
|
|
see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints).
|
|
You can check the status and get the results of resize jobs created with this API using the
|
|
[Get design resize job API](https://www.canva.dev/docs/connect/api-reference/resizes/get-design-resize-job/).
|
|
</Note>
|
|
operationId: createDesignResizeJob
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
example:
|
|
design_id: DAGirp_1ZUA
|
|
design_type:
|
|
type: custom
|
|
width: 1000
|
|
height: 1500
|
|
schema:
|
|
$ref: '#/components/schemas/CreateDesignResizeJobRequest'
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
in_progress:
|
|
$ref: '#/components/examples/InProgressResizeJobExample'
|
|
success:
|
|
$ref: '#/components/examples/SuccessResizeJobExample'
|
|
failed:
|
|
$ref: '#/components/examples/FailedResizeJobExample'
|
|
schema:
|
|
$ref: '#/components/schemas/CreateDesignResizeJobResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- design:content:read
|
|
- design:content:write
|
|
tags:
|
|
- resize
|
|
x-required-capabilities:
|
|
- resize
|
|
x-rate-limit-per-client-user: 20
|
|
/v1/resizes/{jobId}:
|
|
get:
|
|
description: |-
|
|
<Note>
|
|
|
|
To use this API, your integration must act on behalf of a user that's on a Canva plan with premium features (such as Canva Pro).
|
|
|
|
</Note>
|
|
|
|
Gets the result of a design resize job that was created using the [Create design resize
|
|
job API](https://www.canva.dev/docs/connect/api-reference/resizes/create-design-resize-job/).
|
|
|
|
If the job is successful, the response includes a summary of the new resized design, including its metadata.
|
|
|
|
You might need to make multiple requests to this endpoint until you get a `success` or `failed` status.
|
|
For more information on the workflow for using asynchronous jobs,
|
|
see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints).
|
|
operationId: getDesignResizeJob
|
|
parameters:
|
|
- description: The design resize job ID.
|
|
explode: false
|
|
in: path
|
|
name: jobId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
in_progress:
|
|
$ref: '#/components/examples/InProgressResizeJobExample'
|
|
success:
|
|
$ref: '#/components/examples/SuccessResizeJobExample'
|
|
failed:
|
|
$ref: '#/components/examples/FailedResizeJobExample'
|
|
schema:
|
|
$ref: '#/components/schemas/GetDesignResizeJobResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- design:content:read
|
|
- design:content:write
|
|
tags:
|
|
- resize
|
|
x-required-capabilities:
|
|
- resize
|
|
x-rate-limit-per-client-user: 120
|
|
/v1/users/me:
|
|
get:
|
|
description: |-
|
|
Returns the User ID and Team ID of the user
|
|
account associated with the provided access token.
|
|
operationId: usersMe
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UsersMeResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode: []
|
|
tags:
|
|
- user
|
|
x-rate-limit-per-client-user: 10
|
|
/v1/users/me/capabilities:
|
|
get:
|
|
description: "Lists the API capabilities for the user account associated with\
|
|
\ the provided access token. For more information, see [Capabilities](https://www.canva.dev/docs/connect/capabilities/)."
|
|
operationId: getUserCapabilities
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetUserCapabilitiesResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- profile:read
|
|
tags:
|
|
- user
|
|
x-rate-limit-per-client-user: 10
|
|
/v1/users/me/profile:
|
|
get:
|
|
description: "Currently, this returns the display name of the user account associated\
|
|
\ with the provided access token. More user information is expected to be\
|
|
\ included in the future."
|
|
operationId: getUserProfile
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UserProfileResponse'
|
|
description: OK
|
|
default:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
description: Error Response
|
|
security:
|
|
- oauthAuthCode:
|
|
- profile:read
|
|
tags:
|
|
- user
|
|
x-rate-limit-per-client-user: 10
|
|
components:
|
|
examples:
|
|
InProgressAssetUploadJobExample:
|
|
summary: In progress job
|
|
value:
|
|
job:
|
|
id: e08861ae-3b29-45db-8dc1-1fe0bf7f1cc8
|
|
status: in_progress
|
|
SuccessAssetUploadJobExample:
|
|
summary: Successfully completed job
|
|
value:
|
|
job:
|
|
id: e08861ae-3b29-45db-8dc1-1fe0bf7f1cc8
|
|
status: success
|
|
asset:
|
|
id: Msd59349ff
|
|
type: image
|
|
name: My Awesome Upload
|
|
tags:
|
|
- image
|
|
- holiday
|
|
- best day ever
|
|
owner:
|
|
user_id: oU123456AbCdE
|
|
team_id: oB123456AbCdE
|
|
created_at: 1377396000
|
|
updated_at: 1692928800
|
|
thumbnail:
|
|
width: 595
|
|
height: 335
|
|
url: https://document-export.canva.com/Vczz9/zF9vzVtdADc/2/thumbnail/0001.png?<query-string>
|
|
FailedAssetUploadJobExample:
|
|
summary: Failed job
|
|
value:
|
|
job:
|
|
id: e08861ae-3b29-45db-8dc1-1fe0bf7f1cc8
|
|
status: failed
|
|
error:
|
|
code: file_too_big
|
|
message: Failed to import because the file is too big
|
|
InProgressAutofillJobExample:
|
|
summary: In progress job
|
|
value:
|
|
job:
|
|
id: 450a76e7-f96f-43ae-9c37-0e1ce492ac72
|
|
status: in_progress
|
|
SuccessAutofillJobExample:
|
|
summary: Successfully completed job
|
|
value:
|
|
job:
|
|
id: 450a76e7-f96f-43ae-9c37-0e1ce492ac72
|
|
status: success
|
|
result:
|
|
type: create_design
|
|
design:
|
|
id: DAFVztcvd9z
|
|
title: My summer holiday
|
|
url: https://www.canva.com/design/DAFVztcvd9z/edit
|
|
urls:
|
|
edit_url: https://www.canva.com/api/ekimus8HTvsdf&/edit
|
|
view_url: https://www.canva.com/api/eylPinTv358hYb8n1U4/view
|
|
thumbnail:
|
|
width: 595
|
|
height: 335
|
|
url: https://document-export.canva.com/Vczz9/zF9vzVtdADc/2/thumbnail/0001.png?<query-string>
|
|
created_at: 1586734043
|
|
updated_at: 1586734043
|
|
FailedAutofillJobExample:
|
|
summary: Failed job
|
|
value:
|
|
job:
|
|
id: 450a76e7-f96f-43ae-9c37-0e1ce492ac72
|
|
status: failed
|
|
error:
|
|
code: autofill_error
|
|
message: Error autofilling design from brand template
|
|
BrandTemplateNotFoundError:
|
|
summary: A brand template with the ID specified in the request could not be
|
|
found.
|
|
value:
|
|
code: not_found
|
|
message: "Brand template with id '{brandTemplateId}' not found"
|
|
BrandTemplateForbiddenError:
|
|
summary: |-
|
|
The user does not have permission to access the brand template with the ID
|
|
specified in the request.
|
|
value:
|
|
code: permission_denied
|
|
message: "Not allowed to access brand template with id '{brandTemplateId}'"
|
|
DesignTitleInvalidError:
|
|
summary: The design title specified in the request is not valid.
|
|
value:
|
|
code: bad_request_params
|
|
message: Design title invalid
|
|
DesignAutofillJobNotFoundError:
|
|
summary: A design autofill job with the ID specified in the request could not
|
|
be found.
|
|
value:
|
|
code: not_found
|
|
message: "Job {jobId} not found"
|
|
DesignAutofillJobForbiddenError:
|
|
summary: |-
|
|
The user does not have permission to access the design autofill job with the ID
|
|
specified in the request.
|
|
value:
|
|
code: permission_denied
|
|
message: Calling user was not the creator of the autofill job
|
|
BrandKitsForbiddenError:
|
|
summary: The user does not have permission to access to the brand kits
|
|
value:
|
|
code: permission_denied
|
|
message: Not allowed to access brand kits
|
|
AssigneeNotMentionedError:
|
|
summary: Assignee must be mentioned in comment content
|
|
value:
|
|
code: bad_request_body
|
|
message: Assignee must be mentioned in comment content
|
|
MessageTooLongError:
|
|
summary: Message is too long
|
|
value:
|
|
code: message_too_long
|
|
message: Message is too long
|
|
TooManyCommentsError:
|
|
summary: Design already has the maximum number of allowed comments
|
|
value:
|
|
code: too_many_comments
|
|
message: Design already has the maximum number of allowed comments
|
|
NotAllowedToCommentError:
|
|
summary: Not allowed to comment on this design
|
|
value:
|
|
code: permission_denied
|
|
message: Not allowed to comment on this design
|
|
DesignNotFoundError:
|
|
summary: Design not found
|
|
value:
|
|
code: design_not_found
|
|
message: Design not found
|
|
TooManyRepliesError:
|
|
summary: This comment thread already has the maximum number of allowed replies
|
|
value:
|
|
code: too_many_replies
|
|
message: This comment thread already has the maximum number of allowed replies
|
|
NotAllowedToReplyError:
|
|
summary: Not allowed to reply on this design
|
|
value:
|
|
code: permission_denied
|
|
message: Not allowed to reply on this design
|
|
DesignOrCommentNotFoundForReplyError:
|
|
summary: Design or comment not found
|
|
value:
|
|
code: design_not_found
|
|
message: Design or comment not found
|
|
NotAllowedToFetchRepliesError:
|
|
summary: Not allowed to fetch replies
|
|
value:
|
|
code: permission_denied
|
|
message: Not allowed to fetch replies
|
|
DesignOrThreadNotFoundError:
|
|
summary: Design or comment not found
|
|
value:
|
|
code: design_or_thread_not_found
|
|
message: Design or comment not found
|
|
NotAllowedToFetchCommentError:
|
|
summary: Not allowed to fetch this comment
|
|
value:
|
|
code: permission_denied
|
|
message: Not allowed to fetch this comment
|
|
NotAllowedToFetchSuggestionError:
|
|
summary: Not allowed to fetch this suggestion
|
|
value:
|
|
code: permission_denied
|
|
message: Not allowed to fetch this suggestion
|
|
ThreadNotFoundError:
|
|
summary: No thread with ID found
|
|
value:
|
|
code: thread_not_found
|
|
message: "No thread with ID {threadId} found"
|
|
ThreadNotAttachedToDesignError:
|
|
summary: Thread not attached to design
|
|
value:
|
|
code: thread_not_found
|
|
message: "Thread with ID {threadId} is not attached to design {designId},\
|
|
\ or design not found"
|
|
SuggestionNotFoundError:
|
|
summary: No suggestion thread with ID found
|
|
value:
|
|
code: thread_not_found
|
|
message: "Suggestion with ID {threadId} not found"
|
|
NotAllowedToFetchReplyError:
|
|
summary: Not allowed to fetch this reply
|
|
value:
|
|
code: permission_denied
|
|
message: Not allowed to fetch this reply
|
|
ReplyNotFoundError:
|
|
summary: Reply not found
|
|
value:
|
|
code: reply_not_found
|
|
message: "Reply with ID {replyId} not found"
|
|
SuggestionReplyNotFoundError:
|
|
summary: Suggestion reply not found
|
|
value:
|
|
code: reply_not_found
|
|
message: "Suggestion reply with ID {replyId} not found"
|
|
NotAllowedToFetchCommentsError:
|
|
summary: Not allowed to fetch comments for this design
|
|
value:
|
|
code: permission_denied
|
|
message: Not allowed to fetch comments for this design
|
|
InProgressDesignImportJobExample:
|
|
summary: In progress job
|
|
value:
|
|
job:
|
|
id: e08861ae-3b29-45db-8dc1-1fe0bf7f1cc8
|
|
status: in_progress
|
|
SuccessDesignImportJobExample:
|
|
summary: Successfully completed job
|
|
value:
|
|
job:
|
|
id: e08861ae-3b29-45db-8dc1-1fe0bf7f1cc8
|
|
status: success
|
|
result:
|
|
designs:
|
|
- id: DAGQm2AkzOk
|
|
title: My Awesome Design
|
|
thumbnail:
|
|
width: 376
|
|
height: 531
|
|
url: https://document-export.canva.com/...
|
|
urls:
|
|
edit_url: https://www.canva.com/api/design/...
|
|
view_url: https://www.canva.com/api/design/...
|
|
created_at: 1726198998
|
|
updated_at: 1726199000
|
|
FailedDesignImportJobExample:
|
|
summary: Failed job
|
|
value:
|
|
job:
|
|
id: e08861ae-3b29-45db-8dc1-1fe0bf7f1cc8
|
|
status: failed
|
|
error:
|
|
code: invalid_file
|
|
message: Document couldn't be imported because the file is corrupt.
|
|
InProgressExportJobExample:
|
|
summary: In progress job
|
|
value:
|
|
job:
|
|
id: e08861ae-3b29-45db-8dc1-1fe0bf7f1cc8
|
|
status: in_progress
|
|
SuccessExportJobExample:
|
|
summary: Successfully completed job
|
|
value:
|
|
job:
|
|
id: e08861ae-3b29-45db-8dc1-1fe0bf7f1cc8
|
|
status: success
|
|
urls:
|
|
- https://export-download.canva.com/...
|
|
FailedExportJobExample:
|
|
summary: Failed job
|
|
value:
|
|
job:
|
|
id: e08861ae-3b29-45db-8dc1-1fe0bf7f1cc8
|
|
status: failed
|
|
error:
|
|
code: license_required
|
|
message: User doesn't have the required license to export in PRO quality.
|
|
UpdateFolderPermissionsUserInputExample:
|
|
description: "Example of an update folder permissions request, updating the\
|
|
\ permissions for a user."
|
|
summary: Update user permissions request
|
|
value:
|
|
role: editor
|
|
type: user
|
|
user_id: auDAbliZ2rQNNOsUl5OLu
|
|
team_id: Oi2RJILTrKk0KRhRUZozX
|
|
UpdateFolderPermissionsGroupInputExample:
|
|
description: "Example of an update folder permissions request, updating the\
|
|
\ permissions for a group."
|
|
summary: Update group permissions request
|
|
value:
|
|
role: viewer
|
|
type: group
|
|
group_id: dl9n9SoWoExMsw6Ri1iTg
|
|
team_id: Oi2RJILTrKk0KRhRUZozX
|
|
UpdateFolderPermissionsTeamInputExample:
|
|
description: "Example of an update folder permissions request, updating the\
|
|
\ permissions for a team."
|
|
summary: Updating team permissions request
|
|
value:
|
|
role: none
|
|
type: team
|
|
team_id: Oi2RJILTrKk0KRhRUZozX
|
|
UpdateFolderPermissionsUserResponseExample:
|
|
description: Example of the response returned when updating folder permissions
|
|
for a user.
|
|
summary: Updated user permissions response
|
|
value:
|
|
folder_permission:
|
|
type: user
|
|
role: editor
|
|
inherited: false
|
|
team_user:
|
|
user_id: auDAbliZ2rQNNOsUl5OLu
|
|
team_id: Oi2RJILTrKk0KRhRUZozX
|
|
UpdateFolderPermissionsGroupResponseExample:
|
|
description: Example of the response returned when updating folder permissions
|
|
for a group.
|
|
summary: Updated group permissions response
|
|
value:
|
|
folder_permission:
|
|
role: viewer
|
|
type: group
|
|
inherited: false
|
|
group:
|
|
id: dl9n9SoWoExMsw6Ri1iTg
|
|
external: false
|
|
display_name: Sales team
|
|
UpdateFolderPermissionsTeamResponseExample:
|
|
description: Example of the response returned when updating folder permissions
|
|
for a team.
|
|
summary: Updated team permissions response
|
|
value:
|
|
folder_permission:
|
|
role: none
|
|
type: team
|
|
inherited: false
|
|
team:
|
|
id: Oi2RJILTrKk0KRhRUZozX
|
|
display_name: Acme Corporation
|
|
external: false
|
|
InProgressResizeJobExample:
|
|
summary: In progress job
|
|
value:
|
|
job:
|
|
id: 450a76e7-f96f-43ae-9c37-0e1ce492ac72
|
|
status: in_progress
|
|
SuccessResizeJobExample:
|
|
summary: Successfully completed job
|
|
value:
|
|
job:
|
|
id: 450a76e7-f96f-43ae-9c37-0e1ce492ac72
|
|
status: success
|
|
result:
|
|
design:
|
|
id: DAGirp_1ZUA
|
|
title: My summer holiday
|
|
thumbnail:
|
|
width: 595
|
|
height: 335
|
|
url: https://document-export.canva.com/Vczz9/zF9vzVtdADc/2/thumbnail/0001.png?<query-string>
|
|
urls:
|
|
edit_url: https://www.canva.com/design/DAGhRehVa2c/0L_1s4UXSpZhls8EtPaRKw/edit
|
|
view_url: https://www.canva.com/design/DAGhRehVa2c/0L_1s4UXSpZhls8EtPaRKw/view
|
|
created_at: 1742856750
|
|
updated_at: 1742856752
|
|
page_count: 5
|
|
trial_information:
|
|
uses_remaining: 0
|
|
upgrade_url: https://www.canva.com/?tailoringUpsellDialog=GENERIC_C4W
|
|
FailedResizeJobExample:
|
|
summary: Failed job
|
|
value:
|
|
job:
|
|
id: 450a76e7-f96f-43ae-9c37-0e1ce492ac72
|
|
status: failed
|
|
error:
|
|
code: design_resize_error
|
|
message: Failed to resize the design
|
|
UpdatePrivacyPreferenceInvalidError:
|
|
summary: The intend preference update request is not valid.
|
|
value:
|
|
code: bad_request_params
|
|
message: Invalid preference request
|
|
UpdatePrivacyPreferenceUnauthorizedError:
|
|
summary: The request client does not have permission to update the specified
|
|
preference.
|
|
value:
|
|
code: unauthorized_client
|
|
message: Request client is not unauthorized
|
|
UpdatePrivacyPreferenceForbiddenError:
|
|
summary: The user does not have permission to update the preference specified
|
|
in the request.
|
|
value:
|
|
code: permission_denied
|
|
message: User cannot update the specified preference
|
|
UpdatePrivacyPreferenceConflictError:
|
|
summary: Detected conflicting changes to the user's privacy preferences after
|
|
the collected_at_ms timestamp.
|
|
value:
|
|
code: bad_request_params
|
|
message: New update conflicts with existing preference change after the collected_at_ms
|
|
timestamp
|
|
UpdatePrivacyPreferenceTooManyUpdatesError:
|
|
summary: The user has exceeded the allowed number of updates to their privacy
|
|
preferences after the collected_at_ms timestamp.
|
|
value:
|
|
code: too_many_requests
|
|
message: Too many preference updates happened since collection time
|
|
parameters:
|
|
appId:
|
|
description: The app ID.
|
|
explode: false
|
|
in: path
|
|
name: appId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
brandTemplateId:
|
|
description: The brand template ID.
|
|
explode: false
|
|
in: path
|
|
name: brandTemplateId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
commentId:
|
|
description: The ID of the comment.
|
|
example: KeAZEAjijEb
|
|
explode: false
|
|
in: path
|
|
name: commentId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
threadId:
|
|
description: The ID of the thread.
|
|
example: KeAbiEAjZEj
|
|
explode: false
|
|
in: path
|
|
name: threadId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
replyId:
|
|
description: The ID of the reply.
|
|
example: KeAZEAjijEb
|
|
explode: false
|
|
in: path
|
|
name: replyId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
designId:
|
|
description: The design ID.
|
|
explode: false
|
|
in: path
|
|
name: designId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
transactionIdParameter:
|
|
description: The editing transaction ID.
|
|
example: EDT123456
|
|
explode: false
|
|
in: path
|
|
name: transactionId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
pageIndicesParameter:
|
|
description: |-
|
|
The request with all the page indices
|
|
Pages are indexed using one-based numbering, so the first page in a design has the index value `1`.
|
|
explode: false
|
|
in: query
|
|
name: page_indices
|
|
required: true
|
|
schema:
|
|
example:
|
|
- 2
|
|
- 3
|
|
- 4
|
|
items:
|
|
format: int32
|
|
maximum: 500
|
|
minimum: 1
|
|
type: integer
|
|
maxItems: 4
|
|
type: array
|
|
style: form
|
|
exportId:
|
|
description: The export job ID.
|
|
explode: false
|
|
in: path
|
|
name: exportId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
fileIdParameter:
|
|
description: The file ID.
|
|
explode: false
|
|
in: path
|
|
name: fileId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
folderIdParameter:
|
|
description: The folder ID.
|
|
example: FAF2lZtloor
|
|
explode: false
|
|
in: path
|
|
name: folderId
|
|
required: true
|
|
schema:
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
style: simple
|
|
featureId:
|
|
explode: false
|
|
in: path
|
|
name: featureId
|
|
required: true
|
|
schema:
|
|
$ref: '#/components/schemas/FeatureId'
|
|
style: simple
|
|
feature_quota_limit:
|
|
explode: true
|
|
in: query
|
|
name: feature_quota_limit
|
|
required: false
|
|
schema:
|
|
$ref: '#/components/schemas/FeatureQuotaLimit'
|
|
style: form
|
|
interval:
|
|
description: The interval at which the usage resets. 'never' means lifetime
|
|
quota that never resets.
|
|
explode: true
|
|
in: query
|
|
name: interval
|
|
required: false
|
|
schema:
|
|
$ref: '#/components/schemas/Interval'
|
|
style: form
|
|
schemas:
|
|
GetAppJwksResponse:
|
|
properties:
|
|
keys:
|
|
description: |-
|
|
The value of the "keys" parameter is an array of JWK values. The order of keys has no
|
|
meaning.
|
|
items:
|
|
$ref: '#/components/schemas/JsonWebKey'
|
|
type: array
|
|
required:
|
|
- keys
|
|
type: object
|
|
CreateUrlAssetUploadJobRequest:
|
|
properties:
|
|
name:
|
|
description: A name for the asset.
|
|
example: My Awesome Asset
|
|
maxLength: 255
|
|
minLength: 1
|
|
type: string
|
|
url:
|
|
description: The URL of the file to import. This URL must be accessible
|
|
from the internet and be publicly available.
|
|
example: https://example.com/my_asset_to_upload.jpg
|
|
maxLength: 2048
|
|
minLength: 8
|
|
type: string
|
|
required:
|
|
- name
|
|
- url
|
|
type: object
|
|
CreateUrlAssetUploadJobResponse:
|
|
properties:
|
|
job:
|
|
$ref: '#/components/schemas/AssetUploadJob'
|
|
required:
|
|
- job
|
|
type: object
|
|
GetUrlAssetUploadJobResponse:
|
|
properties:
|
|
job:
|
|
$ref: '#/components/schemas/AssetUploadJob'
|
|
required:
|
|
- job
|
|
type: object
|
|
GetAssetResponse:
|
|
properties:
|
|
asset:
|
|
$ref: '#/components/schemas/Asset'
|
|
required:
|
|
- asset
|
|
type: object
|
|
UpdateAssetRequest:
|
|
properties:
|
|
name:
|
|
description: |-
|
|
The name of the asset. This is shown in the Canva UI.
|
|
When this field is undefined or empty, nothing is updated.
|
|
example: My Awesome Upload
|
|
maxLength: 50
|
|
type: string
|
|
tags:
|
|
description: |-
|
|
The replacement tags for the asset.
|
|
When this field is undefined, nothing is updated.
|
|
example:
|
|
- image
|
|
- holiday
|
|
- best day ever
|
|
items:
|
|
maxLength: 50
|
|
type: string
|
|
maxItems: 50
|
|
type: array
|
|
type: object
|
|
UpdateAssetResponse:
|
|
properties:
|
|
asset:
|
|
$ref: '#/components/schemas/Asset'
|
|
required:
|
|
- asset
|
|
type: object
|
|
Asset:
|
|
description: "The asset object, which contains metadata about the asset."
|
|
properties:
|
|
type:
|
|
$ref: '#/components/schemas/AssetType'
|
|
id:
|
|
description: The ID of the asset.
|
|
example: Msd59349ff
|
|
type: string
|
|
name:
|
|
description: The name of the asset.
|
|
example: My Awesome Upload
|
|
type: string
|
|
tags:
|
|
description: |-
|
|
The user-facing tags attached to the asset.
|
|
Users can add these tags to their uploaded assets, and they can search their uploaded
|
|
assets in the Canva UI by searching for these tags. For information on how users use
|
|
tags, see the
|
|
[Canva Help Center page on asset tags](https://www.canva.com/help/add-edit-tags/).
|
|
example:
|
|
- image
|
|
- holiday
|
|
- best day ever
|
|
items:
|
|
type: string
|
|
type: array
|
|
import_status:
|
|
$ref: '#/components/schemas/ImportStatus'
|
|
created_at:
|
|
description: |-
|
|
When the asset was added to Canva, as a Unix timestamp (in seconds since the Unix
|
|
Epoch).
|
|
example: 1377396000
|
|
format: int64
|
|
type: integer
|
|
updated_at:
|
|
description: |-
|
|
When the asset was last updated in Canva, as a Unix timestamp (in seconds since the
|
|
Unix Epoch).
|
|
example: 1692928800
|
|
format: int64
|
|
type: integer
|
|
owner:
|
|
$ref: '#/components/schemas/TeamUserSummary'
|
|
thumbnail:
|
|
$ref: '#/components/schemas/Thumbnail'
|
|
required:
|
|
- created_at
|
|
- id
|
|
- name
|
|
- owner
|
|
- tags
|
|
- type
|
|
- updated_at
|
|
type: object
|
|
AssetSummary:
|
|
description: An object representing an asset with associated metadata.
|
|
properties:
|
|
type:
|
|
$ref: '#/components/schemas/AssetType'
|
|
id:
|
|
description: The ID of the asset.
|
|
example: Msd59349ff
|
|
type: string
|
|
name:
|
|
description: The name of the asset.
|
|
example: My Awesome Upload
|
|
type: string
|
|
tags:
|
|
description: |-
|
|
The user-facing tags attached to the asset.
|
|
Users can add these tags to their uploaded assets, and they can search their uploaded
|
|
assets in the Canva UI by searching for these tags. For information on how users use
|
|
tags, see the
|
|
[Canva Help Center page on asset tags](https://www.canva.com/help/add-edit-tags/).
|
|
example:
|
|
- image
|
|
- holiday
|
|
- best day ever
|
|
items:
|
|
type: string
|
|
type: array
|
|
created_at:
|
|
description: |-
|
|
When the asset was added to Canva, as a Unix timestamp (in seconds since the Unix
|
|
Epoch).
|
|
example: 1377396000
|
|
format: int64
|
|
type: integer
|
|
updated_at:
|
|
description: |-
|
|
When the asset was last updated in Canva, as a Unix timestamp (in seconds since the
|
|
Unix Epoch).
|
|
example: 1692928800
|
|
format: int64
|
|
type: integer
|
|
thumbnail:
|
|
$ref: '#/components/schemas/Thumbnail'
|
|
required:
|
|
- created_at
|
|
- id
|
|
- name
|
|
- tags
|
|
- type
|
|
- updated_at
|
|
type: object
|
|
AssetType:
|
|
description: Type of an asset.
|
|
enum:
|
|
- image
|
|
- video
|
|
example: image
|
|
type: string
|
|
ImportStatus:
|
|
deprecated: true
|
|
description: The import status of the asset.
|
|
properties:
|
|
state:
|
|
$ref: '#/components/schemas/ImportStatusState'
|
|
error:
|
|
$ref: '#/components/schemas/ImportError'
|
|
required:
|
|
- state
|
|
type: object
|
|
ImportStatusState:
|
|
deprecated: true
|
|
description: State of the import job for an uploaded asset.
|
|
enum:
|
|
- failed
|
|
- in_progress
|
|
- success
|
|
example: success
|
|
type: string
|
|
ImportError:
|
|
deprecated: true
|
|
description: "If the import fails, this object provides details about the error."
|
|
properties:
|
|
code:
|
|
$ref: '#/components/schemas/ImportErrorCode'
|
|
message:
|
|
description: A human-readable description of what went wrong.
|
|
type: string
|
|
required:
|
|
- code
|
|
- message
|
|
type: object
|
|
ImportErrorCode:
|
|
deprecated: true
|
|
description: |
|
|
A short string indicating why the upload failed. This field can be used to handle errors programmatically.
|
|
enum:
|
|
- file_too_big
|
|
- import_failed
|
|
type: string
|
|
CreateAssetUploadJobResponse:
|
|
properties:
|
|
job:
|
|
$ref: '#/components/schemas/AssetUploadJob'
|
|
required:
|
|
- job
|
|
type: object
|
|
GetAssetUploadJobResponse:
|
|
properties:
|
|
job:
|
|
$ref: '#/components/schemas/AssetUploadJob'
|
|
required:
|
|
- job
|
|
type: object
|
|
AssetUploadJob:
|
|
description: The status of the asset upload job.
|
|
example:
|
|
id: e08861ae-3b29-45db-8dc1-1fe0bf7f1cc8
|
|
status: success
|
|
asset:
|
|
id: Msd59349ff
|
|
type: image
|
|
name: My Awesome Upload
|
|
tags:
|
|
- image
|
|
- holiday
|
|
- best day ever
|
|
owner:
|
|
user_id: oU123456AbCdE
|
|
team_id: oB123456AbCdE
|
|
created_at: 1377396000
|
|
updated_at: 1692928800
|
|
thumbnail:
|
|
width: 595
|
|
height: 335
|
|
url: https://document-export.canva.com/Vczz9/zF9vzVtdADc/2/thumbnail/0001.png?<query-string>
|
|
properties:
|
|
id:
|
|
description: The ID of the asset upload job.
|
|
example: e08861ae-3b29-45db-8dc1-1fe0bf7f1cc8
|
|
type: string
|
|
status:
|
|
$ref: '#/components/schemas/AssetUploadStatus'
|
|
error:
|
|
$ref: '#/components/schemas/AssetUploadError'
|
|
asset:
|
|
$ref: '#/components/schemas/Asset'
|
|
required:
|
|
- id
|
|
- status
|
|
type: object
|
|
AssetUploadStatus:
|
|
description: Status of the asset upload job.
|
|
enum:
|
|
- failed
|
|
- in_progress
|
|
- success
|
|
example: success
|
|
type: string
|
|
AssetUploadError:
|
|
description: "If the upload fails, this object provides details about the error."
|
|
properties:
|
|
code:
|
|
$ref: '#/components/schemas/AssetUploadErrorCode'
|
|
message:
|
|
description: A human-readable description of what went wrong.
|
|
example: Failed to import because the file is too big.
|
|
type: string
|
|
required:
|
|
- code
|
|
- message
|
|
type: object
|
|
AssetUploadErrorCode:
|
|
description: |-
|
|
A short string indicating why the upload failed. This field can be used to handle errors
|
|
programmatically.
|
|
enum:
|
|
- file_too_big
|
|
- import_failed
|
|
- fetch_failed
|
|
example: file_too_big
|
|
type: string
|
|
AssetUploadMetadata:
|
|
description: Metadata for the asset being uploaded.
|
|
properties:
|
|
name_base64:
|
|
description: |-
|
|
The asset's name, encoded in Base64.
|
|
|
|
The maximum length of an asset name in Canva (unencoded) is 50 characters.
|
|
|
|
Base64 encoding allows names containing emojis and other special
|
|
characters to be sent using HTTP headers.
|
|
For example, "My Awesome Upload 🚀" Base64 encoded
|
|
is `TXkgQXdlc29tZSBVcGxvYWQg8J+agA==`.
|
|
example: TXkgQXdlc29tZSBVcGxvYWQg8J+agA==
|
|
minLength: 1
|
|
type: string
|
|
required:
|
|
- name_base64
|
|
type: object
|
|
CreateDesignAutofillJobRequest:
|
|
properties:
|
|
brand_template_id:
|
|
description: ID of the input brand template.
|
|
example: DAFVztcvd9z
|
|
type: string
|
|
title:
|
|
description: |-
|
|
Title to use for the autofilled design.
|
|
|
|
If no design title is provided, the autofilled design will have the same title as the brand template.
|
|
maxLength: 255
|
|
minLength: 1
|
|
type: string
|
|
data:
|
|
additionalProperties:
|
|
$ref: '#/components/schemas/DatasetValue'
|
|
description: Data object containing the data fields and values to autofill.
|
|
example:
|
|
cute_pet_image_of_the_day:
|
|
type: image
|
|
asset_id: Msd59349ff
|
|
cute_pet_witty_pet_says:
|
|
type: text
|
|
text: It was like this when I got here!
|
|
cute_pet_sales_chart:
|
|
type: chart
|
|
chart_data:
|
|
rows:
|
|
- cells:
|
|
- type: string
|
|
value: Geographic Region
|
|
- type: string
|
|
value: Sales (millions AUD)
|
|
- type: string
|
|
value: Target met?
|
|
- type: string
|
|
value: Date met
|
|
- cells:
|
|
- type: string
|
|
value: Asia Pacific
|
|
- type: number
|
|
value: 10.2
|
|
- type: boolean
|
|
value: true
|
|
- type: date
|
|
value: 1721944387
|
|
- cells:
|
|
- type: string
|
|
value: EMEA
|
|
- type: number
|
|
value: 13.8
|
|
- type: boolean
|
|
value: false
|
|
- type: date
|
|
type: object
|
|
required:
|
|
- brand_template_id
|
|
- data
|
|
type: object
|
|
CreateDesignAutofillJobResponse:
|
|
properties:
|
|
job:
|
|
$ref: '#/components/schemas/DesignAutofillJob'
|
|
required:
|
|
- job
|
|
type: object
|
|
DatasetValue:
|
|
description: The data field to autofill.
|
|
discriminator:
|
|
mapping:
|
|
image: '#/components/schemas/DatasetImageValue'
|
|
text: '#/components/schemas/DatasetTextValue'
|
|
chart: '#/components/schemas/DatasetChartValue'
|
|
propertyName: type
|
|
oneOf:
|
|
- $ref: '#/components/schemas/DatasetImageValue'
|
|
- $ref: '#/components/schemas/DatasetTextValue'
|
|
- $ref: '#/components/schemas/DatasetChartValue'
|
|
type: object
|
|
Dataset:
|
|
additionalProperties:
|
|
$ref: '#/components/schemas/DatasetValue'
|
|
description: Data object containing the data fields and values to autofill.
|
|
example:
|
|
cute_pet_image_of_the_day:
|
|
type: image
|
|
asset_id: Msd59349ff
|
|
cute_pet_witty_pet_says:
|
|
type: text
|
|
text: It was like this when I got here!
|
|
cute_pet_sales_chart:
|
|
type: chart
|
|
chart_data:
|
|
rows:
|
|
- cells:
|
|
- type: string
|
|
value: Geographic Region
|
|
- type: string
|
|
value: Sales (millions AUD)
|
|
- type: string
|
|
value: Target met?
|
|
- type: string
|
|
value: Date met
|
|
- cells:
|
|
- type: string
|
|
value: Asia Pacific
|
|
- type: number
|
|
value: 10.2
|
|
- type: boolean
|
|
value: true
|
|
- type: date
|
|
value: 1721944387
|
|
- cells:
|
|
- type: string
|
|
value: EMEA
|
|
- type: number
|
|
value: 13.8
|
|
- type: boolean
|
|
value: false
|
|
- type: date
|
|
type: object
|
|
DatasetImageValue:
|
|
description: If the data field is an image field.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- image
|
|
type: string
|
|
asset_id:
|
|
description: '`asset_id` of the image to insert into the template element.'
|
|
example: Msd59349ff
|
|
type: string
|
|
required:
|
|
- asset_id
|
|
- type
|
|
type: object
|
|
DatasetTextValue:
|
|
description: If the data field is a text field.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- text
|
|
type: string
|
|
text:
|
|
description: Text to insert into the template element.
|
|
example: It was like this when I got here!
|
|
type: string
|
|
required:
|
|
- text
|
|
- type
|
|
type: object
|
|
DatasetChartValue:
|
|
description: |-
|
|
If the data field is a chart.
|
|
|
|
WARNING: Chart data fields are a [preview feature](https://www.canva.dev/docs/connect/#preview-apis). There might be unannounced breaking changes to this feature which won't produce a new API version.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- chart
|
|
type: string
|
|
chart_data:
|
|
$ref: '#/components/schemas/DataTable'
|
|
required:
|
|
- chart_data
|
|
- type
|
|
type: object
|
|
GetDesignAutofillJobResponse:
|
|
properties:
|
|
job:
|
|
$ref: '#/components/schemas/DesignAutofillJob'
|
|
required:
|
|
- job
|
|
type: object
|
|
DesignAutofillJob:
|
|
description: Details about the autofill job.
|
|
properties:
|
|
id:
|
|
description: ID of the asynchronous job that is creating the design using
|
|
the provided data.
|
|
example: 450a76e7-f96f-43ae-9c37-0e1ce492ac72
|
|
type: string
|
|
status:
|
|
$ref: '#/components/schemas/DesignAutofillStatus'
|
|
result:
|
|
$ref: '#/components/schemas/DesignAutofillJobResult'
|
|
error:
|
|
$ref: '#/components/schemas/AutofillError'
|
|
required:
|
|
- id
|
|
- status
|
|
type: object
|
|
DesignAutofillJobResult:
|
|
description: Result of the design autofill job. Only present if job status is
|
|
`success`.
|
|
discriminator:
|
|
mapping:
|
|
create_design: '#/components/schemas/CreateDesignAutofillJobResult'
|
|
propertyName: type
|
|
oneOf:
|
|
- $ref: '#/components/schemas/CreateDesignAutofillJobResult'
|
|
type: object
|
|
CreateDesignAutofillJobResult:
|
|
description: Design has been created and saved to user's root folder.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- create_design
|
|
type: string
|
|
design:
|
|
$ref: '#/components/schemas/DesignSummary'
|
|
required:
|
|
- design
|
|
- type
|
|
type: object
|
|
DesignAutofillStatus:
|
|
description: Status of the design autofill job.
|
|
enum:
|
|
- in_progress
|
|
- success
|
|
- failed
|
|
example: success
|
|
type: string
|
|
AutofillErrorCode:
|
|
enum:
|
|
- autofill_error
|
|
- thumbnail_generation_error
|
|
- create_design_error
|
|
type: string
|
|
AutofillError:
|
|
description: "If the autofill job fails, this object provides details about\
|
|
\ the error."
|
|
properties:
|
|
code:
|
|
$ref: '#/components/schemas/AutofillErrorCode'
|
|
message:
|
|
description: A human-readable description of what went wrong.
|
|
type: string
|
|
required:
|
|
- code
|
|
- message
|
|
type: object
|
|
DatasetFilter:
|
|
default: any
|
|
enum:
|
|
- any
|
|
- non_empty
|
|
type: string
|
|
x-enum-descriptions:
|
|
- Brand templates with and without dataset definitions.
|
|
- Brand templates with one or more data fields defined.
|
|
ListBrandTemplatesResponse:
|
|
properties:
|
|
continuation:
|
|
description: |-
|
|
If the success response contains a continuation token, the user has access to more
|
|
brand templates you can list. You can use this token as a query parameter and retrieve
|
|
more templates from the list, for example
|
|
`/v1/brand-templates?continuation={continuation}`.
|
|
To retrieve all the brand templates available to the user, you might need to make
|
|
multiple requests.
|
|
example: RkFGMgXlsVTDbMd:MR3L0QjiaUzycIAjx0yMyuNiV0OildoiOwL0x32G4NjNu4FwtAQNxowUQNMMYN
|
|
type: string
|
|
items:
|
|
description: The list of brand templates.
|
|
items:
|
|
$ref: '#/components/schemas/BrandTemplate'
|
|
type: array
|
|
required:
|
|
- items
|
|
type: object
|
|
GetBrandTemplateResponse:
|
|
description: Successful response from a `getBrandTemplate` request.
|
|
properties:
|
|
brand_template:
|
|
$ref: '#/components/schemas/BrandTemplate'
|
|
required:
|
|
- brand_template
|
|
type: object
|
|
BrandTemplate:
|
|
description: An object representing a brand template with associated metadata.
|
|
properties:
|
|
id:
|
|
description: The brand template ID.
|
|
example: DEMzWSwy3BI
|
|
type: string
|
|
title:
|
|
description: "The brand template title, as shown in the Canva UI."
|
|
example: Advertisement Template
|
|
type: string
|
|
view_url:
|
|
description: A URL Canva users can visit to view the brand template.
|
|
example: https://www.canva.com/design/DAE35hE8FA4/view
|
|
type: string
|
|
create_url:
|
|
description: A URL Canva users can visit to create a new design from the
|
|
template.
|
|
example: https://www.canva.com/design/DAE35hE8FA4/remix
|
|
type: string
|
|
thumbnail:
|
|
$ref: '#/components/schemas/Thumbnail'
|
|
created_at:
|
|
description: |-
|
|
When the brand template was created, as a Unix timestamp
|
|
(in seconds since the Unix Epoch).
|
|
example: 1704110400
|
|
format: int64
|
|
type: integer
|
|
updated_at:
|
|
description: |-
|
|
When the brand template was last updated, as a Unix timestamp
|
|
(in seconds since the Unix Epoch).
|
|
example: 1719835200
|
|
format: int64
|
|
type: integer
|
|
required:
|
|
- create_url
|
|
- created_at
|
|
- id
|
|
- title
|
|
- updated_at
|
|
- view_url
|
|
type: object
|
|
GetBrandTemplateDatasetResponse:
|
|
description: Successful response from a `getBrandTemplateDataset` request.
|
|
properties:
|
|
dataset:
|
|
additionalProperties:
|
|
$ref: '#/components/schemas/DataField'
|
|
description: |-
|
|
The dataset definition for the brand template. The dataset definition contains the data inputs available for use with the
|
|
[Create design autofill job API](https://www.canva.dev/docs/connect/api-reference/autofills/create-design-autofill-job/).
|
|
example:
|
|
cute_pet_image_of_the_day:
|
|
type: image
|
|
cute_pet_witty_pet_says:
|
|
type: text
|
|
cute_pet_sales_chart:
|
|
type: chart
|
|
type: object
|
|
type: object
|
|
DatasetDefinition:
|
|
additionalProperties:
|
|
$ref: '#/components/schemas/DataField'
|
|
description: |-
|
|
The dataset definition for the brand template. The dataset definition contains the data inputs available for use with the
|
|
[Create design autofill job API](https://www.canva.dev/docs/connect/api-reference/autofills/create-design-autofill-job/).
|
|
example:
|
|
cute_pet_image_of_the_day:
|
|
type: image
|
|
cute_pet_witty_pet_says:
|
|
type: text
|
|
cute_pet_sales_chart:
|
|
type: chart
|
|
type: object
|
|
DataField:
|
|
description: A named data field that can be autofilled in the brand template.
|
|
discriminator:
|
|
mapping:
|
|
image: '#/components/schemas/ImageDataField'
|
|
text: '#/components/schemas/TextDataField'
|
|
chart: '#/components/schemas/ChartDataField'
|
|
propertyName: type
|
|
oneOf:
|
|
- $ref: '#/components/schemas/ImageDataField'
|
|
- $ref: '#/components/schemas/TextDataField'
|
|
- $ref: '#/components/schemas/ChartDataField'
|
|
type: object
|
|
ImageDataField:
|
|
description: An image for a brand template. You can autofill the brand template
|
|
with an image by providing its `asset_id`.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- image
|
|
type: string
|
|
required:
|
|
- type
|
|
type: object
|
|
TextDataField:
|
|
description: Some text for a brand template. You can autofill the brand template
|
|
with this value.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- text
|
|
type: string
|
|
required:
|
|
- type
|
|
type: object
|
|
ChartDataField:
|
|
description: |-
|
|
Chart data for a brand template. You can autofill the brand template with tabular data.
|
|
|
|
WARNING: Chart data fields are a [preview feature](https://www.canva.dev/docs/connect/#preview-apis). There might be unannounced breaking changes to this feature which won't produce a new API version.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- chart
|
|
type: string
|
|
required:
|
|
- type
|
|
type: object
|
|
Capability:
|
|
description: |-
|
|
Some APIs are annotated with required capabilities. These endpoints require the user to
|
|
possess the required capabilities in order to be called successfully.
|
|
enum:
|
|
- autofill
|
|
- brand_template
|
|
- resize
|
|
- team_restricted_app
|
|
type: string
|
|
x-enum-descriptions:
|
|
- "Capability required to call autofill APIs Users that are members of a [Canva\
|
|
\ Enterprise](https://www.canva.com/enterprise/) organization have this capability."
|
|
- "Capability required to use brand template APIs. Users that are members of\
|
|
\ a [Canva Enterprise](https://www.canva.com/enterprise/) organization have\
|
|
\ this capability."
|
|
- Capability required to create design resize jobs. Users on a Canva plan with
|
|
premium features (such as Canva Pro) have this capability.
|
|
- "Capability required to create a team-restricted app. Users that are members\
|
|
\ of the [Canva Enterprise](https://www.canva.com/enterprise/) or the [Canva\
|
|
\ for Education](https://www.canva.com/education/) organization have this\
|
|
\ capability."
|
|
CreateCommentRequest:
|
|
properties:
|
|
attached_to:
|
|
$ref: '#/components/schemas/CommentObjectInput'
|
|
message:
|
|
description: |-
|
|
The comment message. This is the comment body shown in the Canva UI.
|
|
|
|
You can also mention users in your message by specifying their User ID and Team ID
|
|
using the format `[user_id:team_id]`. If the `assignee_id` parameter is specified, you
|
|
must mention the assignee in the message.
|
|
example: "Great work [oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP]!"
|
|
maxLength: 2048
|
|
minLength: 1
|
|
type: string
|
|
assignee_id:
|
|
description: |-
|
|
Lets you assign the comment to a Canva user using their User ID. You _must_ mention the
|
|
assigned user in the `message`.
|
|
example: oUnPjZ2k2yuhftbWF7873o
|
|
type: string
|
|
required:
|
|
- attached_to
|
|
- message
|
|
type: object
|
|
CreateReplyRequest:
|
|
properties:
|
|
attached_to:
|
|
$ref: '#/components/schemas/CommentObjectInput'
|
|
message:
|
|
description: |-
|
|
The reply comment message. This is the reply comment body shown in the Canva UI.
|
|
|
|
You can also mention users in your message by specifying their User ID and Team ID
|
|
using the format `[user_id:team_id]`.
|
|
example: Thanks!
|
|
maxLength: 2048
|
|
minLength: 1
|
|
type: string
|
|
required:
|
|
- attached_to
|
|
- message
|
|
type: object
|
|
CreateReplyV2Request:
|
|
properties:
|
|
message_plaintext:
|
|
description: |-
|
|
The comment message of the reply in plaintext. This is the reply comment shown in the Canva UI.
|
|
|
|
You can also mention users in your message by specifying their User ID and Team ID
|
|
using the format `[user_id:team_id]`.
|
|
example: Thanks!
|
|
maxLength: 2048
|
|
minLength: 1
|
|
type: string
|
|
required:
|
|
- message_plaintext
|
|
type: object
|
|
CreateCommentResponse:
|
|
properties:
|
|
comment:
|
|
$ref: '#/components/schemas/ParentComment'
|
|
required:
|
|
- comment
|
|
type: object
|
|
CreateThreadResponse:
|
|
properties:
|
|
thread:
|
|
$ref: '#/components/schemas/Thread'
|
|
required:
|
|
- thread
|
|
type: object
|
|
CreateReplyResponse:
|
|
properties:
|
|
comment:
|
|
$ref: '#/components/schemas/ReplyComment'
|
|
required:
|
|
- comment
|
|
type: object
|
|
CreateThreadRequest:
|
|
properties:
|
|
message_plaintext:
|
|
description: |-
|
|
The comment message in plaintext. This is the comment body shown in the Canva UI.
|
|
|
|
You can also mention users in your message by specifying their User ID and Team ID
|
|
using the format `[user_id:team_id]`. If the `assignee_id` parameter is specified, you
|
|
must mention the assignee in the message.
|
|
example: "Great work [oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP]!"
|
|
maxLength: 2048
|
|
minLength: 1
|
|
type: string
|
|
assignee_id:
|
|
description: |-
|
|
Lets you assign the comment to a Canva user using their User ID. You _must_ mention the
|
|
assigned user in the `message`.
|
|
example: oUnPjZ2k2yuhftbWF7873o
|
|
type: string
|
|
required:
|
|
- message_plaintext
|
|
type: object
|
|
CreateReplyV2Response:
|
|
properties:
|
|
reply:
|
|
$ref: '#/components/schemas/Reply'
|
|
required:
|
|
- reply
|
|
type: object
|
|
GetThreadResponse:
|
|
description: |-
|
|
Successful response from a `getThread` request.
|
|
|
|
The `comment` property is deprecated.
|
|
For details of a comment thread, please use the `thread` property.
|
|
properties:
|
|
comment:
|
|
$ref: '#/components/schemas/Comment'
|
|
thread:
|
|
$ref: '#/components/schemas/Thread'
|
|
type: object
|
|
GetReplyResponse:
|
|
description: Successful response from a `getReply` request.
|
|
properties:
|
|
reply:
|
|
$ref: '#/components/schemas/Reply'
|
|
required:
|
|
- reply
|
|
type: object
|
|
Comment:
|
|
deprecated: true
|
|
description: |-
|
|
The comment object, which contains metadata about the comment.
|
|
Deprecated in favor of the new `thread` object.
|
|
discriminator:
|
|
mapping:
|
|
parent: '#/components/schemas/ParentComment'
|
|
reply: '#/components/schemas/ReplyComment'
|
|
propertyName: type
|
|
oneOf:
|
|
- $ref: '#/components/schemas/ParentComment'
|
|
- $ref: '#/components/schemas/ReplyComment'
|
|
type: object
|
|
ParentComment:
|
|
deprecated: true
|
|
description: |-
|
|
Data about the comment, including the message, author, and
|
|
the object (such as a design) the comment is attached to.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- parent
|
|
type: string
|
|
id:
|
|
description: |-
|
|
The ID of the comment.
|
|
|
|
You can use this ID to create replies to the comment using the [Create reply API](https://www.canva.dev/docs/connect/api-reference/comments/create-reply/).
|
|
example: KeAbiEAjZEj
|
|
type: string
|
|
attached_to:
|
|
$ref: '#/components/schemas/CommentObject'
|
|
message:
|
|
description: |-
|
|
The comment message. This is the comment body shown in the Canva UI.
|
|
User mentions are shown here in the format `[user_id:team_id]`.
|
|
example: "Great work [oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP]!"
|
|
type: string
|
|
author:
|
|
$ref: '#/components/schemas/User'
|
|
created_at:
|
|
description: |-
|
|
When the comment or reply was created, as a Unix timestamp
|
|
(in seconds since the Unix Epoch).
|
|
example: 1692928800
|
|
format: int64
|
|
type: integer
|
|
updated_at:
|
|
description: |-
|
|
When the comment or reply was last updated, as a Unix timestamp
|
|
(in seconds since the Unix Epoch).
|
|
example: 1692928900
|
|
format: int64
|
|
type: integer
|
|
mentions:
|
|
additionalProperties:
|
|
$ref: '#/components/schemas/TeamUser'
|
|
deprecated: true
|
|
description: The Canva users mentioned in the comment.
|
|
example:
|
|
oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP:
|
|
user_id: oUnPjZ2k2yuhftbWF7873o
|
|
team_id: oBpVhLW22VrqtwKgaayRbP
|
|
display_name: John Doe
|
|
type: object
|
|
assignee:
|
|
$ref: '#/components/schemas/User'
|
|
resolver:
|
|
$ref: '#/components/schemas/User'
|
|
required:
|
|
- author
|
|
- id
|
|
- mentions
|
|
- message
|
|
- type
|
|
type: object
|
|
ReplyComment:
|
|
deprecated: true
|
|
description: |-
|
|
Data about the reply comment, including the message, author, and
|
|
the object (such as a design) the comment is attached to.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- reply
|
|
type: string
|
|
id:
|
|
description: The ID of the comment.
|
|
example: KeAZEAjijEb
|
|
type: string
|
|
attached_to:
|
|
$ref: '#/components/schemas/CommentObject'
|
|
message:
|
|
description: |-
|
|
The comment message. This is the comment body shown in the Canva UI.
|
|
User mentions are shown here in the format `[user_id:team_id]`.
|
|
example: Thanks!
|
|
type: string
|
|
author:
|
|
$ref: '#/components/schemas/User'
|
|
created_at:
|
|
description: |-
|
|
When the comment or reply was created, as a Unix timestamp
|
|
(in seconds since the Unix Epoch).
|
|
example: 1692929800
|
|
format: int64
|
|
type: integer
|
|
updated_at:
|
|
description: |-
|
|
When the comment or reply was last updated, as a Unix timestamp
|
|
(in seconds since the Unix Epoch).
|
|
example: 1692929900
|
|
format: int64
|
|
type: integer
|
|
mentions:
|
|
additionalProperties:
|
|
$ref: '#/components/schemas/TeamUser'
|
|
deprecated: true
|
|
description: The Canva users mentioned in the comment.
|
|
example:
|
|
oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP:
|
|
user_id: oUnPjZ2k2yuhftbWF7873o
|
|
team_id: oBpVhLW22VrqtwKgaayRbP
|
|
display_name: John Doe
|
|
type: object
|
|
thread_id:
|
|
description: |-
|
|
The ID of the comment thread this reply is in. This ID is the same as the `id` of the
|
|
parent comment.
|
|
example: KeAbiEAjZEj
|
|
type: string
|
|
required:
|
|
- author
|
|
- id
|
|
- mentions
|
|
- message
|
|
- thread_id
|
|
- type
|
|
type: object
|
|
CommentObject:
|
|
deprecated: true
|
|
description: Identifying information about the object (such as a design) that
|
|
the comment is attached to.
|
|
discriminator:
|
|
mapping:
|
|
design: '#/components/schemas/DesignCommentObject'
|
|
propertyName: type
|
|
example:
|
|
design_id: DAFVztcvd9z
|
|
type: design
|
|
oneOf:
|
|
- $ref: '#/components/schemas/DesignCommentObject'
|
|
type: object
|
|
DesignCommentObject:
|
|
deprecated: true
|
|
description: If the comment is attached to a Canva Design.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- design
|
|
type: string
|
|
design_id:
|
|
description: The ID of the design this comment is attached to.
|
|
example: DAFVztcvd9z
|
|
type: string
|
|
required:
|
|
- design_id
|
|
- type
|
|
type: object
|
|
CommentObjectInput:
|
|
description: |-
|
|
An object containing identifying information for the design or other object you want to
|
|
attach the comment to.
|
|
discriminator:
|
|
mapping:
|
|
design: '#/components/schemas/DesignCommentObjectInput'
|
|
propertyName: type
|
|
example:
|
|
design_id: DAFVztcvd9z
|
|
type: design
|
|
oneOf:
|
|
- $ref: '#/components/schemas/DesignCommentObjectInput'
|
|
type: object
|
|
DesignCommentObjectInput:
|
|
description: If the comment is attached to a Canva Design.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- design
|
|
type: string
|
|
design_id:
|
|
description: The ID of the design you want to attach this comment to.
|
|
example: DAFVztcvd9z
|
|
type: string
|
|
required:
|
|
- design_id
|
|
- type
|
|
type: object
|
|
CommentEventDeprecated:
|
|
deprecated: true
|
|
description: |-
|
|
Basic details about the comment.
|
|
|
|
The `comment` property is deprecated.
|
|
For details of the comment event, use the `comment_event` property instead.
|
|
properties:
|
|
type:
|
|
$ref: '#/components/schemas/CommentEventTypeEnum'
|
|
data:
|
|
$ref: '#/components/schemas/Comment'
|
|
required:
|
|
- data
|
|
- type
|
|
type: object
|
|
Mentions:
|
|
additionalProperties:
|
|
$ref: '#/components/schemas/TeamUser'
|
|
deprecated: true
|
|
description: The Canva users mentioned in the comment.
|
|
example:
|
|
oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP:
|
|
user_id: oUnPjZ2k2yuhftbWF7873o
|
|
team_id: oBpVhLW22VrqtwKgaayRbP
|
|
display_name: John Doe
|
|
type: object
|
|
CommentEventTypeEnum:
|
|
deprecated: true
|
|
description: The type of comment event.
|
|
enum:
|
|
- comment
|
|
- reply
|
|
- mention
|
|
- assign
|
|
- resolve
|
|
type: string
|
|
CommentEvent:
|
|
description: "The type of comment event, including additional type-specific\
|
|
\ properties."
|
|
discriminator:
|
|
mapping:
|
|
new: '#/components/schemas/NewCommentEvent'
|
|
assigned: '#/components/schemas/AssignedCommentEvent'
|
|
resolved: '#/components/schemas/ResolvedCommentEvent'
|
|
reply: '#/components/schemas/ReplyCommentEvent'
|
|
mention: '#/components/schemas/MentionCommentEvent'
|
|
propertyName: type
|
|
oneOf:
|
|
- $ref: '#/components/schemas/NewCommentEvent'
|
|
- $ref: '#/components/schemas/AssignedCommentEvent'
|
|
- $ref: '#/components/schemas/ResolvedCommentEvent'
|
|
- $ref: '#/components/schemas/ReplyCommentEvent'
|
|
- $ref: '#/components/schemas/MentionCommentEvent'
|
|
type: object
|
|
NewCommentEvent:
|
|
description: Event type for a new comment thread.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- new
|
|
type: string
|
|
comment_url:
|
|
description: "A URL to the design, focused on the comment thread."
|
|
example: https://www.canva.com/design/3WCduQdjayTcPVM/z128cqanFu7E3/edit?ui=OdllGgZ4Snnq3MD8uI10bfA
|
|
type: string
|
|
comment:
|
|
$ref: '#/components/schemas/Thread'
|
|
required:
|
|
- comment
|
|
- comment_url
|
|
- type
|
|
type: object
|
|
AssignedCommentEvent:
|
|
description: Event type for a comment thread that has been assigned.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- assigned
|
|
type: string
|
|
comment_url:
|
|
description: "A URL to the design, focused on the comment thread."
|
|
example: https://www.canva.com/design/3WCduQdjayTcPVM/z128cqanFu7E3/edit?ui=OdllGgZ4Snnq3MD8uI10bfA
|
|
type: string
|
|
comment:
|
|
$ref: '#/components/schemas/Thread'
|
|
required:
|
|
- comment
|
|
- comment_url
|
|
- type
|
|
type: object
|
|
ResolvedCommentEvent:
|
|
description: Event type for a comment thread that has been resolved.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- resolved
|
|
type: string
|
|
comment_url:
|
|
description: "A URL to the design, focused on the comment thread."
|
|
example: https://www.canva.com/design/3WCduQdjayTcPVM/z128cqanFu7E3/edit?ui=OdllGgZ4Snnq3MD8uI10bfA
|
|
type: string
|
|
comment:
|
|
$ref: '#/components/schemas/Thread'
|
|
required:
|
|
- comment
|
|
- comment_url
|
|
- type
|
|
type: object
|
|
ReplyCommentEvent:
|
|
description: Event type for a reply to a comment thread.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- reply
|
|
type: string
|
|
reply_url:
|
|
description: "A URL to the design, focused on the comment reply."
|
|
example: https://www.canva.com/design/3WCduQdjayTcPVM/z128cqanFu7E3/edit?ui=OdllGgZ4Snnq3MD8uI10bfA
|
|
type: string
|
|
reply:
|
|
$ref: '#/components/schemas/Reply'
|
|
required:
|
|
- reply
|
|
- reply_url
|
|
- type
|
|
type: object
|
|
MentionCommentEvent:
|
|
description: Event type for a mention in a comment thread or reply.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- mention
|
|
type: string
|
|
content:
|
|
$ref: '#/components/schemas/MentionEventContent'
|
|
required:
|
|
- content
|
|
- type
|
|
type: object
|
|
MentionEventContent:
|
|
description: "The type of mention event content, along with additional type-specific\
|
|
\ properties."
|
|
discriminator:
|
|
mapping:
|
|
thread: '#/components/schemas/ThreadMentionEventContent'
|
|
reply: '#/components/schemas/ReplyMentionEventContent'
|
|
propertyName: type
|
|
oneOf:
|
|
- $ref: '#/components/schemas/ThreadMentionEventContent'
|
|
- $ref: '#/components/schemas/ReplyMentionEventContent'
|
|
type: object
|
|
ThreadMentionEventContent:
|
|
description: Content for a mention in a comment thread.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- thread
|
|
type: string
|
|
comment_url:
|
|
description: "A URL to the design, focused on the comment thread."
|
|
example: https://www.canva.com/design/3WCduQdjayTcPVM/z128cqanFu7E3/edit?ui=OdllGgZ4Snnq3MD8uI10bfA
|
|
type: string
|
|
comment:
|
|
$ref: '#/components/schemas/Thread'
|
|
required:
|
|
- comment
|
|
- comment_url
|
|
- type
|
|
type: object
|
|
ReplyMentionEventContent:
|
|
description: Content for a mention in a comment reply.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- reply
|
|
type: string
|
|
reply_url:
|
|
description: "A URL to the design, focused on the comment reply."
|
|
example: https://www.canva.com/design/3WCduQdjayTcPVM/z128cqanFu7E3/edit?ui=OdllGgZ4Snnq3MD8uI10bfA
|
|
type: string
|
|
reply:
|
|
$ref: '#/components/schemas/Reply'
|
|
required:
|
|
- reply
|
|
- reply_url
|
|
- type
|
|
type: object
|
|
ListRepliesResponse:
|
|
description: Successful response from a `listReplies` request.
|
|
properties:
|
|
continuation:
|
|
description: |-
|
|
If the success response contains a continuation token, the list contains more items
|
|
you can list. You can use this token as a query parameter and retrieve more items
|
|
from the list, for example `?continuation={continuation}`.
|
|
|
|
To retrieve all items, you might need to make multiple requests.
|
|
example: RkFGMgXlsVTDbMd:MR3L0QjiaUzycIAjx0yMyuNiV0OildoiOwL0x32G4NjNu4FwtAQNxowUQNMMYN
|
|
type: string
|
|
items:
|
|
items:
|
|
$ref: '#/components/schemas/Reply'
|
|
type: array
|
|
required:
|
|
- items
|
|
type: object
|
|
Thread:
|
|
description: |-
|
|
A discussion thread on a design.
|
|
|
|
The `type` of the thread can be found in the `thread_type` object, along with additional type-specific properties.
|
|
The `author` of the thread might be missing if that user account no longer exists.
|
|
properties:
|
|
id:
|
|
description: |-
|
|
The ID of the thread.
|
|
|
|
You can use this ID to create replies to the thread using the [Create reply API](https://www.canva.dev/docs/connect/api-reference/comments/create-reply/).
|
|
example: KeAbiEAjZEj
|
|
type: string
|
|
design_id:
|
|
description: The ID of the design that the discussion thread is on.
|
|
example: DAFVztcvd9z
|
|
type: string
|
|
thread_type:
|
|
$ref: '#/components/schemas/ThreadType'
|
|
author:
|
|
$ref: '#/components/schemas/User'
|
|
created_at:
|
|
description: |-
|
|
When the thread was created, as a Unix timestamp
|
|
(in seconds since the Unix Epoch).
|
|
example: 1692928800
|
|
format: int64
|
|
type: integer
|
|
updated_at:
|
|
description: |-
|
|
When the thread was last updated, as a Unix timestamp
|
|
(in seconds since the Unix Epoch).
|
|
example: 1692928900
|
|
format: int64
|
|
type: integer
|
|
required:
|
|
- created_at
|
|
- design_id
|
|
- id
|
|
- thread_type
|
|
- updated_at
|
|
type: object
|
|
ThreadType:
|
|
description: "The type of the discussion thread, along with additional type-specific\
|
|
\ properties."
|
|
discriminator:
|
|
mapping:
|
|
comment: '#/components/schemas/CommentThreadType'
|
|
suggestion: '#/components/schemas/SuggestionThreadType'
|
|
propertyName: type
|
|
oneOf:
|
|
- $ref: '#/components/schemas/CommentThreadType'
|
|
- $ref: '#/components/schemas/SuggestionThreadType'
|
|
type: object
|
|
CommentThreadType:
|
|
description: A comment thread.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- comment
|
|
type: string
|
|
content:
|
|
$ref: '#/components/schemas/CommentContent'
|
|
mentions:
|
|
additionalProperties:
|
|
$ref: '#/components/schemas/UserMention'
|
|
description: The Canva users mentioned in the comment thread or reply.
|
|
example:
|
|
oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP:
|
|
tag: oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP
|
|
user:
|
|
user_id: oUnPjZ2k2yuhftbWF7873o
|
|
team_id: oBpVhLW22VrqtwKgaayRbP
|
|
display_name: John Doe
|
|
type: object
|
|
assignee:
|
|
$ref: '#/components/schemas/User'
|
|
resolver:
|
|
$ref: '#/components/schemas/User'
|
|
required:
|
|
- content
|
|
- mentions
|
|
- type
|
|
type: object
|
|
SuggestionThreadType:
|
|
description: A suggestion thread.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- suggestion
|
|
type: string
|
|
suggested_edits:
|
|
items:
|
|
$ref: '#/components/schemas/SuggestedEdit'
|
|
minItems: 1
|
|
type: array
|
|
status:
|
|
$ref: '#/components/schemas/SuggestionStatus'
|
|
required:
|
|
- status
|
|
- suggested_edits
|
|
- type
|
|
type: object
|
|
SuggestedEdit:
|
|
description: "The type of the suggested edit, along with additional type-specific\
|
|
\ properties."
|
|
discriminator:
|
|
mapping:
|
|
add: '#/components/schemas/AddSuggestedEdit'
|
|
delete: '#/components/schemas/DeleteSuggestedEdit'
|
|
format: '#/components/schemas/FormatSuggestedEdit'
|
|
propertyName: type
|
|
oneOf:
|
|
- $ref: '#/components/schemas/AddSuggestedEdit'
|
|
- $ref: '#/components/schemas/DeleteSuggestedEdit'
|
|
- $ref: '#/components/schemas/FormatSuggestedEdit'
|
|
type: object
|
|
AddSuggestedEdit:
|
|
description: A suggestion to add some text.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- add
|
|
type: string
|
|
text:
|
|
example: fantastic
|
|
type: string
|
|
required:
|
|
- text
|
|
- type
|
|
type: object
|
|
DeleteSuggestedEdit:
|
|
description: A suggestion to delete some text.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- delete
|
|
type: string
|
|
text:
|
|
example: just
|
|
type: string
|
|
required:
|
|
- text
|
|
- type
|
|
type: object
|
|
FormatSuggestedEdit:
|
|
description: A suggestion to format some text.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- format
|
|
type: string
|
|
format:
|
|
$ref: '#/components/schemas/SuggestionFormat'
|
|
required:
|
|
- format
|
|
- type
|
|
type: object
|
|
SuggestionStatus:
|
|
description: The current status of the suggestion.
|
|
enum:
|
|
- open
|
|
- accepted
|
|
- rejected
|
|
type: string
|
|
x-enum-descriptions:
|
|
- "A suggestion was made, but it hasn't been accepted or rejected yet."
|
|
- A suggestion was accepted and applied to the design.
|
|
- A suggestion was rejected and not applied to the design.
|
|
SuggestionFormat:
|
|
description: The suggested format change.
|
|
enum:
|
|
- font_family
|
|
- font_size
|
|
- font_weight
|
|
- font_style
|
|
- color
|
|
- background_color
|
|
- decoration
|
|
- strikethrough
|
|
- link
|
|
- letter_spacing
|
|
- line_height
|
|
- direction
|
|
- text_align
|
|
- list_marker
|
|
- list_level
|
|
- margin_inline_start
|
|
- text_indent
|
|
- font_size_modifier
|
|
- vertical_align
|
|
example: font_style
|
|
type: string
|
|
Reply:
|
|
description: |-
|
|
A reply to a thread.
|
|
|
|
The `author` of the reply might be missing if that user account no longer exists.
|
|
properties:
|
|
id:
|
|
description: The ID of the reply.
|
|
example: KeAZEAjijEb
|
|
type: string
|
|
design_id:
|
|
description: The ID of the design that the thread for this reply is attached
|
|
to.
|
|
example: DAFVztcvd9z
|
|
type: string
|
|
thread_id:
|
|
description: The ID of the thread this reply is in.
|
|
example: KeAbiEAjZEj
|
|
type: string
|
|
author:
|
|
$ref: '#/components/schemas/User'
|
|
content:
|
|
$ref: '#/components/schemas/CommentContent'
|
|
mentions:
|
|
additionalProperties:
|
|
$ref: '#/components/schemas/UserMention'
|
|
description: The Canva users mentioned in the comment thread or reply.
|
|
example:
|
|
oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP:
|
|
tag: oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP
|
|
user:
|
|
user_id: oUnPjZ2k2yuhftbWF7873o
|
|
team_id: oBpVhLW22VrqtwKgaayRbP
|
|
display_name: John Doe
|
|
type: object
|
|
created_at:
|
|
description: |-
|
|
When the reply was created, as a Unix timestamp
|
|
(in seconds since the Unix Epoch).
|
|
example: 1692929800
|
|
format: int64
|
|
type: integer
|
|
updated_at:
|
|
description: |-
|
|
When the reply was last updated, as a Unix timestamp
|
|
(in seconds since the Unix Epoch).
|
|
example: 1692929900
|
|
format: int64
|
|
type: integer
|
|
required:
|
|
- content
|
|
- created_at
|
|
- design_id
|
|
- id
|
|
- mentions
|
|
- thread_id
|
|
- updated_at
|
|
type: object
|
|
CommentContent:
|
|
description: The content of a comment thread or reply.
|
|
properties:
|
|
plaintext:
|
|
description: |-
|
|
The content in plaintext.
|
|
Any user mention tags are shown in the format `[user_id:team_id]`.
|
|
example: "Great work [oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP]!"
|
|
type: string
|
|
markdown:
|
|
description: |-
|
|
The content in markdown.
|
|
Any user mention tags are shown in the format `[user_id:team_id]`
|
|
example: "*_Great work_* [oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP]!"
|
|
type: string
|
|
required:
|
|
- plaintext
|
|
type: object
|
|
SuggestionEventType:
|
|
description: "The type of suggestion event, along with additional type-specific\
|
|
\ properties."
|
|
discriminator:
|
|
mapping:
|
|
new: '#/components/schemas/NewSuggestionEventType'
|
|
accepted: '#/components/schemas/AcceptedSuggestionEventType'
|
|
rejected: '#/components/schemas/RejectedSuggestionEventType'
|
|
reply: '#/components/schemas/ReplySuggestionEventType'
|
|
mention: '#/components/schemas/MentionSuggestionEventType'
|
|
propertyName: type
|
|
oneOf:
|
|
- $ref: '#/components/schemas/NewSuggestionEventType'
|
|
- $ref: '#/components/schemas/AcceptedSuggestionEventType'
|
|
- $ref: '#/components/schemas/RejectedSuggestionEventType'
|
|
- $ref: '#/components/schemas/ReplySuggestionEventType'
|
|
- $ref: '#/components/schemas/MentionSuggestionEventType'
|
|
type: object
|
|
NewSuggestionEventType:
|
|
description: Event type for a new suggestion.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- new
|
|
type: string
|
|
suggestion_url:
|
|
description: "A URL to the design, focused on the suggestion."
|
|
example: https://www.canva.com/design/3WCduQdjayTcPVM/z128cqanFu7E3/edit?ui=OdllGgZ4Snnq3MD8uI10bfA
|
|
type: string
|
|
suggestion:
|
|
$ref: '#/components/schemas/Thread'
|
|
required:
|
|
- suggestion
|
|
- suggestion_url
|
|
- type
|
|
type: object
|
|
AcceptedSuggestionEventType:
|
|
description: Event type for a suggestion that has been accepted.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- accepted
|
|
type: string
|
|
suggestion_url:
|
|
description: "A URL to the design, focused on the suggestion."
|
|
example: https://www.canva.com/design/3WCduQdjayTcPVM/z128cqanFu7E3/edit?ui=OdllGgZ4Snnq3MD8uI10bfA
|
|
type: string
|
|
suggestion:
|
|
$ref: '#/components/schemas/Thread'
|
|
required:
|
|
- suggestion
|
|
- suggestion_url
|
|
- type
|
|
type: object
|
|
RejectedSuggestionEventType:
|
|
description: Event type for a suggestion that has been rejected.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- rejected
|
|
type: string
|
|
suggestion_url:
|
|
description: "A URL to the design, focused on the suggestion."
|
|
example: https://www.canva.com/design/3WCduQdjayTcPVM/z128cqanFu7E3/edit?ui=OdllGgZ4Snnq3MD8uI10bfA
|
|
type: string
|
|
suggestion:
|
|
$ref: '#/components/schemas/Thread'
|
|
required:
|
|
- suggestion
|
|
- suggestion_url
|
|
- type
|
|
type: object
|
|
ReplySuggestionEventType:
|
|
description: Event type for a reply to a suggestion.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- reply
|
|
type: string
|
|
reply_url:
|
|
description: "A URL to the design, focused on the suggestion reply."
|
|
example: https://www.canva.com/design/3WCduQdjayTcPVM/z128cqanFu7E3/edit?ui=OdllGgZ4Snnq3MD8uI10bfA
|
|
type: string
|
|
reply:
|
|
$ref: '#/components/schemas/Reply'
|
|
required:
|
|
- reply
|
|
- reply_url
|
|
- type
|
|
type: object
|
|
MentionSuggestionEventType:
|
|
description: Event type for a mention in a reply to a suggestion.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- mention
|
|
type: string
|
|
reply_url:
|
|
description: "A URL to the design, focused on the suggestion reply."
|
|
example: https://www.canva.com/design/3WCduQdjayTcPVM/z128cqanFu7E3/edit?ui=OdllGgZ4Snnq3MD8uI10bfA
|
|
type: string
|
|
reply:
|
|
$ref: '#/components/schemas/Reply'
|
|
required:
|
|
- reply
|
|
- reply_url
|
|
- type
|
|
type: object
|
|
UserMentions:
|
|
additionalProperties:
|
|
$ref: '#/components/schemas/UserMention'
|
|
description: The Canva users mentioned in the comment thread or reply.
|
|
example:
|
|
oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP:
|
|
tag: oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP
|
|
user:
|
|
user_id: oUnPjZ2k2yuhftbWF7873o
|
|
team_id: oBpVhLW22VrqtwKgaayRbP
|
|
display_name: John Doe
|
|
type: object
|
|
UserMention:
|
|
description: Information about the user mentioned in a comment thread or reply.
|
|
Each user mention is keyed using the user's user ID and team ID separated
|
|
by a colon (`user_id:team_id`).
|
|
properties:
|
|
tag:
|
|
description: The mention tag for the user mentioned in the comment thread
|
|
or reply content. This has the format of the user's user ID and team ID
|
|
separated by a colon (`user_id:team_id`).
|
|
example: oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP
|
|
type: string
|
|
user:
|
|
$ref: '#/components/schemas/TeamUser'
|
|
required:
|
|
- tag
|
|
- user
|
|
type: object
|
|
GetSigningPublicKeysResponse:
|
|
properties:
|
|
keys:
|
|
description: |-
|
|
A Json Web Key Set (JWKS) with public keys used for signing webhooks. You can use this JWKS
|
|
to verify that a webhook was sent from Canva.
|
|
example:
|
|
- kid: a418dc7d-ecc5-5c4b-85ce-e1104a8addbe
|
|
kty: OKP
|
|
crv: Ed25519
|
|
x: aIQtqd0nDfB-ug0DrzZbwTum-1ITdXvKxGFak_1VB2j
|
|
- kid: c8de5bec1-1b88-4ddaae04acc-ce415-5d7
|
|
kty: OKP
|
|
crv: Ed25519
|
|
x: m2d1FT-gfBXxIzKwdQVTra0D-aBq_ubZ1jI0GuvkDtn
|
|
items:
|
|
$ref: '#/components/schemas/EdDsaJwk'
|
|
type: array
|
|
required:
|
|
- keys
|
|
type: object
|
|
EdDsaJwk:
|
|
description: |-
|
|
A JSON Web Key Set (JWKS) using the Edwards-curve Digital Signature Algorithm (EdDSA), as
|
|
described in [RFC-8037](https://www.rfc-editor.org/rfc/rfc8037.html#appendix-A).
|
|
properties:
|
|
kid:
|
|
description: |-
|
|
The `kid` (key ID) is a unique identifier for a public key. When the keys used
|
|
to sign webhooks are rotated, you can use this ID to select the correct key
|
|
within a JWK Set during the key rollover. The `kid` value is case-sensitive.
|
|
type: string
|
|
kty:
|
|
description: |-
|
|
The `kty` (key type) identifies the cryptographic algorithm family used with
|
|
the key, such as "RSA" or "EC". Only Octet Key Pairs
|
|
(`OKPs`) are supported.
|
|
The `kty` value is case-sensitive. For more information on the `kty` property
|
|
and OKPs, see [RFC-8037 — "kty" (Key Type)
|
|
Parameter](https://www.rfc-editor.org/rfc/rfc8037.html#section-2).
|
|
type: string
|
|
crv:
|
|
description: |-
|
|
The `crv` (curve) property identifies the curve used for elliptical curve
|
|
encryptions. Only "Ed25519" is supported. For more information on the `crv`
|
|
property, see [RFC-8037 — Key Type
|
|
"OKP"](https://www.rfc-editor.org/rfc/rfc8037.html#section-2).
|
|
type: string
|
|
x:
|
|
description: |-
|
|
The `x` property is the public key of an elliptical curve encryption. The key
|
|
is Base64urlUInt-encoded. For more information on the `x` property, see
|
|
[RFC-8037 — "x" (X Coordinate)
|
|
Parameter](https://www.rfc-editor.org/rfc/rfc8037#section-2).
|
|
type: string
|
|
required:
|
|
- crv
|
|
- kid
|
|
- kty
|
|
- x
|
|
type: object
|
|
DataTable:
|
|
description: |-
|
|
Tabular data, structured in rows of cells.
|
|
|
|
- The first row usually contains column headers.
|
|
- Each cell must have a data type configured.
|
|
- All rows must have the same number of cells.
|
|
- Maximum of 100 rows and 20 columns.
|
|
|
|
WARNING: Chart data fields are a [preview feature](https://www.canva.dev/docs/connect/#preview-apis). There might be unannounced breaking changes to this feature which won't produce a new API version.
|
|
example:
|
|
rows:
|
|
- cells:
|
|
- type: string
|
|
value: Geographic Region
|
|
- type: string
|
|
value: Sales (millions AUD)
|
|
- type: string
|
|
value: Target (millions AUD)
|
|
- type: string
|
|
value: Target met?
|
|
- type: string
|
|
value: Date met
|
|
- cells:
|
|
- type: string
|
|
value: Asia Pacific
|
|
- type: number
|
|
value: 10.2
|
|
- type: number
|
|
value: 10
|
|
- type: boolean
|
|
value: true
|
|
- type: date
|
|
value: 1721944387
|
|
- cells:
|
|
- type: string
|
|
value: EMEA
|
|
- type: number
|
|
value: 13.8
|
|
- type: number
|
|
value: 14
|
|
- type: boolean
|
|
value: false
|
|
- type: date
|
|
properties:
|
|
rows:
|
|
description: |-
|
|
Rows of data.
|
|
|
|
The first row usually contains column headers.
|
|
items:
|
|
$ref: '#/components/schemas/DataTableRow'
|
|
maxItems: 100
|
|
type: array
|
|
required:
|
|
- rows
|
|
type: object
|
|
DataTableRow:
|
|
description: A single row of tabular data.
|
|
properties:
|
|
cells:
|
|
description: |-
|
|
Cells of data in row.
|
|
|
|
All rows must have the same number of cells.
|
|
items:
|
|
$ref: '#/components/schemas/DataTableCell'
|
|
maxItems: 20
|
|
type: array
|
|
required:
|
|
- cells
|
|
type: object
|
|
DataTableCell:
|
|
description: A single tabular data cell.
|
|
discriminator:
|
|
mapping:
|
|
string: '#/components/schemas/StringDataTableCell'
|
|
number: '#/components/schemas/NumberDataTableCell'
|
|
boolean: '#/components/schemas/BooleanDataTableCell'
|
|
date: '#/components/schemas/DateDataTableCell'
|
|
propertyName: type
|
|
oneOf:
|
|
- $ref: '#/components/schemas/StringDataTableCell'
|
|
- $ref: '#/components/schemas/NumberDataTableCell'
|
|
- $ref: '#/components/schemas/BooleanDataTableCell'
|
|
- $ref: '#/components/schemas/DateDataTableCell'
|
|
type: object
|
|
StringDataTableCell:
|
|
description: A string tabular data cell.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- string
|
|
type: string
|
|
value:
|
|
type: string
|
|
required:
|
|
- type
|
|
type: object
|
|
NumberDataTableCell:
|
|
description: A number tabular data cell.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- number
|
|
type: string
|
|
value:
|
|
format: double
|
|
type: number
|
|
required:
|
|
- type
|
|
type: object
|
|
BooleanDataTableCell:
|
|
description: A boolean tabular data cell.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- boolean
|
|
type: string
|
|
value:
|
|
type: boolean
|
|
required:
|
|
- type
|
|
type: object
|
|
DateDataTableCell:
|
|
description: |-
|
|
A date tabular data cell.
|
|
|
|
Specified as a Unix timestamp (in seconds since the Unix Epoch).
|
|
properties:
|
|
type:
|
|
enum:
|
|
- date
|
|
type: string
|
|
value:
|
|
format: int64
|
|
type: integer
|
|
required:
|
|
- type
|
|
type: object
|
|
SortByType:
|
|
default: relevance
|
|
enum:
|
|
- relevance
|
|
- modified_descending
|
|
- modified_ascending
|
|
- title_descending
|
|
- title_ascending
|
|
type: string
|
|
x-enum-descriptions:
|
|
- Sort results using a relevance algorithm.
|
|
- Sort results by the date last modified in descending order.
|
|
- Sort results by the date last modified in ascending order.
|
|
- Sort results by title in descending order.
|
|
- Sort results by title in ascending order
|
|
OwnershipType:
|
|
default: any
|
|
enum:
|
|
- any
|
|
- owned
|
|
- shared
|
|
type: string
|
|
x-enum-descriptions:
|
|
- Owned by and shared with the user.
|
|
- Owned by the user.
|
|
- Shared with the user.
|
|
GetListDesignResponse:
|
|
properties:
|
|
continuation:
|
|
description: |-
|
|
A continuation token.
|
|
If the success response contains a continuation token, the list contains more designs
|
|
you can list. You can use this token as a query parameter and retrieve more
|
|
designs from the list, for example
|
|
`/v1/designs?continuation={continuation}`.
|
|
|
|
To retrieve all of a user's designs, you might need to make multiple requests.
|
|
example: RkFGMgXlsVTDbMd:MR3L0QjiaUzycIAjx0yMyuNiV0OildoiOwL0x32G4NjNu4FwtAQNxowUQNMMYN
|
|
type: string
|
|
items:
|
|
description: The list of designs.
|
|
items:
|
|
$ref: '#/components/schemas/Design'
|
|
type: array
|
|
required:
|
|
- items
|
|
type: object
|
|
CreateDesignRequest:
|
|
description: |-
|
|
Body parameters for creating a new design.
|
|
At least one of `design_type` or `asset_id` must be defined
|
|
to create a new design.
|
|
properties:
|
|
design_type:
|
|
$ref: '#/components/schemas/DesignTypeInput'
|
|
asset_id:
|
|
description: "The ID of an asset to insert into the created design. Currently,\
|
|
\ this only supports image assets."
|
|
example: Msd59349ff
|
|
type: string
|
|
title:
|
|
description: The name of the design.
|
|
example: My Holiday Presentation
|
|
maxLength: 255
|
|
minLength: 1
|
|
type: string
|
|
type: object
|
|
CreateDesignResponse:
|
|
description: Details about the new design.
|
|
properties:
|
|
design:
|
|
$ref: '#/components/schemas/Design'
|
|
required:
|
|
- design
|
|
type: object
|
|
GetDesignResponse:
|
|
description: Successful response from a `getDesign` request.
|
|
properties:
|
|
design:
|
|
$ref: '#/components/schemas/Design'
|
|
required:
|
|
- design
|
|
type: object
|
|
GetDesignPagesResponse:
|
|
description: Successful response from a `getDesignPages` request.
|
|
properties:
|
|
items:
|
|
description: The list of pages.
|
|
items:
|
|
$ref: '#/components/schemas/DesignPage'
|
|
type: array
|
|
required:
|
|
- items
|
|
type: object
|
|
GetDesignExportFormatsResponse:
|
|
description: Successful response from a `getDesignExportFormats` request.
|
|
properties:
|
|
formats:
|
|
$ref: '#/components/schemas/ExportFormatOptions'
|
|
required:
|
|
- formats
|
|
type: object
|
|
Design:
|
|
description: "The design object, which contains metadata about the design."
|
|
properties:
|
|
id:
|
|
description: The design ID.
|
|
example: DAFVztcvd9z
|
|
type: string
|
|
title:
|
|
description: The design title.
|
|
example: My summer holiday
|
|
type: string
|
|
owner:
|
|
$ref: '#/components/schemas/TeamUserSummary'
|
|
thumbnail:
|
|
$ref: '#/components/schemas/Thumbnail'
|
|
urls:
|
|
$ref: '#/components/schemas/DesignLinks'
|
|
created_at:
|
|
description: |-
|
|
When the design was created in Canva, as a Unix timestamp (in seconds since the Unix
|
|
Epoch).
|
|
example: 1377396000
|
|
format: int64
|
|
type: integer
|
|
updated_at:
|
|
description: |-
|
|
When the design was last updated in Canva, as a Unix timestamp (in seconds since the
|
|
Unix Epoch).
|
|
example: 1692928800
|
|
format: int64
|
|
type: integer
|
|
page_count:
|
|
description: "The total number of pages in the design. Some design types\
|
|
\ don't have pages (for example, Canva docs)."
|
|
example: 5
|
|
format: int32
|
|
minimum: 0
|
|
type: integer
|
|
required:
|
|
- created_at
|
|
- id
|
|
- owner
|
|
- updated_at
|
|
- urls
|
|
type: object
|
|
PageIndex:
|
|
description: The index of the page in the design. The first page in a design
|
|
has the index value `1`.
|
|
maximum: 500
|
|
minimum: 1
|
|
type: integer
|
|
DesignLinks:
|
|
description: A temporary set of URLs for viewing or editing the design.
|
|
properties:
|
|
edit_url:
|
|
description: |-
|
|
A temporary editing URL for the design. This URL is only accessible to the user that made the API request, and is designed to support [return navigation](https://www.canva.dev/docs/connect/return-navigation-guide/) workflows.
|
|
|
|
NOTE: This is not a permanent URL, it is only valid for 30 days.
|
|
example: https://www.canva.com/api/design/eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiZXhwaXJ5IjoxNzQyMDk5NDAzMDc5fQ..GKLx2hrJa3wSSDKQ.hk3HA59qJyxehR-ejzt2DThBW0cbRdMBz7Fb5uCpwD-4o485pCf4kcXt_ypUYX0qMHVeZ131YvfwGPIhbk-C245D8c12IIJSDbZUZTS7WiCOJZQ.sNz3mPSQxsETBvl_-upMYA/edit
|
|
type: string
|
|
view_url:
|
|
description: |
|
|
A temporary viewing URL for the design. This URL is only accessible to the user that made the API request, and is designed to support [return navigation](https://www.canva.dev/docs/connect/return-navigation-guide/) workflows.
|
|
|
|
NOTE: This is not a permanent URL, it is only valid for 30 days.
|
|
example: https://www.canva.com/api/design/eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiZXhwaXJ5IjoxNzQyMDk5NDAzMDc5fQ..GKLx2hrJa3wSSDKQ.hk3HA59qJyxehR-ejzt2DThBW0cbRdMBz7Fb5uCpwD-4o485pCf4kcXt_ypUYX0qMHVeZ131YvfwGPIhbk-C245D8c12IIJSDbZUZTS7WiCOJZQ.sNz3mPSQxsETBvl_-upMYA/view
|
|
type: string
|
|
required:
|
|
- edit_url
|
|
- view_url
|
|
type: object
|
|
DesignSummary:
|
|
description: "Basic details about the design, such as the design's ID, title,\
|
|
\ and URL."
|
|
properties:
|
|
id:
|
|
description: The design ID.
|
|
example: DAFVztcvd9z
|
|
type: string
|
|
title:
|
|
description: The design title.
|
|
example: My summer holiday
|
|
type: string
|
|
url:
|
|
description: URL of the design.
|
|
example: https://www.canva.com/design/DAFVztcvd9z/edit
|
|
type: string
|
|
thumbnail:
|
|
$ref: '#/components/schemas/Thumbnail'
|
|
urls:
|
|
$ref: '#/components/schemas/DesignLinks'
|
|
created_at:
|
|
description: |-
|
|
When the design was created in Canva, as a Unix timestamp (in seconds since the Unix
|
|
Epoch).
|
|
example: 1377396000
|
|
format: int64
|
|
type: integer
|
|
updated_at:
|
|
description: |-
|
|
When the design was last updated in Canva, as a Unix timestamp (in seconds since the
|
|
Unix Epoch).
|
|
example: 1692928800
|
|
format: int64
|
|
type: integer
|
|
page_count:
|
|
description: "The total number of pages in the design. Some design types\
|
|
\ don't have pages (for example, Canva docs)."
|
|
example: 3
|
|
format: int32
|
|
minimum: 0
|
|
type: integer
|
|
required:
|
|
- created_at
|
|
- id
|
|
- updated_at
|
|
- urls
|
|
type: object
|
|
DesignPage:
|
|
description: "Basic details about a page in a design, such as the page's index\
|
|
\ and thumbnail."
|
|
properties:
|
|
index:
|
|
description: The index of the page in the design. The first page in a design
|
|
has the index value `1`.
|
|
maximum: 500
|
|
minimum: 1
|
|
type: integer
|
|
thumbnail:
|
|
$ref: '#/components/schemas/Thumbnail'
|
|
required:
|
|
- index
|
|
type: object
|
|
DesignImportMetadata:
|
|
description: Metadata about the design that you include as a header parameter
|
|
when importing a design.
|
|
properties:
|
|
title_base64:
|
|
description: |-
|
|
The design's title, encoded in Base64.
|
|
|
|
The maximum length of a design title in Canva (unencoded) is 50 characters.
|
|
|
|
Base64 encoding allows titles containing emojis and other special
|
|
characters to be sent using HTTP headers.
|
|
For example, "My Awesome Design 😍" Base64 encoded
|
|
is `TXkgQXdlc29tZSBEZXNpZ24g8J+YjQ==`.
|
|
example: TXkgQXdlc29tZSBEZXNpZ24g8J+YjQ==
|
|
minLength: 1
|
|
type: string
|
|
mime_type:
|
|
description: "The MIME type of the file being imported. If not provided,\
|
|
\ Canva attempts to automatically detect the type of the file."
|
|
example: application/pdf
|
|
type: string
|
|
required:
|
|
- title_base64
|
|
type: object
|
|
CreateDesignImportJobResponse:
|
|
properties:
|
|
job:
|
|
$ref: '#/components/schemas/DesignImportJob'
|
|
required:
|
|
- job
|
|
type: object
|
|
DesignImportJob:
|
|
description: The status of the design import job.
|
|
properties:
|
|
id:
|
|
description: The ID of the design import job.
|
|
example: e08861ae-3b29-45db-8dc1-1fe0bf7f1cc8
|
|
type: string
|
|
status:
|
|
$ref: '#/components/schemas/DesignImportStatus'
|
|
result:
|
|
$ref: '#/components/schemas/DesignImportJobResult'
|
|
error:
|
|
$ref: '#/components/schemas/DesignImportError'
|
|
required:
|
|
- id
|
|
- status
|
|
type: object
|
|
DesignImportStatus:
|
|
description: The status of the design import job.
|
|
enum:
|
|
- failed
|
|
- in_progress
|
|
- success
|
|
example: success
|
|
type: string
|
|
DesignImportError:
|
|
description: "If the import job fails, this object provides details about the\
|
|
\ error."
|
|
properties:
|
|
code:
|
|
$ref: '#/components/schemas/DesignImportErrorCode'
|
|
message:
|
|
description: A human-readable description of what went wrong.
|
|
example: "We're sorry, but the file upload quota has exceeded. Please try\
|
|
\ again later."
|
|
type: string
|
|
required:
|
|
- code
|
|
- message
|
|
type: object
|
|
DesignImportErrorCode:
|
|
description: |-
|
|
A short string about why the import failed. This field can be used to handle errors
|
|
programmatically.
|
|
enum:
|
|
- design_creation_throttled
|
|
- design_import_throttled
|
|
- duplicate_import
|
|
- internal_error
|
|
- invalid_file
|
|
- fetch_failed
|
|
example: design_creation_throttled
|
|
type: string
|
|
DesignImportJobResult:
|
|
properties:
|
|
designs:
|
|
description: |-
|
|
A list of designs imported from the external file. It usually contains one item.
|
|
Imports with a large number of pages or assets are split into multiple designs.
|
|
items:
|
|
$ref: '#/components/schemas/DesignSummary'
|
|
type: array
|
|
required:
|
|
- designs
|
|
type: object
|
|
GetDesignImportJobResponse:
|
|
properties:
|
|
job:
|
|
$ref: '#/components/schemas/DesignImportJob'
|
|
required:
|
|
- job
|
|
type: object
|
|
CreateUrlImportJobRequest:
|
|
properties:
|
|
title:
|
|
description: A title for the design.
|
|
example: My Awesome Design
|
|
maxLength: 255
|
|
minLength: 1
|
|
type: string
|
|
url:
|
|
description: The URL of the file to import. This URL must be accessible
|
|
from the internet and be publicly available.
|
|
maxLength: 2048
|
|
minLength: 1
|
|
type: string
|
|
mime_type:
|
|
description: "The MIME type of the file being imported. If not provided,\
|
|
\ Canva attempts to automatically detect the type of the file."
|
|
example: application/vnd.apple.keynote
|
|
maxLength: 100
|
|
minLength: 1
|
|
type: string
|
|
required:
|
|
- title
|
|
- url
|
|
type: object
|
|
CreateUrlImportJobResponse:
|
|
properties:
|
|
job:
|
|
$ref: '#/components/schemas/DesignImportJob'
|
|
required:
|
|
- job
|
|
type: object
|
|
GetUrlImportJobResponse:
|
|
properties:
|
|
job:
|
|
$ref: '#/components/schemas/DesignImportJob'
|
|
required:
|
|
- job
|
|
type: object
|
|
DesignTypeInput:
|
|
description: The desired design type.
|
|
discriminator:
|
|
mapping:
|
|
preset: '#/components/schemas/PresetDesignTypeInput'
|
|
custom: '#/components/schemas/CustomDesignTypeInput'
|
|
propertyName: type
|
|
oneOf:
|
|
- $ref: '#/components/schemas/PresetDesignTypeInput'
|
|
- $ref: '#/components/schemas/CustomDesignTypeInput'
|
|
type: object
|
|
PresetDesignTypeInput:
|
|
description: Provide the common design type.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- preset
|
|
type: string
|
|
name:
|
|
$ref: '#/components/schemas/PresetDesignTypeName'
|
|
required:
|
|
- name
|
|
- type
|
|
type: object
|
|
PresetDesignTypeName:
|
|
description: The name of the design type.
|
|
enum:
|
|
- doc
|
|
- whiteboard
|
|
- presentation
|
|
type: string
|
|
x-enum-descriptions:
|
|
- "A [Canva doc](https://www.canva.com/docs/); a document for Canva's online\
|
|
\ text editor."
|
|
- "A [whiteboard](https://www.canva.com/online-whiteboard/); a design which\
|
|
\ gives you infinite space to collaborate."
|
|
- "A [presentation](https://www.canva.com/presentations/); lets you create and\
|
|
\ collaborate for presenting to an audience."
|
|
CustomDesignTypeInput:
|
|
description: Provide the width and height to define a custom design type.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- custom
|
|
type: string
|
|
width:
|
|
description: "The width of the design, in pixels."
|
|
example: 320
|
|
maximum: 8000
|
|
minimum: 40
|
|
type: integer
|
|
height:
|
|
description: "The height of the design, in pixels."
|
|
example: 200
|
|
maximum: 8000
|
|
minimum: 40
|
|
type: integer
|
|
required:
|
|
- height
|
|
- type
|
|
- width
|
|
type: object
|
|
Error:
|
|
properties:
|
|
code:
|
|
$ref: '#/components/schemas/ErrorCode'
|
|
message:
|
|
description: A human-readable description of what went wrong.
|
|
type: string
|
|
required:
|
|
- code
|
|
- message
|
|
type: object
|
|
OauthError:
|
|
properties:
|
|
error:
|
|
$ref: '#/components/schemas/ErrorCode'
|
|
error_description:
|
|
description: A human-readable description of what went wrong.
|
|
type: string
|
|
required:
|
|
- error
|
|
- error_description
|
|
type: object
|
|
ErrorCode:
|
|
description: |
|
|
A short string indicating what failed. This field can be used to handle errors programmatically.
|
|
enum:
|
|
- internal_error
|
|
- invalid_field
|
|
- invalid_header_value
|
|
- permission_denied
|
|
- too_many_requests
|
|
- not_found
|
|
- bad_request_body
|
|
- bad_http_method
|
|
- bad_request_params
|
|
- bad_query_params
|
|
- endpoint_not_found
|
|
- unsupported_version
|
|
- invalid_access_token
|
|
- revoked_access_token
|
|
- missing_field
|
|
- missing_scope
|
|
- invalid_grant
|
|
- invalid_request
|
|
- invalid_client
|
|
- unauthorized_client
|
|
- unsupported_grant_type
|
|
- invalid_scope
|
|
- invalid_basic_header
|
|
- invalid_file_format
|
|
- quota_exceeded
|
|
- unsupported_content_type
|
|
- request_too_large
|
|
- folder_not_found
|
|
- item_in_multiple_folders
|
|
- asset_not_found
|
|
- max_limit_reached
|
|
- permission_not_found
|
|
- permission_exists
|
|
- unauthorized_user
|
|
- user_not_found
|
|
- group_not_found
|
|
- app_not_found
|
|
- content_not_found
|
|
- doctype_not_found
|
|
- design_not_found
|
|
- offset_too_large
|
|
- page_not_found
|
|
- design_or_comment_not_found
|
|
- design_or_thread_not_found
|
|
- design_type_not_found
|
|
- team_not_found
|
|
- comment_not_found
|
|
- too_many_comments
|
|
- too_many_replies
|
|
- message_too_long
|
|
- thread_not_found
|
|
- reply_not_found
|
|
- design_not_fillable
|
|
- autofill_data_invalid
|
|
- feature_not_available
|
|
- license_required
|
|
- input_unsafe
|
|
- display_name_unavailable
|
|
type: string
|
|
CreateDesignExportJobRequest:
|
|
description: |-
|
|
Body parameters for starting an export job for a design.
|
|
It must include a design ID, and one of the supported export formats.
|
|
example:
|
|
design_id: DAVZr1z5464
|
|
format:
|
|
type: pdf
|
|
size: a4
|
|
pages:
|
|
- 2
|
|
- 3
|
|
- 4
|
|
properties:
|
|
design_id:
|
|
description: The design ID.
|
|
type: string
|
|
format:
|
|
$ref: '#/components/schemas/ExportFormat'
|
|
required:
|
|
- design_id
|
|
- format
|
|
type: object
|
|
ExportFormat:
|
|
description: Details about the desired export format.
|
|
discriminator:
|
|
mapping:
|
|
pdf: '#/components/schemas/PdfExportFormat'
|
|
jpg: '#/components/schemas/JpgExportFormat'
|
|
png: '#/components/schemas/PngExportFormat'
|
|
pptx: '#/components/schemas/PptxExportFormat'
|
|
gif: '#/components/schemas/GifExportFormat'
|
|
mp4: '#/components/schemas/Mp4ExportFormat'
|
|
propertyName: type
|
|
oneOf:
|
|
- $ref: '#/components/schemas/PdfExportFormat'
|
|
- $ref: '#/components/schemas/JpgExportFormat'
|
|
- $ref: '#/components/schemas/PngExportFormat'
|
|
- $ref: '#/components/schemas/PptxExportFormat'
|
|
- $ref: '#/components/schemas/GifExportFormat'
|
|
- $ref: '#/components/schemas/Mp4ExportFormat'
|
|
type: object
|
|
PdfExportFormat:
|
|
description: Export the design as a PDF. Providing a paper size is optional.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- pdf
|
|
type: string
|
|
export_quality:
|
|
$ref: '#/components/schemas/ExportQuality'
|
|
size:
|
|
$ref: '#/components/schemas/ExportPageSize'
|
|
pages:
|
|
description: |-
|
|
To specify which pages to export in a multi-page design, provide the page numbers as
|
|
an array. The first page in a design is page `1`.
|
|
If `pages` isn't specified, all the pages are exported.
|
|
example:
|
|
- 2
|
|
- 3
|
|
- 4
|
|
items:
|
|
minimum: 1
|
|
type: integer
|
|
type: array
|
|
required:
|
|
- type
|
|
type: object
|
|
GifExportFormat:
|
|
description: |-
|
|
Export the design as a GIF. Height or width (or both) may be specified, otherwise the file
|
|
will be exported at it's default size. Large designs will be scaled down, and aspect ratio
|
|
will always be maintained.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- gif
|
|
type: string
|
|
export_quality:
|
|
$ref: '#/components/schemas/ExportQuality'
|
|
height:
|
|
description: |-
|
|
Specify the height in pixels of the exported image. Note the following behavior:
|
|
|
|
- If no height or width is specified, the image is exported using the dimensions of the design.
|
|
- If only one of height or width is specified, then the image is scaled to match that dimension, respecting the design's aspect ratio.
|
|
- If both the height and width are specified, but the values don't match the design's aspect ratio, the export defaults to the larger dimension.
|
|
example: 400
|
|
format: int32
|
|
maximum: 25000
|
|
minimum: 40
|
|
type: integer
|
|
width:
|
|
description: |-
|
|
Specify the width in pixels of the exported image. Note the following behavior:
|
|
|
|
- If no width or height is specified, the image is exported using the dimensions of the design.
|
|
- If only one of width or height is specified, then the image is scaled to match that dimension, respecting the design's aspect ratio.
|
|
- If both the width and height are specified, but the values don't match the design's aspect ratio, the export defaults to the larger dimension.
|
|
example: 400
|
|
format: int32
|
|
maximum: 25000
|
|
minimum: 40
|
|
type: integer
|
|
pages:
|
|
description: |-
|
|
To specify which pages to export in a multi-page design, provide the page numbers as
|
|
an array. The first page in a design is page `1`.
|
|
If `pages` isn't specified, all the pages are exported.
|
|
example:
|
|
- 2
|
|
- 3
|
|
- 4
|
|
items:
|
|
minimum: 1
|
|
type: integer
|
|
type: array
|
|
required:
|
|
- type
|
|
type: object
|
|
JpgExportFormat:
|
|
description: |-
|
|
Export the design as a JPEG. Compression quality must be provided. Height or width (or both)
|
|
may be specified, otherwise the file will be exported at it's default size.
|
|
|
|
If the user is on the Canva Free plan, the export height and width for a fixed-dimension design can't be upscaled by more than a factor of `1.125`.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- jpg
|
|
type: string
|
|
export_quality:
|
|
$ref: '#/components/schemas/ExportQuality'
|
|
quality:
|
|
description: "For the `jpg` type, the `quality` of the exported JPEG determines\
|
|
\ how compressed the exported file should be. A _low_ `quality` value\
|
|
\ will create a file with a smaller file size, but the resulting file\
|
|
\ will have pixelated artifacts when compared to a file created with a\
|
|
\ _high_ `quality` value."
|
|
example: 80
|
|
maximum: 100
|
|
minimum: 1
|
|
type: integer
|
|
height:
|
|
description: |-
|
|
Specify the height in pixels of the exported image. Note the following behavior:
|
|
|
|
- If no height or width is specified, the image is exported using the dimensions of the design.
|
|
- If only one of height or width is specified, then the image is scaled to match that dimension, respecting the design's aspect ratio.
|
|
- If both the height and width are specified, but the values don't match the design's aspect ratio, the export defaults to the larger dimension.
|
|
example: 400
|
|
format: int32
|
|
maximum: 25000
|
|
minimum: 40
|
|
type: integer
|
|
width:
|
|
description: |-
|
|
Specify the width in pixels of the exported image. Note the following behavior:
|
|
|
|
- If no width or height is specified, the image is exported using the dimensions of the design.
|
|
- If only one of width or height is specified, then the image is scaled to match that dimension, respecting the design's aspect ratio.
|
|
- If both the width and height are specified, but the values don't match the design's aspect ratio, the export defaults to the larger dimension.
|
|
example: 400
|
|
format: int32
|
|
maximum: 25000
|
|
minimum: 40
|
|
type: integer
|
|
pages:
|
|
description: |-
|
|
To specify which pages to export in a multi-page design, provide the page numbers as
|
|
an array. The first page in a design is page `1`.
|
|
If `pages` isn't specified, all the pages are exported.
|
|
example:
|
|
- 2
|
|
- 3
|
|
- 4
|
|
items:
|
|
minimum: 1
|
|
type: integer
|
|
type: array
|
|
required:
|
|
- quality
|
|
- type
|
|
type: object
|
|
PngExportFormat:
|
|
description: |-
|
|
Export the design as a PNG. Height or width (or both) may be specified, otherwise
|
|
the file will be exported at it's default size. You may also specify whether to export the
|
|
file losslessly, and whether to export a multi-page design as a single image.
|
|
|
|
If the user is on the Canva Free plan, the export height and width for a fixed-dimension design can't be upscaled by more than a factor of `1.125`.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- png
|
|
type: string
|
|
export_quality:
|
|
$ref: '#/components/schemas/ExportQuality'
|
|
height:
|
|
description: |-
|
|
Specify the height in pixels of the exported image. Note the following behavior:
|
|
|
|
- If no height or width is specified, the image is exported using the dimensions of the design.
|
|
- If only one of height or width is specified, then the image is scaled to match that dimension, respecting the design's aspect ratio.
|
|
- If both the height and width are specified, but the values don't match the design's aspect ratio, the export defaults to the larger dimension.
|
|
example: 400
|
|
format: int32
|
|
maximum: 25000
|
|
minimum: 40
|
|
type: integer
|
|
width:
|
|
description: |-
|
|
Specify the width in pixels of the exported image. Note the following behavior:
|
|
|
|
- If no width or height is specified, the image is exported using the dimensions of the design.
|
|
- If only one of width or height is specified, then the image is scaled to match that dimension, respecting the design's aspect ratio.
|
|
- If both the width and height are specified, but the values don't match the design's aspect ratio, the export defaults to the larger dimension.
|
|
example: 400
|
|
format: int32
|
|
maximum: 25000
|
|
minimum: 40
|
|
type: integer
|
|
lossless:
|
|
default: true
|
|
description: |-
|
|
If set to `true` (default), the PNG is exported without compression.
|
|
If set to `false`, the PNG is compressed using a lossy compression algorithm. Lossy PNG compression is only available to users on a Canva plan that has premium features, such as Canva Pro. If the user is on the Canva Free plan and this parameter is set to `false`, the export operation will fail.
|
|
type: boolean
|
|
transparent_background:
|
|
default: false
|
|
description: |-
|
|
If set to `true`, the PNG is exported with a transparent background.
|
|
This option is only available to users on a Canva plan that has premium features, such as Canva Pro. If the user is on the Canva Free plan and this parameter is set to `true`, the export operation will fail.
|
|
type: boolean
|
|
as_single_image:
|
|
default: false
|
|
description: |-
|
|
When `true`, multi-page designs are merged into a single image.
|
|
When `false` (default), each page is exported as a separate image.
|
|
type: boolean
|
|
pages:
|
|
description: |-
|
|
To specify which pages to export in a multi-page design, provide the page numbers as
|
|
an array. The first page in a design is page `1`.
|
|
If `pages` isn't specified, all the pages are exported.
|
|
example:
|
|
- 2
|
|
- 3
|
|
- 4
|
|
items:
|
|
minimum: 1
|
|
type: integer
|
|
type: array
|
|
required:
|
|
- type
|
|
type: object
|
|
PptxExportFormat:
|
|
description: Export the design as a PPTX.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- pptx
|
|
type: string
|
|
pages:
|
|
description: |-
|
|
To specify which pages to export in a multi-page design, provide the page numbers as
|
|
an array. The first page in a design is page `1`.
|
|
If `pages` isn't specified, all the pages are exported.
|
|
example:
|
|
- 2
|
|
- 3
|
|
- 4
|
|
items:
|
|
minimum: 1
|
|
type: integer
|
|
type: array
|
|
required:
|
|
- type
|
|
type: object
|
|
Mp4ExportFormat:
|
|
description: Export the design as an MP4. You must specify the quality of the
|
|
exported video.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- mp4
|
|
type: string
|
|
export_quality:
|
|
$ref: '#/components/schemas/ExportQuality'
|
|
quality:
|
|
$ref: '#/components/schemas/Mp4ExportQuality'
|
|
pages:
|
|
description: |-
|
|
To specify which pages to export in a multi-page design, provide the page numbers as
|
|
an array. The first page in a design is page `1`.
|
|
If `pages` isn't specified, all the pages are exported.
|
|
example:
|
|
- 2
|
|
- 3
|
|
- 4
|
|
items:
|
|
minimum: 1
|
|
type: integer
|
|
type: array
|
|
required:
|
|
- quality
|
|
- type
|
|
type: object
|
|
CreateDesignExportJobResponse:
|
|
properties:
|
|
job:
|
|
$ref: '#/components/schemas/ExportJob'
|
|
required:
|
|
- job
|
|
type: object
|
|
GetDesignExportJobResponse:
|
|
properties:
|
|
job:
|
|
$ref: '#/components/schemas/ExportJob'
|
|
required:
|
|
- job
|
|
type: object
|
|
ExportJob:
|
|
description: The status of the export job.
|
|
properties:
|
|
id:
|
|
description: The export job ID.
|
|
example: e08861ae-3b29-45db-8dc1-1fe0bf7f1cc8
|
|
type: string
|
|
status:
|
|
$ref: '#/components/schemas/DesignExportStatus'
|
|
urls:
|
|
description: |-
|
|
Download URL(s) for the completed export job. These URLs expire after 24 hours.
|
|
|
|
Depending on the design type and export format, there is a download URL for each page in the design. The list is sorted by page order.
|
|
example:
|
|
- https://export-download.canva-dev.com/...
|
|
items:
|
|
type: string
|
|
type: array
|
|
error:
|
|
$ref: '#/components/schemas/ExportError'
|
|
required:
|
|
- id
|
|
- status
|
|
type: object
|
|
ExportPageSize:
|
|
default: a4
|
|
description: The paper size of the export PDF file. The `size` attribute is
|
|
only supported for Documents (Canva Docs).
|
|
enum:
|
|
- a4
|
|
- a3
|
|
- letter
|
|
- legal
|
|
example: a4
|
|
type: string
|
|
DesignExportStatus:
|
|
description: |-
|
|
The export status of the job. A newly created job will be `in_progress` and will eventually
|
|
become `success` or `failed`.
|
|
enum:
|
|
- failed
|
|
- in_progress
|
|
- success
|
|
type: string
|
|
ExportHeight:
|
|
description: |-
|
|
Specify the height in pixels of the exported image. Note the following behavior:
|
|
|
|
- If no height or width is specified, the image is exported using the dimensions of the design.
|
|
- If only one of height or width is specified, then the image is scaled to match that dimension, respecting the design's aspect ratio.
|
|
- If both the height and width are specified, but the values don't match the design's aspect ratio, the export defaults to the larger dimension.
|
|
example: 400
|
|
format: int32
|
|
maximum: 25000
|
|
minimum: 40
|
|
type: integer
|
|
ExportWidth:
|
|
description: |-
|
|
Specify the width in pixels of the exported image. Note the following behavior:
|
|
|
|
- If no width or height is specified, the image is exported using the dimensions of the design.
|
|
- If only one of width or height is specified, then the image is scaled to match that dimension, respecting the design's aspect ratio.
|
|
- If both the width and height are specified, but the values don't match the design's aspect ratio, the export defaults to the larger dimension.
|
|
example: 400
|
|
format: int32
|
|
maximum: 25000
|
|
minimum: 40
|
|
type: integer
|
|
Mp4ExportQuality:
|
|
description: |-
|
|
The orientation and resolution of the exported video. Orientation is either `horizontal` or
|
|
`vertical`, and resolution is one of `480p`, `720p`, `1080p` or `4k`.
|
|
enum:
|
|
- horizontal_480p
|
|
- horizontal_720p
|
|
- horizontal_1080p
|
|
- horizontal_4k
|
|
- vertical_480p
|
|
- vertical_720p
|
|
- vertical_1080p
|
|
- vertical_4k
|
|
type: string
|
|
ExportFormatOptions:
|
|
description: The available file formats for exporting the design.
|
|
properties:
|
|
pdf:
|
|
$ref: '#/components/schemas/PdfExportFormatOption'
|
|
jpg:
|
|
$ref: '#/components/schemas/JpgExportFormatOption'
|
|
png:
|
|
$ref: '#/components/schemas/PngExportFormatOption'
|
|
svg:
|
|
$ref: '#/components/schemas/SvgExportFormatOption'
|
|
pptx:
|
|
$ref: '#/components/schemas/PptxExportFormatOption'
|
|
gif:
|
|
$ref: '#/components/schemas/GifExportFormatOption'
|
|
mp4:
|
|
$ref: '#/components/schemas/Mp4ExportFormatOption'
|
|
type: object
|
|
PdfExportFormatOption:
|
|
description: Whether the design can be exported as a PDF.
|
|
type: object
|
|
GifExportFormatOption:
|
|
description: Whether the design can be exported as a GIF.
|
|
type: object
|
|
JpgExportFormatOption:
|
|
description: Whether the design can be exported as a JPEG.
|
|
type: object
|
|
PngExportFormatOption:
|
|
description: Whether the design can be exported as a PNG.
|
|
type: object
|
|
SvgExportFormatOption:
|
|
description: Whether the design can be exported as an SVG.
|
|
type: object
|
|
PptxExportFormatOption:
|
|
description: Whether the design can be exported as a PPTX.
|
|
type: object
|
|
Mp4ExportFormatOption:
|
|
description: Whether the design can be exported as an MP4.
|
|
type: object
|
|
ExportError:
|
|
description: "If the export fails, this object provides details about the error."
|
|
properties:
|
|
code:
|
|
$ref: '#/components/schemas/ExportErrorCode'
|
|
message:
|
|
description: A human-readable description of what went wrong.
|
|
type: string
|
|
required:
|
|
- code
|
|
- message
|
|
type: object
|
|
ExportErrorCode:
|
|
description: |-
|
|
If the export failed, this specifies the reason why it failed.
|
|
|
|
- `license_required`: The design contains [premium elements](https://www.canva.com/help/premium-elements/) that haven't been purchased. You can either buy the elements or upgrade to a Canva plan (such as Canva Pro) that has premium features, then try again. Alternatively, you can set `export_quality` to `regular` to export your document in regular quality.
|
|
- `approval_required`: The design requires [reviewer approval](https://www.canva.com/en_au/help/design-approval/) before it can be exported.
|
|
- `internal_failure`: The service encountered an error when exporting your design.
|
|
enum:
|
|
- license_required
|
|
- approval_required
|
|
- internal_failure
|
|
type: string
|
|
x-enum-descriptions:
|
|
- "The design contains [premium elements](https://www.canva.com/help/premium-elements/)\
|
|
\ that haven't been purchased. You can either buy the elements or upgrade\
|
|
\ to a Canva plan (such as Canva Pro) that has premium features, then try\
|
|
\ again. Alternatively, you can set `export_quality` to `regular` to export\
|
|
\ your document in regular quality."
|
|
- "The design requires [reviewer approval](https://www.canva.com/en_au/help/design-approval/)\
|
|
\ before it can be exported."
|
|
- The service encountered an error when exporting your design.
|
|
ExportQuality:
|
|
default: regular
|
|
description: Specifies the export quality of the design.
|
|
enum:
|
|
- regular
|
|
- pro
|
|
type: string
|
|
x-enum-descriptions:
|
|
- Regular quality export.
|
|
- |-
|
|
Premium quality export.
|
|
|
|
NOTE: A `pro` export might fail if the design contains [premium elements](https://www.canva.com/help/premium-elements/) and the calling user either hasn't purchased the elements or isn't on a Canva plan (such as Canva Pro) that has premium features.
|
|
FolderItemSortBy:
|
|
default: modified_descending
|
|
enum:
|
|
- created_ascending
|
|
- created_descending
|
|
- modified_ascending
|
|
- modified_descending
|
|
- title_ascending
|
|
- title_descending
|
|
type: string
|
|
x-enum-descriptions:
|
|
- "Sort results by creation date, in ascending order."
|
|
- "Sort results by creation date, in descending order."
|
|
- "Sort results by the last modified date, in ascending order."
|
|
- "Sort results by the last modified date, in descending order."
|
|
- "Sort results by title, in ascending order. The title is either the `name`\
|
|
\ field for a folder or asset, or the `title` field for a design."
|
|
- "Sort results by title, in descending order. The title is either the `name`\
|
|
\ field for a folder or asset, or the `title` field for a design."
|
|
FolderItemType:
|
|
enum:
|
|
- design
|
|
- folder
|
|
- image
|
|
type: string
|
|
GetFolderResponse:
|
|
description: The folder ID.
|
|
properties:
|
|
folder:
|
|
$ref: '#/components/schemas/Folder'
|
|
required:
|
|
- folder
|
|
type: object
|
|
CreateFolderRequest:
|
|
description: Body parameters for creating a new folder.
|
|
properties:
|
|
name:
|
|
description: The name of the folder.
|
|
example: My awesome holiday
|
|
maxLength: 255
|
|
minLength: 1
|
|
type: string
|
|
parent_folder_id:
|
|
description: |-
|
|
The folder ID of the parent folder. To create a new folder at the top level of a user's
|
|
[projects](https://www.canva.com/help/find-designs-and-folders/), use the ID `root`.
|
|
To create it in their Uploads folder, use `uploads`.
|
|
example: FAF2lZtloor
|
|
maxLength: 50
|
|
minLength: 1
|
|
type: string
|
|
required:
|
|
- name
|
|
- parent_folder_id
|
|
type: object
|
|
CreateFolderResponse:
|
|
description: Details about the new folder.
|
|
properties:
|
|
folder:
|
|
$ref: '#/components/schemas/Folder'
|
|
type: object
|
|
UpdateFolderRequest:
|
|
description: Body parameters for updating the folder's details.
|
|
properties:
|
|
name:
|
|
description: "The folder name, as shown in the Canva UI."
|
|
example: My awesome holiday
|
|
maxLength: 255
|
|
minLength: 1
|
|
type: string
|
|
required:
|
|
- name
|
|
type: object
|
|
UpdateFolderResponse:
|
|
description: Details about the updated folder.
|
|
properties:
|
|
folder:
|
|
$ref: '#/components/schemas/Folder'
|
|
type: object
|
|
ListFolderItemsResponse:
|
|
description: |-
|
|
A list of the items in a folder.
|
|
If the success response contains a continuation token, the folder contains more items
|
|
you can list. You can use this token as a query parameter and retrieve more
|
|
items from the list, for example
|
|
`/v1/folders/{folderId}/items?continuation={continuation}`.
|
|
|
|
To retrieve all the items in a folder, you might need to make multiple requests.
|
|
properties:
|
|
items:
|
|
description: An array of items in the folder.
|
|
items:
|
|
$ref: '#/components/schemas/FolderItemSummary'
|
|
type: array
|
|
continuation:
|
|
description: |-
|
|
If the success response contains a continuation token, the folder contains more items
|
|
you can list. You can use this token as a query parameter and retrieve more
|
|
items from the list, for example
|
|
`/v1/folders/{folderId}/items?continuation={continuation}`.
|
|
|
|
To retrieve all the items in a folder, you might need to make multiple requests.
|
|
example: RkFGMgXlsVTDbMd:MR3L0QjiaUzycIAjx0yMyuNiV0OildoiOwL0x32G4NjNu4FwtAQNxowUQNMMYN
|
|
type: string
|
|
required:
|
|
- items
|
|
type: object
|
|
FolderItemSummary:
|
|
description: Details about the folder item.
|
|
discriminator:
|
|
mapping:
|
|
folder: '#/components/schemas/FolderItem'
|
|
design: '#/components/schemas/DesignItem'
|
|
image: '#/components/schemas/ImageItem'
|
|
propertyName: type
|
|
oneOf:
|
|
- $ref: '#/components/schemas/FolderItem'
|
|
- $ref: '#/components/schemas/DesignItem'
|
|
- $ref: '#/components/schemas/ImageItem'
|
|
type: object
|
|
FolderItem:
|
|
description: Details about the folder.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- folder
|
|
type: string
|
|
folder:
|
|
$ref: '#/components/schemas/Folder'
|
|
required:
|
|
- folder
|
|
- type
|
|
type: object
|
|
DesignItem:
|
|
description: Details about the design.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- design
|
|
type: string
|
|
design:
|
|
$ref: '#/components/schemas/DesignSummary'
|
|
required:
|
|
- design
|
|
- type
|
|
type: object
|
|
ImageItem:
|
|
description: Details about the image asset.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- image
|
|
type: string
|
|
image:
|
|
$ref: '#/components/schemas/AssetSummary'
|
|
required:
|
|
- image
|
|
- type
|
|
type: object
|
|
MoveFolderItemRequest:
|
|
description: Body parameters for moving the folder.
|
|
properties:
|
|
to_folder_id:
|
|
description: |-
|
|
The ID of the folder you want to move the item to (the destination folder).
|
|
If you want to move the item to the top level of a Canva user's
|
|
[projects](https://www.canva.com/help/find-designs-and-folders/), use the ID `root`.
|
|
example: FAF2lZtloor
|
|
maxLength: 50
|
|
minLength: 1
|
|
type: string
|
|
item_id:
|
|
description: "The ID of the item you want to move. Currently, video assets\
|
|
\ are not supported."
|
|
example: Msd59349ff
|
|
maxLength: 50
|
|
minLength: 1
|
|
type: string
|
|
required:
|
|
- item_id
|
|
- to_folder_id
|
|
type: object
|
|
Folder:
|
|
description: "The folder object, which contains metadata about the folder."
|
|
properties:
|
|
id:
|
|
description: The folder ID.
|
|
example: FAF2lZtloor
|
|
type: string
|
|
name:
|
|
description: The folder name.
|
|
example: My awesome holiday
|
|
type: string
|
|
created_at:
|
|
description: |-
|
|
When the folder was created, as a Unix timestamp (in seconds since the
|
|
Unix Epoch).
|
|
example: 1377396000
|
|
format: int64
|
|
type: integer
|
|
updated_at:
|
|
description: |-
|
|
When the folder was last updated, as a Unix timestamp (in seconds since the
|
|
Unix Epoch).
|
|
example: 1692928800
|
|
format: int64
|
|
type: integer
|
|
thumbnail:
|
|
$ref: '#/components/schemas/Thumbnail'
|
|
required:
|
|
- created_at
|
|
- id
|
|
- name
|
|
- updated_at
|
|
type: object
|
|
FolderSummary:
|
|
description: |-
|
|
This object contains some folder metadata. You can retrieve additional metadata
|
|
using the folder ID and the `/v1/folders/{folderId}` endpoint.
|
|
properties:
|
|
id:
|
|
description: The folder ID.
|
|
example: FAF2lZtloor
|
|
type: string
|
|
title:
|
|
deprecated: true
|
|
description: |-
|
|
The folder name, as shown in the Canva UI. This property is deprecated, so you should
|
|
use the `name` property instead.
|
|
example: My awesome holiday
|
|
type: string
|
|
name:
|
|
description: "The folder name, as shown in the Canva UI."
|
|
example: My awesome holiday
|
|
type: string
|
|
created_at:
|
|
description: |-
|
|
When the folder was created, as a Unix timestamp (in seconds since the
|
|
Unix Epoch).
|
|
example: 1377396000
|
|
format: int64
|
|
type: integer
|
|
updated_at:
|
|
description: |-
|
|
When the folder was last updated, as a Unix timestamp (in seconds since the
|
|
Unix Epoch).
|
|
example: 1692928800
|
|
format: int64
|
|
type: integer
|
|
url:
|
|
description: The folder URL.
|
|
example: https://www.canva.com/folder/FAF2lZtloor
|
|
type: string
|
|
required:
|
|
- created_at
|
|
- id
|
|
- name
|
|
- updated_at
|
|
type: object
|
|
Group:
|
|
description: |-
|
|
Metadata for the Canva Group, consisting of the Group ID,
|
|
display name, and whether it's an external Canva Group.
|
|
properties:
|
|
id:
|
|
description: The ID of the group with permissions to access the design.
|
|
example: dl9n9SoWoExMsw6Ri1iTg
|
|
type: string
|
|
display_name:
|
|
description: The display name of the group.
|
|
example: Sales team
|
|
type: string
|
|
external:
|
|
description: |-
|
|
Is the user making the API call (the authenticated user) and the Canva Group
|
|
from different Canva Teams?
|
|
|
|
- When `true`, the user and the group aren't in the same Canva Team.
|
|
- When `false`, the user and the group are in the same Canva Team.
|
|
type: boolean
|
|
required:
|
|
- external
|
|
- id
|
|
type: object
|
|
JsonWebKeySet:
|
|
properties:
|
|
keys:
|
|
description: An array of JSON Web Key values. The order of keys has no meaning.
|
|
items:
|
|
$ref: '#/components/schemas/JsonWebKey'
|
|
type: array
|
|
required:
|
|
- keys
|
|
type: object
|
|
JsonWebKey:
|
|
description: |-
|
|
Standard Json Web Key specification following https://www.rfc-editor.org/rfc/rfc7517 and
|
|
https://www.rfc-editor.org/rfc/rfc7518.html.
|
|
properties:
|
|
alg:
|
|
description: |-
|
|
The "alg" (algorithm) parameter identifies the algorithm intended for
|
|
use with the key.
|
|
See https://www.rfc-editor.org/rfc/rfc7517#section-4
|
|
type: string
|
|
kid:
|
|
description: |-
|
|
The "kid" (key ID) parameter is used to match a specific key. This
|
|
is used, for instance, to choose among a set of keys within a JWK Set
|
|
during key rollover. When "kid" values are used within a JWK Set,
|
|
different keys within the JWK Set SHOULD use distinct "kid" values.
|
|
The "kid" value is a case-sensitive string.
|
|
See https://www.rfc-editor.org/rfc/rfc7517#section-4
|
|
type: string
|
|
kty:
|
|
description: |-
|
|
The "kty" (key type) parameter identifies the cryptographic algorithm
|
|
family used with the key, such as "RSA" or "EC". The "kty" value is a
|
|
case-sensitive string. At the moment, only "RSA" is supported.
|
|
See https://www.rfc-editor.org/rfc/rfc7517#section-4
|
|
type: string
|
|
"n":
|
|
description: |-
|
|
The "n" (modulus) parameter contains the modulus value for the RSA
|
|
public key. It is represented as a Base64urlUInt-encoded value.
|
|
See https://www.rfc-editor.org/rfc/rfc7518.html#section-6.3
|
|
type: string
|
|
e:
|
|
description: |-
|
|
The "e" (exponent) parameter contains the exponent value for the RSA
|
|
public key. It is represented as a Base64urlUInt-encoded value.
|
|
See https://www.rfc-editor.org/rfc/rfc7518.html#section-6.3
|
|
type: string
|
|
use:
|
|
description: |-
|
|
The "use" (public key use) parameter identifies the intended use of
|
|
the public key. The "use" parameter is employed to indicate whether
|
|
a public key is used for encrypting data or verifying the signature
|
|
on data. Values are commonly "sig" (signature) or "enc" (encryption).
|
|
See https://www.rfc-editor.org/rfc/rfc7517#section-4
|
|
type: string
|
|
required:
|
|
- e
|
|
- kid
|
|
- kty
|
|
- "n"
|
|
type: object
|
|
ExchangeAccessTokenRequest:
|
|
discriminator:
|
|
mapping:
|
|
authorization_code: '#/components/schemas/ExchangeAuthCodeRequest'
|
|
refresh_token: '#/components/schemas/ExchangeRefreshTokenRequest'
|
|
propertyName: grant_type
|
|
oneOf:
|
|
- $ref: '#/components/schemas/ExchangeAuthCodeRequest'
|
|
- $ref: '#/components/schemas/ExchangeRefreshTokenRequest'
|
|
type: object
|
|
ExchangeAuthCodeRequest:
|
|
properties:
|
|
grant_type:
|
|
description: For exchanging an authorization code for an access token.
|
|
enum:
|
|
- authorization_code
|
|
example: authorization_code
|
|
type: string
|
|
code_verifier:
|
|
description: The `code_verifier` value that you generated when creating
|
|
the user authorization URL.
|
|
example: i541qdcfkb4htnork0w92lnu43en99ls5a48ittv6udqgiflqon8vusojojakbq4
|
|
type: string
|
|
code:
|
|
description: The authorization code you received after the user authorized
|
|
the integration.
|
|
example: kp8nnroja7qnx00.opyc1p76rcbyflsxbycjqfp3ub8vzsvltpzwafy9q5l45dn5fxzhe7i7a6mg1i2t8jpsa6sebdeumkzzhicskabgevrxsssec4dvjwfvhq4gs3ugghguar0voiqpfb7axsapiojoter8v3w2s5s3st84jpv2l06h667iw241xngy9c8=vu1tnjp7sz
|
|
type: string
|
|
client_id:
|
|
description: |
|
|
Your integration's unique ID, for authenticating the request.
|
|
|
|
NOTE: We recommend that you use basic access authentication instead of specifying `client_id` and `client_secret` as body parameters.
|
|
example: OC-FAB12-AbCdEf
|
|
type: string
|
|
client_secret:
|
|
description: |
|
|
Your integration's client secret, for authenticating the request. Begins with `cnvca`.
|
|
|
|
NOTE: We recommend that you use basic access authentication instead of specifying `client_id` and `client_secret` as body parameters.
|
|
example: cnvcaAbcdefg12345_hijklm6789
|
|
type: string
|
|
redirect_uri:
|
|
description: |
|
|
Only required if a redirect URL was supplied when you [created the user authorization URL](https://www.canva.dev/docs/connect/authentication/#create-the-authorization-url).
|
|
|
|
Must be one of those already specified by the client. If not supplied, the first redirect_uri defined for the client will be used by default.
|
|
example: https://example.com/process-auth
|
|
type: string
|
|
required:
|
|
- code
|
|
- code_verifier
|
|
- grant_type
|
|
type: object
|
|
ExchangeRefreshTokenRequest:
|
|
properties:
|
|
grant_type:
|
|
description: For generating an access token using a refresh token.
|
|
enum:
|
|
- refresh_token
|
|
example: refresh_token
|
|
type: string
|
|
client_id:
|
|
description: |
|
|
Your integration's unique ID, for authenticating the request.
|
|
|
|
NOTE: We recommend that you use basic access authentication instead of specifying `client_id` and `client_secret` as body parameters.
|
|
example: OC-FAB12-AbCdEf
|
|
type: string
|
|
client_secret:
|
|
description: |
|
|
Your integration's client secret, for authenticating the request. Begins with `cnvca`.
|
|
|
|
NOTE: We recommend that you use basic access authentication instead of specifying `client_id` and `client_secret` as body parameters.
|
|
example: cnvcaAbcdefg12345_hijklm6789
|
|
type: string
|
|
refresh_token:
|
|
description: The refresh token to be exchanged. You can copy this value
|
|
from the successful response received when generating an access token.
|
|
example: JABix5nolsk9k8n2r0f8nq1gw4zjo40ht6sb4i573wgdzmkwdmiy6muh897hp0bxyab276wtgqkvtob2mg9aidt5d6rcltcbcgs101
|
|
type: string
|
|
scope:
|
|
description: |
|
|
Optional scope value when refreshing an access token. Separate multiple [scopes](https://www.canva.dev/docs/connect/appendix/scopes/) with a single space between each scope.
|
|
|
|
The requested scope cannot include any permissions not already granted, so this parameter allows you to limit the scope when refreshing a token. If omitted, the scope for the token remains unchanged.
|
|
example: design:meta:read
|
|
type: string
|
|
required:
|
|
- grant_type
|
|
- refresh_token
|
|
type: object
|
|
ExchangeAccessTokenResponse:
|
|
description: Exchange auth token to access token.
|
|
properties:
|
|
access_token:
|
|
description: "The bearer access token to use to authenticate to Canva Connect\
|
|
\ API endpoints. If requested using a `authorization_code` or `refresh_token`,\
|
|
\ this allows you to act on behalf of a user."
|
|
example: JagALLazU0i2ld9WW4zTO4kaG0lkvP8Y5sSO206ZwxNF4E1y3xKJKF7TzN17BXTfaNOeY0P88AeRCE6cRF7SJzvf3Sx97rA80sGHtFplFo
|
|
type: string
|
|
refresh_token:
|
|
description: The token that you can use to refresh the access token.
|
|
example: JABix5nolsk9k8n2r0f8nq1gw4zjo40ht6sb4i573wgdzmkwdmiy6muh897hp0bxyab276wtgqkvtob2mg9aidt5d6rcltcbcgs101
|
|
type: string
|
|
token_type:
|
|
description: The token type returned. This is always `Bearer`.
|
|
example: Bearer
|
|
type: string
|
|
expires_in:
|
|
description: The expiry time (in seconds) for the access token.
|
|
example: 14400
|
|
format: int64
|
|
type: integer
|
|
scope:
|
|
description: "The [scopes](https://www.canva.dev/docs/connect/appendix/scopes/)\
|
|
\ that the token has been granted."
|
|
example: asset:read design:meta:read design:permission:read folder:read
|
|
type: string
|
|
required:
|
|
- access_token
|
|
- expires_in
|
|
- refresh_token
|
|
- token_type
|
|
type: object
|
|
IntrospectTokenRequest:
|
|
properties:
|
|
token:
|
|
description: The token to introspect.
|
|
example: JagALLazU0i2ld9WW4zTO4kaG0lkvP8Y5sSO206ZwxNF4E1y3xKJKF7TzN17BXTfaNOeY0P88AeRCE6cRF7SJzvf3Sx97rA80sGHtFplFo
|
|
type: string
|
|
client_id:
|
|
description: |
|
|
Your integration's unique ID, for authenticating the request.
|
|
|
|
NOTE: We recommend that you use basic access authentication instead of specifying `client_id` and `client_secret` as body parameters.
|
|
example: OC-FAB12-AbCdEf
|
|
type: string
|
|
client_secret:
|
|
description: |
|
|
Your integration's client secret, for authenticating the request. Begins with `cnvca`.
|
|
|
|
NOTE: We recommend that you use basic access authentication instead of specifying `client_id` and `client_secret` as body parameters.
|
|
example: cnvcaAbcdefg12345_hijklm6789
|
|
type: string
|
|
required:
|
|
- token
|
|
type: object
|
|
IntrospectTokenResponse:
|
|
description: Introspection result of access or refresh tokens
|
|
properties:
|
|
active:
|
|
description: |
|
|
Whether the access token is active.
|
|
|
|
If `true`, the access token is valid and active. If `false`, the access token is invalid.
|
|
example: true
|
|
type: boolean
|
|
scope:
|
|
description: "The [scopes](https://www.canva.dev/docs/connect/appendix/scopes/)\
|
|
\ that the token has been granted."
|
|
example: asset:read design:meta:read design:permission:read folder:read
|
|
type: string
|
|
client:
|
|
description: The ID of the client that requested the token.
|
|
example: OC-FAB12-AbCdEf
|
|
type: string
|
|
exp:
|
|
description: "The expiration time of the token, as a [Unix timestamp](https://en.wikipedia.org/wiki/Unix_time)\
|
|
\ in seconds."
|
|
example: 1712216144
|
|
format: int64
|
|
type: integer
|
|
iat:
|
|
description: "When the token was issued, as a [Unix timestamp](https://en.wikipedia.org/wiki/Unix_time)\
|
|
\ in seconds."
|
|
example: 1712201744
|
|
format: int64
|
|
type: integer
|
|
nbf:
|
|
description: "The \"not before\" time of the token, which specifies the\
|
|
\ time before which the access token most not be accepted, as a [Unix\
|
|
\ timestamp](https://en.wikipedia.org/wiki/Unix_time) in seconds."
|
|
example: 1712201744
|
|
format: int64
|
|
type: integer
|
|
jti:
|
|
description: A unique ID for the access token.
|
|
example: AbC1d-efgHIJKLMN2oPqrS
|
|
type: string
|
|
sub:
|
|
description: |
|
|
The subject of the claim. This is the ID of the Canva user that the access token acts on behalf of.
|
|
|
|
This is an obfuscated value, so a single user has a unique ID for each integration. If the same user authorizes another integration, their ID in that other integration is different.
|
|
example: oBCdEF1Gh2i3jkLmno-pq
|
|
type: string
|
|
required:
|
|
- active
|
|
type: object
|
|
RevokeTokensRequest:
|
|
description: Supply an access token or refresh token to have its lineage revoked.
|
|
properties:
|
|
token:
|
|
description: The token to revoke.
|
|
example: agALLazU0i2ld9WW4zTO4kaG0lkvP8Y5sSO206ZwxNF4E1y3xKJKF7TzN17BXTfaNOeY0P88AeRCE6cRF7SJzvf3Sx97rA80sGHtFplFo
|
|
type: string
|
|
client_id:
|
|
description: |
|
|
Your integration's unique ID, for authenticating the request.
|
|
|
|
NOTE: We recommend that you use basic access authentication instead of specifying `client_id` and `client_secret` as body parameters.
|
|
example: OC-FAB12-AbCdEf
|
|
type: string
|
|
client_secret:
|
|
description: |
|
|
Your integration's client secret, for authenticating the request. Begins with `cnvca`.
|
|
|
|
NOTE: We recommend that you use basic access authentication instead of specifying `client_id` and `client_secret` as body parameters.
|
|
example: cnvcaAbcdefg12345_hijklm6789
|
|
type: string
|
|
required:
|
|
- token
|
|
type: object
|
|
RevokeTokensResponse:
|
|
description: The response on a successful token revocation.
|
|
type: object
|
|
scope_response:
|
|
description: "The [scopes](https://www.canva.dev/docs/connect/appendix/scopes/)\
|
|
\ that the token has been granted."
|
|
example: asset:read design:meta:read design:permission:read folder:read
|
|
type: string
|
|
client_id:
|
|
description: |
|
|
Your integration's unique ID, for authenticating the request.
|
|
|
|
NOTE: We recommend that you use basic access authentication instead of specifying `client_id` and `client_secret` as body parameters.
|
|
example: OC-FAB12-AbCdEf
|
|
type: string
|
|
client_secret:
|
|
description: |
|
|
Your integration's client secret, for authenticating the request. Begins with `cnvca`.
|
|
|
|
NOTE: We recommend that you use basic access authentication instead of specifying `client_id` and `client_secret` as body parameters.
|
|
example: cnvcaAbcdefg12345_hijklm6789
|
|
type: string
|
|
UserInfoResponse:
|
|
example:
|
|
sub: UAAAAAAAAA
|
|
name: Alice Person
|
|
given_name: Alice
|
|
family_name: Person
|
|
email: alice.person@example.com
|
|
email_verified: true
|
|
properties:
|
|
sub:
|
|
description: Identifier for the End-User at the Issuer.
|
|
type: string
|
|
name:
|
|
description: |-
|
|
End-User's full name in displayable form including all name parts, possibly including
|
|
titles and suffixes, ordered according to the End-User's locale and preferences.
|
|
type: string
|
|
given_name:
|
|
description: |-
|
|
Given name(s) or first name(s) of the End-User. Note that in some cultures, people can
|
|
have multiple given names; all can be present, with the names being separated by space
|
|
characters.
|
|
type: string
|
|
family_name:
|
|
description: |-
|
|
Surname(s) or last name(s) of the End-User. Note that in some cultures, people can have
|
|
multiple family names or no family name; all can be present, with the names being
|
|
separated by space characters.
|
|
type: string
|
|
email:
|
|
description: |-
|
|
End-User's preferred e-mail address. Its value MUST conform to the RFC 5322 [RFC5322]
|
|
addr-spec syntax. The RP MUST NOT rely upon this value being unique, as discussed in
|
|
Section 5.7.
|
|
format: email
|
|
type: string
|
|
email_verified:
|
|
description: |-
|
|
True if the End-User's e-mail address has been verified; otherwise false. When this
|
|
Claim Value is true, this means that the OP took affirmative steps to ensure that this
|
|
e-mail address was controlled by the End-User at the time the verification was
|
|
performed. The means by which an e-mail address is verified is context specific,
|
|
and dependent upon the trust framework or contractual agreements within which the
|
|
parties are operating.
|
|
type: boolean
|
|
required:
|
|
- sub
|
|
type: object
|
|
Interval:
|
|
description: The interval at which the usage resets. 'never' means lifetime
|
|
quota that never resets.
|
|
enum:
|
|
- day
|
|
- week
|
|
- month
|
|
- year
|
|
- never
|
|
type: string
|
|
FeatureId:
|
|
description: "Unique identification string for the feature. Need to be in `{application-id}.{feature-name}`\
|
|
\ pattern"
|
|
example: ingredient-generation.generate-image
|
|
pattern: "^[a-z0-9-]+\\.[a-z0-9-]+$"
|
|
type: string
|
|
FeatureQuotaLimit:
|
|
description: |
|
|
The quota limit set by the caller for this feature. This limit is used to determine if usage exceeds the customer-defined threshold.
|
|
If not provided, we assume the usage is unlimited.
|
|
minimum: 1
|
|
type: integer
|
|
CreateDesignResizeJobRequest:
|
|
description: |-
|
|
Body parameters for starting a resize job for a design.
|
|
It must include a design ID, and one of the supported design type.
|
|
properties:
|
|
design_id:
|
|
description: The design ID.
|
|
pattern: "^[a-zA-Z0-9_-]{1,50}$"
|
|
type: string
|
|
design_type:
|
|
$ref: '#/components/schemas/DesignTypeInput'
|
|
required:
|
|
- design_id
|
|
- design_type
|
|
type: object
|
|
CreateDesignResizeJobResponse:
|
|
properties:
|
|
job:
|
|
$ref: '#/components/schemas/DesignResizeJob'
|
|
required:
|
|
- job
|
|
type: object
|
|
GetDesignResizeJobResponse:
|
|
properties:
|
|
job:
|
|
$ref: '#/components/schemas/DesignResizeJob'
|
|
required:
|
|
- job
|
|
type: object
|
|
DesignResizeJob:
|
|
description: Details about the design resize job.
|
|
properties:
|
|
id:
|
|
description: The design resize job ID.
|
|
example: bbd8dfcd-ead1-4871-81d5-962bfec82274
|
|
type: string
|
|
status:
|
|
$ref: '#/components/schemas/DesignResizeStatus'
|
|
result:
|
|
$ref: '#/components/schemas/DesignResizeJobResult'
|
|
error:
|
|
$ref: '#/components/schemas/DesignResizeError'
|
|
required:
|
|
- id
|
|
- status
|
|
type: object
|
|
DesignResizeJobResult:
|
|
description: |-
|
|
Design has been created and saved to user's root
|
|
([projects](https://www.canva.com/help/find-designs-and-folders/)) folder.
|
|
properties:
|
|
design:
|
|
$ref: '#/components/schemas/DesignSummary'
|
|
trial_information:
|
|
$ref: '#/components/schemas/TrialInformation'
|
|
required:
|
|
- design
|
|
type: object
|
|
DesignResizeStatus:
|
|
description: Status of the design resize job.
|
|
enum:
|
|
- in_progress
|
|
- success
|
|
- failed
|
|
example: success
|
|
type: string
|
|
DesignResizeErrorCode:
|
|
enum:
|
|
- thumbnail_generation_error
|
|
- design_resize_error
|
|
- create_design_error
|
|
- trial_quota_exceeded
|
|
type: string
|
|
DesignResizeError:
|
|
description: "If the design resize job fails, this object provides details about\
|
|
\ the error."
|
|
properties:
|
|
code:
|
|
$ref: '#/components/schemas/DesignResizeErrorCode'
|
|
message:
|
|
description: A human-readable description of what went wrong.
|
|
type: string
|
|
required:
|
|
- code
|
|
- message
|
|
type: object
|
|
TrialInformation:
|
|
description: |-
|
|
WARNING: Trials and trial information are a [preview feature](https://www.canva.dev/docs/connect/#preview-apis).
|
|
There might be unannounced breaking changes to this feature which won't produce a new API version.
|
|
properties:
|
|
uses_remaining:
|
|
description: The number of uses remaining in the free trial.
|
|
example: 0
|
|
format: int32
|
|
minimum: 0
|
|
type: integer
|
|
upgrade_url:
|
|
description: The URL for a user to upgrade their Canva account.
|
|
example: https://www.canva.com/?tailoringUpsellDialog=GENERIC_C4W
|
|
type: string
|
|
required:
|
|
- upgrade_url
|
|
- uses_remaining
|
|
type: object
|
|
Team:
|
|
description: |-
|
|
Metadata for the Canva Team, consisting of the Team ID,
|
|
display name, and whether it's an external Canva Team.
|
|
properties:
|
|
id:
|
|
description: The ID of the Canva Team.
|
|
example: Oi2RJILTrKk0KRhRUZozX
|
|
type: string
|
|
display_name:
|
|
description: The name of the Canva Team as shown in the Canva UI.
|
|
example: Acme Corporation
|
|
type: string
|
|
external:
|
|
description: |-
|
|
Is the user making the API call (the authenticated user) from the Canva Team shown?
|
|
|
|
- When `true`, the user isn't in the Canva Team shown.
|
|
- When `false`, the user is in the Canva Team shown.
|
|
type: boolean
|
|
required:
|
|
- display_name
|
|
- external
|
|
- id
|
|
type: object
|
|
Thumbnail:
|
|
description: A thumbnail image representing the object.
|
|
properties:
|
|
width:
|
|
description: The width of the thumbnail image in pixels.
|
|
example: 595
|
|
type: integer
|
|
height:
|
|
description: The height of the thumbnail image in pixels.
|
|
example: 335
|
|
type: integer
|
|
url:
|
|
description: |-
|
|
A URL for retrieving the thumbnail image.
|
|
This URL expires after 15 minutes. This URL includes a query string
|
|
that's required for retrieving the thumbnail.
|
|
example: https://document-export.canva.com/Vczz9/zF9vzVtdADc/2/thumbnail/0001.png?<query-string>
|
|
type: string
|
|
required:
|
|
- height
|
|
- url
|
|
- width
|
|
type: object
|
|
User:
|
|
description: "Metadata for the user, consisting of the User ID and display name."
|
|
properties:
|
|
id:
|
|
description: The ID of the user.
|
|
example: uKakKUfI03Fg8k2gZ6OkT
|
|
type: string
|
|
display_name:
|
|
description: The name of the user as shown in the Canva UI.
|
|
example: John Doe
|
|
type: string
|
|
required:
|
|
- id
|
|
type: object
|
|
TeamUserSummary:
|
|
description: "Metadata for the user, consisting of the User ID and Team ID."
|
|
properties:
|
|
user_id:
|
|
description: The ID of the user.
|
|
example: auDAbliZ2rQNNOsUl5OLu
|
|
type: string
|
|
team_id:
|
|
description: The ID of the user's Canva Team.
|
|
example: Oi2RJILTrKk0KRhRUZozX
|
|
type: string
|
|
required:
|
|
- team_id
|
|
- user_id
|
|
type: object
|
|
TeamUser:
|
|
description: "Metadata for the user, consisting of the User ID, Team ID, and\
|
|
\ display name."
|
|
properties:
|
|
user_id:
|
|
description: The ID of the user.
|
|
example: auDAbliZ2rQNNOsUl5OLu
|
|
type: string
|
|
team_id:
|
|
description: The ID of the user's Canva Team.
|
|
example: Oi2RJILTrKk0KRhRUZozX
|
|
type: string
|
|
display_name:
|
|
description: The name of the user as shown in the Canva UI.
|
|
example: Jane Doe
|
|
type: string
|
|
type: object
|
|
UserProfile:
|
|
description: "Profile for the user, consisting of the display name and other\
|
|
\ attributes."
|
|
properties:
|
|
display_name:
|
|
description: The name of the user as shown in the Canva UI.
|
|
example: Jane Doe
|
|
type: string
|
|
type: object
|
|
UsersMeResponse:
|
|
properties:
|
|
team_user:
|
|
$ref: '#/components/schemas/TeamUserSummary'
|
|
required:
|
|
- team_user
|
|
type: object
|
|
UserProfileResponse:
|
|
properties:
|
|
profile:
|
|
$ref: '#/components/schemas/UserProfile'
|
|
required:
|
|
- profile
|
|
type: object
|
|
GetUserCapabilitiesResponse:
|
|
properties:
|
|
capabilities:
|
|
items:
|
|
$ref: '#/components/schemas/Capability'
|
|
type: array
|
|
type: object
|
|
Notification:
|
|
properties:
|
|
id:
|
|
description: The unique identifier for the notification.
|
|
example: eb595730
|
|
type: string
|
|
created_at:
|
|
description: |-
|
|
When the notification was created, as a UNIX timestamp (in seconds
|
|
since the UNIX epoch).
|
|
example: 1377396000
|
|
format: int64
|
|
type: integer
|
|
content:
|
|
$ref: '#/components/schemas/NotificationContent'
|
|
required:
|
|
- content
|
|
- created_at
|
|
- id
|
|
type: object
|
|
NotificationContent:
|
|
description: "The notification content object, which contains metadata about\
|
|
\ the event."
|
|
discriminator:
|
|
mapping:
|
|
share_design: '#/components/schemas/ShareDesignNotificationContent'
|
|
share_folder: '#/components/schemas/ShareFolderNotificationContent'
|
|
comment: '#/components/schemas/CommentNotificationContent'
|
|
design_access_requested: '#/components/schemas/DesignAccessRequestedNotificationContent'
|
|
design_approval_requested: '#/components/schemas/DesignApprovalRequestedNotificationContent'
|
|
design_approval_response: '#/components/schemas/DesignApprovalResponseNotificationContent'
|
|
design_approval_reviewer_invalidated: '#/components/schemas/DesignApprovalReviewerInvalidatedNotificationContent'
|
|
design_mention: '#/components/schemas/DesignMentionNotificationContent'
|
|
team_invite: '#/components/schemas/TeamInviteNotificationContent'
|
|
folder_access_requested: '#/components/schemas/FolderAccessRequestedNotificationContent'
|
|
suggestion: '#/components/schemas/SuggestionNotificationContent'
|
|
propertyName: type
|
|
oneOf:
|
|
- $ref: '#/components/schemas/ShareDesignNotificationContent'
|
|
- $ref: '#/components/schemas/ShareFolderNotificationContent'
|
|
- $ref: '#/components/schemas/CommentNotificationContent'
|
|
- $ref: '#/components/schemas/DesignAccessRequestedNotificationContent'
|
|
- $ref: '#/components/schemas/DesignApprovalRequestedNotificationContent'
|
|
- $ref: '#/components/schemas/DesignApprovalResponseNotificationContent'
|
|
- $ref: '#/components/schemas/DesignApprovalReviewerInvalidatedNotificationContent'
|
|
- $ref: '#/components/schemas/DesignMentionNotificationContent'
|
|
- $ref: '#/components/schemas/TeamInviteNotificationContent'
|
|
- $ref: '#/components/schemas/FolderAccessRequestedNotificationContent'
|
|
- $ref: '#/components/schemas/SuggestionNotificationContent'
|
|
type: object
|
|
ShareDesignNotificationContent:
|
|
description: The notification content for when someone shares a design.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- share_design
|
|
example: share_design
|
|
type: string
|
|
triggering_user:
|
|
$ref: '#/components/schemas/User'
|
|
receiving_team_user:
|
|
$ref: '#/components/schemas/TeamUser'
|
|
design:
|
|
$ref: '#/components/schemas/DesignSummary'
|
|
share_url:
|
|
description: A URL that the user who receives the notification can use to
|
|
access the shared design.
|
|
example: https://www.canva.com/api/action?token=zWiz3GqRaWVkolwSgfBa9sKbsKgfHAoxv_mjs-mlX2M
|
|
type: string
|
|
share:
|
|
$ref: '#/components/schemas/ShareAction'
|
|
required:
|
|
- design
|
|
- receiving_team_user
|
|
- share_url
|
|
- triggering_user
|
|
- type
|
|
type: object
|
|
ShareFolderNotificationContent:
|
|
description: The notification content for when someone shares a folder.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- share_folder
|
|
example: share_folder
|
|
type: string
|
|
triggering_user:
|
|
$ref: '#/components/schemas/User'
|
|
receiving_team_user:
|
|
$ref: '#/components/schemas/TeamUser'
|
|
folder:
|
|
$ref: '#/components/schemas/FolderSummary'
|
|
share:
|
|
$ref: '#/components/schemas/ShareAction'
|
|
required:
|
|
- folder
|
|
- receiving_team_user
|
|
- triggering_user
|
|
- type
|
|
type: object
|
|
CommentNotificationContent:
|
|
description: The notification content for when someone comments on a design.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- comment
|
|
example: comment
|
|
type: string
|
|
triggering_user:
|
|
$ref: '#/components/schemas/User'
|
|
receiving_team_user:
|
|
$ref: '#/components/schemas/TeamUser'
|
|
design:
|
|
$ref: '#/components/schemas/DesignSummary'
|
|
comment_url:
|
|
deprecated: true
|
|
description: |-
|
|
A URL to the design, focused on the new comment.
|
|
|
|
The `comment_url` property is deprecated.
|
|
For details of the comment event, use the `comment_event` property instead.
|
|
example: https://www.canva.com/design/3WCduQdjayTcPVM/z128cqanFu7E3/edit?ui=OdllGgZ4Snnq3MD8uI10bfA
|
|
type: string
|
|
comment:
|
|
$ref: '#/components/schemas/CommentEventDeprecated'
|
|
comment_event:
|
|
$ref: '#/components/schemas/CommentEvent'
|
|
required:
|
|
- design
|
|
- receiving_team_user
|
|
- triggering_user
|
|
- type
|
|
type: object
|
|
DesignAccessRequestedNotificationContent:
|
|
description: The notification content for when someone requests access to a
|
|
design.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- design_access_requested
|
|
example: design_access_requested
|
|
type: string
|
|
triggering_user:
|
|
$ref: '#/components/schemas/TeamUser'
|
|
receiving_team_user:
|
|
$ref: '#/components/schemas/TeamUser'
|
|
design:
|
|
$ref: '#/components/schemas/DesignSummary'
|
|
grant_access_url:
|
|
description: |-
|
|
A URL, which is scoped only to the user that can grant the requested access to the
|
|
design, that approves the requested access.
|
|
example: https://www.canva.com/api/action?token=OosRN8M_eO2-QbLpUmP5JCwTMSXWfadtQYWuj9WKzoE
|
|
type: string
|
|
required:
|
|
- design
|
|
- grant_access_url
|
|
- receiving_team_user
|
|
- triggering_user
|
|
- type
|
|
type: object
|
|
DesignApprovalRequestedNotificationContent:
|
|
description: |-
|
|
The notification content for when someone requests a user to
|
|
[approve a design](https://www.canva.com/help/get-approval/).
|
|
properties:
|
|
type:
|
|
enum:
|
|
- design_approval_requested
|
|
example: design_approval_requested
|
|
type: string
|
|
triggering_user:
|
|
$ref: '#/components/schemas/User'
|
|
initial_requesting_user:
|
|
$ref: '#/components/schemas/TeamUser'
|
|
receiving_team_user:
|
|
$ref: '#/components/schemas/TeamUser'
|
|
requested_groups:
|
|
items:
|
|
$ref: '#/components/schemas/Group'
|
|
type: array
|
|
design:
|
|
$ref: '#/components/schemas/DesignSummary'
|
|
approve_url:
|
|
description: |-
|
|
A URL, which is scoped only to the user requested to review the design, that links to
|
|
the design with the approval UI opened.
|
|
example: https://canva.com/api/action?token=HZb0lLHaEhNkT1qQrAwoe0-8SqyXUgJ4vnHGvN2rLZ0
|
|
type: string
|
|
approval_request:
|
|
$ref: '#/components/schemas/ApprovalRequestAction'
|
|
required:
|
|
- approval_request
|
|
- approve_url
|
|
- design
|
|
- initial_requesting_user
|
|
- receiving_team_user
|
|
- requested_groups
|
|
- triggering_user
|
|
- type
|
|
type: object
|
|
DesignApprovalResponseNotificationContent:
|
|
description: The notification content for when someone approves a design or
|
|
gives feedback.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- design_approval_response
|
|
example: design_approval_response
|
|
type: string
|
|
triggering_user:
|
|
$ref: '#/components/schemas/User'
|
|
receiving_team_user:
|
|
$ref: '#/components/schemas/TeamUser'
|
|
initial_requesting_user:
|
|
$ref: '#/components/schemas/TeamUser'
|
|
responding_groups:
|
|
items:
|
|
$ref: '#/components/schemas/Group'
|
|
type: array
|
|
design:
|
|
$ref: '#/components/schemas/DesignSummary'
|
|
approval_response:
|
|
$ref: '#/components/schemas/ApprovalResponseAction'
|
|
required:
|
|
- approval_response
|
|
- design
|
|
- initial_requesting_user
|
|
- receiving_team_user
|
|
- responding_groups
|
|
- triggering_user
|
|
- type
|
|
type: object
|
|
DesignApprovalReviewerInvalidatedNotificationContent:
|
|
description: The notification content for when a reviewer in a design is invalidated.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- design_approval_reviewer_invalidated
|
|
example: design_approval_reviewer_invalidated
|
|
type: string
|
|
receiving_team_user:
|
|
$ref: '#/components/schemas/TeamUserSummary'
|
|
design:
|
|
$ref: '#/components/schemas/DesignSummary'
|
|
required:
|
|
- design
|
|
- receiving_team_user
|
|
- type
|
|
type: object
|
|
DesignMentionNotificationContent:
|
|
description: |-
|
|
The notification content for when someone mentions a user in a design.
|
|
|
|
The link to the design in this notification is valid for 30 days, and can only be opened by
|
|
the recipient of the notification.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- design_mention
|
|
example: design_mention
|
|
type: string
|
|
triggering_user:
|
|
$ref: '#/components/schemas/User'
|
|
receiving_team_user:
|
|
$ref: '#/components/schemas/TeamUser'
|
|
design:
|
|
$ref: '#/components/schemas/DesignSummary'
|
|
required:
|
|
- design
|
|
- receiving_team_user
|
|
- triggering_user
|
|
- type
|
|
type: object
|
|
TeamInviteNotificationContent:
|
|
description: |-
|
|
The notification content for when someone is invited to a
|
|
[Canva team](https://www.canva.com/help/about-canva-for-teams/).
|
|
properties:
|
|
type:
|
|
enum:
|
|
- team_invite
|
|
example: team_invite
|
|
type: string
|
|
triggering_user:
|
|
$ref: '#/components/schemas/User'
|
|
receiving_user:
|
|
$ref: '#/components/schemas/User'
|
|
inviting_team:
|
|
$ref: '#/components/schemas/Team'
|
|
required:
|
|
- inviting_team
|
|
- receiving_user
|
|
- triggering_user
|
|
- type
|
|
type: object
|
|
FolderAccessRequestedNotificationContent:
|
|
description: The notification content for when someone requests access to a
|
|
folder.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- folder_access_requested
|
|
example: folder_access_requested
|
|
type: string
|
|
triggering_user:
|
|
$ref: '#/components/schemas/TeamUser'
|
|
receiving_team_user:
|
|
$ref: '#/components/schemas/TeamUser'
|
|
folder:
|
|
$ref: '#/components/schemas/FolderSummary'
|
|
required:
|
|
- folder
|
|
- receiving_team_user
|
|
- triggering_user
|
|
- type
|
|
type: object
|
|
SuggestionNotificationContent:
|
|
description: |-
|
|
The notification content when someone does one of the following actions:
|
|
|
|
- Suggests edits to a design.
|
|
- Applies or rejects a suggestion.
|
|
- Replies to a suggestion.
|
|
- Mentions a user in a reply to a suggestion.
|
|
properties:
|
|
type:
|
|
enum:
|
|
- suggestion
|
|
type: string
|
|
triggering_user:
|
|
$ref: '#/components/schemas/User'
|
|
receiving_team_user:
|
|
$ref: '#/components/schemas/TeamUser'
|
|
design:
|
|
$ref: '#/components/schemas/DesignSummary'
|
|
suggestion_event_type:
|
|
$ref: '#/components/schemas/SuggestionEventType'
|
|
required:
|
|
- design
|
|
- receiving_team_user
|
|
- suggestion_event_type
|
|
- triggering_user
|
|
- type
|
|
type: object
|
|
ShareAction:
|
|
description: Metadata about the share event.
|
|
properties:
|
|
message:
|
|
description: |-
|
|
The optional message users can include when sharing something with another
|
|
user using the Canva UI.
|
|
example: Check this out!
|
|
type: string
|
|
required:
|
|
- message
|
|
type: object
|
|
ApprovalRequestAction:
|
|
description: Metadata about the design approval request.
|
|
properties:
|
|
message:
|
|
description: The message included by the user when requesting a design approval.
|
|
example: LGTM!
|
|
type: string
|
|
type: object
|
|
ApprovalResponseAction:
|
|
description: Metadata about the design approval response.
|
|
properties:
|
|
approved:
|
|
description: |-
|
|
Whether the design was approved. When `true`, the reviewer has approved
|
|
the design.
|
|
type: boolean
|
|
ready_to_publish:
|
|
description: |-
|
|
Whether the design is ready to publish. When `true`, the design has been approved
|
|
by all reviewers and can be published.
|
|
type: boolean
|
|
message:
|
|
description: The message included by a user responding to a design approval
|
|
request.
|
|
type: string
|
|
required:
|
|
- approved
|
|
type: object
|
|
securitySchemes:
|
|
basicAuth:
|
|
scheme: basic
|
|
type: http
|
|
oauthAuthCode:
|
|
flows:
|
|
authorizationCode:
|
|
authorizationUrl: https://www.canva.com/api/oauth/authorize
|
|
scopes:
|
|
design:content:read: View the contents of the user's designs.
|
|
design:meta:read: View the metadata of the user's designs.
|
|
design:content:write: Create designs on the user's behalf.
|
|
folder:read: |-
|
|
View the metadata and contents of the user's folders, including their **Projects**
|
|
folder.
|
|
folder:write: |-
|
|
Add, move, or remove the user's folders. It also lets you edit folder metadata,
|
|
such as the folder's name.
|
|
folder:permission:write: "Set, update, or remove permissions assigned\
|
|
\ to the user's folders."
|
|
asset:read: "View the metadata for the user's assets, such as uploaded\
|
|
\ images."
|
|
asset:write: "Upload, update, or delete assets on the user's behalf."
|
|
comment:read: "View the comments on the user's designs, and the associated\
|
|
\ metadata."
|
|
comment:write: Create comments and replies on the user's designs.
|
|
collaboration:event: Receive webhook notifications about events relevant
|
|
to the user.
|
|
brandtemplate:meta:read: View the metadata of the brand templates associated
|
|
with the user's brand.
|
|
brandtemplate:content:read: Read the content of the brand templates associated
|
|
with the user's brand.
|
|
profile:read: Read a user's profile and account information.
|
|
openid: Read user information through Open ID Connect (OIDC).
|
|
profile: Read user profile information through OIDC.
|
|
email: Read user email address through OIDC.
|
|
tokenUrl: https://api.canva.com/rest/v1/oauth/token
|
|
type: oauth2
|