openapi: 3.0.1 info: title: Symphony Agent Add Users API description: 'This document refers to Symphony API calls to send and receive messages and content. They need the on-premise Agent installed to perform decryption/encryption of content. - sessionToken and keyManagerToken can be obtained by calling the authenticationAPI on the symphony back end and the key manager respectively. Refer to the methods described in authenticatorAPI.yaml. - Actions are defined to be atomic, ie will succeed in their entirety or fail and have changed nothing. - If it returns a 40X status then it will have sent no message to any stream even if a request to some subset of the requested streams would have succeeded. - If this contract cannot be met for any reason then this is an error and the response code will be 50X. - MessageML is a markup language for messages. See reference here: https://rest-api.symphony.com/docs/messagemlv2 - **Real Time Events**: The following events are returned when reading from a real time messages and events stream ("datafeed"). These events will be returned for datafeeds created with the v5 endpoints. To know more about the endpoints, refer to Create Messages/Events Stream and Read Messages/Events Stream. Unless otherwise specified, all events were added in 1.46. ' version: 22.9.1 servers: - url: / tags: - name: Users paths: /v1/channelco/user: get: tags: - Users security: - JwtAuth: [] summary: Symphony Search Channelco User operationId: searchUser parameters: - name: email in: query schema: type: string required: true description: user's email example: user@comcocompany.com responses: '200': description: body content: application/json: schema: $ref: '#/components/schemas/ChannelCoUserAndCompany' '400': description: Something was wrong about the request content: application/json: schema: $ref: '#/components/schemas/ApiError' '401': description: Unauthorized request content: application/json: schema: $ref: '#/components/schemas/ApiError' '404': description: The user do not exist content: application/json: schema: $ref: '#/components/schemas/ApiError' post: tags: - Users security: - JwtAuth: [] summary: Symphony Create Channelco User operationId: createUser requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ChannelCoUsersListRequest' responses: '201': description: body content: application/json: schema: $ref: '#/components/schemas/ChannelCoUsersListResponse' '400': description: Something was wrong about the request content: application/json: schema: $ref: '#/components/schemas/ApiError' '401': description: Unauthorized request content: application/json: schema: $ref: '#/components/schemas/ApiError' /v1/channelco/company/{companyId}/user/{userId}/roles/add: post: tags: - Users security: - JwtAuth: [] summary: Symphony Adds a Role to a Channelco User's Account operationId: addRole parameters: - name: userId in: path schema: type: integer format: int64 required: true description: symphony user id example: 123456789 - name: companyId in: path schema: type: string required: true description: company Id of the user example: '10' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Role' responses: '200': description: body content: application/json: schema: $ref: '#/components/schemas/ApiInfo' '400': description: Something was wrong about the request content: application/json: schema: $ref: '#/components/schemas/ApiError' '401': description: Unauthorized request content: application/json: schema: $ref: '#/components/schemas/ApiError' '404': description: The user do not exist content: application/json: schema: $ref: '#/components/schemas/ApiError' /v1/channelco/company/{companyId}/user/{userId}: get: tags: - Users security: - JwtAuth: [] summary: Symphony Get Channelco User by Companyid and Userid operationId: getUser parameters: - name: userId in: path schema: type: integer format: int64 required: true description: symphony user id example: 123456789 - name: companyId in: path schema: type: string required: true description: company Id of the user example: '10' responses: '200': description: body content: application/json: schema: $ref: '#/components/schemas/ChannelCoUserAndCompany' '400': description: Something was wrong about the request content: application/json: schema: $ref: '#/components/schemas/ApiError' '401': description: Unauthorized request content: application/json: schema: $ref: '#/components/schemas/ApiError' '404': description: The user do not exist content: application/json: schema: $ref: '#/components/schemas/ApiError' put: tags: - Users security: - JwtAuth: [] summary: Symphony Update Channelco User operationId: updateUser parameters: - name: userId in: path schema: type: integer format: int64 required: true description: symphony user id example: 123456789 - name: companyId in: path schema: type: string required: true description: company Id of the user example: '10' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateChannelCoUserRequest' responses: '200': description: body content: application/json: schema: $ref: '#/components/schemas/ChannelCoUser' '400': description: Something was wrong about the request content: application/json: schema: $ref: '#/components/schemas/ApiError' '401': description: Unauthorized request content: application/json: schema: $ref: '#/components/schemas/ApiError' '404': description: The user do not exist content: application/json: schema: $ref: '#/components/schemas/ApiError' delete: tags: - Users security: - JwtAuth: [] summary: Symphony Disable Channelco User operationId: disableUser parameters: - name: userId in: path schema: type: integer format: int64 required: true description: symphony user id example: 123456789 - name: companyId in: path schema: type: string required: true description: company Id of the user example: '10' responses: '204': description: The user was disabled successfully. '400': description: Something was wrong about the request content: application/json: schema: $ref: '#/components/schemas/ApiError' '401': description: Unauthorized request content: application/json: schema: $ref: '#/components/schemas/ApiError' '404': description: The user do not exist content: application/json: schema: $ref: '#/components/schemas/ApiError' /pubkey/app/user/{userId}/authenticate: post: summary: Symphony Authenticate an application in a delegated context to act on behalf of a user consumes: - application/json produces: - application/json parameters: - name: sessionToken description: App Session authentication token. in: header required: true type: string - name: userId description: the user ID in: path required: true type: integer format: int64 tags: - Users responses: '200': description: OK. schema: $ref: '#/definitions/Token' '401': description: Client is unauthorized to access this resource schema: $ref: '#/definitions/Error' '403': description: Forbidden to access this endpoint . schema: $ref: '#/definitions/Error' '500': description: Server error, see response body for further details. schema: $ref: '#/definitions/Error' components: schemas: ChannelCoUserErrorResponse: allOf: - $ref: '#/components/schemas/ChannelCoUserRequest' - type: object properties: code: type: string description: error code example: alreadyExisting: value: USER_ALREADY_EXISTS description: user already existing belong a pod (error message will provide detail about pod url) existingCompany: value: COMPANY_ALREADY_EXISTS_USER_NEEDS_ACCESS description: company already exists and the user need access (error message will provide detail about pod url) existingComCoCompany: value: COMCO_COMPANY_ALREADY_EXISTS_USER_NEED_ACCESS description: comco company already exists and the user need access mismatchCompany: value: UNEXPECTED_ERROR message: type: string description: Human readable details about the information the api is returning ChannelCoUserAndCompany: allOf: - $ref: '#/components/schemas/ChannelCoUser' - type: object properties: companyId: type: string description: company Id of the user example: '10' companyName: type: string description: company name of the user example: Symphony maxLength: 64 ApiInfo: type: object properties: code: type: string description: info code message: type: string description: Human readable details about the information the api is returning details: description: Full details about info type: object UpdateChannelCoUserRequest: type: object description: payload to update a channelco user account properties: email: type: string format: email example: foo@example.com firstName: type: string example: Paul maxLength: 64 lastName: type: string example: Smith maxLength: 64 displayName: type: string example: Paul Smith phoneNumber: type: string example: 33612345678 department: type: string example: Product Engineering maxLength: 256 title: type: string example: Engineering manager maxLength: 256 location: type: string description: country ChannelCoUser: allOf: - $ref: '#/components/schemas/ChannelCoUserRequest' - type: object properties: userId: type: integer format: int64 description: Member's user id username: type: string description: Member's username generated by API. If there is no naming conflict it is (in lower case) Role: type: object properties: id: type: string description: role Id example: COMPLIANCE_OFFICER required: - id ChannelCoUserRequest: type: object description: payload to onboard a channelco user account properties: email: type: string format: email example: foo@example.com firstName: type: string example: Paul maxLength: 64 lastName: type: string example: Smith maxLength: 64 displayName: type: string example: Paul Smith maxLength: 128 description: if omitted, it will be generated with the pattern phoneNumber: type: string example: 33612345678 department: type: string example: Product Engineering maxLength: 256 title: type: string example: Engineering manager maxLength: 256 location: type: string description: country required: - email - firstName - lastName ChannelCoUserResponse: allOf: - $ref: '#/components/schemas/ChannelCoUserRequest' - type: object properties: userId: type: integer format: int64 description: Member's user id username: type: string description: Member's username generated by API. It is expected to be the same as email code: type: string description: info code example: newCompany: value: USER_ADDED_NEW_COMPANY description: new company created and user added into it existingCompany: value: USER_ADDED_EXISTING_COMPANY description: company already exists, user added into it mismatchCompany: value: USER_ADDED_TO_DIFFERENT_COMPANY_NAME description: company already exists (lookup by domain name), but the name is different. User is added in the existing one message: type: string description: Human readable details about the information the api is returning ApiError: type: object properties: code: type: string description: error code message: type: string description: Human readable details about the error details: description: Full details about error, usefull for 400 type: object ChannelCoUsersListRequest: type: object description: payload to onboard channelco users properties: companyName: type: string description: This field is mandatory only if a company with same domain (taken from email) does not exist yet example: Symphony maxLength: 64 users: type: array items: $ref: '#/components/schemas/ChannelCoUserRequest' required: - companyName - users ChannelCoUsersListResponse: type: object properties: companyId: type: string description: company Id of the users example: '10' companyName: type: string description: company name of the users example: Symphony maxLength: 64 success: type: array items: $ref: '#/components/schemas/ChannelCoUserResponse' errors: type: array items: $ref: '#/components/schemas/ChannelCoUserErrorResponse' definitions: Token: type: object properties: name: description: 'The name of the header in which the token should be presented on subsequent API calls. ' type: string token: type: string description: 'Authentication token that should be passed as header in each API rest calls. This should be considered opaque data by the client. It is not intended to contain any data interpretable by the client. The format is secret and subject to change without notice. ' authorizationToken: type: string description: "(Beta) Short lived access token built from a user session. This field is still on Beta, please continue using \nthe returned \"token\" instead.\n" Error: type: object properties: code: type: integer format: int32 message: type: string