diff --git a/api_client_generation/local/federation/federation_api.yaml b/api_client_generation/local/federation/federation_api.yaml new file mode 100644 index 00000000..ceec9b5e --- /dev/null +++ b/api_client_generation/local/federation/federation_api.yaml @@ -0,0 +1,7326 @@ +openapi: 3.0.0 +info: + title: SFS MS Admin API + description: see https://symphony-1.gitbook.io/federation/ + + version: 0.0.1 + +servers: + - url: https://CONNECT-DOMAIN + +tags: + - name: Entitlements + description: + This API provides endpoints to add or remove advisor entitlements. +
Entitlements allow an advisor to use an external network such as WECHAT or WHATSAPP or SMS or SMS-DIRECT or LINE. + + - name: Contact + description: + This API provides endpoints to manage Contacts. A Contact is a client of the WECHAT or WHATSAPP or SMS or SMS-DIRECT or LINE network (also referred as external network). Advisor, a user of the Symphony connect platform. A contact represents the relation between an external user (a WhatsApp, Wechat, SMS, SMS Direct or LINE user), and an advisor.
+ When an advisor onboards, or adds an external user, they become one of their contacts + + - name: Permissions + description: + An API for managing permissions. Permissions give an advisor the ability to perform certain actions, for example creating a room.
+ Note: Permissions are more specific than entitlements.
+ An entitlement gives an advisor the right to use an external network (for example, Wechat) whereas a permission gives access to a specific functionality within that external network. An entitlement is a precondiction for a permission.
+ If you want to grant the permission "create:room" to an advisor on WhatsApp, the advisor must have the WHATSAPP entitlement. + +paths: + /api/v2/customer/entitlements: + get: + tags: + - Entitlements + summary: List entitlements (recommended) + description: | + List the available entitlements. + operationId: listEntitlements + responses: + "200": + description: List of found entitlements + content: + application/json: + schema: + $ref: "#/components/schemas/entitlements-response" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + post: + tags: + - Entitlements + summary: Add entitlement (recommended) + description: Entitle a Symphony user to use the external network. + operationId: addEntitlement + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/entitlement-request" + responses: + "201": + description: The user has successfully been added in the list of entitlements. + content: + application/json: + schema: + $ref: "#/components/schemas/add-entitlementv2-response" + "400": + description: Missing or malformed input + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/inline_response_400" + - $ref: "#/components/schemas/advisor-phone-number-not-supported-problem" + - $ref: "#/components/schemas/advisor-phone-number-is-required-problem" + - $ref: "#/components/schemas/pre-entitlement-permissions-not-supported-problem" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Add user forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/forbidden-entitlement-type" + "404": + description: Not found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/tenant-configuration-not-found" + "409": + description: Conflict + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/advisor-phone-number-already-used-problem" + - $ref: "#/components/schemas/pre-entitlement-phone-number-mismatch" + - $ref: "#/components/schemas/number-not-available" + - $ref: "#/components/schemas/number-registration-not-possible" + "500": + description: Server error (SMS-Direct Second Number only) + content: + application/json: + schema: + $ref: "#/components/schemas/no-available-number" + + security: + - sfsAuthentication: [] + + /api/v1/customer/pre-entitlements/{symphonyId}/externalNetwork/{externalNetwork}: + post: + deprecated: true + tags: + - Customer pre-entitlements + summary: (deprecated) Pre-entitle an advisor to a phone number (WhatsApp Direct only) + operationId: addPreEntitlement + description: | + Pre-allocate a phone number to an advisor to allow the advisor to activate their phone number. + Supported on WhatsApp Direct only + Umony numbers are not eligible for pre-entitlements. Symphony users using Umony numbers can skip the pre-entitlement step and be entitled directly. + security: + - sfsAuthentication: [ ] + parameters: + - in: path + required: true + name: symphonyId + schema: + type: string + pattern: '^\d+$' + description: Symphony User Id + - in: path + required: true + name: externalNetwork + schema: + type: string + description: 'External network: WHATSAPP-DIRECT' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/pre-entitlement-request' + responses: + '200': + description: The phone number has been successfully allocated to the user. + '409': + description: Missing or malformed input + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/advisor-already-has-phone-allocated-problem' + - $ref: '#/components/schemas/phone-number-already-allocated-problem' + '404': + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/tenant-configuration-not-found' + '400': + description: Missing or malformed input + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/symphony-user-not-found-problem' + - $ref: '#/components/schemas/entitlement-type-not-found-problem' + - $ref: '#/components/schemas/phone-number-pre-allocation-not-supported-problem' + '500': + description: Pre-entitlement Failed + content: + application/json: + schema: + $ref: '#/components/schemas/pre-entitlement-failed' + delete: + deprecated: true + tags: + - Customer pre-entitlements + summary: (deprecated) Remove an advisor pre-entitlement (WhatsApp Direct only) + operationId: removePreEntitlement + description: | + Remove an advisor pre-entitlement + Supported on WhatsApp Direct only + security: + - sfsAuthentication: [ ] + parameters: + - in: path + required: true + name: symphonyId + schema: + type: string + pattern: '^\d+$' + description: Symphony User Id + - in: path + required: true + name: externalNetwork + schema: + type: string + description: 'External network: WHATSAPP-DIRECT' + responses: + '200': + description: The pre-entitlement has been removed successfully. + '404': + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/tenant-configuration-not-found' + - $ref: '#/components/schemas/pre-entitlement-not-found' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/advisor-already-entitled' + + '400': + description: Missing or malformed input + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/entitlement-type-not-found-problem' + + /api/v1/customer/entitlements/externalNetwork/{externalNetwork}/advisors: + get: + tags: + - Entitlements + summary: List entitled advisors + description: | + List all entitled advisors on a given external network. + operationId: listEntitledAdvisors + parameters: + - name: externalNetwork + in: path + required: true + description: "External network: WECHAT or WHATSAPP or SMS or SMS-DIRECT or LINE" + schema: + type: string + example: WHATSAPP + - name: before + in: query + description: The before cursor for pagination + schema: + type: string + - name: after + in: query + description: The after cursor for pagination + schema: + type: string + - in: query + name: listPermissions + schema: + type: boolean + default: false + required: false + example: true + description: Boolean query parameter that indicates whether the search API will return the list of permissions per advisor return, or not + responses: + "200": + description: List of found entitled advisors. + content: + application/json: + schema: + $ref: "#/components/schemas/entitled-response" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + "/api/v2/customer/advisor/entitlements": + get: + tags: + - Entitlements + summary: Get an advisor's entitlement (recommended) + description: | + Check if a given advisor is entitled for a given external network.
+ Advisors can be identified using their email address or their Symphony user ID + (if both are provided, the Symphony user ID will take precedence) + operationId: getCustomerEntitlement + parameters: + - name: advisorEmailAddress + in: query + description: Symphony user email address + required: false + schema: + type: string + example: william.smith@symphony.com + - name: advisorSymphonyId + in: query + description: Symphony user ID + required: false + schema: + type: string + example: 12345678912365 + - name: externalNetwork + in: query + description: "External network: WECHAT or WHATSAPP or SMS or SMS-DIRECT or LINE" + required: true + schema: + type: string + example: WHATSAPP + responses: + "200": + description: Advisor data (if an entitled advisor has been found) + content: + application/json: + schema: + $ref: "#/components/schemas/entitlement-response" + '400': + description: Missing or malformed input + content: + application/json: + schema: + $ref: '#/components/schemas/advisor-id-not-provided' + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + "404": + description: Entitlement not found (if no entitled advisor matching the parameters has been found) + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/entitlement-not-found-problem" + "500": + description: No available number + content: + application/json: + schema: + $ref: "#/components/schemas/no-available-number" + security: + - sfsAuthentication: [] + delete: + tags: + - Entitlements + summary: Remove entitlement (recommended) + description: | + Removes a given advisor's entitlement for a given external network.
+ Advisors can be identified using their email address or their Symphony user ID + (if both are provided, the Symphony user ID will take precedence) + operationId: deleteCustomerEntitlement + parameters: + - name: advisorEmailAddress + in: query + description: Advisor's email address + required: false + schema: + type: string + example: william.smith@symphony.com + - name: advisorSymphonyId + in: query + description: Symphony user ID + required: false + schema: + type: string + example: 12345678912365 + - name: externalNetwork + in: query + description: "External network: WECHAT or WHATSAPP or SMS or SMS-DIRECT or LINE" + required: true + schema: + type: string + example: WHATSAPP + responses: + "200": + description: The entitlement has been successfully removed. + "404": + description: Entitlement not found + content: + application/json: + schema: + $ref: "#/components/schemas/entitlement-not-found-problem" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + "/api/v1/customer/entitlements/{symphonyId}/entitlementType/{entitlementType}": + get: + deprecated: true + tags: + - Entitlements + summary: Get an advisor's entitlement searching by Symphony user ID for a given external network (deprecated) + description: | + Get an advisor's entitlement searching by Symphony user ID for a given external network + operationId: getCustomerEntitlementBySymphonyId + parameters: + - name: symphonyId + in: path + description: Symphony user ID + required: true + schema: + type: string + example: 12345678912365 + - name: entitlementType + in: path + description: "External network: WECHAT or WHATSAPP or SMS or SMS-DIRECT or LINE" + required: true + schema: + type: string + example: WHATSAPP + responses: + "200": + description: Entitlement found + content: + application/json: + schema: + $ref: "#/components/schemas/entitlement-response" + "404": + description: Entitlement not found + content: + application/json: + schema: + $ref: "#/components/schemas/entitlement-not-found-problem" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + delete: + deprecated: true + tags: + - Entitlements + summary: Remove an advisor's entitlement by Symphony user ID for a given external network (deprecated) + description: | + Remove an advisor's entitlement for a given external network + operationId: deleteCustomerEntitlementBySymphonyId + parameters: + - name: symphonyId + in: path + description: Symphony user ID + required: true + schema: + type: string + example: 12345678912365 + - name: entitlementType + in: path + description: "External network: WECHAT or WHATSAPP or SMS or SMS-DIRECT or LINE" + required: true + schema: + type: string + example: WHATSAPP + responses: + "200": + description: The entitlement has been successfully removed + "404": + description: Entitlement not found + content: + application/json: + schema: + $ref: "#/components/schemas/entitlement-not-found-problem" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + + "/api/v1/customer/advisors/{advisorSymphonyId}/blockedPhoneNumbers": + post: + tags: + - CustomerBlock + summary: Block phone numbers + operationId: blockPhoneNumbers + description: | + Block phone numbers for an advisor. + security: + - sfsAuthentication: [ ] + parameters: + - in: path + name: advisorSymphonyId + schema: + type: string + pattern: '^\d+$' + required: true + description: The symphonyId for which we are blocking the phone numbers + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/customer-block-phone-numbers-request' + responses: + '200': + description: Request processed + content: + application/json: + schema: + $ref: '#/components/schemas/customer-block-phone-numbers-response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/not-entitled-on-direct-emp' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/advisor-not-found' + get: + tags: + - CustomerBlock + summary: Get blocked phone numbers + operationId: getBlockPhoneNumbers + description: | + Get blocked phone numbers for an advisor. + security: + - sfsAuthentication: [ ] + parameters: + - in: path + name: advisorSymphonyId + schema: + type: string + pattern: '^\d+$' + required: true + description: The Symphony ID for which we are getting the blocked phone numbers + responses: + '200': + description: Request processed + content: + application/json: + schema: + $ref: '#/components/schemas/get-blocked-phone-numbers-response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/not-entitled-on-direct-emp' + '404': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/advisor-not-found' + delete: + tags: + - CustomerBlock + summary: Unblock phone numbers + operationId: unblockPhoneNumbers + description: | + Unblock phone numbers for an advisor. + security: + - sfsAuthentication: [ ] + parameters: + - in: path + name: advisorSymphonyId + schema: + type: string + pattern: '^\d+$' + required: true + description: The Symphony ID for which we are unblocking the phone numbers + - in: query + name: phoneNumbers + schema: + type: array + items: + type: string + format: phone + minItems: 1 + maxItems: 100 + required: true + description: The phone numbers that we want to unblock for the specified advisor + responses: + '200': + description: Request processed + content: + application/json: + schema: + $ref: '#/components/schemas/customer-block-phone-numbers-response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/not-entitled-on-direct-emp' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/advisor-not-found' + + "/api/v2/customer/advisors/{advisorSymphonyId}/blockedPhoneNumbers": + post: + tags: + - CustomerBlock + summary: Block phone numbers (recommended) + operationId: blockPhoneNumbersv2 + description: | + Block phone numbers for an advisor. + security: + - sfsAuthentication: [ ] + parameters: + - in: path + name: advisorSymphonyId + schema: + type: string + pattern: '^\d+$' + required: true + description: The symphonyId for which we are blocking the phone numbers + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/customer-block-phone-numbers-request' + responses: + '200': + description: Request processed + content: + application/json: + schema: + $ref: '#/components/schemas/customer-block-phone-numbers-response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/not-entitled-on-direct-emp' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/advisor-not-found' + get: + tags: + - CustomerBlock + summary: Get blocked phone numbers (recommended) + operationId: getBlockPhoneNumbersv2 + description: | + Get blocked phone numbers for an advisor. + security: + - sfsAuthentication: [ ] + parameters: + - in: path + name: advisorSymphonyId + schema: + type: string + pattern: '^\d+$' + required: true + description: The Symphony ID for which we are getting the blocked phone numbers + responses: + '200': + description: Request processed + content: + application/json: + schema: + $ref: '#/components/schemas/get-blocked-phone-numbers-response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/not-entitled-on-direct-emp' + '404': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/advisor-not-found' + delete: + tags: + - CustomerBlock + summary: Unblock phone numbers (recommended) + operationId: unblockPhoneNumbersv2 + description: | + Unblock phone numbers for an advisor. + security: + - sfsAuthentication: [ ] + parameters: + - in: path + name: advisorSymphonyId + schema: + type: string + pattern: '^\d+$' + required: true + description: The Symphony ID for which we are unblocking the phone numbers + responses: + '200': + description: Request processed + content: + application/json: + schema: + $ref: '#/components/schemas/customer-block-phone-numbers-response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/not-entitled-on-direct-emp' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/advisor-not-found' + + "/api/v2/customer/contacts/{contactSymphonyId}/advisor/{advisorSymphonyId}": + delete: + tags: + - Contact + summary: Remove contact (recommended) + description: | + Remove an advisor's contact searching by the advisor's Symphony user ID and the contact's Symphony user ID + operationId: deleteContactv2 + parameters: + - name: advisorSymphonyId + in: path + description: Advisor's Symphony user ID + required: true + schema: + type: string + format: number + example: 1234567890 + - name: contactSymphonyId + in: path + description: Contact's Symphony user ID + required: true + schema: + type: string + format: number + example: 1234567890 + responses: + "204": + description: Contact successfully removed + "404": + description: Contact not found + content: + application/json: + schema: + $ref: "#/components/schemas/contact-not-found" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + security: + - sfsAuthentication: [] + "/api/v1/customer/contacts/advisorEmailAddress/{advisorEmailAddress}/contactEmailAddress/{contactEmailAddress}/externalNetwork/{externalNetwork}": + delete: + deprecated: true + tags: + - Contact + summary: Remove an advisor's contact (deprecated) + description: | + Remove an advisor's contact searching by the advisor's email address and the contact's email address for a given external network. + operationId: deleteContact + parameters: + - name: advisorEmailAddress + in: path + description: Advisor's email address + required: true + schema: + type: string + format: email + example: william.smith@symphony.com + - name: contactEmailAddress + in: path + description: Contact's email address + required: true + schema: + type: string + format: email + example: johndoe@symphony.com + - name: externalNetwork + in: path + description: "External network: WECHAT or WHATSAPP or SMS or SMS-DIRECT or LINE" + required: true + schema: + type: string + example: WHATSAPP + responses: + "204": + description: Contact successfully removed + "404": + description: Contact not found + content: + application/json: + schema: + $ref: "#/components/schemas/contact-not-found" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + "/api/v2/customer/contacts/{contactSymphonyId}": + delete: + tags: + - Contact + summary: Remove the contact from all advisors they are connected to for a given external network (recommended) + description: | + Remove the contact from all the advisors they are connected to for a given external network. + operationId: deleteContactsBySymphonyIdAndExternalNetworkv2 + parameters: + - name: contactSymphonyId + in: path + description: Contact's Symphony user ID + required: true + schema: + type: string + format: number + example: 1234567890 + responses: + "200": + description: Contact found. The response includes a status report (SUCCESS or FAILURE) of the connection removal for each advisors initially connected to the contact. + content: + application/json: + schema: + $ref: "#/components/schemas/customer-contactsWithId-responsev2" + "404": + description: Contact not found + content: + application/json: + schema: + $ref: "#/components/schemas/contact-not-found" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + put: + tags: + - Contact + summary: Update contact (recommended) + description: | + Update a contact's first name, last name, company name (maximum 100 characters) and, if the advisor has the permission for this, the contact's email address for a given external network.
+ Note: Updating a contact's phone number is not supported. + # to be validated
The "advisorEmailAddress" is the email address of the advisor who 1st onboarded the contact. + operationId: updateContactsv2 + parameters: + - name: contactSymphonyId + in: path + description: Contact's Symphony user ID + required: true + schema: + type: string + example: 1234567890 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/customer-update-contacts-requestv2" + responses: + "200": + description: Contact successfully updated + content: + application/json: + schema: + $ref: "#/components/schemas/update-contacts-response-v2" + "400": + description: Missing or malformed input + content: + application/json: + schema: + $ref: "#/components/schemas/external-network-not-found" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Update user forbidden + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/inline_response_403_1" + - $ref: "#/components/schemas/inline_response_403_0" + - $ref: "#/components/schemas/cannot-edit-advisor-own-contact-email" + "404": + description: Contact not found + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_404_4" + "409": + description: Conflict + content: + application/json: + schema: + $ref: "#/components/schemas/user-already-exists" + "500": + description: Contact update failed + content: + application/json: + schema: + $ref: "#/components/schemas/update-account-failed" + security: + - sfsAuthentication: [] + "/api/v1/customer/contacts/{contactSymphonyId}/copy": + post: + tags: + - Contact + summary: Copy contact + description: | + Create a new contact copy.
+ Some contacts might be shared between tenants. Shared contacts updates are not allowed.
+ This API allows to create a contact copy that is dedicated for the requesting tenant and that can be updated.
+
+ Contacts that are created starting from the 23.03 release are already not shared between tenants. This API is dedicated for shared contacts created prior to the 23.03 release.
+
+ Please note: + + operationId: copyContact + parameters: + - name: contactSymphonyId + in: path + description: Contact's Symphony ID + required: true + schema: + type: string + pattern: '^\d+$' + example: 1234567890 + responses: + "200": + description: Contact successfully copied + content: + application/json: + schema: + $ref: "#/components/schemas/copy-contact-response" + "400": + description: Missing or malformed input + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/user-copy-not-supported-for-network" + "403": + description: Copy user forbidden + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/forbidden-entitlement-type' + - $ref: '#/components/schemas/user-copy-not-supported-for-ims' + "404": + description: Contact not found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/contact-not-found" + '409': + description: Conflict + content: + application/json: + schema: + $ref: '#/components/schemas/current-tenant-has-own-user-copy' + "500": + description: Contact update failed + content: + application/json: + schema: + $ref: "#/components/schemas/copy-contact-failed" + security: + - sfsAuthentication: [] + "/api/v1/customer/contacts/contactEmailAddress/{contactEmailAddress}/externalNetwork/{externalNetwork}": + delete: + deprecated: true + tags: + - Contact + summary: Remove the contact from all advisors they are connected to for a given external network (deprecated) + description: | + Removes the contact from all the advisors they are connected to, searching by the contact's email address and the external network. This operation will only affect the tenant's advisors. + operationId: deleteContactsByEmailAndExternalNetwork + parameters: + - name: contactEmailAddress + in: path + description: Contact's email address + required: true + schema: + type: string + format: email + example: johndoe@symphony.com + - name: externalNetwork + in: path + description: "External network: WECHAT or WHATSAPP or SMS or SMS-DIRECT or LINE" + required: true + schema: + type: string + example: WHATSAPP + responses: + "200": + description: Contact found. The response includes a status report (SUCCESS or FAILURE) of the connection removal for each advisor initially connected to the contact. + content: + application/json: + schema: + $ref: "#/components/schemas/customer-contactsWithId-response" + "404": + description: Contact not found + content: + application/json: + schema: + $ref: "#/components/schemas/contact-not-found" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + /api/v2/customer/contacts/removal: + post: + tags: + - Contact + summary: Bulk remove advisor-contact connection (recommended) + description: | + Remove specific advisor-contact connections in bulk. + operationId: deleteContactsv2 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/deleteContacts-requestv2" + responses: + "200": + description: Contacts found. The response includes a status report (SUCCESS, NOT_FOUND or FAILURE) of the connection removal for each advisor initially connected to each contact in the array of objects. + content: + application/json: + schema: + $ref: "#/components/schemas/deleteContacts-responsev2" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + /api/v1/customer/contacts/removal: + post: + deprecated: true + tags: + - Contact + summary: Remove specific advisor-contact connections in bulk (deprecated) + description: | + Bulk remove the connections between advisor-contact pairs. Takes in the body of the request an array of objects composed of advisor's email address, contact's email address and external network. + operationId: deleteContacts + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/deleteContacts-request" + responses: + "200": + description: Contacts found. The response includes a status report (SUCCESS or FAILURE) of the connection removal for each advisor initially connected to each contact in the array of objects. + content: + application/json: + schema: + $ref: "#/components/schemas/deleteContacts-response" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + "/api/v2/customer/contacts/advisor/{advisorSymphonyId}": + delete: + tags: + - Contact + summary: Remove all contacts (recommended) + description: | + Removes all contacts of an advisor matching the advisor's Symphony user ID. + operationId: deleteAdvisorContactsv2 + parameters: + - name: advisorSymphonyId + in: path + description: Advisor's Symphony user ID + required: true + schema: + type: string + format: number + example: 1234567890 + responses: + "200": + description: Call completed - Report provided with the list of SUCCESSFUL and FAILED operations + content: + application/json: + schema: + $ref: "#/components/schemas/customer-deleteAdvisorContacts-responsev2" + "404": + description: Advisor or contact not found + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_404_1" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + "/api/v1/customer/contacts/advisorEmailAddress/{advisorEmailAddress}": + delete: + deprecated: true + tags: + - Contact + summary: Removes all contacts of a given advisor (deprecated) + description: | + Removes all the contacts of an advisor matching the advisor's email address. + operationId: deleteAdvisorContacts + parameters: + - name: advisorEmailAddress + in: path + description: Advisor's email address + required: true + schema: + type: string + example: william.smith@symphony.com + responses: + "200": + description: Call completed - Report provided with the list of SUCCESSFUL and FAILED operations + content: + application/json: + schema: + $ref: "#/components/schemas/deleteContacts-response" + "404": + description: Advisor or contact not found + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_404_1" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + + + /api/v1/customer/permissions: + get: + tags: + - Permissions + summary: List permissions + description: | + List of available permissions for the external network at "CONNECT-DOMAIN"
+ operationId: listPermissions + responses: + "200": + description: List of permissions found + content: + application/json: + schema: + $ref: "#/components/schemas/permissions-response" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + /api/v1/customer/externalNetwork/{externalNetwork}/permissions: + get: + tags: + - Permissions + summary: List EMP Permissions + operationId: listEmpPermissions + description: | + List all permissions available for the external network at "CONNECT-DOMAIN"
+ For each permission, returns id, name and whether they are set by default or not
+ parameters: + - name: externalNetwork + in: path + description: The external network. + required: true + schema: + type: string + example: "WHATSAPP" + responses: + "200": + description: List of EMP permissions found + content: + application/json: + schema: + $ref: "#/components/schemas/enhanced-permissions-response" + security: + - sfsAuthentication: [ ] + "/api/v2/customer/advisors/{advisorSymphonyId}/externalNetwork/{externalNetwork}/permissions": + get: + tags: + - Permissions + summary: List advisor's permissions (recommended) + description: | + List the permissions granted to an advisor on an external network.
+ operationId: listAdvisorPermissionsBySymphonyId + parameters: + - name: advisorSymphonyId + in: path + description: Advisor's Symphony user ID + required: true + schema: + type: string + example: 1234567890 + - name: externalNetwork + in: path + description: "The external network: WECHAT or WHATSAPP or SMS or SMS-DIRECT or LINE" + required: true + schema: + type: string + example: WHATSAPP + responses: + "200": + description: List of advisor's permissions + content: + application/json: + schema: + $ref: "#/components/schemas/advisor-permissions-response" + "404": + description: Advisor not found + content: + application/json: + schema: + $ref: "#/components/schemas/advisor-not-found" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + post: + tags: + - Permissions + summary: Add permission to an advisor (recommended) + description: | + Grant permission to an advisor. \ + Refer to the Permissions table on the Authentication page for the default permissions. \ + For multi-company contacts, the contacts must be from the same network, e.g. all from WeChat or all from WhatsApp. Cross-network rooms are not authorized. + operationId: addPermissionBySymphonyId + parameters: + - name: advisorSymphonyId + in: path + description: Advisor's Symphony user ID + required: true + schema: + type: string + example: 1234567890 + - name: externalNetwork + in: path + description: The external network + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/advisor-permission-request" + responses: + "200": + description: Permission successfully added to the advisor + content: + application/json: + schema: + $ref: "#/components/schemas/advisor-permission-response" + "404": + description: Not found + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_404_2" + "409": + description: Conflict + content: + application/json: + schema: + $ref: "#/components/schemas/permission-already-assigned" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + "/api/v1/customer/advisors/advisorEmailAddress/{advisorEmailAddress}/externalNetwork/{externalNetwork}/permissions": + get: + deprecated: true + tags: + - Permissions + summary: List advisor's permissions (deprecated) + description: | + List an advisor's permissions.
+ operationId: listAdvisorPermissionsByEmail + parameters: + - name: advisorEmailAddress + in: path + description: Advisor's email address + required: true + schema: + type: string + example: william.smith@symphony.com + - name: externalNetwork + in: path + description: "The external network: WECHAT or WHATSAPP or SMS or SMS-DIRECT or LINE" + required: true + schema: + type: string + example: WHATSAPP + responses: + "200": + description: List of advisor's permissions + content: + application/json: + schema: + $ref: "#/components/schemas/advisor-permissions-response" + "404": + description: Advisor not found + content: + application/json: + schema: + $ref: "#/components/schemas/advisor-not-found" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + post: + deprecated: true + tags: + - Permissions + summary: Add permission to an advisor (deprecated) + description: | + Grant permission to an advisor. \ + Refer to the Permissions table on the Authentication page for the default permissions. \ + For multi-company contacts, the contacts must be from the same network, e.g. all from WeChat or all from WhatsApp. Cross-network rooms are not authorized. + operationId: addPermissionByEmail + parameters: + - name: advisorEmailAddress + in: path + description: Advisor's email address + required: true + schema: + type: string + - name: externalNetwork + in: path + description: The external network + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/advisor-permission-request" + responses: + "200": + description: Permission successfully added to the advisor + content: + application/json: + schema: + $ref: "#/components/schemas/advisor-permission-response" + "404": + description: Not found + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_404_2" + "409": + description: Conflict + content: + application/json: + schema: + $ref: "#/components/schemas/permission-already-assigned" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + + "/api/v2/customer/advisors/{advisorSymphonyId}/externalNetwork/{externalNetwork}/permissions/{permissionName}": + delete: + tags: + - Permissions + summary: Remove permission (recommended) + description: Remove a permission from an advisor. + operationId: removePermissionBySymphonyIdv2 + parameters: + - name: advisorSymphonyId + in: path + description: Advisor's Symphony user ID + required: true + schema: + type: string + - name: externalNetwork + in: path + description: The external network + required: true + schema: + type: string + - name: permissionName + in: path + description: permissionName to remove + required: true + schema: + type: string + responses: + "204": + description: Permission successfully removed + "404": + description: Advisor not found + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_404_3" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + "/api/v1/customer/advisors/advisorEmailAddress/{advisorEmailAddress}/externalNetwork/{externalNetwork}/permissions/{permissionName}": + delete: + deprecated: true + tags: + - Permissions + summary: Remove permission from an advisor (deprecated) + description: Remove a permission from an advisor. + operationId: removePermissionByEmail + parameters: + - name: advisorEmailAddress + in: path + description: Advisor's email address + required: true + schema: + type: string + - name: externalNetwork + in: path + description: The external network + required: true + schema: + type: string + - name: permissionName + in: path + description: permissionName to remove + required: true + schema: + type: string + responses: + "200": + description: Permission removed successfully + "404": + description: Advisor not found + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_404_3" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + + /api/v2/customer/advisors/permissions: + post: + tags: + - Permissions + summary: Add a permission to multiple advisors (recommended) + description: "Grant permission to multiple advisors." + operationId: addPermissionToMultipleAdvisor + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/advisors-permission-requestv2" + responses: + "200": + description: Permission successfully added to the advisor + content: + application/json: + schema: + $ref: "#/components/schemas/multiple-advisor-permission-response" + "404": + description: Not found + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_404_2" + "409": + description: Conflict + content: + application/json: + schema: + $ref: "#/components/schemas/permission-already-assigned" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + /api/v1/customer/advisors/permissions: + post: + deprecated: true + tags: + - Permissions + summary: Add permission to multiple advisors (deprecated) + description: "Add a permission to multiple advisors." + operationId: addPermissionToMultipleAdvisorByEmail + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/advisors-permission-request" + responses: + "200": + description: Permission successfully added to the advisor + content: + application/json: + schema: + $ref: "#/components/schemas/multiple-advisor-permission-response" + "404": + description: Not found + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_404_2" + "409": + description: Conflict + content: + application/json: + schema: + $ref: "#/components/schemas/permission-already-assigned" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + + # delete: + # tags: + # - Permissions + # summary: Remove permission from multiple advisors + # description: | + # => Remove a permission from multiple advisors. **This endpoint will return an error 400** + # operationId: removePermissionFromMultipleAdvisorByEmail + # requestBody: + # content: + # application/json: + # schema: + # $ref: '#/components/schemas/advisor-permission-request' + # responses: + # '200': + # description: Request has been processed + # content: + # application/json: + # schema: + # $ref: '#/components/schemas/multiple-advisor-permission-response' + # '400': + # description: Request was not well formed + # content: + # application/json: + # schema: + # $ref: '#/components/schemas/inline_response_400' + # '401': + # description: Unauthorized + # content: + # application/json: + # schema: + # $ref: '#/components/schemas/inline_response_401' + # '403': + # description: Operation forbidden + # content: + # application/json: + # schema: + # $ref: '#/components/schemas/inline_response_403_0' + # security: + # - sfsAuthentication: [] + # '/api/v1/customer/advisors/advisorEmailAddress/{advisorEmailAddress}/permissions': + # post: + # tags: + # - Permissions + # summary: Add permission to an advisor for all external networks + # description: => Add a permission to an advisor for all external networks. + # operationId: addPermissionForAllEnsByEmail + # parameters: + # - name: advisorEmailAddress + # in: path + # description: Advisor's email address + # required: true + # schema: + # type: string + # example: william.smith@symphony.com + # requestBody: + # content: + # application/json: + # schema: + # $ref: '#/components/schemas/advisor-permission-request' + # responses: + # '200': + # description: Operation completed + # content: + # application/json: + # schema: + # $ref: '#/components/schemas/bulk-advisor-permission-response' + # '404': + # description: Not found + # content: + # application/json: + # schema: + # $ref: '#/components/schemas/inline_response_404_2' + # '401': + # description: Unauthorized + # content: + # application/json: + # schema: + # $ref: '#/components/schemas/inline_response_401' + # '403': + # description: Operation forbidden + # content: + # application/json: + # schema: + # $ref: '#/components/schemas/inline_response_403_0' + # security: + # - sfsAuthentication: [] + /api/v2/customer/contacts: + post: + tags: + - Contact + summary: Add a contact and/or advisors to a contact (recommended) + description: | + Add a contact and/or advisor(s) to the contact.
+ This end point can be called in 2 situations:
+
    +
  1. To create a contact and eventually immediately associate one or more advisors.
  2. +
  3. To add more advisors to an existing contact.
  4. +
+ In both cases, you must provide all the contact's mandatory fields listed as "body params".
+ + **Note**
+ + operationId: addContact + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/customer-contact-request" + responses: + "200": + description: Contact added successfully + content: + application/json: + schema: + $ref: "#/components/schemas/add-contact-response" + "400": + description: Missing or malformed input + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_400_1" + "403": + description: Onboard user forbidden + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/inline_response_403" + - $ref: "#/components/schemas/inline_response_403_0" + - $ref: '#/components/schemas/user-id-mismatch' + - $ref: '#/components/schemas/phone-international-onboarding-forbidden' + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "404": + description: Not found + content: + application/json: + schema: + $ref: "#/components/schemas/tenant-configuration-not-found" + "409": + description: Conflict + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_409" + "500": + description: User creation failed + content: + application/json: + schema: + $ref: "#/components/schemas/create-account-failed" + security: + - sfsAuthentication: [] + get: + tags: + - Search + summary: List contacts (recommended) + description: | + List contacts, can query by emailAddress, phoneNumber or by contactSymphonyId or by advisorSymphonyId. + If the advisor has the admin:list-customers permission, they will be able to retrieve all pod contacts for a given externalNetwork, or to see other advisor's list of contacts. + operationId: listContacts2 + parameters: + - name: externalNetwork + in: query + description: "The external network: WHATSAPP, SMS, WECHAT, SMS-DIRECT, LINE or WHATSAPP-DIRECT" + required: true + schema: + minLength: 1 + type: string + example: WHATSAPP + - name: emailAddress + in: query + description: Contact's email address + required: false + schema: + type: string + format: email + example: johndoe@symphony.com + - name: phoneNumber + in: query + description: Contact's phone number + required: false + schema: + type: string + format: phone + example: +33 1 23 45 67 89 + - name: symphonyId + in: query + description: Contact's Symphony user ID + required: false + schema: + type: string + pattern: '^\d+$' + example: 1234567890 + - name: advisorSymphonyId + in: query + description: The advisor's Symphony ID + required: false + schema: + type: string + pattern: '^\d+$' + example: 1234567890 + - name: phoneBlocked + in: query + description: Filter only available or blocked contact's phones + required: false + schema: + type: string + enum: + - "all" + - "false" + - "true" + default: all + - name: before + in: query + description: The before cursor for pagination + required: false + schema: + type: string + - name: after + in: query + description: The after cursor for pagination + required: false + schema: + type: string + responses: + "200": + description: Contact found + content: + application/json: + schema: + $ref: "#/components/schemas/list-contact-response" + "404": + description: Contact or tenant not found + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/contact-not-found' + - $ref: '#/components/schemas/tenant-not-found' + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/inline_response_403_0" + - $ref: '#/components/schemas/user-id-mismatch' + security: + - sfsAuthentication: [] + + /api/v1/customer/contacts: + get: + deprecated: true + tags: + - Search + summary: Find a contact (deprecated) + description: | + Find a contact searching by email address and external network
+ operationId: findContacts + parameters: + - name: externalNetwork + in: query + description: "The external network: WECHAT or WHATSAPP or SMS or SMS-DIRECT or LINE" + required: true + schema: + minLength: 1 + type: string + example: WHATSAPP + - name: emailAddress + in: query + description: Contact's email address + required: true + schema: + type: string + format: email + example: johndoe@symphony.com + responses: + "200": + description: Contact found + content: + application/json: + schema: + $ref: "#/components/schemas/find-contact-response" + "404": + description: Contact not found + content: + application/json: + schema: + $ref: "#/components/schemas/contact-not-found" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + "/api/v1/customer/contacts/{contactEmailAddress}/update": + post: + deprecated: true + tags: + - Contact + summary: Update Contact (deprecated) + description: | + Update the first name, last name, company name (maximum 100 characters long) of a contact for a given external network. +
Updating the contact's email address or phone number is not supported. + # to be validated
the "advisorEmailAddress" is the email address of the advisor that first onboarded the contact. + operationId: updateContacts + parameters: + - name: contactEmailAddress + in: path + description: Contact's email address + required: true + schema: + type: string + example: johndoe@symphony.com + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/customer-update-contacts-request" + responses: + "200": + description: Contact successfully updated + content: + application/json: + schema: + $ref: "#/components/schemas/update-contacts-response" + "400": + description: Missing or malformed input + content: + application/json: + schema: + $ref: "#/components/schemas/external-network-not-found" + "403": + description: Update user forbidden + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/inline_response_403_1" + - $ref: "#/components/schemas/inline_response_403_0" + - $ref: "#/components/schemas/cannot-edit-advisor-own-contact-email" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "404": + description: Contact not found + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_404_4" + "500": + description: Contact update failed + content: + application/json: + schema: + $ref: "#/components/schemas/update-account-failed" + security: + - sfsAuthentication: [] + /api/v1/customer/advisors: + get: + deprecated: true + tags: + - Search + summary: Search for an advisor (deprecated) + description: | + Search for an advisor by email address or Symphony user ID and external network.
+ operationId: findAdvisor + parameters: + - name: externalNetwork + in: query + description: "External network: WECHAT or WHATSAPP or SMS or SMS-DIRECT or LINE" + required: true + schema: + minLength: 1 + type: string + example: WHATSAPP + - name: advisorEmailAddress + in: query + description: Advisor's email address + required: false + schema: + type: string + format: email + example: william.smith@symphony.com + - name: advisorSymphonyId + in: query + description: Advisor's Symphony user ID + required: false + schema: + type: string + format: email + example: 1234567890 + responses: + "200": + description: Advisor found + content: + application/json: + schema: + $ref: "#/components/schemas/entitlement-response" + "404": + description: Advisor not found (Advisor may not be entitled for this external network) + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_404_5" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + + "/api/v2/customer/contact": + get: + tags: + - Search + summary: Get contact + description: | + Get a contact searching by their phone number, their external network and, optionally, their advisor's federation group. + operationId: getContact + parameters: + - in: query + name: phoneNumber + description: contact's phone number + schema: + type: string + format: phone + required: true + - in: query + name: externalNetwork + description: contact's external network + schema: + type: string + required: true + - in: query + name: federationGroupId + description: contact's federationGroupId + schema: + type: string + responses: + '200': + description: Contact found + content: + application/json: + schema: + $ref: '#/components/schemas/find-contact-response-v2' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/external-network-not-found' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/inline_response_404_6' + security: + - sfsAuthentication: [] + + "/api/v2/customer/contacts/{contactSymphonyId}/advisors": + get: + tags: + - Search + summary: List a contact’s advisors (recommended) + description: | + Search for the advisors of a provided contact email address for a given external network.
+ operationId: findAdvisorsv2 + parameters: + - name: contactSymphonyId + in: path + description: The Contact's Symphony user ID + required: true + schema: + type: string + format: number + example: 1234567890 + - in: query + name: before + schema: + type: string + description: The before cursor for pagination + - in: query + name: after + schema: + type: string + description: The after cursor for pagination + responses: + "200": + description: List of advisor(s) found + content: + application/json: + schema: + $ref: "#/components/schemas/advisors-search-response" + "404": + description: Contact not found + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_404_6" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + + "/api/v1/customer/contacts/externalNetwork/{externalNetwork}/search": + get: + tags: + - CustomerContact + summary: Search contacts + operationId: searchContacts + description: > + => Search an advisor's contacts related to a given externalNetwork + security: + - sfsAuthentication: [ ] + parameters: + - in: path + name: externalNetwork + schema: + type: string + required: true + example: WHATSAPP + - in: query + name: query + required: true + schema: + type: string + description: Start search by first name, then last name and then display name + example: o + responses: + "200": + description: List of contacts found + content: + application/json: + schema: + $ref: "#/components/schemas/search-contacts-response" + + "/api/v1/customer/contacts/contactEmailAddress/{contactEmailAddress}/externalNetwork/{externalNetwork}/advisors": + get: + deprecated: true + tags: + - Search + summary: Search the advisors of a contact (deprecated) + description: | + Search for the advisors of a provided contact email address for a given external network.
+ operationId: findAdvisors + parameters: + - name: externalNetwork + in: path + description: "The external network: WECHAT or WHATSAPP or SMS or SMS-DIRECT or LINE" + required: true + schema: + minLength: 1 + type: string + example: WHATSAPP + - name: contactEmailAddress + in: path + description: Contact's email address + required: true + schema: + type: string + format: email + example: johndoe@symphony.com + responses: + "200": + description: List of advisor(s) found + content: + application/json: + schema: + $ref: "#/components/schemas/advisors-search-response" + "404": + description: Contact not found + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_404_6" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + + "/api/v1/customer/advisors/{advisorSymphonyId}/externalNetwork/{externalNetwork}/contacts": + get: + tags: + - Search + summary: List an advisor's contacts (recommended) + description: | + Search for the contacts associated with the provided advisor’s Symphony user ID for a given external network.
+ operationId: findContactsOfAdvisorv2 + parameters: + - name: externalNetwork + in: path + description: "The external network: WHATSAPP, SMS, WECHAT, SMS-DIRECT, LINE or WHATSAPP-DIRECT" + required: true + schema: + minLength: 1 + type: string + example: WHATSAPP + - name: advisorSymphonyId + in: path + description: Advisor's Symphony user ID + required: true + schema: + type: string + format: number + example: 1234567890 + - in: query + name: before + schema: + type: string + description: The before cursor for pagination + - in: query + name: after + schema: + type: string + description: The after cursor for pagination + responses: + "200": + description: List of contacts(s) found + content: + application/json: + schema: + $ref: "#/components/schemas/contacts-response" + "404": + description: Advisor not found + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_404_5" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + "/api/v1/customer/advisors/advisorEmailAddress/{advisorEmailAddress}/externalNetwork/{externalNetwork}/contacts": + get: + deprecated: true + tags: + - Search + summary: Search an advisor's contacts (deprecated) + description: | + Search for contacts associated with the advisor whose email address is provided for a given external network.
+ operationId: findContactsOfAdvisor + parameters: + - name: externalNetwork + in: path + description: "The external network: WECHAT or WHATSAPP or SMS or SMS-DIRECT or LINE" + required: true + schema: + minLength: 1 + type: string + example: WHATSAPP + - name: advisorEmailAddress + in: path + description: Advisor's email address + required: true + schema: + type: string + format: email + example: william.smith@symphony.com + responses: + "200": + description: List of contacts(s) found + content: + application/json: + schema: + $ref: "#/components/schemas/contacts-response" + "404": + description: Advisor not found + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_404_5" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + + /api/v2/customer/rooms: + get: + tags: + - Room + summary: List an advisor's rooms (recommended) + description: | + List all rooms where an advisor is either a member or an owner for a given network.
+ Search is performed with the advisor's Symphony user ID.
+ This end point returns at most 25 records per page.
+ operationId: listRoomsv2 + parameters: + - name: advisorSymphonyId + in: query + description: Advisor's Symphony user ID + required: true + schema: + type: string + format: number + example: 1234567890 + - name: externalNetwork + in: query + description: "The external network: WECHAT or WHATSAPP or WHATSAPP-DIRECT or SMS or SMS-DIRECT or LINE" + required: true + schema: + type: string + example: WHATSAPP + - name: owner + in: query + description: + If set to "true", lists the rooms where the advisor is an owner. + If set to "false", lists the rooms where the advisor is an owner and the rooms where the advisor is only a member. + schema: + type: boolean + default: true + - name: before + in: query + description: The before cursor for pagination + schema: + type: string + - name: after + in: query + description: The after cursor for pagination + schema: + type: string + responses: + "200": + description: List of rooms found + content: + application/json: + schema: + $ref: "#/components/schemas/rooms-response" + "400": + description: Missing or malformed parameter + content: + application/json: + schema: + $ref: "#/components/schemas/invalid-page-cursor" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + '404': + description: Not found + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/tenant-configuration-not-found' + - $ref: '#/components/schemas/advisor-not-found' + security: + - sfsAuthentication: [] + post: + tags: + - Room + summary: Create room (recommended) + description: | + Create a room with the advisor whose Symphony user ID is provided.
+ The advisor is set as a member.
+ "externalNetworkRoomDisplayName" applies for WeChat only. + operationId: createRoomv2 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/room-requestv2" + responses: + "200": + description: Room created successfully + content: + application/json: + schema: + $ref: "#/components/schemas/room-creation-response-v2" + "400": + description: Bad request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/inline_response_400_2" + - $ref: "#/components/schemas/incompatible-external-network-and-request-body" + "403": + description: Forbidden + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/inline_response_403_2" + - $ref: "#/components/schemas/inline_response_403_0" + - $ref: "#/components/schemas/federation-group-emp-forbidden" + - $ref: '#/components/schemas/user-id-mismatch' + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "404": + description: Advisor not found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/inline_response_404_7" + - $ref: "#/components/schemas/federation-group-not-found" + "409": + description: Conflict (room name already exists) + content: + application/json: + schema: + $ref: "#/components/schemas/room-already-exists" + "500": + description: Room creation failed + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_500" + security: + - sfsAuthentication: [] + /api/v1/customer/rooms: + get: + deprecated: true + tags: + - Room + summary: List an advisor's rooms (deprecated) + description: | + List all rooms where an advisor is either a member or an owner for a given network.
+ The search is performed with the advisor's email address.
+ This end point returns at most 25 records per page.
+ operationId: listRooms + parameters: + - name: advisorEmailAddress + in: query + description: Advisor's email address + required: true + schema: + type: string + format: email + example: william.smith@symphony.com + - name: externalNetwork + in: query + description: "The external network: WECHAT or WHATSAPP or SMS or SMS-DIRECT or LINE" + required: true + schema: + type: string + example: WHATSAPP + - name: owner + in: query + description: + If set to "true", list the rooms where the advisor is an owner. + If set to "false", list the rooms where the advisor is only a member. + schema: + type: boolean + default: true + - name: before + in: query + description: The before cursor for pagination + schema: + type: string + - name: after + in: query + description: The after cursor for pagination + schema: + type: string + responses: + "200": + description: List of rooms found + content: + application/json: + schema: + $ref: "#/components/schemas/rooms-response" + "400": + description: Missing or malformed parameter + content: + application/json: + schema: + $ref: "#/components/schemas/invalid-page-cursor" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + post: + deprecated: true + tags: + - Room + summary: Create room (deprecated) + description: | + Create a room with the advisor whose email address is provided.
+ The advisor is set as a member.
+ operationId: createRoom + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/room-request" + responses: + "200": + description: Room created successfully + content: + application/json: + schema: + $ref: "#/components/schemas/room-creation-response" + "400": + description: Bad request + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_400_2" + "403": + description: Forbidden + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/inline_response_403_2" + - $ref: "#/components/schemas/inline_response_403_0" + - $ref: "#/components/schemas/federation-group-emp-forbidden" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "404": + description: Not found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/inline_response_404_7" + - $ref: "#/components/schemas/federation-group-not-found" + "409": + description: Conflict (room name already exists) + content: + application/json: + schema: + $ref: "#/components/schemas/room-already-exists" + "500": + description: Room creation failed + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_500" + security: + - sfsAuthentication: [] + + /api/v1/customer/rooms/{streamId}/rename: + post: + tags: + - Room + summary: Rename a room + operationId: renameRoom + description: | + Rename a room with the new room name which is provided.
+ security: + - sfsAuthentication: [ ] + parameters: + - in: path + name: streamId + schema: + type: string + required: true + description: StreamId of the room to rename. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/rename-room-request' + responses: + '200': + description: Room name updated successfully + content: + application/json: + schema: + $ref: '#/components/schemas/rename-room-response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/inline_response_401' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/rename-room-forbidden' + '404': + description: Room not found + content: + application/json: + schema: + $ref: '#/components/schemas/room-not-found' + '409': + description: Conflict + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/room-already-exists' + - $ref: '#/components/schemas/different-room-name-required' + - $ref: '#/components/schemas/cannot-rename-room-duplicate-room-name' + - $ref: '#/components/schemas/room-is-deactivated' + '500': + description: Rename room failed + content: + application/json: + schema: + $ref: '#/components/schemas/rename-room-failed' + + "/api/v1/customer/rooms/{streamId}/ownership": + post: + tags: + - Room + summary: Transfer room ownership to another advisor + operationId: transferRoomOwnership + description: | + Transfer the room ownership to the advisor matching the provided Symphony user ID.
+ This advisor should already be a member of the room.
+ security: + - sfsAuthentication: [ ] + parameters: + - in: path + name: streamId + schema: + type: string + required: true + description: StreamId of the room to transfer. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/transfer-room-ownership-request' + responses: + '204': + description: Room owner updated successfully + '404': + description: Not found + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/tenant-configuration-not-found' + - $ref: '#/components/schemas/advisor-not-found' + - $ref: '#/components/schemas/room-not-found' + '409': + description: Conflict + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/already-room-owner' + - $ref: '#/components/schemas/not-a-room-member' + - $ref: '#/components/schemas/room-is-deactivated' + - $ref: '#/components/schemas/cannot-transfer-room-ownership-duplicate-room-name' + + "/api/v2/customer/rooms/{streamId}/members": + delete: + tags: + - Room + summary: Remove room member (recommended) + description: + Remove any member, advisor or contact from a room.
+ The room is identified by its streamID.
+ operationId: removeRoomMemberv2 + parameters: + - name: streamId + in: path + description: | + Room's streamId. + The streamId needs to be URLsafe Base64. + To obtain the URLSafe Base64 Conversation ID: + - replace forward slashes / with underscores + - replace pluses + with minuses - + - ignore any trailing equal signs = + For example, the URLSafe Base64 encoding of: lX1hwfmQ+AK/k/a/BB0y2n///q2+0KfbdA== converts to lX1hwfmQ-AK_k_a_BB0y2n___q2-0KfbdA. + required: true + schema: + type: string + example: bjHSiY4iz3ar4iIh6-VzCX___peoM7cPdA + - name: memberSymphonyId + in: query + description: The Symphony user ID of the member to remove + required: true + schema: + type: string + format: number + example: 1234567890 + - name: advisorSymphonyId + in: query + description: The Symphony user ID of the advisor who is removing the member + required: true + schema: + type: number + example: 1234567890 + responses: + "200": + description: Member successfully removed from the room + content: + application/json: + schema: + $ref: "#/components/schemas/remove-room-members-response" + "403": + description: Forbidden + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/inline_response_403_3" + - $ref: "#/components/schemas/inline_response_403_0" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "404": + description: Not found + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_404_8" + "409": + description: Conflict + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_409_1" + security: + - sfsAuthentication: [] + post: + tags: + - Room + summary: Add room member (recommended) + description: | + Add a member to a room: + + operationId: addRoomMemberMultiRoomv2 + parameters: + - name: streamId + in: path + description: | + Room's streamId. + The streamID needs to be URLsafe Base64. + To obtain the URLSafe Base64 conversation ID: + - Replace forward slashes / with underscores _ + - Replace pluses + with minuses - + - Ignore any trailing equal signs = + For example, the URLSafe Base64 encoding of: lX1hwfmQ+AK/k/a/BB0y2n///q2+0KfbdA== converts to lX1hwfmQ-AK_k_a_BB0y2n___q2-0KfbdA. + required: true + schema: + type: string + example: bjHSiY4iz3ar4iIh6-VzCX___peoM7cPdA + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/room-member-requestv2" + responses: + "200": + description: Member successfully added to the room + content: + application/json: + schema: + $ref: "#/components/schemas/room-member-response" + "400": + description: Forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_400_3" + "403": + description: Forbidden + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/inline_response_403_2" + - $ref: "#/components/schemas/inline_response_403_0" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "404": + description: Not found + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_404_9" + "409": + description: Conflict + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/room-is-deactivated" + - $ref: "#/components/schemas/add-room-member-conflicted" + "500": + description: Failed to add member to the room + content: + application/json: + schema: + $ref: "#/components/schemas/add-room-member-failed" + security: + - sfsAuthentication: [] + /api/v1/customer/rooms/{streamId}/members: + get: + tags: + - Room + summary: List room members + description: | + List a room’s members. The room is identified by its streamID.
+ operationId: listRoomMembers + parameters: + - name: streamId + in: path + description: | + Room's streamId. + The streamId needs to be URL safe Base64. + To obtain the URLSafe Base64 conversation ID: + - Replace forward slashes / with underscores _ + - Replace pluses + with minuses - + - Ignore any trailing equal signs = + For example, the URLSafe Base64 encoding of: lX1hwfmQ+AK/k/a/BB0y2n///q2+0KfbdA== converts to lX1hwfmQ-AK_k_a_BB0y2n___q2-0KfbdA. + required: true + schema: + type: string + example: lX1hwfmQ-AK_k_a_BB0y2n___q2-0KfbdA + - name: before + in: query + description: The before cursor for pagination + schema: + type: string + - name: after + in: query + description: The after cursor for pagination + schema: + type: string + responses: + "200": + description: List of room members + content: + application/json: + schema: + $ref: "#/components/schemas/room-members-response" + "400": + description: Missing or malformed parameter + content: + application/json: + schema: + $ref: "#/components/schemas/invalid-page-cursor" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [] + delete: + deprecated: true + tags: + - Room + summary: Remove room member (deprecated) + description: + Remove a member from a room, be it an advisor or a contact.
+ The room is identified by its streamId.
+ operationId: removeRoomMember + parameters: + - name: streamId + in: path + description: | + Room's streamId. + The streamId needs to be URL safe Base64. + To obtain the URLSafe Base64 conversation ID: + - Replace forward slashes / with underscores _ + - Replace pluses + with minuses - + - Ignore any trailing equal signs = + For example, the URLSafe Base64 encoding of: lX1hwfmQ+AK/k/a/BB0y2n///q2+0KfbdA== converts to lX1hwfmQ-AK_k_a_BB0y2n___q2-0KfbdA. + + required: true + schema: + type: string + example: bjHSiY4iz3ar4iIh6-VzCX___peoM7cPdA + - name: memberEmailAddress + in: query + description: The email address of the member to remove + required: true + schema: + type: string + format: email + example: johndoe@symphony.com + - name: externalNetwork + in: query + description: "The external network of the member to remove: WECHAT or WHATSAPP or SMS or SMS-DIRECT or LINE" + required: true + schema: + type: string + example: WHATSAPP + - name: advisorEmailAddress + in: query + description: The email address of the advisor who is removing the member + required: true + schema: + type: string + example: william.smith@symphony.com + - name: contact + in: query + description: If set to "true", the member to remove is a contact.
+ If set to "false", the member to remove is an advisor.
+ required: true + schema: + type: boolean + responses: + "200": + description: Member successfully removed from the room + content: + application/json: + schema: + $ref: "#/components/schemas/remove-room-members-response" + "403": + description: Forbidden + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/inline_response_403_3" + - $ref: "#/components/schemas/inline_response_403_0" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "404": + description: Not found + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_404_8" + security: + - sfsAuthentication: [] + /api/v1/customer/rooms/{streamId}/features: + post: + tags: + - Room + summary: Update a room's features + description: | + Update a room's features. Only supported for WhatsApp. The room is identified by its streamID.
+ operationId: updateRoomFeatures + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/room-features-request" + parameters: + - name: streamId + in: path + description: | + Room's streamId. + The streamId needs to be URLsafe Base64. + To obtain the URLSafe Base64 conversation ID: + - Replace forward slashes / with underscores _ + - Replace pluses + with minuses - + - Ignore any trailing equal signs = + For example, the URLSafe Base64 encoding of: lX1hwfmQ+AK/k/a/BB0y2n///q2+0KfbdA== converts to lX1hwfmQ-AK_k_a_BB0y2n___q2-0KfbdA. + required: true + schema: + type: string + example: lX1hwfmQ-AK_k_a_BB0y2n___q2-0KfbdA + responses: + "204": + description: Features updated successfully + "400": + description: Missing or malformed parameter + content: + application/json: + schema: + $ref: "#/components/schemas/invalid-page-cursor" + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_401" + "403": + description: Operation forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/inline_response_403_0" + security: + - sfsAuthentication: [ ] + /api/v1/customer/rooms/{streamId}/activity: + put: + tags: + - CustomerRoom + summary: Update room activity + operationId: updateRoomActivity + description: Update room activity room by stream ID + security: + - sfsAuthentication: [ ] + parameters: + - in: path + name: streamId + description: | + Room's streamId.
+ The streamID needs to be URLsafe Base64.
+ To obtain the URLSafe Base64 Conversation ID: + + For example, the URLSafe Base64 encoding of: lX1hwfmQ+AK/k/a/BB0y2n///q2+0KfbdA== converts to lX1hwfmQ-AK_k_a_BB0y2n___q2-0KfbdA. + schema: + type: string + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/room-set-activity-request' + responses: + '200': + description: Room Activity successfully updated + content: + application/json: + schema: + $ref: '#/components/schemas/room-set-activity-response' + '404': + description: Room not found + content: + application/json: + schema: + $ref: '#/components/schemas/room-not-found' + '500': + description: Update room Status failed + content: + application/json: + schema: + $ref: '#/components/schemas/update-room-status-failed' + '501': + description: Reactivation Not Implemented + content: + application/json: + schema: + $ref: '#/components/schemas/reactivate-room-not-implemented' + + "/api/v1/customer/rooms/members": + post: + deprecated: true + tags: + - Room + summary: Add room member (deprecated) + description: | + Add a member to a room: +