SAP Concur Expense · Capability
SAP Concur Expense API — Expense Reports
SAP Concur Expense API — Expense Reports. 5 operations. Lead operation: List Expense Reports. Self-contained Naftiko capability covering one Sap Concur Expense business surface.
What You Can Do
GET
Listexpensereports
— List Expense Reports
/v1/expense/reports
POST
Createexpensereport
— Create Expense Report
/v1/expense/reports
GET
Getexpensereport
— Get Expense Report
/v1/expense/reports/{id}
PUT
Updateexpensereport
— Update Expense Report
/v1/expense/reports/{id}
DELETE
Deleteexpensereport
— Delete Expense Report
/v1/expense/reports/{id}
MCP Tools
list-expense-reports
List Expense Reports
read-only
idempotent
create-expense-report
Create Expense Report
get-expense-report
Get Expense Report
read-only
idempotent
update-expense-report
Update Expense Report
idempotent
delete-expense-report
Delete Expense Report
idempotent
Capability Spec
naftiko: 1.0.0-alpha2
info:
label: SAP Concur Expense API — Expense Reports
description: 'SAP Concur Expense API — Expense Reports. 5 operations. Lead operation: List Expense Reports. Self-contained
Naftiko capability covering one Sap Concur Expense business surface.'
tags:
- Sap Concur Expense
- Expense Reports
created: '2026-05-19'
modified: '2026-05-19'
binds:
- namespace: env
keys:
SAP_CONCUR_EXPENSE_API_KEY: SAP_CONCUR_EXPENSE_API_KEY
capability:
consumes:
- type: http
namespace: report-expense-reports
baseUri: https://us.api.concursolutions.com/api/v3.0
description: SAP Concur Expense API — Expense Reports business capability. Self-contained, no shared references.
resources:
- name: expense-reports
path: /expense/reports
operations:
- name: listexpensereports
method: GET
description: List Expense Reports
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: offset
in: query
type: string
description: Starting page offset for pagination
- name: limit
in: query
type: integer
description: Number of records to return per page (max 100)
- name: approvalStatusCode
in: query
type: string
description: 'Filter by approval status code. Valid values: A_AAFH, A_AAPH, A_ADMIN, A_APPR, A_EXTV, A_FILE, A_NOTF,
A_PBDG, A_PECO, A_PEND, A_PVAL, A_RESU, A_RHLD, A_TEXP'
- name: paymentStatusCode
in: query
type: string
description: 'Filter by payment status code. Valid values: P_HOLD, P_NOTP, P_PAID, P_PAYC, P_PROC'
- name: modifiedDateBefore
in: query
type: string
description: Return reports modified before this date (ISO 8601 format)
- name: modifiedDateAfter
in: query
type: string
description: Return reports modified after this date (ISO 8601 format)
- name: userID
in: query
type: string
description: The login ID of the report owner. May only be used by company-level access token holders.
- name: reimbursementMethod
in: query
type: string
description: 'Filter by reimbursement method. Valid values: ADPPAYR, APCHECK, AVI, CNQRPAY, PMTSERV'
- name: createexpensereport
method: POST
description: Create Expense Report
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: body
in: body
type: object
description: Request body (JSON).
required: true
- name: expense-reports-id
path: /expense/reports/{id}
operations:
- name: getexpensereport
method: GET
description: Get Expense Report
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: string
description: The unique identifier of the expense report
required: true
- name: updateexpensereport
method: PUT
description: Update Expense Report
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: string
description: The unique identifier of the expense report
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: true
- name: deleteexpensereport
method: DELETE
description: Delete Expense Report
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: string
description: The unique identifier of the expense report
required: true
authentication:
type: bearer
token: '{{env.SAP_CONCUR_EXPENSE_API_KEY}}'
exposes:
- type: rest
namespace: report-expense-reports-rest
port: 8080
description: REST adapter for SAP Concur Expense API — Expense Reports. One Spectral-compliant resource per consumed operation,
prefixed with /v1.
resources:
- path: /v1/expense/reports
name: expense-reports
description: REST surface for expense-reports.
operations:
- method: GET
name: listexpensereports
description: List Expense Reports
call: report-expense-reports.listexpensereports
with:
offset: rest.offset
limit: rest.limit
approvalStatusCode: rest.approvalStatusCode
paymentStatusCode: rest.paymentStatusCode
modifiedDateBefore: rest.modifiedDateBefore
modifiedDateAfter: rest.modifiedDateAfter
userID: rest.userID
reimbursementMethod: rest.reimbursementMethod
outputParameters:
- type: object
mapping: $.
- method: POST
name: createexpensereport
description: Create Expense Report
call: report-expense-reports.createexpensereport
with:
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/expense/reports/{id}
name: expense-reports-id
description: REST surface for expense-reports-id.
operations:
- method: GET
name: getexpensereport
description: Get Expense Report
call: report-expense-reports.getexpensereport
with:
id: rest.id
outputParameters:
- type: object
mapping: $.
- method: PUT
name: updateexpensereport
description: Update Expense Report
call: report-expense-reports.updateexpensereport
with:
id: rest.id
body: rest.body
outputParameters:
- type: object
mapping: $.
- method: DELETE
name: deleteexpensereport
description: Delete Expense Report
call: report-expense-reports.deleteexpensereport
with:
id: rest.id
outputParameters:
- type: object
mapping: $.
- type: mcp
namespace: report-expense-reports-mcp
port: 9090
transport: http
description: MCP adapter for SAP Concur Expense API — Expense Reports. One tool per consumed operation, routed inline
through this capability's consumes block.
tools:
- name: list-expense-reports
description: List Expense Reports
hints:
readOnly: true
destructive: false
idempotent: true
call: report-expense-reports.listexpensereports
with:
offset: tools.offset
limit: tools.limit
approvalStatusCode: tools.approvalStatusCode
paymentStatusCode: tools.paymentStatusCode
modifiedDateBefore: tools.modifiedDateBefore
modifiedDateAfter: tools.modifiedDateAfter
userID: tools.userID
reimbursementMethod: tools.reimbursementMethod
outputParameters:
- type: object
mapping: $.
- name: create-expense-report
description: Create Expense Report
hints:
readOnly: false
destructive: false
idempotent: false
call: report-expense-reports.createexpensereport
with:
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: get-expense-report
description: Get Expense Report
hints:
readOnly: true
destructive: false
idempotent: true
call: report-expense-reports.getexpensereport
with:
id: tools.id
outputParameters:
- type: object
mapping: $.
- name: update-expense-report
description: Update Expense Report
hints:
readOnly: false
destructive: false
idempotent: true
call: report-expense-reports.updateexpensereport
with:
id: tools.id
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: delete-expense-report
description: Delete Expense Report
hints:
readOnly: false
destructive: true
idempotent: true
call: report-expense-reports.deleteexpensereport
with:
id: tools.id
outputParameters:
- type: object
mapping: $.