Light v1 - Users API
The v1 - Users API from Light — 5 operation(s) for v1 - users.
The v1 - Users API from Light — 5 operation(s) for v1 - users.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/light-v1-users-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Light Authorization v1 - Users API
version: 1.0.0
servers:
- url: https://api.light.inc
description: Base URL declared by the provider in apis.yml (roadmap#122).
security:
- apiKeyAuth: []
- bearerAuth: []
tags:
- name: v1 - Users
paths:
/v1/users:
get:
tags:
- v1 - Users
summary: List users
description: Returns a paginated list of users
operationId: listUsers
parameters:
- name: sort
in: query
schema:
type: string
description: "Sort string in the format `field:direction`. To provide multiple sort fields, separate them with commas.\n\nAvailable directions: `asc`, `desc`. \n\nAvailable fields: `firstName`, `lastName`, `status`, `createdAt`, `updatedAt`."
example: amount:desc,createdAt:asc
- name: filter
in: query
schema:
type: string
description: "Filter string in the format `field:operator:value`. To provide multiple filters, separate them with commas.\n\nAvailable operators: `eq`, `ne`, `in`, `not_in`, `gt`, `gte`, `lt`, `lte`.\n - For `in` and `not_in` operators, provide multiple values separated by the pipe character (`|`). \n\nAvailable fields: `id`, `userGroupId`, `status`, `email`, `createdAt`, `updatedAt`, `role`, `assignedRole`."
example: state:in:IN_DRAFT|SCHEDULED|PAID,amount:gte:500,vendorId:ne:null
- name: limit
in: query
schema:
maximum: 200
type: integer
format: int32
- name: offset
in: query
description: Number of items to skip before starting to collect the result set. Deprecated, use 'cursor' instead.
deprecated: true
schema:
type: integer
format: int64
- name: cursor
in: query
description: 'The cursor position to start returning results from.
To opt-in into cursor-based pagination, provide `0` for the initial request.
For subsequent requests, use `nextCursor` and `prevCursor` from the previous response to navigate.
Cursor values are opaque and should not be constructed manually.'
schema:
type: string
- name: includeRoles
in: query
schema:
type: boolean
- name: includeGroups
in: query
schema:
type: boolean
- name: includeManagers
in: query
schema:
type: boolean
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalPaginatedResponseV1ModelExternalUserV1Model'
post:
tags:
- v1 - Users
summary: Create user
description: Creates a new user
operationId: createUser
requestBody:
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalCreateUserRequestV1Model'
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalUserV1Model'
/v1/users/{userId}/reimbursements/latest:
get:
tags:
- v1 - Users
summary: Get latest reimbursement
description: Returns the most recent reimbursement for a user
operationId: getLatestReimbursement
parameters:
- name: userId
in: path
required: true
schema:
type: string
format: uuid
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalReimbursementV1Model'
/v1/users/{userId}/reimbursement-config:
get:
tags:
- v1 - Users
summary: Get reimbursement config
description: Returns the reimbursement configuration for a user
operationId: getUserReimbursementConfig
parameters:
- name: userId
in: path
required: true
schema:
type: string
format: uuid
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalUserReimbursementConfigV1Model'
put:
tags:
- v1 - Users
summary: Update reimbursement config
description: Creates or updates the reimbursement configuration for a user
operationId: upsertUserReimbursementConfig
parameters:
- name: userId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalUpsertUserReimbursementConfigRequestV1Model'
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalUserReimbursementConfigV1Model'
/v1/users/{userId}:
patch:
tags:
- v1 - Users
summary: Update user
description: Updates the given user
operationId: updateUser
parameters:
- name: userId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalUpdateUserRequestV1Model'
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalUserV1Model'
/v1/users/{userId}/status:
put:
tags:
- v1 - Users
summary: Update user status
description: Updates the given user's status
operationId: updateUserStatus
parameters:
- name: userId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalUpdateUserStatusRequestV1Model'
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalUserV1Model'
components:
schemas:
ExternalUiClientExceptionV1Model:
type:
- object
- 'null'
properties:
name:
type: string
description: The error name
type:
type: string
description: 'The error type
⚠️ This enum is not exhaustive; new values may be added in the future.'
deprecated: false
enum:
- BAD_REQUEST
- UNAUTHORIZED
- FORBIDDEN
- NOT_FOUND
- CONFLICT
- UNPROCESSABLE_CONTENT
errors:
type: array
description: List of errors providing details about what went wrong
items:
$ref: '#/components/schemas/ExternalUiClientExceptionErrorV1Model'
description: Failure context when vendor onboarding fails.
PhoneNumber:
type:
- object
- 'null'
properties:
countryCode:
type: string
description: ⚠️ This enum is not exhaustive; new values may be added in the future.
enum:
- UNDEFINED
- AC
- AD
- AE
- AF
- AG
- AI
- AL
- AM
- AN
- AO
- AQ
- AR
- AS
- AT
- AU
- AW
- AX
- AZ
- BA
- BB
- BD
- BE
- BF
- BG
- BH
- BI
- BJ
- BL
- BM
- BN
- BO
- BQ
- BR
- BS
- BT
- BU
- BV
- BW
- BY
- BZ
- CA
- CC
- CD
- CF
- CG
- CH
- CI
- CK
- CL
- CM
- CN
- CO
- CP
- CR
- CS
- CU
- CV
- CW
- CX
- CY
- CZ
- DE
- DG
- DJ
- DK
- DM
- DO
- DZ
- EA
- EC
- EE
- EG
- EH
- ER
- ES
- ET
- EU
- EZ
- FI
- FJ
- FK
- FM
- FO
- FR
- FX
- GA
- GB
- GD
- GE
- GF
- GG
- GH
- GI
- GL
- GM
- GN
- GP
- GQ
- GR
- GS
- GT
- GU
- GW
- GY
- HK
- HM
- HN
- HR
- HT
- HU
- IC
- ID
- IE
- IL
- IM
- IN
- IO
- IQ
- IR
- IS
- IT
- JE
- JM
- JO
- JP
- KE
- KG
- KH
- KI
- KM
- KN
- KP
- KR
- KW
- KY
- KZ
- LA
- LB
- LC
- LI
- LK
- LR
- LS
- LT
- LU
- LV
- LY
- MA
- MC
- MD
- ME
- MF
- MG
- MH
- MK
- ML
- MM
- MN
- MO
- MP
- MQ
- MR
- MS
- MT
- MU
- MV
- MW
- MX
- MY
- MZ
- NA
- NC
- NE
- NF
- NG
- NI
- NL
- 'NO'
- NP
- NR
- NT
- NU
- NZ
- OM
- PA
- PE
- PF
- PG
- PH
- PK
- PL
- PM
- PN
- PR
- PS
- PT
- PW
- PY
- QA
- RE
- RO
- RS
- RU
- RW
- SA
- SB
- SC
- SD
- SE
- SF
- SG
- SH
- SI
- SJ
- SK
- SL
- SM
- SN
- SO
- SR
- SS
- ST
- SU
- SV
- SX
- SY
- SZ
- TA
- TC
- TD
- TF
- TG
- TH
- TJ
- TK
- TL
- TM
- TN
- TO
- TP
- TR
- TT
- TV
- TW
- TZ
- UA
- UG
- UK
- UM
- US
- UY
- UZ
- VA
- VC
- VE
- VG
- VI
- VN
- VU
- WF
- WS
- XI
- XU
- XK
- YE
- YT
- YU
- ZA
- ZM
- ZR
- ZW
localNumber:
type: string
description: Vendor phone number.
ExternalUserReimbursementConfigV1Model:
type: object
properties:
id:
type: string
format: uuid
userId:
type: string
format: uuid
companyId:
type: string
format: uuid
currency:
type: string
example: USD
defaultCostCenterId:
type: string
format: uuid
bankCountry:
type: string
description: ⚠️ This enum is not exhaustive; new values may be added in the future.
enum:
- UNDEFINED
- AC
- AD
- AE
- AF
- AG
- AI
- AL
- AM
- AN
- AO
- AQ
- AR
- AS
- AT
- AU
- AW
- AX
- AZ
- BA
- BB
- BD
- BE
- BF
- BG
- BH
- BI
- BJ
- BL
- BM
- BN
- BO
- BQ
- BR
- BS
- BT
- BU
- BV
- BW
- BY
- BZ
- CA
- CC
- CD
- CF
- CG
- CH
- CI
- CK
- CL
- CM
- CN
- CO
- CP
- CR
- CS
- CU
- CV
- CW
- CX
- CY
- CZ
- DE
- DG
- DJ
- DK
- DM
- DO
- DZ
- EA
- EC
- EE
- EG
- EH
- ER
- ES
- ET
- EU
- EZ
- FI
- FJ
- FK
- FM
- FO
- FR
- FX
- GA
- GB
- GD
- GE
- GF
- GG
- GH
- GI
- GL
- GM
- GN
- GP
- GQ
- GR
- GS
- GT
- GU
- GW
- GY
- HK
- HM
- HN
- HR
- HT
- HU
- IC
- ID
- IE
- IL
- IM
- IN
- IO
- IQ
- IR
- IS
- IT
- JE
- JM
- JO
- JP
- KE
- KG
- KH
- KI
- KM
- KN
- KP
- KR
- KW
- KY
- KZ
- LA
- LB
- LC
- LI
- LK
- LR
- LS
- LT
- LU
- LV
- LY
- MA
- MC
- MD
- ME
- MF
- MG
- MH
- MK
- ML
- MM
- MN
- MO
- MP
- MQ
- MR
- MS
- MT
- MU
- MV
- MW
- MX
- MY
- MZ
- NA
- NC
- NE
- NF
- NG
- NI
- NL
- 'NO'
- NP
- NR
- NT
- NU
- NZ
- OM
- PA
- PE
- PF
- PG
- PH
- PK
- PL
- PM
- PN
- PR
- PS
- PT
- PW
- PY
- QA
- RE
- RO
- RS
- RU
- RW
- SA
- SB
- SC
- SD
- SE
- SF
- SG
- SH
- SI
- SJ
- SK
- SL
- SM
- SN
- SO
- SR
- SS
- ST
- SU
- SV
- SX
- SY
- SZ
- TA
- TC
- TD
- TF
- TG
- TH
- TJ
- TK
- TL
- TM
- TN
- TO
- TP
- TR
- TT
- TV
- TW
- TZ
- UA
- UG
- UK
- UM
- US
- UY
- UZ
- VA
- VC
- VE
- VG
- VI
- VN
- VU
- WF
- WS
- XI
- XU
- XK
- YE
- YT
- YU
- ZA
- ZM
- ZR
- ZW
bankName:
type: string
bankCity:
type: string
bankAddress:
type: string
bankZipcode:
type: string
bankAccountNumber:
type: string
bankAccountBic:
type: string
domesticBankAccountNumber:
type: string
domesticBankAccountCode:
type: string
status:
type: string
description: ⚠️ This enum is not exhaustive; new values may be added in the future.
enum:
- ACTIVE
failureContext:
$ref: '#/components/schemas/ExternalUiClientExceptionV1Model'
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
ExternalPaginatedResponseV1ModelExternalUserV1Model:
type: object
properties:
records:
type: array
description: List of records for the current page
items:
$ref: '#/components/schemas/ExternalUserV1Model'
hasMore:
type: boolean
description: Boolean flag indicating if there are more records available
total:
type:
- integer
- 'null'
description: Total number of records (only for offset pagination). This field is not guaranteed to be returned and only available for offset pagination, please do not rely on it and migrate to cursor pagination.
format: int64
deprecated: true
nextCursor:
type:
- string
- 'null'
description: Cursor for fetching the next page (only for cursor pagination)
prevCursor:
type:
- string
- 'null'
description: Cursor for fetching the previous page (only for cursor pagination)
ExternalUiClientExceptionErrorV1Model:
type: object
properties:
type:
type: string
description: A string code identifying the error type
message:
type: string
description: A human-readable message providing more details about the error
path:
type:
- array
- 'null'
description: Optional path of the error when the error is for a specific field. Used mostly on BAD_REQUEST errors, that path will match the field name on the request object
items:
type:
- string
- 'null'
description: Optional path of the error when the error is for a specific field. Used mostly on BAD_REQUEST errors, that path will match the field name on the request object
context:
type:
- object
- 'null'
additionalProperties:
type:
- object
- 'null'
description: Optional context providing additional information about the error. This can include any relevant data that might help in understanding or resolving the error
description: Optional context providing additional information about the error. This can include any relevant data that might help in understanding or resolving the error
description: List of errors providing details about what went wrong
ExternalUpdateUserStatusRequestV1Model:
type: object
properties:
status:
type: string
description: ⚠️ This enum is not exhaustive; new values may be added in the future.
enum:
- ACTIVE
- DEACTIVATED
ExternalUserV1Model:
type: object
properties:
id:
type: string
format: uuid
companyId:
type: string
format: uuid
companyEntityId:
type: string
format: uuid
email:
type: string
firstName:
type: string
lastName:
type: string
phoneNumber:
$ref: '#/components/schemas/PhoneNumber'
avatarUrl:
type: string
country:
type: string
description: ⚠️ This enum is not exhaustive; new values may be added in the future.
enum:
- UNDEFINED
- AC
- AD
- AE
- AF
- AG
- AI
- AL
- AM
- AN
- AO
- AQ
- AR
- AS
- AT
- AU
- AW
- AX
- AZ
- BA
- BB
- BD
- BE
- BF
- BG
- BH
- BI
- BJ
- BL
- BM
- BN
- BO
- BQ
- BR
- BS
- BT
- BU
- BV
- BW
- BY
- BZ
- CA
- CC
- CD
- CF
- CG
- CH
- CI
- CK
- CL
- CM
- CN
- CO
- CP
- CR
- CS
- CU
- CV
- CW
- CX
- CY
- CZ
- DE
- DG
- DJ
- DK
- DM
- DO
- DZ
- EA
- EC
- EE
- EG
- EH
- ER
- ES
- ET
- EU
- EZ
- FI
- FJ
- FK
- FM
- FO
- FR
- FX
- GA
- GB
- GD
- GE
- GF
- GG
- GH
- GI
- GL
- GM
- GN
- GP
- GQ
- GR
- GS
- GT
- GU
- GW
- GY
- HK
- HM
- HN
- HR
- HT
- HU
- IC
- ID
- IE
- IL
- IM
- IN
- IO
- IQ
- IR
- IS
- IT
- JE
- JM
- JO
- JP
- KE
- KG
- KH
- KI
- KM
- KN
- KP
- KR
- KW
- KY
- KZ
- LA
- LB
- LC
- LI
- LK
- LR
- LS
- LT
- LU
- LV
- LY
- MA
- MC
- MD
- ME
- MF
- MG
- MH
- MK
- ML
- MM
- MN
- MO
- MP
- MQ
- MR
- MS
- MT
- MU
- MV
- MW
- MX
- MY
- MZ
- NA
- NC
- NE
- NF
- NG
- NI
- NL
- 'NO'
- NP
- NR
- NT
- NU
- NZ
- OM
- PA
- PE
- PF
- PG
- PH
- PK
- PL
- PM
- PN
- PR
- PS
- PT
- PW
- PY
- QA
- RE
- RO
- RS
- RU
- RW
- SA
- SB
- SC
- SD
- SE
- SF
- SG
- SH
- SI
- SJ
- SK
- SL
- SM
- SN
- SO
- SR
- SS
- ST
- SU
- SV
- SX
- SY
- SZ
- TA
- TC
- TD
- TF
- TG
- TH
- TJ
- TK
- TL
- TM
- TN
- TO
- TP
- TR
- TT
- TV
- TW
- TZ
- UA
- UG
- UK
- UM
- US
- UY
- UZ
- VA
- VC
- VE
- VG
- VI
- VN
- VU
- WF
- WS
- XI
- XU
- XK
- YE
- YT
- YU
- ZA
- ZM
- ZR
- ZW
city:
type: string
zipcode:
type: string
address:
type: string
status:
type: string
description: ⚠️ This enum is not exhaustive; new values may be added in the future.
enum:
- ACTIVE
- DEACTIVATED
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
roles:
uniqueItems: true
type: array
items:
type: string
description: ⚠️ This enum is not exhaustive; new values may be added in the future.
enum:
- SUPERUSER
- REIMBURSEMENT
- CARDHOLDER
- CONTROLLER
- COMPANY_ADMIN
- VENDOR_MANAGEMENT
- INVOICE_APPROVER
- AP_PREPARATION
- AP_CLERK
- AR_CLERK
- PURCHASE_REQUESTER
- REPORT_VIEWER
- AUDITOR
groups:
uniqueItems: true
type: array
items:
$ref: '#/components/schemas/ExternalUserGroupV1Model'
managerIds:
uniqueItems: true
type: array
items:
type: string
format: uuid
ExternalReimbursementV1Model:
type: object
properties:
id:
type: string
format: uuid
companyId:
type: string
format: uuid
userId:
type: string
format: uuid
expenseIds:
type: array
items:
type: string
format: uuid
status:
type: string
description: ⚠️ This enum is not exhaustive; new values may be added in the future.
enum:
- IN_PROGRESS
- SUCCEEDED
- FAILED
- REJECTED
- RESET
createdAt:
type: string
format: date-time
ExternalCreateUserRequestV1Model:
type: object
properties:
firstName:
type: string
lastName:
type: string
email:
type: string
companyEntityId:
type: string
format: uuid
phoneNumber:
$ref: '#/components/schemas/PhoneNumber'
avatarUrl:
type:
- string
- 'null'
country:
type:
- string
- 'null'
description: ⚠️ This enum is not exhaustive; new values may be added in the future.
enum:
- UNDEFINED
- AC
- AD
- AE
- AF
- AG
- AI
- AL
- AM
- AN
- AO
- AQ
- AR
- AS
- AT
- AU
- AW
- AX
- AZ
- BA
- BB
- BD
- BE
- BF
- BG
- BH
- BI
- BJ
- BL
- BM
- BN
- BO
- BQ
- BR
- BS
- BT
- BU
- BV
- BW
- BY
- BZ
- CA
- CC
- CD
- CF
- CG
- CH
- CI
- CK
- CL
- CM
- CN
- CO
- CP
- CR
- CS
- CU
- CV
- CW
- CX
- CY
- CZ
- DE
- DG
- DJ
- DK
- DM
- DO
- DZ
- EA
- EC
- EE
- EG
- EH
- ER
- ES
- ET
- EU
- EZ
- FI
- FJ
- FK
- FM
- FO
- FR
- FX
- GA
- GB
- GD
- GE
- GF
- GG
- GH
- GI
- GL
- GM
- GN
- GP
- GQ
- GR
- GS
- GT
- GU
- GW
- GY
- HK
- HM
- HN
- HR
- HT
- HU
- IC
- ID
- IE
- IL
- IM
- IN
- IO
- IQ
- IR
- IS
- IT
- JE
- JM
- JO
- JP
- KE
- KG
- KH
- KI
- KM
- KN
- KP
- KR
- KW
- KY
- KZ
- LA
- LB
- LC
- LI
- LK
- LR
- LS
- LT
- LU
- LV
- LY
- MA
- MC
- MD
- ME
- MF
- MG
- MH
- MK
- ML
- MM
- MN
- MO
- MP
- MQ
- MR
- MS
- MT
- MU
- MV
- MW
- MX
- MY
- MZ
- NA
- NC
- NE
- NF
- NG
- NI
- NL
- 'NO'
- NP
- NR
- NT
- NU
- NZ
- OM
- PA
- PE
- PF
- PG
- PH
- PK
- PL
- PM
- PN
- PR
- PS
- PT
- PW
- PY
- QA
- RE
- RO
- RS
- RU
- RW
- SA
- SB
- SC
- SD
- SE
- SF
- SG
- SH
- SI
- SJ
- SK
- SL
- SM
- SN
- SO
- SR
- SS
- ST
- SU
- SV
- SX
- SY
- SZ
- TA
- TC
- TD
- TF
- TG
- TH
- TJ
- TK
- TL
- TM
- TN
- TO
- TP
- TR
- TT
- TV
- TW
- TZ
- UA
- UG
- UK
- UM
- US
- UY
- UZ
- VA
- VC
- VE
- VG
- VI
- VN
- VU
- WF
- WS
- XI
- XU
- XK
- YE
- YT
- YU
- ZA
- ZM
- ZR
- ZW
city:
type:
- string
- 'null'
address:
type:
- string
- 'null'
zipcode:
type:
- string
- 'null'
roles:
uniqueItems: true
type: array
items:
type: string
description: ⚠️ This enum is not exhaustive; new values may be added in the future.
enum:
- SUPERUSER
- REIMBURSEMENT
- CARDHOLDER
- CONTROLLER
- COMPANY_ADMIN
- VENDOR_MANAGEMENT
- INVOICE_APPROVER
- AP_PREPARATION
- AP_CLERK
- AR_CLERK
- PURCHASE_REQUESTER
- REPORT_VIEWER
- AUDITOR
sendWelcomeEmail:
type:
- boolean
- 'null'
ExternalUpsertUserReimbursementConfigRequestV1Model:
type: object
properties:
currency:
type: string
example: USD
bankCountry:
type: string
description: ⚠️ This enum is not exhaustive; new values may be added in the future.
enum
# --- truncated at 32 KB (42 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/light/refs/heads/main/openapi/light-v1-users-api-openapi.yml