openapi: 3.2.0
info:
title: Newscred Uploader API
version: V3
description: 'Operations tagged Uploader across 2 of this provider''s published API definitions: newscred-cmp-open-api-openapi.json, newscred-welcome-open-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- description: v3 version of Optimizely CMP Open API
url: https://api.cmp.optimizely.com/v3
- url: https://api.welcomesoftware.com/v3
description: v3 version of _Welcome_ Open API
tags:
- name: Uploader
paths:
/multipart-uploads:
post:
description: Experimental Create pre-signed URLs for multipart upload of large files
operationId: createMultipartUpload
requestBody:
content:
application/json:
schema:
properties:
file_size:
description: Size of the file in bytes
example: 104857600
maximum: 5497558138880
minimum: 1
type: integer
part_size:
default: 5242880
description: The size of each part of the file to be uploaded. The size of the last part can be smaller and hence can be ignored. `upload_part_count` is calculated based on `file_size` and `part_size`. **The maximum allowed `upload_part_count` is 10000.** So use larger `part_size` for larger files to keep `upload_part_count` under 10000.
example: 6000000
maximum: 5368709120
minimum: 5242880
type: integer
required:
- file_size
type: object
required: true
responses:
'201':
content:
application/json:
schema:
properties:
expires_at:
description: Expiration time of the upload URLs
example: '2025-03-03T12:00:00Z'
format: date-time
type: string
id:
description: ID of the multipart upload
example: abcdef1234567890
type: string
links:
properties:
complete:
description: URL to complete the upload
example: https://api.cmp.optimizely.com/v3/multipart-uploads/abcdef1234567890/complete
format: uri
type: string
status:
description: URL to check the upload status
example: https://api.cmp.optimizely.com/v3/multipart-uploads/abcdef1234567890/status
format: uri
type: string
required:
- complete
- status
type: object
upload_part_count:
description: Number of parts for the upload
example: 10
type: integer
upload_part_urls:
description: Array of pre-signed URLs for each part. **Each file part must be uploaded to the URL using PUT requests following the order of the URLs**
example:
- https://s3.amazonaws.com/xyz/abcdef1234567890/0
- https://s3.amazonaws.com/xyz/abcdef1234567890/1
items:
format: uri
type: string
type: array
required:
- id
- expires_at
- upload_part_count
- upload_part_urls
- links
type: object
description: Successful operation
headers:
Content-Encoding:
example: gzip
schema:
description: Response is always gzip compressed
enum:
- gzip
type: string
'400':
$ref: '#/components/responses/ClientError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'422':
$ref: '#/components/responses/UnprocessableEntity'
summary: POST /v3/multipart-uploads
tags:
- Uploader
security:
- OAuth2:
- openid
- profile
- offline_access
servers:
- description: v3 version of Optimizely CMP Open API
url: https://api.cmp.optimizely.com/v3
/multipart-uploads/{id}/complete:
post:
description: Experimental Initiate completion of a multipart upload after all parts have been uploaded
operationId: completeMultipartUpload
parameters:
- description: ID of the multipart upload to complete
example: abcdef1234567890
in: path
name: id
required: true
schema:
type: string
responses:
'202':
content:
application/json:
schema:
properties:
key:
description: Unique identifier of the file combining all parts. **This key will be needed for various file / attachment addition to different CMP resources using endpoints e.g. `POST /v3/assets`, `POST /v3/campaigns/{id}/attachments` etc.**
example: ce8995aea58b11ea8cd90242ac120005/abcdef1234567890
type: string
links:
properties:
status:
description: URL to check upload status
example: https://api.cmp.optimizely.com/v3/multipart-uploads/abcdef1234567890/status
format: uri
type: string
required:
- status
type: object
required:
- key
- links
type: object
description: Upload completion initiated successfully
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/UnprocessableEntity'
summary: POST /v3/multipart-uploads/{id}/complete
tags:
- Uploader
security:
- OAuth2:
- openid
- profile
- offline_access
servers:
- description: v3 version of Optimizely CMP Open API
url: https://api.cmp.optimizely.com/v3
/multipart-uploads/{id}/status:
get:
description: Experimental Retrieve the current status of a multipart upload
operationId: getMultipartUploadStatus
parameters:
- description: ID of the multipart upload to check status for
example: abcdef1234567890
in: path
name: id
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
properties:
expires_at:
description: Expiration time of the upload
example: '2025-03-03T12:00:00Z'
format: date-time
type: string
id:
description: ID of the multipart upload
example: abcdef1234567890
type: string
key:
description: Unique identifier of the file combining all parts. **This key will be needed for various file / attachment addition to different CMP resources using endpoints e.g. `POST /v3/assets`, `POST /v3/campaigns/{id}/attachments` etc.**
example: ce8995aea58b11ea8cd90242ac120005/abcdef1234567890
type: string
links:
properties:
self:
description: URL to this status endpoint
example: https://api.cmp.optimizely.com/v3/multipart-uploads/abcdef1234567890/status
format: uri
type: string
required:
- self
type: object
status:
description: Current status of the upload
enum:
- UPLOAD_COMPLETION_NOT_STARTED
- UPLOAD_COMPLETION_IN_PROGRESS
- UPLOAD_COMPLETION_SUCCEEDED
- UPLOAD_COMPLETION_FAILED
example: UPLOAD_COMPLETION_IN_PROGRESS
type: string
status_message:
description: Detailed status message
example: Some error message related to the status
type:
- string
- 'null'
required:
- id
- key
- status
- status_message
- expires_at
- links
type: object
description: Successfully retrieved upload status
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
summary: GET /v3/multipart-uploads/{id}/status
tags:
- Uploader
security:
- OAuth2:
- openid
- profile
- offline_access
servers:
- description: v3 version of Optimizely CMP Open API
url: https://api.cmp.optimizely.com/v3
/upload-url:
get:
description: Get a presigned URL and related meta fields to upload a file. **The validity time for this URL is 60 minutes**.
operationId: getUploadUrl
responses:
'200':
content:
application/json:
schema:
additionalProperties: false
properties:
upload_meta_fields:
additionalProperties: false
description: Related meta fields to upload a file. **Items within this field must be sent along as paylod of the POST request, along with the file, to the presigned upload URL**
properties:
key:
description: Unique identifier of the file. **This key will be needed for various file / attachment addition to different CMP resources using endpoints e.g. `POST /v3/assets`, `POST /v3/campaigns/{id}/attachments` etc.**
example: ce8995aea58b11ea8cd90242ac120005
type: string
policy:
example: eyJleHBpcmF0aW9uIjogIjIwMjAtMDYtMDNUMTY6MTc6NTbbbbbbImNvbmRpdGlvbnMiOiBbeyJidWNrZXQiOiAibmV3c2NyZWQtY21wLWZpbGVzIn0sIHsia2V5IjogIjY3Y2NhMzcxYTVhZDExZWFiNDNhMGExMjlmMDhlZWQ5In0sIHsieC1hbXotYWxnb3JpdGhtIjogIkFXUzQtSE1BQy1TSEEyNTYifSwgeyJ4LWFtei1jcmVkZW50aWFsIjogIkFTSUFVTlVMQkwzV082RDdSWkZILzIwMjAwNjAzL3VzLWVhc3QtMS9zMy9hd3M0X3JlcXVlc3QifSwgeyJ4LWFtei1kYXRlIjogIjIwMjAwNjAzVDE1MTc1N1oifSwgeyJ4LWFtei1zZWN1cml0eS10b2tlbiI6ICJJUW9KYjNKcFoybHVYMlZqRUE4YUNYVnpMV1ZoYzNRdE1TSkhNRVVDSUQrc2FrelZIK05zN0Z4UmtsaW9CZFdldjdZRXlIcHBoVjEyNnRsL0ZadjNBaUVBODFOV1l5TUt1L0UvZ1FyaUlhaVhMaXpxSFFuNnlxTWlWSzQzeU9xYTUaaaaaaU1JZHhBQUdnd3pNRFF4TmpBMU16QXhOVFlpRERxMlN3dVJTR2ZGL2hGRXpDcVJBMlo4NmpkRzNQczMzY3c5bFpFeVBpbmdWSnV0WUQ0RXZuU291NFR1NG9WaGhEZUwyS0QxdFREZmMrNHJmVWRMQ2Y1SWpzb3VRYldMekIzczRXZ2xMQUJFOFJ0VUM5K0o1bVpJUTlYNzJVa0xOUjA0UURpVlliSjdxNS95S25VNUFSZWUzQXdqVHp3UWZPS3dsTnRFODYyVWo4MXlWbDhMdS81d3kwaU5hZFpvbkZPcVBONldJWURpdi9MVzlLKzhWNjRNS2E5bDhtcG1kVll3RWJ2dTRiMENJVFIxQ0tjUHlzVkFNODBKdnZ0aklvQTZXc3RDcWxiM0ZHZEFGVmlnaDdId3JKL3greFNZVU5YVzFvaFNlUExDNXFPSCtoZ2ZqRFVOSDMvbXhEV2V4dWhQbDFGSjF6VlpZQzBMY2U0Y1F6dEtPbTgzZFBqcWI4a09pQVBUWVB3MGFmYnl0QUQyVE8vTmhZdHlvU1BzL0xWS1FYWXhyYk5MZ3N6azRMUjdLeUEydlA5NkJRMll6aVhnWDhTTm13bklDcWRiY2dzZitvNnBWOXRlTlJIczdIS3N2Qm9HYVFESTVhUDQrcmQ1K0h0aWM3RUZqSDlDUkk1bnBpL3cvTVlodkc0dXljWDR4cEJSeE5iSURWbFpuYTBEaUkvVkxmV3JjOWtkUFBhdm10QVhtVHR1U2c4aFFVMnNzMSt0dEJqaE1NRGkzdllGT3VzQnJEMDMyc1BlMWx0QUNRSzlVQUxEUmFYT2VIWjNXbThTVjZlMTErWVhnd3JKZkloQlp2a053OGxHdkRuN2FSK2hXUkpPazljY3pHOC9DTzRqZk8xVlpkZ3N2YU5PaEhpc01sQXVOMVJXallXUGJWRkRoajV3ekZ0OTQrcmJwdFd3dk9vamtXVElUM0o5SWtSNTF6SWJhc1VqTW4rOHRiSjFJbHJnWVFOaDVaaUVPTGZ1bFVHZWl1L2xXdERFbFhKUy9sS0pUTnV1YU1DRnU0NnBocTlvVE9EMWtmSVYrUEFxZEZYV2xQbVZKK3lXeGRLellSV1creDdERjJ6dnZmZm1nc0JBWU01eDh6aEJ3YWIrSXkvTGR6eWdQVUFnaTFTUE9oSktFRjNBejU4aVArdGFDbUxhdmo5cGFRPT0ifV19
type: string
x-amz-algorithm:
example: AWS4-HMAC-SHA256
type: string
x-amz-credential:
example: REDACTED_AWS_ACCESS_KEY_ID/20343603/us-east-1/s3/aws4_request
type: string
x-amz-date:
example: 20200603T151757Z
type: string
x-amz-security-token:
example: IQoJb3JpZ2luX2VjEA8ccccccWVhc3QtMSJHMEUCID+sakzVH+Ns7FxRklioBdWev7YEyHpphV126tl/FZv3AiEA81NWYyMKu/E/gQriIaiXLizqHQn6yqMiVK43yOqa52AqtAMIdxAAGgwzMDQxNjA1MzAxNTYiDDq2SwuRSGfFddddddqRA2Z86jdG3Ps33cw9lZEyPingVJutYD4EvnSou4Tu4oVhhDeL2KD1tTDfc+4rfUdLCf5IjsouQbWLzB3s4WglLABE8RtUC9+J5mZIQ9X72UkLNR04QDiVYbJ7q5/yKnU5ARee3AwjTzwQfOKwlNtE862Uj81yVl8Lu/5wy0iNadZonFOqPN6WIYDiv/LW9K+8V64MKa9l8mpmdVYwEbvu4b0CITR1CKcPysVAM80JvvtjIoA6WstCqlb3FGdAFVigh7HwrJ/x+xSYUNXW1ohSePLC5qOH+hgfjDUNH3/mxDWexuhPl1FJ1zVZYC0Lce4cQztKOm83dPjqb8kOiAPTYPw0afbytAD2TO/NhYtyoSPs/LVKQXYxrbNLgszk4LR7KyA2vP96BQ2YziXgX8SNmwnICqdbcgsf+o6pV9teNRHs7HKsvBoGaQDI5aP4+rd5+Htic7EFjH9CRI5npi/w/MYhvG4uycX4xpBRxNbIDVlZna0DiI/VLfWrc9kdPPavmtAXmTtuSg8hQU2ss1+ttBjhMMDi3vYFOusBrD032sPe1ltACQK9UALDRaXOeHZ3Wm8SV6e11+YXgwrJfIhBZvkNw8lGvDn7aR+hWRJOk9cczG8/CO4jfO1VZdgsvaNOhHisMlAuN1RWjYWPbVFDhj5wzFt94+rbptWwvOojkWTIT3J9IkR51zIbasUjMn+8tbJ1IlrgYQNh5ZiEOLfulUGeiu/lWtDElXJS/lKJTNuuaMCFu46phq9oTOD1kfIV+PAqdFXWlPmVJ+yWxdKzYRWW+x7DF2zvvffmgsBAYM5x8zhBwab+Iy/LdzygPUAgi1SPOhJKEF3Az58iP+taCmLavj9paQ==
type: string
x-amz-signature:
example: 0e67ede744d4aed62aaaaaa8e87648b3e98a3e611ccccccc89963bcf70bd02f9
type: string
required:
- key
- policy
- x-amz-algorithm
- x-amz-credential
- x-amz-date
- x-amz-signature
type: object
url:
description: Presigned URL to use for uploading a file with an **HTTP POST** request as `multipart/form-data`
example: https://cmp-files.s3-accelerate.amazonaws.com/
type: string
required:
- url
- upload_meta_fields
type: object
description: Fetched presigned upload URL and related meta fields
'400':
$ref: '#/components/responses/ClientError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
summary: GET /upload-url
tags:
- Uploader
security:
- OAuth2:
- openid
- profile
- offline_access
servers:
- description: v3 version of Optimizely CMP Open API
url: https://api.cmp.optimizely.com/v3
components:
responses:
Forbidden:
content:
application/json:
example:
message: You do not have the permission to perform this operation
schema:
$ref: '#/components/schemas/Error'
description: Permission error
NotFound:
content:
application/json:
example:
message: Resource not found
schema:
$ref: '#/components/schemas/Error'
description: Not found error
ClientError:
content:
application/json:
example:
message: 'Unsupported arguments: a,b,c'
schema:
$ref: '#/components/schemas/Error'
description: Client error
UnprocessableEntity:
content:
application/json:
example:
message: Resource cannot be processed
schema:
$ref: '#/components/schemas/Error'
description: Unprocessable entity error
Unauthorized:
content:
application/json:
example:
message: Unauthorized
schema:
$ref: '#/components/schemas/Error'
description: Authorization error
Forbidden_2:
description: Permission error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
message: User does not have the permission to perform this operation
schemas:
Error:
additionalProperties: true
description: Error payload
properties:
errors:
additionalProperties: true
description: Additional information
properties: {}
type: object
message:
description: Message describing the error
example: Not found
type: string
required:
- message
type: object
securitySchemes:
OAuth2:
flows:
authorizationCode:
authorizationUrl: https://accounts.cmp.optimizely.com/o/oauth2/v1/auth
scopes:
offline_access: Grants the ability to refresh access_token using the refresh token even when user is not present (not logged in).
openid: Grants the ability to receive a unique identifier for the user.
profile: Grants access to user profile information.
tokenUrl: https://accounts.cmp.optimizely.com/o/oauth2/v1/token
clientCredentials:
scopes: {}
tokenUrl: https://accounts.cmp.optimizely.com/o/oauth2/v1/token
type: oauth2
x-refined-from:
- newscred-cmp-open-api-openapi.json
- newscred-welcome-open-api-openapi.yml
x-tagGroups:
- name: API
tags:
- Uploader
- Library
- Labels
- Brand Compliance
- Tasks
- Task Step
- Campaigns
- Publishing
- Templates
- Users
- Work Requests
- Structured Contents
- Assets
- Milestones
- Teams
- Settings
- Workflows
- Fields
- Events