swagger: '2.0'
info:
version: 3.0.0
title: appointments adopt events API
description: "## Fortellis - Service - Appointments\nA service appointment is a booking of a vehicle into the service department for work that needs to be carried out on the vehicle. This could be a service, repair, body repair, government test etc.\n\n## What does this API do?\nThe API will allow you to query, create and manage service appointments. \n\n## Intended Audience\nIt is expected that systems that require create, read, update, and delete access to appointments will use this API. Systems implementing service-scheduling will use this API to store appointment records.\n"
contact:
name: Developer Evangelists
url: https://example.com
email: support@fortellis.io
host: fortellis.io
basePath: /sales/notification/v3
schemes:
- https
security:
- permission-model:
- anonymous
tags:
- name: events
paths:
/event/{channel}:
post:
summary: Post an event.
description: Event delivery endpoint to be implemented on the client-side.
operationId: postEvent
tags:
- events
parameters:
- name: channel
in: path
description: the channel/path used when the event was posted by the source. Please consult the related AsyncAPI specification.
required: true
schema:
type: integer
- $ref: '#/components/parameters/header.X-Request-Id'
- $ref: '#/components/parameters/header.Fortellis-Event-Id'
- $ref: '#/components/parameters/header.Authorization'
- $ref: '#/components/parameters/header.Data-Owner-Id'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Event'
description: "The event payload as it was received from the event's Source. \nWhile the message's payload should adhere to the corresponding AsyncAPI specification, the payload is not validated by Fortellis Event Relay upon receipt. The platform considers the message payload and its specification a contract between the source and the sink. As such, issues with that format should be addressed by those parties, and source request id and Fortellis Event Id are provided to facilitate that conversation. \nRejection of an event will place the record and its partition on hold and trigger us to attempt retransmission until we succeed. **We will not move forward to the next record when we receive an error.** Failed attempts at transmission may be billable, and placing a subscription in an extended pause period increases the possibility of duplicate record delivery. Synchronous Validation of any elements other than the headers is discouraged."
required: true
responses:
'202':
$ref: '#/components/responses/EventReceived'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
components:
parameters:
header.X-Request-Id:
name: X-Request-Id
in: header
description: 'A correlation ID that should mirror the value of the X-Request-Id request
header provided by the client.
'
schema:
type: string
format: uuid
header.Data-Owner-Id:
name: Data-Owner-Id
in: header
required: false
description: 'A Fortellis Organization Id that identifies the organization represented by the event.
'
schema:
type: string
format: uuid
header.Authorization:
name: Authorization
in: header
required: true
description: 'Contains credentials that allows the caller to authenticate itself with the
API. See RFC 7235 and RFC 7617 for more details.
'
schema:
type: string
header.Fortellis-Event-Id:
name: Fortellis-Event-Id
in: header
required: true
description: This is a unique ID for the event assigned by Fortellis at time receipt and provided to the event source.
schema:
type: string
format: uuid
responses:
Forbidden:
description: 403 - Forbidden
headers:
X-Request-Id:
description: The matching correlation identifier to the request by the client.
schema:
type: string
content:
'*/*':
schema:
$ref: '#/components/schemas/ErrorResponse'
BadRequest:
description: '400 - Bad Request Rejection of an event will place the record and its partition on hold and trigger us to attempt retransmission until we succeed. **We will not move forward to the next record when we receive an error.** Failed attempts at transmission may be billable, and placing a subscription in an extended pause period increases the possibility of duplicate record delivery. Synchronous Validation of any elements other than the headers is discouraged.
'
headers:
X-Request-Id:
description: Invalid Event received
schema:
type: string
content:
'*/*':
schema:
$ref: '#/components/schemas/ErrorResponse'
NotFound:
description: 404 - Not Found
headers:
X-Request-Id:
description: The matching correlation identifier to the request by the client.
schema:
type: string
content:
'*/*':
schema:
$ref: '#/components/schemas/ErrorResponse'
Unauthorized:
description: 401 - Unauthorized
headers:
X-Request-Id:
description: The matching correlation identifier to the request by the client.
schema:
type: string
content:
'*/*':
schema:
$ref: '#/components/schemas/ErrorResponse'
ServiceUnavailable:
description: 503 - Service Unavailable
headers:
X-Request-Id:
description: The matching correlation identifier to the request by the client.
schema:
type: string
content:
'*/*':
schema:
$ref: '#/components/schemas/ErrorResponse'
EventReceived:
description: Accepted the event for asynchronous processing.
headers:
X-Request-Id:
description: The matching correlation identifier to the request by the client.
schema:
type: string
InternalServerError:
description: 500 - Internal Server Error
headers:
X-Request-Id:
description: The matching correlation identifier to the request by the client.
schema:
type: string
content:
'*/*':
schema:
$ref: '#/components/schemas/ErrorResponse'
schemas:
ErrorResponse:
description: Common error response object.
properties:
code:
type: integer
format: int32
message:
type: string
required:
- code
- message
example:
code: 400
message: Bad Request
Event:
description: A single event record matching the schema defined in the corrisponding AsyncAPI.
type: object
example:
key1: value1
key2: value2
key3:
- arr-value1
- arr-value2
- arr-value3
key4:
sub-key1: sub-value1
sub-key2: sub-value2
securityDefinitions:
permission-model:
type: oauth2
flow: implicit
authorizationUrl: https://identity.fortellis.io/oauth2/
scopes:
anonymous: Create, Query, Update, and Delete appointments