# Upload attachments for 10DLC campaign registration Uploads supporting documentation for 10DLC campaign registrations. Endpoint: POST /v1/projects/{projectId}/uploadCampaignFiles:submit Version: 1.0 Security: BasicAuth, OAuth2 ## Path parameters: - `projectId` (string, required) Sinch uses projects to group resources such as contacts and apps together to manage and connect a unique set of keys and secret IDs for all your Sinch API products. To identify a project, it is given a unique alphanumeric identifier that ties it to your account. Your project ID can be found in the Customer Dashboard. ## Request fields (application/json): - `campaignInternalId` (string, required) The campaign ID returned by the create campaign API endpoint. Example: "01k4cxccbt519xa3ejty1r5jb4" - `submitCampaign` (boolean, required) Set this property to false for all uploaded files except the final one, which will allow for uploading documents across multiple requests without submitting the campaign. For the last file, set it to true to indicate that the upload is complete and the campaign should be submitted for review. - `projectId` (string) The project ID to which the campaign belongs. Example: "0fc52975-636a-4700-8943-68759df5c9e1" - `file` (object) Files must be no larger than 10MB. For PRIVACY_POLICY, TERMS_AND_CONDITIONS, CALL_TO_ACTION, and OPT_IN file categories, the following file types are supported: jpg, jpeg, png, bmp, tiff, raw, pdf, rtf, xml, odt, docx, tml, txt For MMS file category, the following file types are supported: bmp, dib, gif, jpeg, jpg, m2a, m4a, m4b, m4p, m4r, m4v, mp1, mp2, mp3, mp4, mpa, oga, ogg, ogm, ogv, ogx, png, spx, txt, wav, webm There can be a maximum of 5 files submitted for MMS and a maximum of 5 files for the other categories. - `file.fileName` (string) The name of the file you want to upload. Example: "MyFile.txt" - `file.fileContent` (string) The content of the file encoded in base64. Example: "VGhpcyBpcyBhIHRlc3QgdGV4dCBmaWxlLg==" - `file.fileCategory` (integer) Represents the category or intended purpose of a file and used to classify uploaded files based on their content or function. Enum: 1, 2, 3, 4, 5 ## Response 200 fields (application/json): - `status` (string) Indicates whether the file upload was successful or not. Example: "success" - `message` (string) A message providing details if the file upload was not successful. Will be an empty string if the upload was successful. ## Response 400 fields (application/json): - `error` (object, required) - `error.code` (integer, required) The error code. Example: 400 - `error.message` (string, required) The error message. Example: "Invalid argument." - `error.status` (string) The status of the error. Example: "INVALID_ARGUMENT" - `error.details` (array) An array of objects describing the error in more detail, if applicable. - `error.details.type` (string) A more specific description of the error. Example: "BadRequest" - `error.details.resourceType` (string) The type of resource relevant to the error, if applicable. - `error.details.resourceName` (string) The name of the resource, if applicable. - `error.details.owner` (string) The owner of the resource, if applicable. - `error.details.description` (string) A description of the error, if applicable. - `error.details.fieldViolations` (array) An array of all the field violations which contributed to the error. - `error.details.fieldViolations.field` (string) The field which produced the error. Example: "order_by" - `error.details.fieldViolations.description` (string) The description of the error. Example: "Invalid `order_by` number." ## Response 404 fields (application/json): - `error` (object, required) - `error.code` (integer, required) The error code. Example: 400 - `error.message` (string, required) The error message. Example: "Invalid argument." - `error.status` (string) The status of the error. Example: "INVALID_ARGUMENT" - `error.details` (array) An array of objects describing the error in more detail, if applicable. - `error.details.type` (string) A more specific description of the error. Example: "BadRequest" - `error.details.resourceType` (string) The type of resource relevant to the error, if applicable. - `error.details.resourceName` (string) The name of the resource, if applicable. - `error.details.owner` (string) The owner of the resource, if applicable. - `error.details.description` (string) A description of the error, if applicable. - `error.details.fieldViolations` (array) An array of all the field violations which contributed to the error. - `error.details.fieldViolations.field` (string) The field which produced the error. Example: "order_by" - `error.details.fieldViolations.description` (string) The description of the error. Example: "Invalid `order_by` number." ## Response 429 fields (application/json): - `error` (object, required) - `error.code` (integer, required) The error code. Example: 400 - `error.message` (string, required) The error message. Example: "Invalid argument." - `error.status` (string) The status of the error. Example: "INVALID_ARGUMENT" - `error.details` (array) An array of objects describing the error in more detail, if applicable. - `error.details.type` (string) A more specific description of the error. Example: "BadRequest" - `error.details.resourceType` (string) The type of resource relevant to the error, if applicable. - `error.details.resourceName` (string) The name of the resource, if applicable. - `error.details.owner` (string) The owner of the resource, if applicable. - `error.details.description` (string) A description of the error, if applicable. - `error.details.fieldViolations` (array) An array of all the field violations which contributed to the error. - `error.details.fieldViolations.field` (string) The field which produced the error. Example: "order_by" - `error.details.fieldViolations.description` (string) The description of the error. Example: "Invalid `order_by` number." ## Response 500 fields (application/json): - `error` (object, required) - `error.code` (integer, required) The error code. Example: 400 - `error.message` (string, required) The error message. Example: "Invalid argument." - `error.status` (string) The status of the error. Example: "INVALID_ARGUMENT" - `error.details` (array) An array of objects describing the error in more detail, if applicable. - `error.details.type` (string) A more specific description of the error. Example: "BadRequest" - `error.details.resourceType` (string) The type of resource relevant to the error, if applicable. - `error.details.resourceName` (string) The name of the resource, if applicable. - `error.details.owner` (string) The owner of the resource, if applicable. - `error.details.description` (string) A description of the error, if applicable. - `error.details.fieldViolations` (array) An array of all the field violations which contributed to the error. - `error.details.fieldViolations.field` (string) The field which produced the error. Example: "order_by" - `error.details.fieldViolations.description` (string) The description of the error. Example: "Invalid `order_by` number."