Pleo Export API (v1) API
The Export API (v1) API from Pleo — 4 operation(s) for export api (v1).
The Export API (v1) API from Pleo — 4 operation(s) for export api (v1).
openapi: 3.0.1
info:
title: App Marketplace accounting-entries Export API (v1) API
description: API for Pleo App Marketplace
termsOfService: https://pleo.io/terms/
contact:
email: partner-ecosystem-team@pleo.io
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
version: 39.4.0
servers:
- url: https://external.pleo.io
description: Production server
- url: https://external.staging.pleo.io
description: Staging server
security:
- bearerAuth: []
- basicAuth: []
tags:
- name: Export API (v1)
paths:
/v1/export-job-events:
post:
tags:
- Export API (v1)
summary: Create an Export Job Event
description: "\n The Export Job Events imply the different status of an Export Job through the export lifecycle.\n Use this endpoint to create a new status.\n For example, started event implies the export job is initiated.\n The existing Export Job Events are as follows:\n - started: An export job is initiated. This allows the integration\n service to start processing the export job items.\n - failed: The export job has failed when an irrecoverable error happens and this could have happened while processing the export job items.\n - completed: The export job items have been successfully exported.\n - completed_with_errors: The export job items have been processed, although some of them could not be exported.\n "
operationId: createExportJobEventV1
requestBody:
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/CreateExportJobEvent'
responses:
default:
description: default response
content:
application/json;charset=UTF-8: {}
deprecated: true
/v1/export-jobs:
get:
tags:
- Export API (v1)
summary: Get a list of Export Jobs
description: Fetch a list of export jobs
operationId: getExportJobsListV1
parameters:
- name: company_id
in: query
description: Enter the specific company ID for which you want to retrieve the list of export jobs processed before.
required: false
style: form
explode: true
schema:
type: string
format: uuid
- name: status
in: query
description: Fetch a list of jobs for a specific status.
required: false
deprecated: true
style: form
explode: true
schema:
type: string
nullable: true
enum:
- pending
- in_progress
- failed
- completed
- completed_with_errors
- name: statuses
in: query
description: Fetch a list of jobs for specific statuses.
required: false
style: form
explode: true
schema:
type: array
items:
type: string
enum:
- pending
- in_progress
- failed
- completed
- completed_with_errors
- 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:
minimum: 0
type: integer
format: int64
- name: limit
in: query
description: The maximum amount of items to return.
required: false
style: form
explode: true
schema:
minimum: 0
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:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/CursorPaginatedResponseExportJob'
deprecated: true
post:
tags:
- Export API (v1)
summary: Create a new export job
operationId: createExportJobV1
requestBody:
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/CreateExportJob'
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/DataResponseExportJob'
deprecated: true
/v1/export-jobs/{jobId}:
get:
tags:
- Export API (v1)
summary: Get an Export Job
description: Retrieve an export job for a given export job ID
operationId: getExportJobByIdV1
parameters:
- name: jobId
in: path
required: true
style: simple
explode: false
schema:
type: string
description: Export Job ID to fetch
format: uuid
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/DataResponseExportJob'
deprecated: true
/v1/export-jobs/{jobId}/items:
get:
tags:
- Export API (v1)
summary: Get Export Job Items
description: Fetch a list of export job items
operationId: getExportJobItemsV1
parameters:
- name: jobId
in: path
required: true
style: simple
explode: false
schema:
type: string
description: Export Job ID
format: uuid
- name: status
in: query
description: Enter a specific status with which the list of export job items returned conforms.
required: false
style: form
explode: true
schema:
type: string
nullable: true
enum:
- pending
- in_progress
- failed
- successful
- abandoned
- 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:
minimum: 0
type: integer
format: int64
- name: limit
in: query
description: The maximum amount of items to return.
required: false
style: form
explode: true
schema:
minimum: 0
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:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/CursorPaginatedResponseExportJobItem'
deprecated: true
put:
tags:
- Export API (v1)
summary: Update Export Job Items
description: Update the status and other attributes of the export job items in batches of 100. This API only supports updating up to 100 items.
operationId: updateExportJobItemsV1
parameters:
- name: jobId
in: path
required: true
style: simple
explode: false
schema:
type: string
description: Export Job ID
format: uuid
requestBody:
content:
application/json;charset=UTF-8:
schema:
type: array
items:
$ref: '#/components/schemas/UpdateExportJobItem'
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExportJobItemUpdate'
deprecated: true
components:
schemas:
CursorPaginatedResponseExportJobItem:
required:
- data
- pagination
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/ExportJobItem'
pagination:
$ref: '#/components/schemas/CursorPageInfo'
ExportJobItemUpdateError:
required:
- accountingEntryId
- message
- type
type: object
properties:
accountingEntryId:
type: string
description: Accounting entry ID for which this error occurred.
format: uuid
message:
type: string
description: Descriptive error message.
type:
type: string
description: Descriptive error type.
enum:
- ACCOUNTING_ENTRY_DOES_NOT_EXIST
- EXPORT_ENTRY_STATUS_UPDATE_FAILED
- ACCOUNTING_ENTRY_UPDATE_FAILED
description: If any errors occurred in updating the export job items, they will be listed here.
CursorPaginatedResponseExportJob:
required:
- data
- pagination
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/ExportJob'
pagination:
$ref: '#/components/schemas/CursorPageInfo'
ExportJob:
required:
- companyId
- createdAt
- expiresIn
- id
- isInteractive
- numberOfItems
- status
- vendorBasedBookkeeping
type: object
properties:
companyId:
type: string
description: The Pleo unique identifier of the company the export job belongs to.
format: uuid
completedAt:
pattern: YYYY-MM-DDTHH:mi:ssZ
type: string
description: Date and time when the export job was completed.
format: date-time
nullable: true
createdAt:
pattern: YYYY-MM-DDTHH:mi:ssZ
type: string
description: Date and time when the export job was initiated by the user, that is, when the user clicked the Export button in the Pleo application.
format: date-time
createdBy:
type: string
description: This is the Pleo unique identifier of the user that initiated the export job.
format: uuid
nullable: true
default: null
expiredAt:
pattern: YYYY-MM-DDTHH:mi:ssZ
type: string
description: Date and time when the export job expired.
format: date-time
nullable: true
expiresIn:
type: integer
description: This is the time specified in seconds when the job would expire; this is calculated since the last action performed on the job. The last time an action was taken on the job is reflected in the lastUpdatedAt attribute.
format: int32
failureReason:
type: string
description: Reason why the job failed in the case of a failure.
nullable: true
failureReasonType:
type: string
description: The classification for the failure from a list of described failure reason types.
nullable: true
enum:
- invalid_configuration
- missing_configuration
- authentication_failure
- accounting_system_authentication_failure
- pleo_rate_limit
- accounting_system_rate_limit
- service_unreachable
- accounting_system_unreachable
- validation_failure
- authorization_failure
- integration_unusable
- job_expired
- service_timeout
- accounting_system_timeout
- canceled_by_user
id:
type: string
description: The unique identifier generated by Pleo for the export job.
format: uuid
isInteractive:
type: boolean
description: Indicates whether the export job was initiated by a user or by the system.
lastUpdatedAt:
pattern: YYYY-MM-DDTHH:mi:ssZ
type: string
description: Last time the job was updated or action on the job was taken.
format: date-time
nullable: true
numberOfItems:
type: integer
description: Number of accounting entries that were selected for processing.
startedAt:
pattern: YYYY-MM-DDTHH:mi:ssZ
type: string
description: Date and time when the export job was started - this indicates the time when the export job event was triggered to change the status of the export job to in_progress.
format: date-time
nullable: true
status:
type: string
description: Specifies the current execution state of the export job. Some here are the definitions of the values that are supported for this field.
enum:
- pending
- in_progress
- failed
- completed
- completed_with_errors
vendorBasedBookkeeping:
type: boolean
description: When enabled, the export items would include vendor and bookkeeping data
ExportJobItemUpdate:
required:
- data
- errors
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/ExportJobItem'
errors:
type: array
description: If any errors occurred in updating the export job items, they will be listed here.
items:
$ref: '#/components/schemas/ExportJobItemUpdateError'
CreateExportJobEvent:
required:
- event
- jobId
type: object
properties:
event:
$ref: '#/components/schemas/ExportJobEventType'
failureReason:
type: string
description: Reason why the job failed in the case of a failure. Include this only when the export job event has a `failed` status.
failureReasonType:
$ref: '#/components/schemas/ExportJobFailureReasonType'
jobId:
type: string
description: Identifier of the job the event is to be processed for.
format: uuid
UpdateExportJobItem:
required:
- accountingEntryId
- status
type: object
properties:
accountingEntryId:
type: string
description: ID of the accounting entry being updated.
format: uuid
exportedAt:
pattern: YYYY-MM-DDTHH:mi:ssZ
type: string
description: Date and time when the export job was initiated.
format: date-time
externalId:
type: string
description: The accounting system identifier of the entry after export.
externalUrl:
type: string
description: URL to access the resource of the entry in the accounting system.
failureReason:
type: string
description: Detailed message explaining the failure.
failureReasonType:
type: string
description: If the export of this accounting entry failed, specify the failure reason type.
enum:
- receipt_upload_failure
- receipt_download_failure
- receipt_file_size_limit_exceeded
- receipt_conversion_failure
- unexpected_failure
- invalid_configuration
- missing_configuration
- accounting_system_authentication_failure
- accounting_system_rate_limit
- accounting_system_unreachable
- validation_failure
- accounting_system_validation_failure
- authorization_failure
- accounting_system_timeout
status:
type: string
description: Status of the export Item after being processed.
enum:
- pending
- in_progress
- failed
- successful
- abandoned
ExportJobEventType:
type: string
description: '
| Value | Description |
| ------ | ----------- |
| started | The integration has started processing the job. |
| failed | The job has failed due to a connection error, authentication failure, or similar issue. |
| completed | The job has been successfully processed. |
| completed_with_errors | The job has been completed, but only some accounting entries were exported successfully. |'
enum:
- started
- failed
- completed
- completed_with_errors
ExportJobFailureReasonType:
type: string
description: '
| Value | Description |
| ------ | ----------- |
| invalid_configuration | This would define a failure reason pertaining to invalid configuration needed to complete the export job or interact with the accounting system. |
| missing_configuration | This would define a failure reason pertaining to incomplete configuration needed to complete the export job or interact with the accounting system. |
| authentication_failure | Pleo API failed to authenticate with the integration service when sending off a WebHook API call. |
| accounting_system_authentication_failure | Integration service could not authenticate with the accounting system. |
| pleo_rate_limit | Irrecoverable rate limit issue with Pleo API. |
| accounting_system_rate_limit | Irrecoverable rate limit issue with the accounting system. |
| service_unreachable | Integration service unreachable. |
| accounting_system_unreachable | Integration service unable to reach accounting system. |
| validation_failure | Irrecoverable validation error making the job unprocessable. |
| authorization_failure | Authorisation revoked or user no longer has access in the accounting system. |
| integration_unusable | Integration service blocked or unusable for the customer. |
| job_expired | Job not updated within expiry time limit. |
| service_timeout | Irrecoverable timeout communicating with integration service. |
| accounting_system_timeout | Irrecoverable timeout communicating with accounting system. |
| canceled_by_user | Job was canceled by user. |'
enum:
- invalid_configuration
- missing_configuration
- authentication_failure
- accounting_system_authentication_failure
- pleo_rate_limit
- accounting_system_rate_limit
- service_unreachable
- accounting_system_unreachable
- validation_failure
- authorization_failure
- integration_unusable
- job_expired
- service_timeout
- accounting_system_timeout
- canceled_by_user
ExportJobItem:
required:
- accountingEntryId
- exportJobId
- status
type: object
properties:
accountingEntryId:
type: string
description: The accounting entry identifier being exported.
format: uuid
exportJobId:
type: string
description: The export job identifier for which this item belongs to.
format: uuid
exportedAt:
pattern: YYYY-MM-DDTHH:mi:ssZ
type: string
description: Date and time the item was exported.
format: date-time
nullable: true
externalId:
type: string
description: This is an external identifier of the corresponding accounting entry in the accounting system after export.
nullable: true
externalUrl:
type: string
description: This is the external URL pointing to the accounting entry resource in the accounting system after the export.
nullable: true
failureReason:
type: string
description: Reason why the export of this item failed in the case of a failure.
nullable: true
failureReasonType:
type: string
description: The classification for the failure from a list of described failure reason types.
nullable: true
enum:
- receipt_upload_failure
- receipt_download_failure
- receipt_file_size_limit_exceeded
- receipt_conversion_failure
- unexpected_failure
- invalid_configuration
- missing_configuration
- accounting_system_authentication_failure
- accounting_system_rate_limit
- accounting_system_unreachable
- validation_failure
- accounting_system_validation_failure
- authorization_failure
- accounting_system_timeout
status:
type: string
description: Status of the export job Item after being processed. The status of the export job item is null until an attempt has been made to process the export job item.
enum:
- pending
- in_progress
- failed
- successful
- abandoned
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
Options:
type: object
properties:
vendorBasedBookkeeping:
type: boolean
description: When enabled, the export items will include vendor and bookkeeping data.
nullable: true
default: false
description: Provides additional configurations for the export job.
nullable: true
CreateExportJob:
required:
- accountingEntryIds
- companyId
type: object
properties:
accountingEntryIds:
type: array
description: The IDs of accounting entries that you want to include in the export job for transmission.
items:
type: string
description: The IDs of accounting entries that you want to include in the export job for transmission.
format: uuid
companyId:
type: string
description: The unique company ID for which you want to create the export job.
format: uuid
employeeId:
type: string
description: This is the Pleo unique identifier of the user that initiated the export job.
format: uuid
nullable: true
isInteractive:
type: boolean
description: Non-interactive jobs are jobs that are not initiated by a user. These jobs are usually triggered in the background and require no user interaction. Interactive jobs are the opposite. Set this flag to true if the export job is to be initiated by a user. By default, this is set to true.
nullable: true
default: true
options:
$ref: '#/components/schemas/Options'
DataResponseExportJob:
required:
- data
type: object
properties:
data:
$ref: '#/components/schemas/ExportJob'
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'
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 <token>`'
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