openapi: 3.0.3 info: title: User API description: 'This API provides a set of services for managing user information within the DealHub platform. It allows for system-to-system integration to retrieve, create, and update user data. All requests require a secret Bearer Token in the `Authorization` header, which is generated by a CPQ administrator.' version: 1.0.0 servers: - url: https://api.dealhub.io description: The base URL for your DealHub instance. variables: your-dealhub-instance: default: app description: Your specific DealHub instance name (e.g., 'app', 'service-eu1'). security: - bearerAuth: [] tags: - name: User Management description: Endpoints for retrieving and managing user data. paths: /api/v1/user/login/{login}: get: tags: - User Management summary: Get User by Login description: Retrieves a single user's details based on their login name. Fields with null values will not be included in the response. operationId: getUserByLogin parameters: - name: login in: path required: true schema: type: string maxLength: 100 description: The login name of the user. responses: '200': description: Success. Returns the user object. content: application/json: schema: $ref: '#/components/schemas/User' examples: getUserByLoginExample: summary: Successful user retrieval value: login: john@my_domain.com id: '786865656908' email: john@my_domain.com name: John Smith position: Sales phone: 09-445556 mobile: 023-6654464 fax: 09-756576 company: My Domain street: Harokmin 26 city: Holon state: Center country: Israel postal_code: '563733' is_active: true '400': description: Bad Request. The user could not be found. '403': description: Forbidden. Invalid or missing authentication token. /api/v1/user/id/{id}: get: tags: - User Management summary: Get User by ID description: Retrieves a single user's details based on their DealHub user ID. Fields with null values will not be included in the response. operationId: getUserById parameters: - name: id in: path required: true schema: type: string maxLength: 16 description: The unique DealHub ID of the user. responses: '200': description: Success. Returns the user object. content: application/json: schema: $ref: '#/components/schemas/User' examples: getUserByIdExample: summary: Successful user retrieval value: login: john@my_domain.com id: '786865656908' email: john@my_domain.com name: John Smith position: Sales phone: 09-445556 mobile: 023-6654464 fax: 09-756576 company: My Domain street: Harokmin 26 city: Holon state: Center country: Israel postal_code: '563733' is_active: true '400': description: Bad Request. The user could not be found. '403': description: Forbidden. Invalid or missing authentication token. /api/v1/users: get: tags: - User Management summary: Get a List of Users description: Retrieves a list of users. If no parameters are provided, it will retrieve all users. Fields with null values will not be included in the response. operationId: getUsers parameters: - name: status in: query schema: type: string enum: - active - inactive description: Filter users by their active or inactive status. responses: '200': description: Success. Returns an array of user objects. content: application/json: schema: type: array items: $ref: '#/components/schemas/User' examples: getUsersExample: summary: A list of active users value: - login: daniel@my_domain.com id: '786865656908' email: daniel@my_domain.com name: Daniel Agassi position: CCS phone: 09-445556 mobile: 076-6654464 fax: 09-4545456 company: My Domain street: Harokmin 26 city: Holon state: Center country: Israel postal_code: '563733' is_active: true - login: john@my_domain.com id: '78686565623' email: john@my_domain.com name: John Smith position: Sales phone: 09-445556 mobile: 023-6654464 fax: 09-756576 company: My Domain street: Harokmin 26 city: Holon state: Center country: Israel postal_code: '563733' user_manager_login: daniel@my_domain.com is_active: true '403': description: Forbidden. Invalid or missing authentication token. put: tags: - User Management summary: Update Users (v1) description: Updates one or more existing users in DealHub. This operation identifies users by their `login`, which is an immutable field. operationId: updateUsersV1 requestBody: required: true content: application/json: schema: type: object properties: users: type: array description: A list of users to be updated. items: $ref: '#/components/schemas/UserUpdateV1' examples: updateUsersV1Example: summary: Update a single user's details value: users: - login: daniel@my_domain.com email: daniel_a@my_domain.com name: Daniel Smith position: CCS phone: 09-445556 mobile: 054-1010101 fax: 09-4545456 company: My Domain street: Harokmin 26 city: Holon state: Center country: Israel postal_code: '563733' user_manager_login: royll is_active: true responses: '200': description: Success. The response may contain a list of errors for users that could not be updated. content: application/json: schema: $ref: '#/components/schemas/UserUpdateErrorResponse' examples: updateUserErrorExample: summary: Response with errors for specific users value: errors: - login: daniel@my_domain.com message: - login: john@my_domain.com message: '400': description: Bad Request. The request payload is invalid. '403': description: Forbidden. Invalid or missing authentication token. /api/v2/users: put: tags: - User Management summary: Create or Update Users (v2) description: Creates new users or updates existing ones. The operation uses the `login` field to identify existing users. operationId: createOrUpdateUsersV2 requestBody: required: true content: application/json: schema: type: object properties: users: type: array items: $ref: '#/components/schemas/UserUpdateV2' examples: createOrUpdateUsersV2Example: summary: Create or update a single user value: users: - login: daniel@my_domain.com email: daniel_a@my_domain.com name: Daniel Smith position: CCS phone: 09-445556 mobile: 054-1010101 fax: 09-4545456 company: My Domain street: Harokmin 26 city: Holon state: Center country: Israel postal_code: '563733' user_manager_login: royll is_active: true responses: '200': description: Success. The operation was completed. '400': description: Bad Request. The request payload is invalid. '403': description: Forbidden. Invalid or missing authentication token. components: securitySchemes: bearerAuth: type: http scheme: bearer description: A secret token generated by a CPQ administrator. schemas: User: type: object properties: login: type: string maxLength: 100 description: Login of the user. id: type: string maxLength: 16 description: DealHub user ID. email: type: string format: email maxLength: 100 description: Primary email of the user. name: type: string maxLength: 300 description: User's full name. position: type: string maxLength: 300 description: The role of the user in the organization (job title). business_title: type: string description: Business title of the user in the CRM organization. phone: type: string maxLength: 50 description: User's phone number. mobile: type: string maxLength: 100 description: User's mobile phone number. fax: type: string maxLength: 100 description: User's fax number. company: type: string maxLength: 100 description: User's company name. street: type: string maxLength: 128 description: Street name. city: type: string maxLength: 32 description: City name. state: type: string maxLength: 32 description: State name. country: type: string maxLength: 32 description: Country name. postal_code: type: string maxLength: 16 description: Postal code. user_manager_login: type: string maxLength: 100 description: Login of the user's manager. is_active: type: boolean description: Flag indicating if the user is active. UserUpdateV1: type: object properties: login: type: string maxLength: 100 description: Login of the user. An immutable field used as an identifier. email: type: string format: email maxLength: 100 description: Primary email of the user. name: type: string maxLength: 300 description: User's full name. is_active: type: boolean description: The flag that specifies if a user should be marked as active in the CPQ system. When a user is inactive, he/she cannot access CPQ. position: type: string maxLength: 300 description: The role of the user in the organization (job title). phone: type: string maxLength: 50 description: User's phone number. mobile: type: string maxLength: 100 description: User's mobile phone number. fax: type: string maxLength: 100 description: User's fax number. company: type: string maxLength: 100 description: User's company name. street: type: string maxLength: 128 description: Street name. city: type: string maxLength: 32 description: City name. state: type: string maxLength: 32 description: State name. country: type: string maxLength: 32 description: Country name. postal_code: type: string maxLength: 16 description: Postal code. user_manager_login: type: string maxLength: 100 description: Login of the user's manager. required: - login - email - name - is_active UserUpdateV2: type: object properties: login: type: string maxLength: 90 description: Login of the user. An immutable field used as an identifier. email: type: string format: email maxLength: 100 description: Primary email of the user. name: type: string maxLength: 300 description: User's full name. external_user_id: type: string maxLength: 200 description: CRM user ID (ID of the employee within the organization that integrates with DealHub). is_active: type: boolean description: The flag that specifies if a user should be marked as active in the CPQ system. When a user is inactive, he/she cannot access CPQ. position: type: string maxLength: 300 description: The role of the user in the organization (job title). business_title: type: string description: Business title of the user in CRM organization. phone: type: string maxLength: 50 description: User's phone number. mobile: type: string maxLength: 100 description: User's mobile phone number. fax: type: string maxLength: 100 description: User's fax number. company: type: string maxLength: 100 description: User's company name. street: type: string maxLength: 128 description: Street name. city: type: string maxLength: 32 description: City name. state: type: string maxLength: 32 description: State name. country: type: string maxLength: 32 description: Country name. postal_code: type: string maxLength: 16 description: Postal code. user_manager_login: type: string maxLength: 100 description: Login of the user's manager. required: - login - email - name - external_user_id - is_active UserUpdateError: type: object properties: login: type: string message: type: string UserUpdateErrorResponse: type: object properties: errors: type: array items: $ref: '#/components/schemas/UserUpdateError' x-readme: explorer-enabled: true proxy-enabled: true