openapi: 3.2.0 info: title: Sinch Brands API x-refined-note: - x-sinch-standards-version differs across the merged source definitions and was not carried version: '1.0' description: 'Operations tagged brands across 3 of this provider''s published API definitions: sinch-brands-api-openapi.yaml, sinch-compliance-brands-api-openapi.yaml, original-sinch-brands-openapi.yml. Each path carries the servers of the definition it was published in.' servers: - description: Production server url: https://brand.registrations.api.sinch.com - description: Production server. Data processed and stored within Europe. url: https://compliance.api.sinch.com - url: https://brands.api.sinch.com description: Global Production Server tags: - description: Create and manage Customer Brands name: Brands x-displayName: Brands paths: /v1/projects/{projectId}/brands: post: description: The endpoint creates a new brand for the specified project in draft status. Drafts are not validated against the brand type format, this is done at submission. A brand in draft status is editable. operationId: createBrand parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Brand' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Brand' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/RestError' description: 'BAD_REQUEST: Any validation error' '404': content: application/json: schema: $ref: '#/components/schemas/RestError' description: 'NOT_FOUND: The project id introduced does not exist.' '500': content: application/json: schema: $ref: '#/components/schemas/RestError' description: 'INTERNAL: Internal server error. Typically, a server bug.' security: - OAuth2: - write summary: Create a brand tags: - Brands get: description: The endpoint receives as path param project id. If the project exists, the list of brands for the project is returned. Additional filters can be applied as query params. By default, ARCHIVED brands are not returned. To include them, the status filter must be used. operationId: listBrands parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string - in: query description: The brand status to filter the brands. name: status required: false schema: type: array items: $ref: '#/components/schemas/BrandStatus' - in: query description: The brand metadata type to filter the brands name: brandType required: false schema: $ref: '#/components/schemas/BrandType' - in: query name: orderBy description: 'Ordering of the results: field name with an optional order separated by a comma. Fields that support ordering are ''brandName'', ''status'', ''createTime'', ''updateTime'' with possible ordering ''desc'' or ''asc''' schema: type: string example: brandName,asc - in: query name: pageSize description: Size of the page to be returned. schema: format: int32 type: integer example: 100 - in: query name: pageToken description: Page token to request subsequent pages when using pagination. This should be the value generated by the system in a previous list request. schema: type: string - in: query name: brandName description: Filter brands by brand name. schema: type: string responses: '200': content: application/json: schema: type: array items: $ref: '#/components/schemas/ListBrandResponse' description: OK '404': content: application/json: schema: $ref: '#/components/schemas/RestError' description: 'NOT_FOUND: The project id introduced does not exist.' '500': content: application/json: schema: $ref: '#/components/schemas/RestError' description: 'INTERNAL: Internal server error. Typically, a server bug.' security: - OAuth2: - read summary: List brands for a project tags: - Brands servers: - description: Production server url: https://brand.registrations.api.sinch.com /v1/projects/{projectId}/brands/{brandId}: get: description: The endpoint receives as path param project id and brand id. If the project and brand exist, the details of the brand are returned. operationId: getBrand parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string - in: path description: Customer's brand id name: brandId required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/Brand' description: OK '404': content: application/json: schema: $ref: '#/components/schemas/RestError' description: 'NOT_FOUND: The project or brand id introduced does not exist.' '500': content: application/json: schema: $ref: '#/components/schemas/RestError' description: 'INTERNAL: Internal server error. Typically, a server bug.' security: - OAuth2: - read summary: Get a brand by project and brand id tags: - Brands delete: description: The endpoint receives as path param project id and brand id. If the project and brand exist, the brand is deleted. operationId: deleteBrand parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string - in: path description: Customer's brand id name: brandId required: true schema: type: string responses: '200': content: {} description: OK '404': content: application/json: schema: $ref: '#/components/schemas/RestError' description: 'NOT_FOUND: The project or brand id introduced does not exist.' '500': content: application/json: schema: $ref: '#/components/schemas/RestError' description: 'INTERNAL: Internal server error. Typically, a server bug.' security: - OAuth2: - write summary: Delete a brand by project and brand id tags: - Brands put: description: The endpoint receives as path param project id and brand id. If the project and brand exist, the brand is updated. Only NEW and PENDING_REVIEW brands can be updated. operationId: updateBrand parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string - in: path description: Customer's brand id name: brandId required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/BrandUpdateRequest' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Brand' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/RestError' description: 'BAD_REQUEST: Any validation error' '404': content: application/json: schema: $ref: '#/components/schemas/RestError' description: 'NOT_FOUND: The project or brand id introduced does not exist.' '500': content: application/json: schema: $ref: '#/components/schemas/RestError' description: 'INTERNAL: Internal server error. Typically, a server bug.' security: - OAuth2: - write summary: Update a brand by project and brand id tags: - Brands servers: - description: Production server url: https://brand.registrations.api.sinch.com /v1/projects/{projectId}/brands/{brandId}:submit: post: description: The endpoint submit the brand for validation. The brand must be in DRAFT or INCOMPLETE status. The brand is validated against the brand type format and the status is updated accordingly (PENDING_REVIEW from INCOMPLETE, NEW from DRAFT). operationId: submitBrand parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string - in: path description: Customer's brand id name: brandId required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/Brand' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/RestError' description: 'BAD_REQUEST: Any validation error' '404': content: application/json: schema: $ref: '#/components/schemas/RestError' description: 'NOT_FOUND: The project id introduced does not exist.' '500': content: application/json: schema: $ref: '#/components/schemas/RestError' description: 'INTERNAL: Internal server error. Typically, a server bug.' security: - OAuth2: - write summary: Submit a brand tags: - Brands callbacks: Brand Status Update: '{$request.body#/callbackUrl}': post: description: The endpoint receives a callback when the brand status is updated. To receive callback notifications, the customer must provide a callback URL in the create Brand request body. The callback URL must be a valid URL and must be reachable from Sinch. Read brands callback configuration documentation for more details. summary: Callback for brand status update requestBody: content: application/json: schema: $ref: '#/components/schemas/CallbackEventBody' responses: '200': description: OK 4XX: description: Customer has refused callback event for any reason. security: - hmacAuth: [] servers: - description: Production server url: https://brand.registrations.api.sinch.com /v1/projects/{projectId}/brands:submit: post: description: The endpoint creates and submits a new brand for the specified project in new status. The brand is validated against the brand type format. operationId: createAndSubmitBrand parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Brand' required: true responses: '200': description: Brand created and submitted successfully content: application/json: schema: $ref: '#/components/schemas/Brand' '400': content: application/json: schema: $ref: '#/components/schemas/RestError' description: 'BAD_REQUEST: Brand validation error' '500': content: application/json: schema: $ref: '#/components/schemas/RestError' description: 'INTERNAL: Internal server error. Typically, a server bug.' security: - OAuth2: - write summary: Create and submit a brand tags: - Brands servers: - description: Production server url: https://brand.registrations.api.sinch.com /v1/projects/{projectId}/brand-metadata: get: description: Given a brand type in a query param, this endpoint returns the metadata required to build the brand registration form. The metadata is based on different brand categories that contain different set of attributes. Each attribute comes with its own set of validation rules. operationId: getBrandMetadata parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string - in: query description: The brand type for which the metadata is requested. name: brandType required: true schema: $ref: '#/components/schemas/BrandType' responses: '200': description: Successfully retrieved Brand Metadata content: application/json: schema: $ref: '#/components/schemas/BrandMetadata' '404': content: application/json: schema: $ref: '#/components/schemas/RestError' description: 'NOT_FOUND: Brand Metadata type not found' '500': content: application/json: schema: $ref: '#/components/schemas/RestError' description: 'INTERNAL: Internal server error. Typically, a server bug.' security: - OAuth2: - read summary: Get brand metadata tags: - Brands servers: - description: Production server url: https://brand.registrations.api.sinch.com /v1/projects/{projectId}/us/brands: post: x-sinch-stability: preview description: 'Creates a new Draft Brand in US with the request data. Note: The `Idempotency-Key` header is not supported in this version. Submitting the same request twice may create duplicate resources. Callers are responsible for deduplicating on their end. Idempotency-Key support will be added when this operation reaches Stable stability.' operationId: postV1ProjectsByProjectIdUsBrands parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string requestBody: required: true description: Brand object to be created. The request body must include all the required fields for the brand creation, as well as the optional field contentProvider that indicates whether the brand is a Content Provider or a standard Brand. Depending on the value of this field, the brand will follow different registration processes and will have access to different types of orders and products. content: application/json: schema: $ref: '#/components/schemas/CreateBrandRequest' responses: '201': description: Brand created successfully. content: application/json: schema: $ref: '#/components/schemas/Brand_2' example: brandId: b1c7ccbf-919d-462f-8587-dec95a1b11ee displayName: Alpha Adventures Corp. status: DRAFT legalCompanyName: Alpha Adventures Corp. entityType: CORPORATION verticalType: RETAIL country: US street: 129 MacDougal Street, Manhattan city: New York state: New York zip: '10012' taxCountry: US federalTaxId: '123456789' website: https://www.alphaadventures.com companyEmail: contact@alphaadventures.com contactEmail: contact@alphaadventures.com contentProvider: false channels: [] attachments: [] logs: [] createTime: '2024-01-15T10:00:00Z' updateTime: '2024-01-15T10:00:00Z' '400': content: application/problem+json: schema: $ref: '#/components/schemas/RestError_2' description: 'BAD_REQUEST: Any validation error' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': content: application/problem+json: schema: $ref: '#/components/schemas/RestError_2' description: 'NOT_FOUND: The project id introduced does not exist.' '429': $ref: '#/components/responses/TooManyRequests' '500': content: application/problem+json: schema: $ref: '#/components/schemas/RestError_2' description: 'INTERNAL: Internal server error. Typically, a server bug.' security: - OAuth2: - write summary: Creates a new Draft Brand in US with the request data tags: - Brands x-operation-id-source: normalized x-operation-id-original: createBrand get: x-sinch-stability: preview description: List existing brands according to the specified filters. operationId: getV1ProjectsByProjectIdUsBrands parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string - in: query description: The brand status to filter the brands. name: status required: false schema: type: array items: $ref: '#/components/schemas/BrandStatus_2' - in: query name: displayName description: Filter brands by brand name. schema: type: string - in: query description: Filter by specific channel available. name: channelName required: false schema: $ref: '#/components/schemas/Channel' - in: query name: contentProvider description: Optional boolean flag to filter by content provider. If true, it returns content providers. If false, it returns standard brands. Default is false. schema: type: boolean default: false - in: query name: thirdPartyMetadataId description: Filter brands by an external system's identifier, such as a 10DLC or US Short Code Registry brand ID. Matches against the `value` of any `thirdPartyMetadata` entry (see the `ThirdPartyElement` schema) on any of the brand's registration processes, regardless of which `name` (e.g. `TCR_BRAND_ID`, `gch_brand_id`) it was stored under. schema: type: string - in: query name: sort description: 'Sorting of the results using SQL-like syntax: comma-separated field names with an optional '':desc'' or '':asc'' suffix. Fields that support sorting are ''displayName'', ''status'', ''createTime'', ''updateTime''. Defaults to ascending order when no suffix is provided.' schema: type: string example: displayName,status:desc - in: query name: pageSize description: Size of the page to be returned. Default is 20. Maximum is 100. schema: format: int32 type: integer minimum: 1 maximum: 100 default: 20 example: 20 - in: query name: pageToken description: Page token to request subsequent pages when using pagination. This should be the value generated by the system in a previous list request. schema: type: string responses: '200': description: OK headers: Link: description: Pagination links per RFC 8288. A `rel="next"` link is present when there are more results. Absence of a `next` link indicates the last page. schema: type: string example: ; rel="next" content: application/json: schema: $ref: '#/components/schemas/ListBrandResponse_2' example: brands: - brandId: b1c7ccbf-919d-462f-8587-dec95a1b11ee displayName: Alpha Adventures Corp. status: DRAFT channels: [] createTime: '2024-01-15T10:00:00Z' updateTime: '2024-01-15T10:00:00Z' links: next: https://compliance.api.sinch.com/v1/projects/proj-123/us/brands?pageToken=eyJsYXN0SWQiOiJiMWM3Y2NiZiJ9 meta: totalCount: 42 '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': content: application/problem+json: schema: $ref: '#/components/schemas/RestError_2' description: 'NOT_FOUND: The project id introduced does not exist.' '429': $ref: '#/components/responses/TooManyRequests' '500': content: application/problem+json: schema: $ref: '#/components/schemas/RestError_2' description: 'INTERNAL: Internal server error. Typically, a server bug.' security: - OAuth2: - read summary: List brands for a project tags: - Brands x-operation-id-source: normalized x-operation-id-original: listBrands servers: - description: Production server. Data processed and stored within Europe. url: https://compliance.api.sinch.com /v1/projects/{projectId}/us/brands/import: post: x-sinch-stability: preview description: 'This endpoint allows you to import a brand that has already been registered through another reseller or directly by the end-customer, enabling you to manage it through your account. To initiate the transfer, you must specify one of the available import options (IMPORT_TCR_BRAND or IMPORT_GCH_BRAND) and provide the brand''s unique ID from its original registry. Upon receiving the request, the system will copy the brand''s information from the source and create an import order that includes all existing third-party metadata from the original registration. Depending on the brand''s original registry, an email will be sent to the brand''s registered contact address to approve or deny the import request. Please note that an imported brand cannot be directly modified or updated through our system. For example, a brand imported via IMPORT_GCH_BRAND cannot have its Short Code registration details changed, although it can be extended for other services like 10DLC if required. All maintenance and update operations for the brand remain the responsibility of the original register.' operationId: importBrand parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string requestBody: required: true description: Import Brand request body. It includes the import option to be used and the unique identifier of the brand in its original registry. Depending on the import option selected, the required identifier will differ, for IMPORT_TCR_BRAND, the required identifier is the 10DLC Brand ID; for IMPORT_GCH_BRAND, the required identifier is the US Short Code Registry Account ID. content: application/json: schema: $ref: '#/components/schemas/ImportBrandRequest' responses: '201': description: Brand import initiated successfully. content: application/json: schema: $ref: '#/components/schemas/ImportBrandResponse' example: brandId: b1c7ccbf-919d-462f-8587-dec95a1b11ee brandOrderId: '212421442412' brandOwnerContactEmail: jo***@alphaadventures.com '400': content: application/problem+json: schema: $ref: '#/components/schemas/RestError_2' description: 'BAD_REQUEST: Any validation error' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': content: application/problem+json: schema: $ref: '#/components/schemas/RestError_2' description: 'NOT_FOUND: The project id introduced does not exist.' '429': $ref: '#/components/responses/TooManyRequests' '500': content: application/problem+json: schema: $ref: '#/components/schemas/RestError_2' description: 'INTERNAL: Internal server error. Typically, a server bug.' security: - OAuth2: - write summary: Imports an existing Brand in US tags: - Brands servers: - description: Production server. Data processed and stored within Europe. url: https://compliance.api.sinch.com /v1/projects/{projectId}/us/brands/{brandId}: get: x-sinch-stability: preview description: The endpoint receives as path param project id and brand id. If the project and brand exist, the details of the brand are returned. operationId: getV1ProjectsByProjectIdUsBrandsByBrandId parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string - in: path description: Customer's brand id name: brandId required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/Brand_2' example: brandId: b1c7ccbf-919d-462f-8587-dec95a1b11ee displayName: Alpha Adventures Corp. status: DRAFT legalCompanyName: Alpha Adventures Corp. entityType: CORPORATION verticalType: RETAIL country: US street: 129 MacDougal Street, Manhattan city: New York state: New York zip: '10012' taxCountry: US federalTaxId: '123456789' website: https://www.alphaadventures.com companyEmail: contact@alphaadventures.com contactEmail: contact@alphaadventures.com contentProvider: false channels: [] attachments: [] logs: [] createTime: '2024-01-15T10:00:00Z' updateTime: '2024-01-15T10:00:00Z' description: OK '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': content: application/problem+json: schema: $ref: '#/components/schemas/RestError_2' description: 'NOT_FOUND: The project or brand id introduced does not exist.' '429': $ref: '#/components/responses/TooManyRequests' '500': content: application/problem+json: schema: $ref: '#/components/schemas/RestError_2' description: 'INTERNAL: Internal server error. Typically, a server bug.' security: - OAuth2: - read summary: Get a brand by project and brand id tags: - Brands x-operation-id-source: normalized x-operation-id-original: getBrand delete: x-sinch-stability: preview description: The endpoint receives as path param project id and brand id. If the project and brand exist, the brand is deleted. operationId: deleteV1ProjectsByProjectIdUsBrandsByBrandId parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string - in: path description: Customer's brand id name: brandId required: true schema: type: string responses: '204': description: Brand deleted successfully. No content is returned. '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': content: application/problem+json: schema: $ref: '#/components/schemas/RestError_2' description: 'NOT_FOUND: The project or brand id introduced does not exist.' '429': $ref: '#/components/responses/TooManyRequests' '500': content: application/problem+json: schema: $ref: '#/components/schemas/RestError_2' description: 'INTERNAL: Internal server error. Typically, a server bug.' security: - OAuth2: - write summary: Delete a brand by project and brand id tags: - Brands x-operation-id-source: normalized x-operation-id-original: deleteBrand patch: x-sinch-stability: preview description: Patches an existing brand. Fields omitted from the request body are unchanged. Fields set to `null` are treated as an explicit request to clear the field; if a field does not support clearing, the request will fail with 400. operationId: patchBrand parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string - in: path description: Brand Id name: brandId required: true schema: type: string requestBody: required: true description: Brand object to be updated. The request body can include any subset of the fields required for the brand creation. Only the fields included in the request body with a non-null value will be updated, while the rest of the fields will remain unchanged. This method allows partial updates to the brand properties without the need to provide all the details as in the case of a full update. About attachments, the patch endpoint will not delete any existing attachments, and will include the new ones. content: application/json: schema: $ref: '#/components/schemas/PatchBrandRequest' responses: '200': description: Brand Content OK content: application/json: schema: $ref: '#/components/schemas/Brand_2' example: brandId: b1c7ccbf-919d-462f-8587-dec95a1b11ee displayName: Alpha Adventures Corp. status: DRAFT legalCompanyName: Alpha Adventures Corp. entityType: CORPORATION verticalType: RETAIL country: US street: 129 MacDougal Street, Manhattan city: New York state: New York zip: '10012' taxCountry: US federalTaxId: '123456789' website: https://www.alphaadventures.com companyEmail: contact@alphaadventures.com contactEmail: contact@alphaadventures.com contentProvider: false channels: [] attachments: [] logs: [] createTime: '2024-01-15T10:00:00Z' updateTime: '2024-01-15T10:00:00Z' '400': content: application/problem+json: schema: $ref: '#/components/schemas/RestError_2' description: 'BAD_REQUEST: Any validation error' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': content: application/problem+json: schema: $ref: '#/components/schemas/RestError_2' description: 'NOT_FOUND: The project id introduced does not exist.' '429': $ref: '#/components/responses/TooManyRequests' '500': content: application/problem+json: schema: $ref: '#/components/schemas/RestError_2' description: 'INTERNAL: Internal server error. Typically, a server bug.' security: - OAuth2: - write summary: Patches an existing Brand in US with the request data tags: - Brands servers: - description: Production server. Data processed and stored within Europe. url: https://compliance.api.sinch.com /v1/projects/{projectId}/us/brands/{brandId}/attachments: post: x-sinch-stability: preview description: Upload an attachment to be linked to a brand. operationId: uploadBrandAttachment parameters: - description: Customer's project id in: path name: projectId required: true schema: examples: - eeew32344324edewe2e3 type: string - in: path description: Customer's brand id name: brandId required: true schema: type: string requestBody: required: true content: multipart/form-data: schema: type: object required: - file - attachmentType properties: file: type: string format: binary examples: - file.txt description: File content body attachmentType: $ref: '#/components/schemas/AttachmentType' description: File content body responses: '201': content: application/json: schema: $ref: '#/components/schemas/Attachment' example: attachmentId: d1c7ccbf-919d-462f-8587-dec95a1b11ee fileName: company_logo.png attachmentType: COMPANY_LOGO mimeType: image/png uploadStatus: COMPLETED createTime: '2024-01-15T10:00:00Z' updateTime: '2024-01-15T10:00:00Z' description: Attachment uploaded successfully. '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': content: application/problem+json: schema: $ref: '#/components/schemas/RestError_2' description: 'NOT_FOUND: Brand ID not found' '429': $ref: '#/components/responses/TooManyRequests' '500': content: application/problem+json: schema: $ref: '#/components/schemas/RestError_2' description: 'INTERNAL: Internal server error. Typically, a server bug.' security: - OAuth2: - write summary: Uploads an attachment to be linked to a brand. tags: - Brands servers: - description: Production server. Data processed and stored within Europe. url: https://compliance.api.sinch.com /v1/projects/{projectId}/us/brands/{brandId}/attachments/{attachmentId}: get: x-sinch-stability: preview description: Download Brand Attachment. operationId: downloadBrandAttachment parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string - in: path description: Customer's brand id name: brandId required: true schema: type: string - in: path description: Attachment ID name: attachmentId required: true schema: type: string responses: '200': content: application/octet-stream: schema: format: binary type: string description: Request Successful with binary file returned in octet stream '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': content: application/problem+json: schema: $ref: '#/components/schemas/RestError_2' description: 'NOT_FOUND: Brand ID/Attachment ID not found' '429': $ref: '#/components/responses/TooManyRequests' '500': content: application/problem+json: schema: $ref: '#/components/schemas/RestError_2' description: 'INTERNAL: Internal server error. Typically, a server bug.' security: - OAuth2: - read summary: Download brand attachment tags: - Brands delete: x-sinch-stability: preview description: Delete a Brand attachment. operationId: deleteBrandAttachment parameters: - in: path description: Customer's project id name: projectId required: true schema: type: string - in: path description: Brand ID name: brandId required: true schema: type: string - in: path description: Attachment ID name: attachmentId required: true schema: type: string responses: '204': description: Resource successfully deleted. No content is returned. '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': content: application/problem+json: schema: $ref: '#/components/schemas/RestError_2' description: 'NOT_FOUND: Brand ID/Attachment ID not found' '429': $ref: '#/components/responses/TooManyRequests' '500': content: application/problem+json: schema: $ref: '#/components/schemas/RestError_2' description: 'INTERNAL: Internal server error. Typically, a server bug.' security: - OAuth2: - write summary: Delete Brand Attachment tags: - Brands servers: - description: Production server. Data processed and stored within Europe. url: https://compliance.api.sinch.com /v1/projects/{project_id}/brands: get: operationId: getV1ProjectsByProjectIdBrands summary: List Brands description: Returns a list of all brand profiles in the project with pagination support. tags: - Brands parameters: - $ref: '#/components/parameters/ProjectId' - name: pageSize in: query description: Number of results per page schema: type: integer default: 20 - name: pageToken in: query description: Pagination token schema: type: string responses: '200': description: List of brands content: application/json: schema: $ref: '#/components/schemas/BrandList' '401': description: Unauthorized security: - bearerAuth: [] x-operation-id-source: normalized x-operation-id-original: listBrands post: operationId: postV1ProjectsByProjectIdBrands summary: Create a Brand description: Creates a new brand profile with business identity information including name, address, industry, and contact details. tags: - Brands parameters: - $ref: '#/components/parameters/ProjectId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateBrandRequest_2' responses: '200': description: Brand created content: application/json: schema: $ref: '#/components/schemas/Brand_3' '400': description: Invalid request '401': description: Unauthorized security: - bearerAuth: [] x-operation-id-source: normalized x-operation-id-original: createBrand servers: - url: https://brands.api.sinch.com description: Global Production Server /v1/projects/{project_id}/brands:submit: post: operationId: postV1ProjectsByProjectIdBrands:submit summary: Create and Submit a Brand description: Creates a new brand profile and immediately submits it for verification in a single operation. tags: - Brands parameters: - $ref: '#/components/parameters/ProjectId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateBrandRequest_2' responses: '200': description: Brand created and submitted content: application/json: schema: $ref: '#/components/schemas/Brand_3' '400': description: Invalid request '401': description: Unauthorized security: - bearerAuth: [] x-operation-id-source: normalized x-operation-id-original: createAndSubmitBrand servers: - url: https://brands.api.sinch.com description: Global Production Server /v1/projects/{project_id}/brands/{brand_id}: get: operationId: getV1ProjectsByProjectIdBrandsByBrandId summary: Get a Brand description: Returns the details of a specific brand profile including its verification status. tags: - Brands parameters: - $ref: '#/components/parameters/ProjectId' - $ref: '#/components/parameters/BrandId' responses: '200': description: Brand details content: application/json: schema: $ref: '#/components/schemas/Brand_3' '401': description: Unauthorized '404': description: Brand not found security: - bearerAuth: [] x-operation-id-source: normalized x-operation-id-original: getBrand put: operationId: putV1ProjectsByProjectIdBrandsByBrandId summary: Update a Brand description: Updates the details of an existing brand profile. tags: - Brands parameters: - $ref: '#/components/parameters/ProjectId' - $ref: '#/components/parameters/BrandId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateBrandRequest' responses: '200': description: Brand updated content: application/json: schema: $ref: '#/components/schemas/Brand_3' '401': description: Unauthorized '404': description: Brand not found security: - bearerAuth: [] x-operation-id-source: normalized x-operation-id-original: updateBrand delete: operationId: deleteV1ProjectsByProjectIdBrandsByBrandId summary: Delete a Brand description: Deletes a specific brand profile from the project. tags: - Brands parameters: - $ref: '#/components/parameters/ProjectId' - $ref: '#/components/parameters/BrandId' responses: '200': description: Brand deleted '401': description: Unauthorized '404': description: Brand not found security: - bearerAuth: [] x-operation-id-source: normalized x-operation-id-original: deleteBrand servers: - url: https://brands.api.sinch.com description: Global Production Server /v1/projects/{project_id}/brands/{brand_id}:submit: post: operationId: postV1ProjectsByProjectIdBrands{brandId}:submit summary: Submit a Brand for Verification description: Submits an existing brand profile for verification. Once submitted, the brand enters the review process. tags: - Brands parameters: - $ref: '#/components/parameters/ProjectId' - $ref: '#/components/parameters/BrandId' responses: '200': description: Brand submitted content: application/json: schema: $ref: '#/components/schemas/Brand_3' '401': description: Unauthorized '404': description: Brand not found security: - bearerAuth: [] x-operation-id-source: normalized x-operation-id-original: submitBrand servers: - url: https://brands.api.sinch.com description: Global Production Server components: schemas: BrandType: enum: - US_SHORT_CODE_REGISTRY x-enumDescriptions: US_SHORT_CODE_REGISTRY: US Short Code Registry, for US Short Code Campaigns. type: string format: enum example: US_SHORT_CODE_REGISTRY FieldViolation: type: object properties: field: type: string description: The field that contains the error example: brandName description: type: string example: Brand name already exists for this brand type description: A field violation error that contains the field name, reason and value that caused the error. Brand: description: The brand object that contains the brand details. properties: brandId: description: The unique identifier for the brand. example: '1234567890' type: string readOnly: true brandName: description: The name of the brand. example: My End Customer Brand Name type: string brandMetadataId: description: The unique identifier for the brand metadata. example: '4444444444' type: string status: type: object readOnly: true allOf: - $ref: '#/components/schemas/BrandStatus' data: description: The list of categories included in the brand metadata. Each of them includes a list of attributes. items: $ref: '#/components/schemas/BrandCategory' type: array logs: description: The list of logs related to the brand. items: $ref: '#/components/schemas/BrandLog' type: array readOnly: true callbackUrl: description: The URL to receive the brand status update callback. The URL must be a valid URL and must be reachable from Sinch. example: https://example.com/callback type: string createTime: description: The date and time when the brand was created. example: '2023-10-01 12:00:00+00:00' type: string format: date-time readOnly: true updateTime: description: The date and time when the brand was updated. example: '2023-10-01 12:00:00+00:00' type: string format: date-time readOnly: true type: object NotFoundDetails: type: object properties: type: type: string description: For not found details. enum: - ResourceInfo x-enumDescriptions: ResourceInfo: Value indicate it is related to a NotFound error example: ResourceInfo resourceType: type: string description: The type of the resource that was not found. Brand, Project, BrandType, etc. example: Brand resourceName: type: string description: Corresponds to the unique identifier of the resource that was not found. example: '1234567890' description: type: string description: A human-readable description of the error. example: The brand with the specified ID was not found. BrandMetadata: description: The metadata required to build the brand registration form. properties: brandMetadataId: description: The unique identifier for the brand metadata. example: '4444444444' type: string brandType: $ref: '#/components/schemas/BrandType' marketCode: description: The market code for the brand metadata type. example: US type: string majorVersion: description: The major version of the brand metadata type. example: 1 type: integer minorVersion: description: The minor version of the brand metadata type. example: 0 type: integer createTime: description: The date and time when the brand metadata was created. example: '2023-10-01 12:00:00+00:00' type: string format: date-time data: description: The list of categories included in the brand metadata. Each of them includes a list of attributes. items: $ref: '#/components/schemas/BrandMetadataCategory' type: array BrandMetadataCategory: description: A category of data that contains a set of attributes and validation rules. properties: categoryType: description: Category type example: BRAND_CLIENT_ADDRESS type: string title: description: Title is useful to display the category in the UI. example: Address Information type: string attributes: description: The list of attributes included in the category. items: $ref: '#/components/schemas/BrandMetadataCategoryAttribute' type: array CallbackEventBody: description: The body of the callback event. properties: eventId: description: The ID of the event. example: ee34ccbf-919d-462f-8587-dec95a1b11ee type: string eventType: description: The type of the event. Possible values are BRAND_STATUS_UPDATE. enum: - BRAND_STATUS_UPDATE x-enumDescriptions: BRAND_STATUS_UPDATE: Brand status update event. example: BRAND_STATUS_UPDATE type: string projectId: description: The ID of the project to which the event belongs. example: aad4ccbf-919d-462f-8587-dec95a1b11b0 type: string resourceId: description: Corresponds to the brand id the event belongs to. example: aad4ccbf-919d-462f-8587-dec953242342 type: string resourceType: description: The type of the brand metadata. Possible values are US_SHORT_CODE_REGISTRY. enum: - US_SHORT_CODE_REGISTRY x-enumDescriptions: US_SHORT_CODE_REGISTRY: Brand metadata type for US Short Code Registry. example: US_SHORT_CODE_REGISTRY type: string status: $ref: '#/components/schemas/BrandStatus' comments: description: Comments related to the brand status update. For instance, an incomplete brand status update can include the reason why the brand is incomplete, or the fields that must be updated. example: Brand is incomplete. Please update the address field. type: string createTime: description: The date and time when the event was created. example: '2023-10-01 12:00:00+00:00' type: string format: date-time type: object BrandCategory: description: The list of attributes included in the category. Each key is the name of the attribute in the metadata endpoint response and the value is the value of the attribute assigned by the customer. Json format is '{key:value, key:value}' with types like string, integer or boolean. type: object additionalProperties: oneOf: - type: string - type: integer - type: boolean example: companyName: My Company Name website: https://www.mycompany.com employeeCount: 150 isPublic: false BrandMetadataCategoryAttribute: description: An attribute of a category that contains a set of validation rules. properties: description: description: Attribute description. It should be used as a description, hoover or helping text in a UI. example: Street Address must be a valid address in United States. type: string title: description: Title of the attribute that can be used in the UI to request the attribute field. example: Address Line 1 type: string required: description: Indicates whether the attribute is required or not. example: true type: boolean type: description: The type of the attribute. example: string type: string maxLength: description: Max length of text field example: 11 type: integer minLength: description: Min length of text field example: 3 type: integer name: description: Name of the field. Serves as a key (reference) to a field example: address1 type: string pattern: description: Regex pattern validation example: ^[+][0-9]+$ type: string message: description: Pattern validation message properties: pattern: description: Pattern validation message example: The number needs to start with country code. For example +1 type: string maxLength: description: Max length of the field value example: Address value length must be less than 100 characters type: string minLength: description: Min length of the field value example: Address value length must be greater than 3 characters type: string minItems: description: The minimum number of items in the array that must be selected. Used in array types. example: You must select at least 1 item from the list type: string items: description: Some attributes can be an array of items. This field is used to define the values the customer can select. properties: type: description: The type of the attribute. Along with the type, api can provide a set of values under enum property example: string type: string enum: description: The list of possible values for the attribute. items: type: string example: - value1 - value2 type: array type: object minItems: description: The minimum number of items in the array that must be selected. Used in array types. example: 1 type: integer multiline: description: Indicates whether the attribute is a multiline text field or not. example: true type: boolean type: object InternalRestError: properties: code: format: int32 type: integer example: 400 details: items: $ref: '#/components/schemas/ErrorDetails' type: array message: type: string example: Brand Name already exists for this brand type status: type: string enum: - INVALID_ARGUMENT - UNKNOWN - NOT_FOUND - UNAUTHENTICATED - FAILED_PRECONDITION - ALREADY_EXISTS x-enumDescriptions: INVALID_ARGUMENT: The request was invalid or cannot be served. This can happen if the request body is malformed, or if a required field is missing. Expected on 400 error code. UNKNOWN: An unknown error occurred. This can happen if the server encountered an unexpected condition that. NOT_FOUND: The requested resource was not found. This can happen if the resource does not exist or if the resource ID is incorrect. UNAUTHENTICATED: The request is not authenticated. This can happen if the request does not include a valid authentication token. ALREADY_EXISTS: The resource already exists. This can happen if the request tries to create a resource that already exists. FAILED_PRECONDITION: The request cannot be served due to a failed precondition. This can happen if the request is not valid for the current state of the resource. example: INVALID_ARGUMENT type: object BrandStatus: enum: - DRAFT - NEW - PENDING - PENDING_REVIEW - REJECTED - INCOMPLETE - COMPLETED - ARCHIVED x-enumDescriptions: DRAFT: The brand is in draft status. It can be updated and submitted for validation. NEW: A new brand created, not processed yet. PENDING: The brand info is under review. PENDING_REVIEW: When a brand is in incomplete status, customer can update the brand. Updating the brand moves the brand to PENDING_REVIEW state, what means that is waiting for another review after the customer changes. REJECTED: The brand has been rejected. INCOMPLETE: The brand is incomplete. The customer can update the brand to complete it. COMPLETED: The brand validation has been completed and the brand is approved for integration against the brand type specification. ARCHIVED: The brand is archived after a cancellation. It can not be updated or submitted for validation. type: string format: enum example: INCOMPLETE ErrorDetails: type: object oneOf: - $ref: '#/components/schemas/NotFoundDetails' - $ref: '#/components/schemas/InvalidRequestDetails' discriminator: propertyName: type mapping: ResourceInfo: '#/components/schemas/NotFoundDetails' BadRequest: '#/components/schemas/InvalidRequestDetails' BrandUpdateRequest: description: Brand Update Request properties: brandName: description: The name of the brand. example: My End Customer Brand Name type: string data: description: The list of categories included in the brand metadata. Each of them includes a list of attributes. items: $ref: '#/components/schemas/BrandCategory' type: array callbackUrl: description: The URL to receive the brand status update callback. The URL must be a valid URL and must be reachable from Sinch. example: https://example.com/callback type: string format: uri type: object BrandLog: description: The log object that contains the brand status change details. properties: status: $ref: '#/components/schemas/BrandStatus' createTime: description: The date and time when the brand status was changed. example: '2023-10-01 12:00:00+00:00' type: string format: date-time comment: description: The message related to the brand status change. example: Brand created successfully. type: string author: description: Author. It can be either a customer or an agent. enum: - CUSTOMER - AGENT x-enumDescriptions: CUSTOMER: Customer AGENT: Agent example: CUSTOMER format: enum type: string type: object InvalidRequestDetails: type: object description: this body is expected when invalid argument, failed precondition or already exists error occurs. properties: type: type: string description: For invalid arguments details, this value is always BadRequest. example: BadRequest enum: - BadRequest x-enumDescriptions: BadRequest: Value indicate it is related to a InvalidRequest error fieldViolations: items: $ref: '#/components/schemas/FieldViolation' type: array BasicBrand: description: Basic brand content used for listing brands matching the search criteria. properties: brandId: description: The unique identifier for the brand. example: '1234567890' type: string readOnly: true brandName: description: The name of the brand. example: My End Customer Brand Name type: string brandMetadataId: description: The unique identifier for the brand metadata. example: '4444444444' type: string status: type: object readOnly: true allOf: - $ref: '#/components/schemas/BrandStatus' callbackUrl: description: The URL to receive the brand status update callback. The URL must be a valid URL and must be reachable from Sinch. example: https://example.com/callback type: string createTime: description: The date and time when the brand was created. example: '2023-10-01 12:00:00+00:00' type: string format: date-time readOnly: true updateTime: description: The date and time when the brand was updated. example: '2023-10-01 12:00:00+00:00' type: string format: date-time readOnly: true type: object RestError: properties: error: $ref: '#/components/schemas/InternalRestError' type: object ListBrandResponse: description: List of brands object properties: brands: description: List of brands items: $ref: '#/components/schemas/BasicBrand' type: array nextPageToken: description: Token to request the next page of results. type: string totalSize: description: Total count of brands matching provided search criteria format: int32 type: integer type: object CreateBrandRequest: description: Request body for creating a new Draft Brand. type: object allOf: - $ref: '#/components/schemas/BrandProperties' - if: properties: scType: const: VANITY required: - scType then: required: - scText properties: scText: $ref: '#/components/schemas/BrandProperties/properties/scText' - type: object required: - displayName properties: contentProvider: type: boolean description: Indicates whether the brand is a Content Provider (true) or a standard Brand (false). This choice determines the types of orders that can be requested, as they follow different registration processes and are available for different products. examples: - true attachmentInputs: description: Attachments can be added by url or using the specified endpoint. Only the latest version of each attachment type is kept per Brand. items: $ref: '#/components/schemas/AttachmentInput' type: array AttachmentType: description: Attachment type enum: - COMPANY_BANNER - COMPANY_LOGO x-enum-varnames: - COMPANY_BANNER - COMPANY_LOGO x-enumDescriptions: COMPANY_BANNER: Banner attachment COMPANY_LOGO: Logo attachment examples: - COMPANY_BANNER type: string AttachmentInput: description: Attachment input when creating/updating a brand. Attachments can be added by url or using the specified endpoint. Only the latest version of each attachment type is kept per Brand. type: object properties: fileName: description: Human readable name of the attachment. examples: - sender_id_registration_form.docx type: string attachmentType: description: Attachment type $ref: '#/components/schemas/AttachmentType' fileUrl: description: File Url to be uploaded. examples: - https://www.files.com/myfile.png type: string InternalRestError_2: description: Detailed information about a specific error that occurred during the processing of a request. This is used in the `errors` field of the `RestError` schema to provide more granular information about the error. properties: pointer: description: JSON pointer to the field that caused the error, following RFC 6901. type: string examples: - /brandName - /entityType detail: description: A human-readable explanation specific to this occurrence of the problem. Like title, this field is not intended for end users, but rather for developers to understand the details of the error that occurred. type: string examples: - Brand Name already exists for this brand type type: object BrandStatus_2: description: Brand status represents the current state of the brand in the system. It is determined by the status of the brand orders and the channels assigned to the brand. The status can be DRAFT when the brand is being created or updated, ACTIVE when the brand has at least one channel assigned and it is ready to be used, or ARCHIVED when the brand has been cancelled and it can not be used anymore. enum: - DRAFT - ACTIVE - ARCHIVED x-enumDescriptions: DRAFT: The brand is in draft status. It can be updated and submitted for validation. ACTIVE: The brand has at least one channel assigned. ARCHIVED: The brand is archived after a cancellation. It can not be updated or submitted for validation. type: string examples: - ACTIVE - DRAFT PatchBrandRequest: description: Request body for partially updating an existing Brand. Only fields present in the request body are updated; omitted fields remain unchanged. Fields set to null explicitly clear the value. type: object allOf: - $ref: '#/components/schemas/BrandProperties' - type: object properties: attachmentInputs: description: Attachments can be added by url or using the specified endpoint. Only the latest version of each attachment type is kept per Brand. items: $ref: '#/components/schemas/AttachmentInput' type: array Channel: description: Channel represents the different channels that can be assigned to a brand after completing a brand order. Each channel has different requirements and it is assigned after completing a specific brand order process. enum: - RCS - SHORT_CODE - TENDLC x-enumDescriptions: RCS: RCS Channel enables RCS traffic and it is provided by RCS. SHORT_CODE: The SHORT_CODE Channel enables Short Code traffic and it is provided by the US Short Code Registry. TENDLC: Ten Digit Long Code (10DLC) channel enables Long Number traffic and it is provided by 10DLC. type: string examples: - RCS - SHORT_CODE ImportBrandResponse: type: object description: Import Brand response properties: brandId: description: The unique identifier for the brand. examples: - '1234567890' type: string readOnly: true brandOrderId: description: The unique identifier for the brand order. examples: - '212421442412' type: string readOnly: true brandOwnerContactEmail: type: string description: The email of the brand owner contact provided in the original order, masked for privacy reasons. This field is included for informational purposes, but it is not intended for communication as the email is masked. examples: - bo***********@sinch.com readOnly: true ImportBrandRequest: type: object description: Import Brand request required: - displayName - importType - externalBrandId properties: displayName: description: The name of the brand. DisplayName must be unique per projectId and marketCode (US) examples: - My End Customer Brand Name type: string importType: description: Type of import, options are IMPORT_TCR_BRAND for 10DLC / RCS and IMPORT_GCH_BRAND for Short Code type: string enum: - IMPORT_TCR_BRAND - IMPORT_GCH_BRAND x-enumDescriptions: IMPORT_TCR_BRAND: Import an existing brand in 10DLC. Imported brand will get same channels as in original request (10DLC, 10DLC+RCS). 10DLC brand Id must be included as external brand. IMPORT_GCH_BRAND: Import an existing brand in the US Short Code Registry. Imported brand will get Short Code channel. The US Short Code Registry brand Id must be included as external brand. examples: - IMPORT_TCR_BRAND - IMPORT_GCH_BRAND externalBrandId: description: The external brand ID obtained in the original order. It can be the 10DLC brand Id or the US Short Code Registry brand Id. type: string examples: - GW12345 callbackUrl: description: The URL to receive the order status update callback. The URL must be a valid URL and must be reachable from Sinch. examples: - https://example.com/callback type: string format: uri BasicBrand_2: description: Basic brand content used for listing brands matching the search criteria. type: object properties: brandId: description: The unique identifier for the brand. examples: - '1234567890' type: string readOnly: true displayName: description: The name of the brand. DisplayName must be unique per projectId and marketCode (US) examples: - My End Customer Brand Name type: string status: description: Brand status, it can be DRAFT, ACTIVE and ARCHIVED. readOnly: true allOf: - $ref: '#/components/schemas/BrandStatus_2' channels: description: Channels available for this Brand items: $ref: '#/components/schemas/Channel' type: array readOnly: true createTime: description: The date and time when the brand was created. examples: - '2023-10-01T12:00:00Z' type: string format: date-time readOnly: true updateTime: description: The date and time when the brand was updated. examples: - '2023-10-01T12:00:00Z' type: string format: date-time readOnly: true ListBrandResponse_2: type: object description: List of Brands response properties: brands: description: List of brands items: $ref: '#/components/schemas/BasicBrand_2' type: array readOnly: true links: description: Pagination links. $ref: '#/components/schemas/Links' meta: description: Pagination metadata. $ref: '#/components/schemas/PaginationMeta' Attachment: description: Attachment file linked to the brand. It can be added by url or using the specified endpoint. Only the latest version of each attachment type is kept per Brand. type: object properties: attachmentId: description: Unique identifier of the attachment. examples: - d1c7ccbf-919d-462f-8587-dec95a1b11ee type: string readOnly: true fileName: description: Human readable name of the attachment. examples: - sender_id_registration_form.docx type: string attachmentType: description: Attachment type $ref: '#/components/schemas/AttachmentType' mimeType: description: MIME type of the attachment file. examples: - application/pdf - application/vnd.openxmlformats-officedocument.wordprocessingml.document type: string readOnly: true uploadStatus: description: Status of the file uploaded enum: - COMPLETED - WAITING - FAILED x-enumDescriptions: COMPLETED: Attachment successfully uploaded and linked to the registration WAITING: Attachment processing is still ongoing. FAILED: Attachment uploading has failed for any reason. examples: - COMPLETED type: string readOnly: true createTime: description: Create time of the request. ISO date time format in UTC. examples: - '2021-11-03T14:30:03Z' type: string readOnly: true format: date-time updateTime: description: Update time of the request. ISO date time format in UTC. examples: - '2021-11-03T14:30:03Z' type: string readOnly: true format: date-time Brand_2: description: The brand object that contains the brand details. type: object allOf: - $ref: '#/components/schemas/BrandProperties' - type: object required: - brandId - displayName - status - contentProvider - createTime - updateTime properties: brandId: description: The unique identifier for the brand. examples: - '1234567890' type: string readOnly: true status: description: Brand status, it can be DRAFT, ACTIVE and ARCHIVED. $ref: '#/components/schemas/BrandStatus_2' contentProvider: type: boolean description: Indicates whether the brand is a Content Provider (true) or a standard Brand (false). This choice determines the types of orders that can be requested, as they follow different registration processes and are available for different products. It cannot be updated after the brand creation. examples: - true readOnly: true attachments: description: Files attached to this brand items: $ref: '#/components/schemas/Attachment' type: array readOnly: true logs: description: Detailed history of the status changes this brand went through items: $ref: '#/components/schemas/BrandLog_2' type: array readOnly: true channels: description: Channels available for this Brand items: $ref: '#/components/schemas/Channel' type: array readOnly: true createTime: description: The date and time when the brand was created. examples: - '2023-10-01T12:00:00Z' type: string format: date-time readOnly: true updateTime: description: The date and time when the brand was updated. examples: - '2023-10-01T12:00:00Z' type: string format: date-time readOnly: true BrandLog_2: description: A log entry for a brand, which contains details of the brand status update or new channel added. It can contain information provided by the agent handling the request. properties: createTime: description: Create time of this log entry. ISO date time format in UTC. examples: - '2021-11-03T14:30:03Z' type: string format: date-time readOnly: true message: description: Optional message with details of the brand status update or new channel added. It can contain information provided by the agent handling the request. examples: - Please update the attachment connected to your request. type: string brandCurrentState: description: State of the brand after this entry was created $ref: '#/components/schemas/BrandStatus_2' readOnly: true type: object Links: type: object description: Pagination links. properties: next: description: Link to the next page of results, following RFC 8288. Absence of this link indicates the last page. type: string examples: - https://compliance.api.sinch.com/v1/projects/{projectId}/us/brands?pageToken=abc123 PaginationMeta: type: object description: Pagination metadata for list responses. properties: totalCount: description: Total count of resources matching the provided search criteria. This field cannot be null; an empty result will return 0. format: int32 type: integer RestError_2: description: Standard error response body for the Sinch Compliance API. It follows the RFC 7807 specification for problem details. The body contains either an `errors` list with structured field-level details or a `detail` field with a plain text explanation. type: object required: - type - title properties: type: description: A URI reference that identifies the problem type. This URI reference should provide a human-readable explanation of the problem type when dereferenced. type: string format: uri examples: - https://developers.sinch.com/docs/errors/registry/validation-error title: description: A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for localization purposes. type: string examples: - Validation Error oneOf: - description: Response with a list of structured error details, each pointing to a specific field. properties: errors: description: Detailed information about the error. This field can contain multiple error details to provide more context about the error that occurred. type: array items: $ref: '#/components/schemas/InternalRestError_2' - description: Response with a plain text explanation of the error. properties: detail: description: A human-readable explanation of the error that occurred. type: string examples: - Project not found BrandProperties: description: Writable properties shared across brand request and response schemas. type: object properties: displayName: description: The name of the brand. DisplayName must be unique per projectId and marketCode (US) examples: - My End Customer Brand Name type: string legalCompanyName: type: string description: Legal company name. Required for all product verification. examples: - Alpha Adventures Corp. dba: type: string description: Doing Business As. Optional for Short Code verification (not necessary for RCS/10DLC) examples: - Alpha Adventures entityType: type: string enum: - CORPORATION - LLC - PARTNERSHIP - S_CORPORATION x-enumDescriptions: CORPORATION: A standard corporation (often a C Corp), a legal entity that is separate from its owners (shareholders). Choose this unless you are specifically registered as an S Corp. LLC: Limited Liability Company. A business structure that combines the pass-through taxation of a partnership or sole proprietorship with the limited liability of a corporation. PARTNERSHIP: A business owned and operated by two or more individuals or entities. Includes various types like General Partnerships (GP) and Limited Partnerships (LP). S_CORPORATION: A special type of corporation that passes corporate income, losses, deductions, and credits through to its shareholders for federal tax purposes. description: Specifies the legal structure of the business or organization being registered. This is a critical field that affects compliance requirements, verification processes, and the availability of certain products. Required for all product verification. verticalType: type: string enum: - PROFESSIONAL - REAL_ESTATE - HEALTHCARE - HUMAN_RESOURCES - ENERGY - ENTERTAINMENT - RETAIL - TRANSPORTATION - AGRICULTURE - INSURANCE - POSTAL - EDUCATION - HOSPITALITY - FINANCIAL - POLITICAL - GAMBLING - LEGAL - CONSTRUCTION - NGO - MANUFACTURING - GOVERNMENT - TECHNOLOGY - COMMUNICATION x-enumDescriptions: PROFESSIONAL: Professional services firms such as law, accounting, consulting, staffing, and financial advisory. REAL_ESTATE: Businesses involved in buying, selling, renting, or managing residential or commercial real estate. HEALTHCARE: Hospitals, clinics, pharmacies, medical device manufacturers, and other health services providers. HUMAN_RESOURCES: HR software, staffing agencies, payroll processors, and workforce management services. ENERGY: Utilities, oil and gas companies, renewable energy producers, and energy services providers. ENTERTAINMENT: Media, gaming, live events, streaming platforms, and entertainment content producers. RETAIL: Brick-and-mortar or e-commerce retailers selling goods directly to consumers. TRANSPORTATION: Logistics, freight carriers, ride-sharing services, airlines, and other transport providers. AGRICULTURE: Farming, agribusiness, food production, and agricultural technology companies. INSURANCE: Property, casualty, life, health, and specialty insurance carriers and brokers. POSTAL: Postal services, courier companies, and parcel delivery providers. EDUCATION: Schools, universities, e-learning platforms, tutoring services, and educational content providers. HOSPITALITY: Hotels, restaurants, travel agencies, and other hospitality and tourism businesses. FINANCIAL: Banks, credit unions, payment processors, investment firms, and other financial services. POLITICAL: Political parties, campaigns, PACs, and other organizations engaged in political messaging. GAMBLING: Casinos, online betting platforms, lottery operators, and other gaming and wagering services. LEGAL: Law firms, legal technology providers, and other organizations delivering legal services. CONSTRUCTION: General contractors, sub-contractors, engineering firms, and building materials suppliers. NGO: Non-governmental and non-profit organizations with a charitable or humanitarian mission. MANUFACTURING: Factories, industrial producers, and companies that fabricate or assemble physical goods. GOVERNMENT: Federal, state, provincial, or local government agencies and public sector entities. TECHNOLOGY: Software companies, hardware makers, IT services firms, and technology platform providers. COMMUNICATION: Telecommunications carriers, internet service providers, and messaging platform operators. description: It is required for 10DLC, RCS programType: type: string enum: - STANDARD - GOVERNMENT - CHARITY - POLITICAL x-enumDescriptions: STANDARD: A standard commercial program used by businesses for general messaging purposes, including marketing, customer service, and transactional notifications. GOVERNMENT: A program operated by a federal, state, provincial, or local government entity or agency. Used for public service announcements, emergency alerts, and official government communications. CHARITY: A program operated by a non-profit or charitable organization, typically a 501(c) entity, used for fundraising, donor outreach, and mission-related communications. POLITICAL: A program used for political messaging, including campaigns, voter outreach, and political action committees (PACs). Subject to specific regulatory and compliance requirements. description: Specifies the type of messaging program associated with the brand. This field helps classify the intended use case and may affect compliance requirements and carrier routing. registrationCountry: type: string description: Country of registration, 2 letters country ISO Code. Required for Short Code product verification. examples: - US - CA registrationState: type: string description: State of registration. Required for Short Code product verification. examples: - California - Nebraska stockMarketSymbol: type: string description: Stock market symbol. Optional for all product verification processes. examples: - SINCH exchange: type: string description: Where the stock market is set. Optional for 10DLC and RCS. examples: - NASDAQ - AMEX website: type: string description: Company website. Required for all product verification processes. It must have valid url format. examples: - https://www.sinch.com companyEmail: type: string description: Company email account. Required for 10DLC, RCS. It must have valid email format. Contains PII Data. examples: - john.doe@sinch.com estimatedAnnualRevenue: type: string description: Optional for Short Code product verification. examples: - 100K-1M USD country: type: string description: Country of brand address, 2 letters country ISO Code. Required for all product verification processes. examples: - US - CA street: type: string description: brand street address. Required for all product verification processes. Contains PII Data. examples: - 129 MacDougal Street, Manhattan street2: type: string description: brand street 2 address. Optional for Short Code product verification. Contains PII Data. examples: - D, 7th floor city: type: string description: brand city address. Required for all product verification processes. Contains PII Data. examples: - New York state: type: string description: brand state address. Required for all product verification processes. Contains PII Data. examples: - New York stateCode: type: string description: brand state code address. Required for Short Code product verification. Contains PII Data. examples: - NY zip: type: string description: brand zip code address. Required for all product verification processes. Contains PII Data. examples: - '10012' taxCountry: type: string description: Tax country, 2 letters country ISO Code. Required for 10DLC, RCS. examples: - US federalTaxId: type: string description: If US, EIN must be provided. If not, VAT ID. Required for all product verification processes. examples: - '123456789' duns: type: string description: Optional for all product verification processes. examples: - '123456789' giin: type: string description: Optional for all product verification processes. examples: - ABC9EF.A23FF.US.724 lei: type: string description: Optional for all product verification processes. examples: - 549300L4R7HSB20U5D88 firstName: type: string description: Required for Short Code product verification. Contains PII Data. examples: - John lastName: type: string description: Required for Short Code product verification. Contains PII Data. examples: - Doe phoneNumber: type: string description: Required for Short Code product verification. Contains PII Data. Must be in E.164 format (e.g. +19176393200). examples: - '+19176393200' phoneNumberExtension: type: string description: Optional for Short Code product verification examples: - '343' mobilePhoneNumber: type: string description: Required for sending OTP request in 10DLC Sole Proprietor registration process. It must be a US/CA number. examples: - '+12015550143' contactEmail: type: string description: It is required for all product verification processes. It must have valid email format. Contains PII Data. examples: - john.doe@sinch.com politicalToken: type: string format: password description: A required authorization token for political campaigns sending messages in the US. This token is issued by Campaign Verify and serves as a credential to verify the legitimacy of a political committee (e.g., candidate, party, or PAC). Mandatory for Short Code verification when Political program type. examples: - cv_a1b2c3d4e5f67890a1b2c3d4e5f67890 politicalType: type: string description: The classification of the political campaign. This is crucial for determining the specific compliance requirements that apply. Mandatory for Short Code verification when Political program type. enum: - FEDERAL - LOCAL - TRIBAL - STATE - OTHER x-enumDescriptions: FEDERAL: For political campaigns at the national or federal level. LOCAL: For political campaigns at the city, county, or municipal level. STATE: For political campaigns at the state, provincial, or regional level. TRIBAL: For tribal political campaigns. OTHER: For any other type of political campaigns not listed above. politicalUrl: type: string description: A URL or other reference number that links to official political filing records. This information serves as verifiable proof of the campaign's registration with a relevant government body (like the FEC in the US). Mandatory for Short Code verification when Political program type. examples: - https://www.fec.gov/data/committee/C00123456/ - 'FEC Committee ID: C00123456' governmentWebsite: type: string description: The official website URL for the government agency. The URL must be a valid, active, and secure (HTTPS) link to a government-owned domain (e.g., .gov, .gov.uk, .gc.ca, etc.). This information is used for verification purposes. Mandatory for Short Code verification when Government program type. examples: - https://www.fcc.gov governmentType: type: string description: Specifies the type of government agency. This helps categorize the entity for compliance and routing purposes. Select the most appropriate value from the accepted list. This field is mandatory for Short Code verification when Government program type. enum: - FEDERAL - LOCAL - TRIBAL - STATE - OTHER x-enumDescriptions: FEDERAL: For agencies at the national or federal level. LOCAL: For agencies at the city, county, or municipal level. STATE: For agencies at the state, provincial, or regional level. TRIBAL: For recognized tribal governments. OTHER: For any other type of government agency not listed above. If selected, the governmentTypeOther field must be filled. governmentTypeOther: type: string description: A free-text field to provide details if OTHER is selected in the governmentType field. This field is required and should be used only when none of the predefined agency types apply, only for Short Code verification when Government program type. examples: - International Port Authority Commission charitableAccreditation: type: string description: The name of the organization that has accredited the charitable entity. This is used to verify the non-profit status and legitimacy of the organization. This field is mandatory for Short Code verification when Charity program type. examples: - BBB Wise Giving Alliance scType: description: Short Code type. It is required for Short Code product verification US_SC_REGISTRY and it determines the type of Short Code that will be requested in the order. Vanity Short Codes are custom and can be chosen by the customer, while Random Short Codes are assigned by the provider without customer input. When VANITY is selected, scText must be provided with the list of requested short codes. type: string enum: - VANITY - RANDOM x-enumDescriptions: VANITY: Vanity Short Code RANDOM: Random Short Code scText: type: string description: Comma separated list of potential vanity short codes requested by the customer, in order of preference. Required when scType is VANITY. Optional otherwise for Short Code verification. examples: - We need 11111, if not available please provide SINCH CreateBrandRequest_2: type: object required: - displayName - companyName - country properties: displayName: type: string description: The brand display name companyName: type: string description: The legal company name entityType: type: string description: Business entity type ein: type: string description: Employer Identification Number country: type: string description: Country of incorporation street: type: string description: Street address city: type: string description: City state: type: string description: State or province postalCode: type: string description: Postal code website: type: string format: uri description: Brand website verticalType: type: string description: Business vertical contactEmail: type: string format: email description: Contact email contactPhone: type: string description: Contact phone Brand_3: type: object properties: id: type: string description: The unique brand identifier projectId: type: string description: The project ID displayName: type: string description: The brand display name companyName: type: string description: The legal company name entityType: type: string description: The business entity type ein: type: string description: Employer Identification Number country: type: string description: The country of incorporation street: type: string description: Street address city: type: string description: City state: type: string description: State or province postalCode: type: string description: Postal or ZIP code website: type: string format: uri description: Brand website URL verticalType: type: string description: The business vertical or industry contactEmail: type: string format: email description: Contact email address contactPhone: type: string description: Contact phone number status: type: string enum: - DRAFT - SUBMITTED - VERIFIED - UNVERIFIED - REJECTED description: The current brand verification status identityStatus: type: string description: The identity verification status createTime: type: string format: date-time description: When the brand was created updateTime: type: string format: date-time description: When the brand was last updated UpdateBrandRequest: type: object properties: displayName: type: string description: Updated display name companyName: type: string description: Updated company name entityType: type: string description: Updated entity type ein: type: string description: Updated EIN country: type: string description: Updated country street: type: string description: Updated street city: type: string description: Updated city state: type: string description: Updated state postalCode: type: string description: Updated postal code website: type: string format: uri description: Updated website verticalType: type: string description: Updated vertical contactEmail: type: string format: email description: Updated contact email contactPhone: type: string description: Updated contact phone BrandList: type: object properties: brands: type: array description: List of brands items: $ref: '#/components/schemas/Brand_3' nextPageToken: type: string description: Pagination token totalSize: type: integer description: Total number of brands responses: Forbidden: description: 'PERMISSION_DENIED: The authenticated user does not have permission to perform this operation.' content: application/problem+json: schema: $ref: '#/components/schemas/RestError_2' Unauthorized: description: 'UNAUTHENTICATED: Missing or invalid authentication credentials.' headers: WWW-Authenticate: description: Authentication challenge per RFC 7235. schema: type: string content: application/problem+json: schema: $ref: '#/components/schemas/RestError_2' TooManyRequests: description: 'RESOURCE_EXHAUSTED: Too many requests. The client has exceeded the rate limit.' content: application/problem+json: schema: $ref: '#/components/schemas/RestError_2' parameters: ProjectId: name: project_id in: path required: true description: The unique project identifier schema: type: string BrandId: name: brand_id in: path required: true description: The unique brand identifier schema: type: string securitySchemes: OAuth2: description: The username and password are your Key ID and Key Secret from the Access keys section in the Sinch Customer Dashboard. Exchange these for a bearer token (access token). flows: clientCredentials: scopes: read: read write: write tokenUrl: https://auth.sinch.com/oauth2/token type: oauth2 hmacAuth: type: http scheme: hmac description: Used for hashing callbacks. Please refer to the callback-configuration endpoints for more information. bearerAuth: type: http scheme: bearer description: Bearer token authentication. x-refined-from: - sinch-brands-api-openapi.yaml - sinch-compliance-brands-api-openapi.yaml - original-sinch-brands-openapi.yml x-explorer-enabled: false x-samples-languages: - curl - java - csharp - node - php x-original-swagger-version: '2.0'