openapi: 3.0.1 info: title: Oberon API description: Oberon open api definitions termsOfService: https://pleo.io/terms/ contact: email: apiteam@pleo.io license: name: Apache 2.0 url: http://www.apache.org/licenses/LICENSE-2.0.html version: 50.7.0 servers: - url: https://external.pleo.io description: Production server - url: https://external.staging.pleo.io description: Staging server security: - bearerAuth: [] - basicAuth: [] tags: - name: SCIM description: "SCIM-compatible User API. The SCIM (System for Cross-domain Identity\n\ Management) specification standardises a schema for user representation and\n\ provides a RESTful API to create, update, retrieve and delete user identities.\n\
In particular, this API enables third-party systems to efficiently manage\n\ user provisioning and de-provisioning.\n
API available at `/scim/v2`" externalDocs: description: Read more about SCIM url: https://datatracker.ietf.org/doc/html/rfc7644 - name: Employees description: "The Employees API enables you to search for employee records that\n\ are managed in Pleo. You can perform the following: \n - Search for multiple\n\ employees \n - Search for a specific employee record by employee ID" - name: Companies description: "The Companies API enables you to search for company records that are\ \ managed in Pleo. You can perform the following: \n - Search for multiple companies\n\ \ - Search for a specific company record by company ID" paths: /v1/companies: get: tags: - Companies summary: Search for Companies description: Use this endpoint to search for companies associated with a specific organisation. operationId: Search for Companies parameters: - name: organization_id in: query description: Enter the organization ID of the companies you are searching for. Ensure that the access token used for authentication has the correct permissions to search for companies in the given organization. required: false style: form explode: true schema: type: string format: uuid - name: before in: query description: Lower bound of the page of data to return (cannot be used together with [after] or [offset]). required: false style: form explode: true schema: pattern: ^[A-Z2-7=~]+$ type: string - name: after in: query description: Upper bound of the page of data to return (cannot be used together with [before] or [offset]). required: false style: form explode: true schema: pattern: ^[A-Z2-7=~]+$ type: string - name: offset in: query description: Offset of the page of data to return (cannot be used together with [before] or [after]). required: false style: form explode: true schema: type: integer format: int64 - name: limit in: query description: The maximum amount of items to return. required: false style: form explode: true schema: type: integer format: int32 - name: sorting_keys in: query description: The keys to sort the results by. required: false style: form explode: true schema: type: array items: type: string - name: sorting_order in: query description: The order to sort the results by. Must be the same length as [sortingKeys]; one order per key. required: false style: form explode: true schema: type: array items: $ref: '#/components/schemas/PageOrder' responses: '200': description: Company search successful content: application/json;charset=UTF-8: schema: $ref: '#/components/schemas/CursorPaginatedResponseExternalCompanyResponseModel' '403': description: User lacks the necessary permissions /v1/companies/{companyId}: get: tags: - Companies summary: Search for a Specific Company description: Search for a specific company by company ID. operationId: Get company by ID parameters: - name: companyId in: path description: Enter the company ID. required: true style: simple explode: false schema: type: string format: uuid responses: '200': description: Company resource found content: application/json;charset=UTF-8: schema: $ref: '#/components/schemas/DataResponseExternalCompanyResponseModel' '403': description: User lacks the necessary permissions. '404': description: Company with given ID not found /v2/employees: get: tags: - Employees summary: Search for employees description: Use this endpoint to search for multiple employees. operationId: Search Employees parameters: - name: companyId in: query description: Enter the company ID of the employees you are searching for. This is not a mandatory parameter; hence, if you do not know the company ID, the response message contains details of all employees to which you have access. If you are searching for employees at the organisation level, ensure that the access token used for authentication has the correct permissions. required: false style: form explode: true schema: type: string format: uuid - name: email in: query description: The email of the Employee you are searching for. required: false style: form explode: true schema: type: string - name: code in: query description: The external ID of the Employee you are searching for. required: false style: form explode: true schema: type: string - name: before in: query description: Lower bound of the page of data to return (cannot be used together with [after] or [offset]). required: false style: form explode: true schema: pattern: ^[A-Z2-7=~]+$ type: string - name: after in: query description: Upper bound of the page of data to return (cannot be used together with [before] or [offset]). required: false style: form explode: true schema: pattern: ^[A-Z2-7=~]+$ type: string - name: offset in: query description: Offset of the page of data to return (cannot be used together with [before] or [after]). required: false style: form explode: true schema: type: integer format: int64 - name: limit in: query description: The maximum amount of items to return. required: false style: form explode: true schema: type: integer format: int32 - name: sorting_keys in: query description: The keys to sort the results by. required: false style: form explode: true schema: type: array items: type: string - name: sorting_order in: query description: The order to sort the results by. Must be the same length as [sortingKeys]; one order per key. required: false style: form explode: true schema: type: array items: $ref: '#/components/schemas/PageOrder' responses: '200': description: Employee search successful content: application/json;charset=UTF-8: schema: $ref: '#/components/schemas/CursorPaginatedResponseExternalEmployeeResponseModel' '403': description: 'Forbidden: User lacks the necessary permissions' /v2/employees/{employeeId}: get: tags: - Employees summary: Search for a specific employee description: Search for a specific employee by employee ID. operationId: Get employee by ID parameters: - name: employeeId in: path description: Enter the employee ID. required: true style: simple explode: false schema: type: string format: uuid responses: '200': description: Employee resource found content: application/json;charset=UTF-8: schema: $ref: '#/components/schemas/DataResponseExternalEmployeeResponseModel' '403': description: 'Forbidden: User lacks the necessary permissions to access this Employee' '404': description: 'Not Found: Employee with given ID not found' /scim/v2/{subResource}: {} components: schemas: CursorPageCurrentRequestInfo: required: - parameters type: object properties: after: type: string before: type: string limit: type: integer format: int32 offset: type: integer format: int64 parameters: type: object additionalProperties: type: array items: type: string sortingKeys: type: array items: type: string sortingOrder: type: array items: $ref: '#/components/schemas/PageOrder' CursorPageInfo: required: - currentRequestPagination - hasNextPage - hasPreviousPage type: object properties: currentRequestPagination: $ref: '#/components/schemas/CursorPageCurrentRequestInfo' endCursor: type: string hasNextPage: type: boolean hasPreviousPage: type: boolean startCursor: type: string total: type: integer format: int64 CursorPaginatedResponseExternalCompanyResponseModel: required: - data - pagination type: object properties: data: type: array items: $ref: '#/components/schemas/ExternalCompanyResponseModel' pagination: $ref: '#/components/schemas/CursorPageInfo' CursorPaginatedResponseExternalEmployeeResponseModel: required: - data - pagination type: object properties: data: type: array items: $ref: '#/components/schemas/ExternalEmployeeResponseModel' pagination: $ref: '#/components/schemas/CursorPageInfo' DataResponseExternalCompanyResponseModel: required: - data type: object properties: data: $ref: '#/components/schemas/ExternalCompanyResponseModel' DataResponseExternalEmployeeResponseModel: required: - data type: object properties: data: $ref: '#/components/schemas/ExternalEmployeeResponseModel' ExternalAddressResponseModel: type: object properties: addressLine1: type: string description: Line 1 of the company address. addressLine2: type: string description: Line 2 of the company address. country: type: string description: Country of the company. locality: type: string description: Locality of the company address. postalCode: type: string description: Postal code of the company address. region: type: string description: Region of the company. description: Address of the company ExternalCompanyResponseModel: required: - address - id - name type: object properties: address: $ref: '#/components/schemas/ExternalAddressResponseModel' id: type: string description: ID of the Company format: uuid name: type: string description: Name of the Company organizationId: type: string description: Organization ID of the Company format: uuid registrationNumber: type: string description: Registration number of the company ExternalEmployeeResponseModel: required: - companyId - email - firstName - id - lastName type: object properties: code: type: string description: External ID of the Employee companyId: type: string description: Company ID of the Employee format: uuid email: type: string description: Email of the Employee firstName: type: string description: First name of the Employee id: type: string description: ID of the Employee format: uuid jobTitle: type: string description: Job title of the Employee lastName: type: string description: Last name of the Employee phone: type: string description: Phone number of the Employee PageOrder: type: string enum: - ASC - ASC_NULLS_FIRST - ASC_NULLS_LAST - DESC - DESC_NULLS_FIRST - DESC_NULLS_LAST securitySchemes: bearerAuth: type: http description: 'JWT Bearer token authentication. Include the token in the Authorization header as: `Bearer `' scheme: bearer bearerFormat: JWT basicAuth: type: http description: Basic HTTP authentication using API key. Use your API key as the username and leave the password empty. The credentials will be Base64 encoded automatically. scheme: basic