openapi: 3.0.3 info: title: Rainbow Contacts API description: >- REST API for searching, listing, and managing contacts in the Rainbow directory. Supports enterprise contact search, personal contact management, and user profile retrieval within the Rainbow CPaaS platform by Alcatel-Lucent Enterprise. version: '1.0' contact: url: https://developers.openrainbow.com/ x-tags: - Contacts - Directory - Search - CPaaS servers: - url: https://openrainbow.com/api/rainbow description: Rainbow Production API security: - BearerAuth: [] tags: - name: Contacts description: Manage and search contacts - name: Users description: User profile and presence operations paths: /enduser/v1.0/contacts: get: operationId: searchContacts summary: Search Contacts description: >- Search for contacts in the Rainbow directory by name, email, or other attributes. Returns enterprise and public directory results. tags: - Contacts parameters: - name: search in: query required: false description: Search keyword (name, email, or phone number) schema: type: string example: John - name: limit in: query required: false description: Maximum number of results to return schema: type: integer default: 25 maximum: 100 - name: offset in: query required: false description: Pagination offset schema: type: integer default: 0 responses: '200': description: Contact search results content: application/json: schema: $ref: '#/components/schemas/ContactListResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /enduser/v1.0/contacts/{contactId}: get: operationId: getContact summary: Get Contact description: Returns the profile and presence information for a specific contact. tags: - Contacts parameters: - name: contactId in: path required: true description: Unique identifier of the contact schema: type: string responses: '200': description: Contact profile content: application/json: schema: $ref: '#/components/schemas/ContactResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Contact not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /enduser/v1.0/users/me: get: operationId: getMyProfile summary: Get My Profile description: Returns the authenticated user's own profile information. tags: - Users responses: '200': description: Authenticated user's profile content: application/json: schema: $ref: '#/components/schemas/UserProfileResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' put: operationId: updateMyProfile summary: Update My Profile description: Updates the authenticated user's profile information. tags: - Users requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateProfileRequest' responses: '200': description: Updated profile content: application/json: schema: $ref: '#/components/schemas/UserProfileResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /enduser/v1.0/users/me/presence: put: operationId: updatePresence summary: Update Presence description: Update the authenticated user's presence status (available, away, busy, dnd). tags: - Users requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdatePresenceRequest' responses: '200': description: Presence updated content: application/json: schema: $ref: '#/components/schemas/PresenceResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' components: securitySchemes: BearerAuth: type: http scheme: bearer description: Bearer token obtained via Rainbow OAuth2 authentication schemas: ContactListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/Contact' total: type: integer limit: type: integer offset: type: integer ContactResponse: type: object properties: data: $ref: '#/components/schemas/Contact' Contact: type: object properties: id: type: string description: Unique contact identifier displayName: type: string description: Contact's display name firstName: type: string lastName: type: string emails: type: array items: type: object properties: value: type: string format: email type: type: string phoneNumbers: type: array items: type: object properties: value: type: string type: type: string presence: $ref: '#/components/schemas/Presence' company: type: string jobTitle: type: string UserProfileResponse: type: object properties: data: $ref: '#/components/schemas/UserProfile' UserProfile: type: object properties: id: type: string displayName: type: string firstName: type: string lastName: type: string loginEmail: type: string format: email presence: $ref: '#/components/schemas/Presence' company: type: string jobTitle: type: string Presence: type: object properties: status: type: string enum: [online, away, busy, dnd, offline] description: Presence status statusMessage: type: string description: Custom status message since: type: string format: date-time UpdateProfileRequest: type: object properties: firstName: type: string lastName: type: string jobTitle: type: string UpdatePresenceRequest: type: object required: [presence] properties: presence: type: string enum: [online, away, busy, dnd] status: type: string description: Custom status message PresenceResponse: type: object properties: data: $ref: '#/components/schemas/Presence' ErrorResponse: type: object properties: code: type: integer msg: type: string param: type: string