openapi: 3.0.3 info: title: BigChange DX REST API version: '1.0' description: >- OpenAPI description of the BigChange DX REST API (the modern REST interface to the BigChange / JobWatch field service and job management platform). Grounded: the base URL (https://api.bigchange.com), the path templates, the HTTP methods, the Bearer JWT security scheme, and the required Customer-Id header are all taken directly from BigChange's own published Swagger/OpenAPI documents: - https://api.bigchange.com/swagger/v1/swagger.json (BigChange DX, 108 paths) - https://api.bigchange.com/swagger/asset-management/v1/swagger.json - https://api.bigchange.com/swagger/webhooks/v1/swagger.json Modeled: this document is an API Evangelist-authored, representative SUBSET of the full published specification. Request and response BODY schemas are summarized as generic objects here rather than reproduced field-by-field - consult the upstream swagger.json documents above for the complete, authoritative request/response models. Every path and method listed below exists in the published BigChange spec. contact: name: BigChange Developer Portal url: https://developers.bigchange.com/docs/rest/api-reference servers: - url: https://api.bigchange.com description: BigChange DX production API (all products share this host) security: - bearer: [] tags: - name: Jobs - name: Contacts - name: Persons - name: Finance - name: Stock - name: Resources - name: Users - name: Vehicles - name: Reference Data - name: Assets - name: Webhooks paths: /v1/jobs: get: tags: [Jobs] summary: Get a list of jobs description: >- Returns a paged list of jobs. Supports filtering by type, contact, resource, order number, and created-at date range, plus sorting and pagination (pageNumber, pageSize). Modeled from the published spec. parameters: - $ref: '#/components/parameters/CustomerId' - name: typeId in: query schema: { type: integer, format: int64 } - name: contactId in: query schema: { type: integer, format: int64 } - name: pageNumber in: query schema: { type: integer } - name: pageSize in: query schema: { type: integer } responses: '200': description: A paged list of jobs. content: application/json: schema: { $ref: '#/components/schemas/PagedResult' } post: tags: [Jobs] summary: Create a job parameters: - $ref: '#/components/parameters/CustomerId' requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/GenericObject' } responses: '201': description: The created job. content: application/json: schema: { $ref: '#/components/schemas/GenericObject' } /v1/jobs/{jobId}: get: tags: [Jobs] summary: Get a job parameters: - $ref: '#/components/parameters/CustomerId' - $ref: '#/components/parameters/JobId' responses: '200': description: The requested job. content: application/json: schema: { $ref: '#/components/schemas/GenericObject' } patch: tags: [Jobs] summary: Update a job parameters: - $ref: '#/components/parameters/CustomerId' - $ref: '#/components/parameters/JobId' requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/GenericObject' } responses: '200': description: The updated job. content: application/json: schema: { $ref: '#/components/schemas/GenericObject' } /v1/jobs/{jobId}/schedule: put: tags: [Jobs] summary: Schedule or unschedule a job description: Assign a job to a resource and time slot, or unschedule it. parameters: - $ref: '#/components/parameters/CustomerId' - $ref: '#/components/parameters/JobId' requestBody: content: application/json: schema: { $ref: '#/components/schemas/GenericObject' } responses: '204': { description: The job schedule was updated. } /v1/jobs/{jobId}/start: put: tags: [Jobs] summary: Set a job to started parameters: - $ref: '#/components/parameters/CustomerId' - $ref: '#/components/parameters/JobId' responses: '204': { description: The job was marked started. } /v1/jobs/{jobId}/result: put: tags: [Jobs] summary: Set a job's result parameters: - $ref: '#/components/parameters/CustomerId' - $ref: '#/components/parameters/JobId' requestBody: content: application/json: schema: { $ref: '#/components/schemas/GenericObject' } responses: '204': { description: The job result was recorded. } /v1/jobTypes: get: tags: [Reference Data] summary: Get a list of job types parameters: - $ref: '#/components/parameters/CustomerId' responses: '200': description: A list of job types. content: application/json: schema: { $ref: '#/components/schemas/GenericArray' } /v1/contacts: get: tags: [Contacts] summary: Get a list of contacts parameters: - $ref: '#/components/parameters/CustomerId' responses: '200': description: A paged list of contacts. content: application/json: schema: { $ref: '#/components/schemas/PagedResult' } post: tags: [Contacts] summary: Create a contact parameters: - $ref: '#/components/parameters/CustomerId' requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/GenericObject' } responses: '201': description: The created contact. content: application/json: schema: { $ref: '#/components/schemas/GenericObject' } /v1/contacts/{contactId}: get: tags: [Contacts] summary: Get a contact parameters: - $ref: '#/components/parameters/CustomerId' - name: contactId in: path required: true schema: { type: integer, format: int64 } responses: '200': description: The requested contact. content: application/json: schema: { $ref: '#/components/schemas/GenericObject' } /v1/persons: get: tags: [Persons] summary: Get a list of persons parameters: - $ref: '#/components/parameters/CustomerId' responses: '200': description: A paged list of persons. content: application/json: schema: { $ref: '#/components/schemas/PagedResult' } post: tags: [Persons] summary: Create a person parameters: - $ref: '#/components/parameters/CustomerId' requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/GenericObject' } responses: '201': description: The created person. content: application/json: schema: { $ref: '#/components/schemas/GenericObject' } /v1/finance/invoices: get: tags: [Finance] summary: Get a list of invoices parameters: - $ref: '#/components/parameters/CustomerId' responses: '200': description: A paged list of invoices. content: application/json: schema: { $ref: '#/components/schemas/PagedResult' } post: tags: [Finance] summary: Create an invoice parameters: - $ref: '#/components/parameters/CustomerId' requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/GenericObject' } responses: '201': description: The created invoice. content: application/json: schema: { $ref: '#/components/schemas/GenericObject' } /v1/finance/quotes: get: tags: [Finance] summary: Get a list of quotes parameters: - $ref: '#/components/parameters/CustomerId' responses: '200': description: A paged list of quotes. content: application/json: schema: { $ref: '#/components/schemas/PagedResult' } post: tags: [Finance] summary: Create a quote parameters: - $ref: '#/components/parameters/CustomerId' requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/GenericObject' } responses: '201': description: The created quote. content: application/json: schema: { $ref: '#/components/schemas/GenericObject' } /v1/finance/purchaseOrders: get: tags: [Finance] summary: Get a list of purchase orders parameters: - $ref: '#/components/parameters/CustomerId' responses: '200': description: A paged list of purchase orders. content: application/json: schema: { $ref: '#/components/schemas/PagedResult' } /v1/stockItems: get: tags: [Stock] summary: Get a list of stock items parameters: - $ref: '#/components/parameters/CustomerId' responses: '200': description: A paged list of stock items. content: application/json: schema: { $ref: '#/components/schemas/PagedResult' } post: tags: [Stock] summary: Create a stock item parameters: - $ref: '#/components/parameters/CustomerId' requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/GenericObject' } responses: '201': description: The created stock item. content: application/json: schema: { $ref: '#/components/schemas/GenericObject' } /v1/resources: get: tags: [Resources] summary: Get a list of resources parameters: - $ref: '#/components/parameters/CustomerId' responses: '200': description: A paged list of resources (the mobile workforce). content: application/json: schema: { $ref: '#/components/schemas/PagedResult' } /v1/users: get: tags: [Users] summary: Gets a list of users parameters: - $ref: '#/components/parameters/CustomerId' responses: '200': description: A paged list of back-office users. content: application/json: schema: { $ref: '#/components/schemas/PagedResult' } /v1/vehicles: get: tags: [Vehicles] summary: Get a list of vehicles parameters: - $ref: '#/components/parameters/CustomerId' responses: '200': description: A paged list of fleet vehicles. content: application/json: schema: { $ref: '#/components/schemas/PagedResult' } post: tags: [Vehicles] summary: Create a vehicle parameters: - $ref: '#/components/parameters/CustomerId' requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/GenericObject' } responses: '201': description: The created vehicle. content: application/json: schema: { $ref: '#/components/schemas/GenericObject' } /asset-management/v1/assets: get: tags: [Assets] summary: Get a list of assets description: Published in BigChange's separate Asset Management OpenAPI document. parameters: - $ref: '#/components/parameters/CustomerId' responses: '200': description: A paged list of customer assets. content: application/json: schema: { $ref: '#/components/schemas/PagedResult' } post: tags: [Assets] summary: Create an asset parameters: - $ref: '#/components/parameters/CustomerId' requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/GenericObject' } responses: '201': description: The created asset. content: application/json: schema: { $ref: '#/components/schemas/GenericObject' } /webhooks/v1/subscriptions: get: tags: [Webhooks] summary: Get webhook subscriptions description: >- Lists webhook subscriptions. BigChange webhooks are outbound HTTP callbacks (server-to-consumer POST); there is no WebSocket transport. parameters: - $ref: '#/components/parameters/CustomerId' responses: '200': description: A list of webhook subscriptions. content: application/json: schema: { $ref: '#/components/schemas/GenericArray' } /webhooks/v1/failed: get: tags: [Webhooks] summary: Get failed webhook deliveries parameters: - $ref: '#/components/parameters/CustomerId' responses: '200': description: A list of failed webhook deliveries. content: application/json: schema: { $ref: '#/components/schemas/GenericArray' } components: securitySchemes: bearer: type: http scheme: bearer bearerFormat: JWT description: >- Bearer JWT access token. Obtain an access token from BigChange's authentication proxy using an API key issued in the developer portal (Account > Manage API Keys / Integrations), then send it as `Authorization: Bearer `. Confirmed from the published BigChange swagger security scheme ("Enter the access token only"). parameters: CustomerId: name: Customer-Id in: header required: true description: >- The customer (BigChange account) identifier. Required on every operation in the published spec. schema: type: integer format: int64 JobId: name: jobId in: path required: true schema: type: integer format: int64 schemas: GenericObject: type: object description: >- Placeholder object. See BigChange's published swagger.json for the full, authoritative field-level schema of this resource. additionalProperties: true GenericArray: type: array items: $ref: '#/components/schemas/GenericObject' PagedResult: type: object description: Standard paged list envelope (modeled). properties: pageNumber: type: integer pageSize: type: integer totalCount: type: integer items: $ref: '#/components/schemas/GenericArray'