openapi: 3.2.0 info: version: v1.0.0 title: XETA Trip API description: XE Travel API - Manage your trips and associated expenses. servers: - url: https://xeta-api.xe.com/v1 tags: - name: Trip paths: /trip: get: responses: '200': description: 200 response content: application/json: schema: $ref: '#/components/schemas/TripList' '400': description: 400 response content: application/json: schema: $ref: '#/components/schemas/XetaError' '500': description: 500 response content: application/json: schema: $ref: '#/components/schemas/XetaError' security: - xeta-drupal-authorizer: [] tags: - Trip post: responses: '200': description: 200 response content: application/json: schema: $ref: '#/components/schemas/Trip' '400': description: 400 response content: application/json: schema: $ref: '#/components/schemas/XetaError' '500': description: 500 response content: application/json: schema: $ref: '#/components/schemas/XetaError' security: - xeta-drupal-authorizer: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/Trip' required: true tags: - Trip /trip/{tripId}: get: parameters: - name: tripId in: path required: true schema: type: string responses: '200': description: 200 response content: application/json: schema: $ref: '#/components/schemas/Trip' '400': description: 400 response content: application/json: schema: $ref: '#/components/schemas/XetaError' '500': description: 500 response content: application/json: schema: $ref: '#/components/schemas/XetaError' security: - xeta-drupal-authorizer: [] tags: - Trip put: parameters: - name: tripId in: path required: true schema: type: string responses: '200': description: 200 response content: application/json: schema: $ref: '#/components/schemas/Trip' '400': description: 400 response content: application/json: schema: $ref: '#/components/schemas/XetaError' '500': description: 500 response content: application/json: schema: $ref: '#/components/schemas/XetaError' security: - xeta-drupal-authorizer: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/Trip' required: true tags: - Trip delete: parameters: - name: tripId in: path required: true schema: type: string responses: '200': description: 200 response '400': description: 400 response content: application/json: schema: $ref: '#/components/schemas/XetaError' '500': description: 500 response content: application/json: schema: $ref: '#/components/schemas/XetaError' security: - xeta-drupal-authorizer: [] tags: - Trip /trip/{tripId}/expense: get: parameters: - name: tripId in: path required: true schema: type: string responses: '200': description: 200 response content: application/json: schema: $ref: '#/components/schemas/ExpenseList' '400': description: 400 response content: application/json: schema: $ref: '#/components/schemas/XetaError' '500': description: 500 response content: application/json: schema: $ref: '#/components/schemas/XetaError' security: - xeta-drupal-authorizer: [] tags: - Trip components: schemas: ExpenseExpenseInvitationsItem: type: object required: - amount - expenseId - friendId - id - lastModifiedDate - userId properties: createdBy: type: integer description: Id of the user who created this entity. createdDate: type: integer description: Timestamp of when this entity was created. lastModifiedBy: type: integer description: Id of the user who last modified this entity. lastModifiedDate: type: integer description: Timestamp of when this entity was last modified. id: type: integer description: Unique identifier. invitationStatusName: type: string description: Status of the invitation. enum: - ACCEPTED - PENDING - REJECTED - DELETED userId: type: integer description: Id of the user who sent this invitation. friendId: type: integer description: Id of the user the expense was shared with. expenseId: type: integer description: Id of the expense that was shared. amount: type: number description: The amount of the expense that was split with the friend. description: An entity used to share expenses with other users. TripTripDestinationsItem: type: object required: - countryCode - id - lastModifiedDate - tripId properties: createdBy: type: integer description: Id of the user who created this entity. createdDate: type: integer description: Timestamp of when this entity was created. lastModifiedBy: type: integer description: Id of the user who last modified this entity. lastModifiedDate: type: integer description: Timestamp of when this entity was last modified. id: type: integer description: Unique identifier. tripId: type: integer description: Id of the trip this destination belongs to. countryCode: type: string description: ISO 3166-1 alpha-2 country code. minLength: 2 maxLength: 2 pattern: ^.*\S+.*$ description: An entity used to attach destinations to trips. Trip: type: object required: - budgetCurrencyCode - endDate - id - lastModifiedDate - name - startDate - usdMidMarketRate properties: createdBy: type: integer description: Id of the user who created this entity. createdDate: type: integer description: Timestamp of when this entity was created. lastModifiedBy: type: integer description: Id of the user who last modified this entity. lastModifiedDate: type: integer description: Timestamp of when this entity was last modified. id: type: integer description: Unique identifier. name: type: string description: Trip name. minLength: 1 maxLength: 191 pattern: ^.*\S+.*$ startDate: type: integer description: Timestamp of when this trip was started. endDate: type: integer description: Timestamp of when this trip was ended. budget: type: number description: Budget amount allocated for this trip. usdMidMarketRate: type: number description: Mid-market rate from the budget currency to USD. budgetCurrencyCode: type: string description: ISO 4217 budget currency code. minLength: 3 maxLength: 3 pattern: ^.*\S+.*$ usedBudget: type: number description: Amount spent on expenses associated with this trip. tripDestinations: type: array description: List of destinations attached to this trip. items: $ref: '#/components/schemas/TripTripDestinationsItem' usdBudget: type: number description: Budget amount allocated for this trip in USD. title: Trip description: An entity used to group expenses on a trip. ExpenseList: title: ExpenseList type: array description: Expense List object items: $ref: '#/components/schemas/Expense' XetaErrorValidationErrorsItem: type: object required: - code - message properties: code: type: string description: Unique error code. enum: - SIZE - 'NULL' - DIGIT - REQUIRED - UNEXPECTED - TRIP - EXPENSE - EMAIL message: type: string description: Verbose error description. field: type: string description: Field that triggered the validation error. description: An entity used to represent validation errors. TripList: title: TripList type: array description: Trip List object items: $ref: '#/components/schemas/Trip' ExpenseUserExpense: type: object required: - budgetCategoryId - expenseId - lastModifiedDate - userId properties: createdBy: type: integer description: Id of the user who created this entity. createdDate: type: integer description: Timestamp of when this entity was created. lastModifiedBy: type: integer description: Id of the user who last modified this entity. lastModifiedDate: type: integer description: Timestamp of when this entity was last modified. userId: type: integer description: Id of the user in this relationship. expenseId: type: integer description: Id of the expense in this relationship. budgetCategoryId: type: integer description: Id of the budget category the associated expense is categorized under. description: An entity used to associate an expense and a user. ExpenseTripExpense: type: object required: - expenseId - lastModifiedDate - tripId properties: createdBy: type: integer description: Id of the user who created this entity. createdDate: type: integer description: Timestamp of when this entity was created. lastModifiedBy: type: integer description: Id of the user who last modified this entity. lastModifiedDate: type: integer description: Timestamp of when this entity was last modified. tripId: type: integer description: Id of the trip in this relationship. expenseId: type: integer description: Id of the expense in this relationship. description: An entity used to associate an expense and a trip. Expense: type: object required: - fromAmount - fromCurrencyCode - id - incurredDate - lastModifiedDate - margin - midMarketRate - name - rate - toCurrencyCode - tripExpense - usdMidMarketRate - userExpense properties: createdBy: type: integer description: Id of the user who created this entity. createdDate: type: integer description: Timestamp of when this entity was created. lastModifiedBy: type: integer description: Id of the user who last modified this entity. lastModifiedDate: type: integer description: Timestamp of when this entity was last modified. id: type: integer description: Unique identifier. name: type: string description: Expense name. minLength: 1 maxLength: 191 pattern: ^.*\S+.*$ fromAmount: type: number description: Foreign amount spent. toAmount: type: number description: Local amount spent. usdToAmount: type: number description: Local amount spent in USD. splitAmount: type: number description: Local amount shared. paymentMethodName: type: string description: Method used to pay for the expense. enum: - BANK_TRANSFER - CASH - CREDIT_CARD - DEBIT_CARD - MOBILE_PAYMENT - TRAVELERS_CHEQUE merchant: type: string description: Name of the merchant the expense was made made at. maxLength: 191 fromCurrencyCode: type: string description: ISO 4217 foreign currency code. minLength: 3 maxLength: 3 pattern: ^.*\S+.*$ toCurrencyCode: type: string description: ISO 4217 local currency code. minLength: 3 maxLength: 3 pattern: ^.*\S+.*$ midMarketRate: type: number description: Mid-market rate from the foreign currency to the local currency. rate: type: number description: Overriden rate from the foreign currency to the local currency. usdMidMarketRate: type: number description: Mid-market rate from the local currency to USD. margin: type: number description: Percentage increase in rate. note: type: string description: Arbitrary notes attached to an expense. maxLength: 65535 incurredDate: type: integer description: Timestamp of when this expense was incurred. userExpense: $ref: '#/components/schemas/ExpenseUserExpense' tripExpense: $ref: '#/components/schemas/ExpenseTripExpense' expenseInvitations: type: array description: List of invitations sent to share this expense. items: $ref: '#/components/schemas/ExpenseExpenseInvitationsItem' title: Expense description: An entity used to record expenses. XetaError: type: object properties: code: type: string description: Unique error code. enum: - OPTIMISTIC_LOCK - ENTITY_NOT_FOUND - ROUTE_NOT_FOUND - JSON - VALIDATION - UNAUTHORIZED - FORBIDDEN - UNEXPECTED - ENTITY_EXISTS - TOO_MANY_REQUESTS message: type: string description: Verbose error description. validationErrors: type: array description: Verbose validation errors. items: $ref: '#/components/schemas/XetaErrorValidationErrorsItem' title: Xeta Error description: An entity used to represent all errors. securitySchemes: xeta-drupal-authorizer: type: apiKey name: Cookie in: header x-amazon-apigateway-authtype: custom