Roadsync unauthenticated API
Unauthenticated operations not otherwise functionally categorized
Unauthenticated operations not otherwise functionally categorized
openapi: 3.0.1
info:
contact:
email: christo.delange@roadsync.com
description: This API allows the Roadsync clients to manage aspects of the RoadSync service via an API.
license:
name: Copyright (c) 2020, RoadSync Inc.
title: Client API v1.8 authenticated unauthenticated API
version: 1.8.45
x-api-id: 3ea39084-d8df-11ea-ad77-0017b600647f
x-audience: external-partner
servers:
- url: https://client-api.staging.roadsync.com/{basePath}
variables:
Product:
default: ClientApi
basePath:
default: v1
security:
- api_key: []
- session_token: []
tags:
- description: Unauthenticated operations not otherwise functionally categorized
name: unauthenticated
paths:
/login:
options:
operationId: login_options
responses:
'200':
$ref: '#/components/responses/Options200'
'401':
$ref: '#/components/responses/UnauthorizedError'
'403':
$ref: '#/components/responses/ForbiddenError'
'404':
$ref: '#/components/responses/NotFound404'
'429':
$ref: '#/components/responses/TooManyRequests429'
'500':
$ref: '#/components/responses/ServiceError500'
default:
$ref: '#/components/responses/UnexpectedError'
security: []
tags:
- unauthenticated
post:
description: Validate credentials and establish session
operationId: login_post
requestBody:
$ref: '#/components/requestBodies/LoginRequest'
responses:
'200':
$ref: '#/components/responses/LoginResponse'
'401':
$ref: '#/components/responses/UnauthorizedError'
'403':
$ref: '#/components/responses/ForbiddenError'
'404':
$ref: '#/components/responses/NotFound404'
'429':
$ref: '#/components/responses/TooManyRequests429'
'500':
$ref: '#/components/responses/ServiceError500'
default:
$ref: '#/components/responses/UnexpectedError'
security:
- api_key: []
summary: Accepts user credentials for validation, create a session and returns a session token
tags:
- unauthenticated
/ping:
get:
description: Test backend connectivity
operationId: ping_get
parameters:
- explode: true
in: query
name: pong
required: false
schema:
maxLength: 2048
pattern: /^.*$/
type: string
style: form
responses:
'200':
$ref: '#/components/responses/PingResponse'
'401':
$ref: '#/components/responses/UnauthorizedError'
'403':
$ref: '#/components/responses/ForbiddenError'
'404':
$ref: '#/components/responses/NotFound404'
'429':
$ref: '#/components/responses/TooManyRequests429'
'500':
$ref: '#/components/responses/ServiceError500'
default:
$ref: '#/components/responses/UnexpectedError'
security:
- api_key: []
summary: Does roundtrip with the backend API
tags:
- unauthenticated
options:
operationId: ping_options
responses:
'200':
$ref: '#/components/responses/Options200'
'401':
$ref: '#/components/responses/UnauthorizedError'
'403':
$ref: '#/components/responses/ForbiddenError'
'404':
$ref: '#/components/responses/NotFound404'
'429':
$ref: '#/components/responses/TooManyRequests429'
'500':
$ref: '#/components/responses/ServiceError500'
default:
$ref: '#/components/responses/UnexpectedError'
security: []
tags:
- unauthenticated
components:
schemas:
CodeMessage:
additionalProperties: false
description: A generic error object generally used for 500 responses
properties:
code:
$ref: '#/components/schemas/CodeEnum'
message:
$ref: '#/components/schemas/Message'
required:
- code
- message
Pong:
additionalProperties: false
description: A ping response which also has API version
example:
pong: pong
version: 1.8.45
properties:
pong:
maxLength: 2048
pattern: /^.*$/
type: string
timestamp:
$ref: '#/components/schemas/DateTime'
version:
maxLength: 64
pattern: ^[a-zA-Z0-9]*$
type: string
required:
- version
type: object
EmailAddress:
maxLength: 256
pattern: /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,5})$/
type: string
DateTime:
description: A timestamp of last modification of the entry.
example: '2020-07-21 17:32:28Z'
format: date-time
type: string
CodeEnum:
default: Success
enum:
- Success
- Error
- Exception
type: string
SessionToken:
description: Session token / identifier
format: password
maxLength: 2048
pattern: /^.*$/
type: string
PingResponse:
additionalProperties: false
allOf:
- $ref: '#/components/schemas/CodeMessage'
- $ref: '#/components/schemas/Pong'
type: object
Message:
maxLength: 2048
pattern: /^[a-zA-Z0-9 ]*$/
type: string
UsernamePassword:
additionalProperties: false
description: User credentials object
properties:
Password:
maxLength: 128
pattern: /^.*$/
type: string
Username:
maxLength: 64
pattern: /^.*$/
type: string
type: object
UserInfo:
additionalProperties: false
properties:
avatarUrl:
maxLength: 2048
pattern: /^.*$/
type: string
companyId:
$ref: '#/components/schemas/HashedId'
createdAt:
$ref: '#/components/schemas/DateTime'
email:
$ref: '#/components/schemas/EmailAddress'
fileId:
$ref: '#/components/schemas/HashedId'
first:
maxLength: 256
pattern: /^.*$/
type: string
firstPasswordReset:
type: boolean
freshchatRestoreId:
maxLength: 256
pattern: /^.*$/
type: string
id:
$ref: '#/components/schemas/HashedId'
isLocked:
type: boolean
isVerified:
type: boolean
last:
maxLength: 256
pattern: /^.*$/
type: string
lastLogin:
$ref: '#/components/schemas/DateTime'
locationIds:
items:
$ref: '#/components/schemas/HashedId'
maxItems: 64
type: array
lockedAt:
$ref: '#/components/schemas/DateTime'
phone:
$ref: '#/components/schemas/PhoneNumberInternational'
roles:
items:
$ref: '#/components/schemas/Role'
maxItems: 64
type: array
tfaEnabled:
type: boolean
updatedAt:
$ref: '#/components/schemas/DateTime'
username:
maxLength: 256
pattern: /^.*$/
type: string
type: object
LoginResponse:
allOf:
- $ref: '#/components/schemas/CodeMessage'
- additionalProperties: false
properties:
SessionToken:
$ref: '#/components/schemas/SessionToken'
UserInfo:
$ref: '#/components/schemas/UserInfo'
type: object
description: Session token / identifier
type: object
PhoneNumberInternational:
maxLength: 128
pattern: /^(?:(?:\(?(?:00|\+)([1-4]\d\d|[1-9]\d?)\)?)?[\-\.\ \\\/]?)?((?:\(?\d{1,}\)?[\-\.\ \\\/]?){0,})(?:[\-\.\ \\\/]?(?:#|ext\.?|extension|x)[\-\.\ \\\/]?(\d+))?$/
type: string
Role:
enum:
- ''
- superadmin
- companyadmin
- accountant
- employee
- warehouseworker
- rsemployee
- shiftmanager
- clientsupport
- implementation
- wexsettlementservice
type: string
Problem:
additionalProperties: false
properties:
detail:
description: 'A human readable explanation specific to this occurrence of the
problem.
'
example: Connection to database timed out
maxLength: 2048
pattern: /^.*$/
type: string
instance:
description: 'An absolute URI that identifies the specific occurrence of the problem.
It may or may not yield further information if dereferenced.
'
format: uri
maxLength: 2048
pattern: /^.*$/
type: string
status:
description: 'The HTTP status code generated by the origin server for this occurrence
of the problem.
'
example: 503
exclusiveMaximum: true
format: int32
maximum: 600
minimum: 100
type: integer
title:
description: 'A short, summary of the problem type. Written in english and readable
for engineers (usually not suited for non technical stakeholders and
not localized); example: Service Unavailable
'
maxLength: 256
pattern: /^.*$/
type: string
type:
default: about:blank
description: 'An absolute URI that identifies the problem type. When dereferenced,
it SHOULD provide human-readable documentation for the problem type
(e.g., using HTML).
'
example: https://problems.roadsync.com/problem/unspecified-error
format: uri
maxLength: 2048
pattern: /^.*$/
type: string
type: object
HashedId:
maxLength: 128
pattern: /^\w+$/
type: string
responses:
ForbiddenError:
content:
application/json:
schema:
$ref: '#/components/schemas/CodeMessage'
description: Request is completely forbidden. API not provided or method and or endpoint not supported
headers:
WWW_Authenticate:
explode: false
schema:
maxLength: 2048
pattern: /^.*$/
type: string
style: simple
NotFound404:
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
description: 404 Not found
TooManyRequests429:
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
description: 429 too many requests response
ServiceError500:
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
description: Service Error
LoginResponse:
content:
application/json:
schema:
$ref: '#/components/schemas/LoginResponse'
description: A login response
UnauthorizedError:
content:
application/json:
schema:
$ref: '#/components/schemas/CodeMessage'
description: API key is missing or invalid
headers:
WWW_Authenticate:
explode: false
schema:
maxLength: 2048
pattern: /^.*$/
type: string
style: simple
UnexpectedError:
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
description: unexpected error response
PingResponse:
content:
application/json:
schema:
$ref: '#/components/schemas/PingResponse'
description: A backend test response
Options200:
content:
application/json:
schema:
additionalProperties: false
type: object
description: 200 response
headers:
Access-Control-Allow-Credentials:
explode: false
schema:
type: boolean
style: simple
Access-Control-Allow-Headers:
explode: false
schema:
maxLength: 256
pattern: ^[a-zA-Z0-9 ,]*$
type: string
style: simple
Access-Control-Allow-Methods:
explode: false
schema:
maxLength: 256
pattern: ^[a-zA-Z0-9 ,]*$
type: string
style: simple
Access-Control-Allow-Origin:
explode: false
schema:
maxLength: 256
pattern: /^.*$/
type: string
style: simple
Cache-Control:
explode: false
schema:
maxLength: 256
pattern: ^[a-zA-Z0-9 ,\-]*$
type: string
style: simple
Expires:
explode: false
schema:
maxLength: 256
pattern: ^[a-zA-Z0-9 \-]*$
type: string
style: simple
Pragma:
explode: false
schema:
maxLength: 256
pattern: ^[a-zA-Z0-9 ,]*$
type: string
style: simple
requestBodies:
LoginRequest:
content:
application/json:
examples:
userlogin:
summary: API user login example
value:
Password: password
Username: user
schema:
$ref: '#/components/schemas/UsernamePassword'
description: Perform user authentication against the API
required: true
securitySchemes:
api_key:
in: header
name: x-api-key
type: apiKey
x-apikeyInfoFunc: client_api_server.controllers.authorization_controller.check_api_key
session_token:
bearerFormat: JWT
scheme: bearer
type: http
x-apikeyInfoFunc: client_api_server.controllers.authorization_controller.check_session_token