diff --git a/swagger/definitions/index.yml b/swagger/definitions/index.yml index 53ff5553b..af19a9008 100644 --- a/swagger/definitions/index.yml +++ b/swagger/definitions/index.yml @@ -46,6 +46,8 @@ agent: $ref: ./resource/agent.yml inbox: $ref: ./resource/inbox.yml +branded_email_layout: + $ref: ./resource/branded_email_layout.yml inbox_contact: $ref: ./resource/inbox_contact.yml agent_bot: @@ -145,6 +147,8 @@ inbox_create_payload: $ref: ./request/inbox/create_payload.yml inbox_update_payload: $ref: ./request/inbox/update_payload.yml +account_branded_email_layout_payload: + $ref: ./request/account/branded_email_layout_payload.yml inbox_create_web_widget_channel_payload: $ref: ./request/inbox/channels/create_web_widget_channel_payload.yml inbox_create_api_channel_payload: diff --git a/swagger/definitions/request/account/branded_email_layout_payload.yml b/swagger/definitions/request/account/branded_email_layout_payload.yml new file mode 100644 index 000000000..e14aeeb48 --- /dev/null +++ b/swagger/definitions/request/account/branded_email_layout_payload.yml @@ -0,0 +1,8 @@ +type: object +properties: + branded_email_layout: + type: + - string + - 'null' + description: Account-scoped Liquid HTML layout for branded email replies. Blank or null removes the account override. + example: '{{ content_for_layout }}' diff --git a/swagger/definitions/request/inbox/update_payload.yml b/swagger/definitions/request/inbox/update_payload.yml index 2490f2101..859ad147d 100644 --- a/swagger/definitions/request/inbox/update_payload.yml +++ b/swagger/definitions/request/inbox/update_payload.yml @@ -109,6 +109,15 @@ properties: Available for: `Website` `Email` example: 'My Business' + branded_email_layout: + type: + - string + - 'null' + description: | + Liquid HTML layout for outbound email replies. Must include `{{ content_for_layout }}`. + + Available for: `Email` + example: '{{ content_for_layout }}' channel: anyOf: - $ref: '#/components/schemas/inbox_update_web_widget_channel_payload' diff --git a/swagger/definitions/resource/branded_email_layout.yml b/swagger/definitions/resource/branded_email_layout.yml new file mode 100644 index 000000000..3e83b1d63 --- /dev/null +++ b/swagger/definitions/resource/branded_email_layout.yml @@ -0,0 +1,8 @@ +type: object +properties: + branded_email_layout: + type: + - string + - 'null' + description: Account-scoped Liquid HTML layout for branded email replies. + example: '{{ content_for_layout }}' diff --git a/swagger/definitions/resource/inbox.yml b/swagger/definitions/resource/inbox.yml index 5ba6b49bb..2c4b8d258 100644 --- a/swagger/definitions/resource/inbox.yml +++ b/swagger/definitions/resource/inbox.yml @@ -122,6 +122,11 @@ properties: - string - 'null' description: Business name associated with the inbox + branded_email_layout: + type: + - string + - 'null' + description: Liquid HTML layout for branded email replies. Available to administrators for Email inbox show/update responses. hmac_mandatory: type: boolean description: Whether HMAC verification is mandatory diff --git a/swagger/paths/application/branded_email_layout.yml b/swagger/paths/application/branded_email_layout.yml new file mode 100644 index 000000000..b3f671b47 --- /dev/null +++ b/swagger/paths/application/branded_email_layout.yml @@ -0,0 +1,58 @@ +get: + tags: + - Inboxes + operationId: getAccountBrandedEmailLayout + summary: Get account branded email layout + security: + - userApiKey: [] + description: Get the account-scoped Liquid HTML layout used as the fallback for branded email replies. + parameters: + - $ref: '#/components/parameters/account_id' + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/branded_email_layout' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/bad_request_error' +patch: + tags: + - Inboxes + operationId: updateAccountBrandedEmailLayout + summary: Update account branded email layout + security: + - userApiKey: [] + description: Update or clear the account-scoped Liquid HTML layout used as the fallback for branded email replies. + parameters: + - $ref: '#/components/parameters/account_id' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/account_branded_email_layout_payload' + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/branded_email_layout' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/bad_request_error' + '422': + description: Validation failed + content: + application/json: + schema: + $ref: '#/components/schemas/bad_request_error' diff --git a/swagger/paths/index.yml b/swagger/paths/index.yml index 55a9dd13e..e610c9662 100644 --- a/swagger/paths/index.yml +++ b/swagger/paths/index.yml @@ -411,6 +411,8 @@ $ref: ./application/conversation/reporting_events.yml # Inboxes +/api/v1/accounts/{account_id}/branded_email_layout: + $ref: ./application/branded_email_layout.yml /api/v1/accounts/{account_id}/inboxes: $ref: ./application/inboxes/index.yml /api/v1/accounts/{account_id}/inboxes/{id}: diff --git a/swagger/swagger.json b/swagger/swagger.json index b21742b4e..74f843826 100644 --- a/swagger/swagger.json +++ b/swagger/swagger.json @@ -5374,6 +5374,108 @@ } } }, + "/api/v1/accounts/{account_id}/branded_email_layout": { + "get": { + "tags": [ + "Inboxes" + ], + "operationId": "getAccountBrandedEmailLayout", + "summary": "Get account branded email layout", + "security": [ + { + "userApiKey": [] + } + ], + "description": "Get the account-scoped Liquid HTML layout used as the fallback for branded email replies.", + "parameters": [ + { + "$ref": "#/components/parameters/account_id" + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/branded_email_layout" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/bad_request_error" + } + } + } + } + } + }, + "patch": { + "tags": [ + "Inboxes" + ], + "operationId": "updateAccountBrandedEmailLayout", + "summary": "Update account branded email layout", + "security": [ + { + "userApiKey": [] + } + ], + "description": "Update or clear the account-scoped Liquid HTML layout used as the fallback for branded email replies.", + "parameters": [ + { + "$ref": "#/components/parameters/account_id" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/account_branded_email_layout_payload" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/branded_email_layout" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/bad_request_error" + } + } + } + }, + "422": { + "description": "Validation failed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/bad_request_error" + } + } + } + } + } + } + }, "/api/v1/accounts/{account_id}/inboxes": { "get": { "tags": [ @@ -10465,6 +10567,13 @@ ], "description": "Business name associated with the inbox" }, + "branded_email_layout": { + "type": [ + "string", + "null" + ], + "description": "Liquid HTML layout for branded email replies. Available to administrators for Email inbox show/update responses." + }, "hmac_mandatory": { "type": "boolean", "description": "Whether HMAC verification is mandatory" @@ -10510,6 +10619,19 @@ } } }, + "branded_email_layout": { + "type": "object", + "properties": { + "branded_email_layout": { + "type": [ + "string", + "null" + ], + "description": "Account-scoped Liquid HTML layout for branded email replies.", + "example": "{{ content_for_layout }}" + } + } + }, "inbox_contact": { "type": "object", "properties": { @@ -12677,6 +12799,14 @@ "description": "Business name for outbound email replies.\n\nAvailable for: `Website` `Email`\n", "example": "My Business" }, + "branded_email_layout": { + "type": [ + "string", + "null" + ], + "description": "Liquid HTML layout for outbound email replies. Must include `{{ content_for_layout }}`.\n\nAvailable for: `Email`\n", + "example": "{{ content_for_layout }}" + }, "channel": { "anyOf": [ { @@ -12704,6 +12834,19 @@ } } }, + "account_branded_email_layout_payload": { + "type": "object", + "properties": { + "branded_email_layout": { + "type": [ + "string", + "null" + ], + "description": "Account-scoped Liquid HTML layout for branded email replies. Blank or null removes the account override.", + "example": "{{ content_for_layout }}" + } + } + }, "inbox_create_web_widget_channel_payload": { "type": "object", "title": "Website channel", diff --git a/swagger/tag_groups/application_swagger.json b/swagger/tag_groups/application_swagger.json index f9ff31a7e..279bb3aaf 100644 --- a/swagger/tag_groups/application_swagger.json +++ b/swagger/tag_groups/application_swagger.json @@ -3917,6 +3917,108 @@ } } }, + "/api/v1/accounts/{account_id}/branded_email_layout": { + "get": { + "tags": [ + "Inboxes" + ], + "operationId": "getAccountBrandedEmailLayout", + "summary": "Get account branded email layout", + "security": [ + { + "userApiKey": [] + } + ], + "description": "Get the account-scoped Liquid HTML layout used as the fallback for branded email replies.", + "parameters": [ + { + "$ref": "#/components/parameters/account_id" + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/branded_email_layout" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/bad_request_error" + } + } + } + } + } + }, + "patch": { + "tags": [ + "Inboxes" + ], + "operationId": "updateAccountBrandedEmailLayout", + "summary": "Update account branded email layout", + "security": [ + { + "userApiKey": [] + } + ], + "description": "Update or clear the account-scoped Liquid HTML layout used as the fallback for branded email replies.", + "parameters": [ + { + "$ref": "#/components/parameters/account_id" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/account_branded_email_layout_payload" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/branded_email_layout" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/bad_request_error" + } + } + } + }, + "422": { + "description": "Validation failed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/bad_request_error" + } + } + } + } + } + } + }, "/api/v1/accounts/{account_id}/inboxes": { "get": { "tags": [ @@ -8972,6 +9074,13 @@ ], "description": "Business name associated with the inbox" }, + "branded_email_layout": { + "type": [ + "string", + "null" + ], + "description": "Liquid HTML layout for branded email replies. Available to administrators for Email inbox show/update responses." + }, "hmac_mandatory": { "type": "boolean", "description": "Whether HMAC verification is mandatory" @@ -9017,6 +9126,19 @@ } } }, + "branded_email_layout": { + "type": "object", + "properties": { + "branded_email_layout": { + "type": [ + "string", + "null" + ], + "description": "Account-scoped Liquid HTML layout for branded email replies.", + "example": "{{ content_for_layout }}" + } + } + }, "inbox_contact": { "type": "object", "properties": { @@ -11184,6 +11306,14 @@ "description": "Business name for outbound email replies.\n\nAvailable for: `Website` `Email`\n", "example": "My Business" }, + "branded_email_layout": { + "type": [ + "string", + "null" + ], + "description": "Liquid HTML layout for outbound email replies. Must include `{{ content_for_layout }}`.\n\nAvailable for: `Email`\n", + "example": "{{ content_for_layout }}" + }, "channel": { "anyOf": [ { @@ -11211,6 +11341,19 @@ } } }, + "account_branded_email_layout_payload": { + "type": "object", + "properties": { + "branded_email_layout": { + "type": [ + "string", + "null" + ], + "description": "Account-scoped Liquid HTML layout for branded email replies. Blank or null removes the account override.", + "example": "{{ content_for_layout }}" + } + } + }, "inbox_create_web_widget_channel_payload": { "type": "object", "title": "Website channel", diff --git a/swagger/tag_groups/client_swagger.json b/swagger/tag_groups/client_swagger.json index b810a4308..b354d995c 100644 --- a/swagger/tag_groups/client_swagger.json +++ b/swagger/tag_groups/client_swagger.json @@ -1882,6 +1882,13 @@ ], "description": "Business name associated with the inbox" }, + "branded_email_layout": { + "type": [ + "string", + "null" + ], + "description": "Liquid HTML layout for branded email replies. Available to administrators for Email inbox show/update responses." + }, "hmac_mandatory": { "type": "boolean", "description": "Whether HMAC verification is mandatory" @@ -1927,6 +1934,19 @@ } } }, + "branded_email_layout": { + "type": "object", + "properties": { + "branded_email_layout": { + "type": [ + "string", + "null" + ], + "description": "Account-scoped Liquid HTML layout for branded email replies.", + "example": "{{ content_for_layout }}" + } + } + }, "inbox_contact": { "type": "object", "properties": { @@ -4094,6 +4114,14 @@ "description": "Business name for outbound email replies.\n\nAvailable for: `Website` `Email`\n", "example": "My Business" }, + "branded_email_layout": { + "type": [ + "string", + "null" + ], + "description": "Liquid HTML layout for outbound email replies. Must include `{{ content_for_layout }}`.\n\nAvailable for: `Email`\n", + "example": "{{ content_for_layout }}" + }, "channel": { "anyOf": [ { @@ -4121,6 +4149,19 @@ } } }, + "account_branded_email_layout_payload": { + "type": "object", + "properties": { + "branded_email_layout": { + "type": [ + "string", + "null" + ], + "description": "Account-scoped Liquid HTML layout for branded email replies. Blank or null removes the account override.", + "example": "{{ content_for_layout }}" + } + } + }, "inbox_create_web_widget_channel_payload": { "type": "object", "title": "Website channel", diff --git a/swagger/tag_groups/other_swagger.json b/swagger/tag_groups/other_swagger.json index f6e10e57c..1d7e3bcfd 100644 --- a/swagger/tag_groups/other_swagger.json +++ b/swagger/tag_groups/other_swagger.json @@ -1297,6 +1297,13 @@ ], "description": "Business name associated with the inbox" }, + "branded_email_layout": { + "type": [ + "string", + "null" + ], + "description": "Liquid HTML layout for branded email replies. Available to administrators for Email inbox show/update responses." + }, "hmac_mandatory": { "type": "boolean", "description": "Whether HMAC verification is mandatory" @@ -1342,6 +1349,19 @@ } } }, + "branded_email_layout": { + "type": "object", + "properties": { + "branded_email_layout": { + "type": [ + "string", + "null" + ], + "description": "Account-scoped Liquid HTML layout for branded email replies.", + "example": "{{ content_for_layout }}" + } + } + }, "inbox_contact": { "type": "object", "properties": { @@ -3509,6 +3529,14 @@ "description": "Business name for outbound email replies.\n\nAvailable for: `Website` `Email`\n", "example": "My Business" }, + "branded_email_layout": { + "type": [ + "string", + "null" + ], + "description": "Liquid HTML layout for outbound email replies. Must include `{{ content_for_layout }}`.\n\nAvailable for: `Email`\n", + "example": "{{ content_for_layout }}" + }, "channel": { "anyOf": [ { @@ -3536,6 +3564,19 @@ } } }, + "account_branded_email_layout_payload": { + "type": "object", + "properties": { + "branded_email_layout": { + "type": [ + "string", + "null" + ], + "description": "Account-scoped Liquid HTML layout for branded email replies. Blank or null removes the account override.", + "example": "{{ content_for_layout }}" + } + } + }, "inbox_create_web_widget_channel_payload": { "type": "object", "title": "Website channel", diff --git a/swagger/tag_groups/platform_swagger.json b/swagger/tag_groups/platform_swagger.json index 7e00568f2..c114eff05 100644 --- a/swagger/tag_groups/platform_swagger.json +++ b/swagger/tag_groups/platform_swagger.json @@ -2058,6 +2058,13 @@ ], "description": "Business name associated with the inbox" }, + "branded_email_layout": { + "type": [ + "string", + "null" + ], + "description": "Liquid HTML layout for branded email replies. Available to administrators for Email inbox show/update responses." + }, "hmac_mandatory": { "type": "boolean", "description": "Whether HMAC verification is mandatory" @@ -2103,6 +2110,19 @@ } } }, + "branded_email_layout": { + "type": "object", + "properties": { + "branded_email_layout": { + "type": [ + "string", + "null" + ], + "description": "Account-scoped Liquid HTML layout for branded email replies.", + "example": "{{ content_for_layout }}" + } + } + }, "inbox_contact": { "type": "object", "properties": { @@ -4270,6 +4290,14 @@ "description": "Business name for outbound email replies.\n\nAvailable for: `Website` `Email`\n", "example": "My Business" }, + "branded_email_layout": { + "type": [ + "string", + "null" + ], + "description": "Liquid HTML layout for outbound email replies. Must include `{{ content_for_layout }}`.\n\nAvailable for: `Email`\n", + "example": "{{ content_for_layout }}" + }, "channel": { "anyOf": [ { @@ -4297,6 +4325,19 @@ } } }, + "account_branded_email_layout_payload": { + "type": "object", + "properties": { + "branded_email_layout": { + "type": [ + "string", + "null" + ], + "description": "Account-scoped Liquid HTML layout for branded email replies. Blank or null removes the account override.", + "example": "{{ content_for_layout }}" + } + } + }, "inbox_create_web_widget_channel_payload": { "type": "object", "title": "Website channel",