Roadsync location API

Company location operations

OpenAPI Specification

roadsync-location-api-openapi.yml Raw ↑
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 location 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: Company location operations
  name: location
paths:
  /location/list:
    get:
      description: 'Retrieve a list of company locations. If no CompanyId is provided the user''s companyId is used (if set).

        If the user''s company Id is also not set and error will be returned.

        '
      operationId: location_list_get
      parameters:
      - explode: true
        in: query
        name: companyId
        required: false
        schema:
          $ref: '#/components/schemas/HashedId'
        style: form
      responses:
        '200':
          $ref: '#/components/responses/LocationListResponse'
        '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: []
      - session_token: []
      summary: Retrieve a list of company locations
      tags:
      - location
    options:
      operationId: location_list_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:
      - location
  /location:
    get:
      summary: Get a Location list
      description: 'Get a Location list.

        '
      tags:
      - location
      operationId: get-location-list
      security: []
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/LocationList'
                  errors:
                    $ref: '#/components/schemas/Errors'
              examples:
                success:
                  $ref: '#/components/examples/LocationListResponseExample'
                error:
                  $ref: '#/components/examples/ErrorResponseExample'
  /location/{location_id}:
    parameters:
    - name: location_id
      in: path
      schema:
        type: string
      required: true
      description: The id of the location.
    get:
      summary: Get a Location
      description: 'Get a Location.

        '
      tags:
      - location
      operationId: get-location
      security: []
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Location_2'
                  errors:
                    $ref: '#/components/schemas/Errors'
              examples:
                success:
                  $ref: '#/components/examples/LocationResponseExample'
                error:
                  $ref: '#/components/examples/ErrorResponseExample'
  /location/{location_id}/product:
    parameters:
    - name: location_id
      in: path
      schema:
        type: string
      required: true
      description: The id of the location.
    get:
      summary: Get a Product list
      description: 'Get a Product list.

        '
      tags:
      - location
      operationId: get-location-product-list
      security: []
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/ProductList'
                  errors:
                    $ref: '#/components/schemas/Errors'
              examples:
                success:
                  $ref: '#/components/examples/ProductListResponseExample'
                error:
                  $ref: '#/components/examples/ErrorResponseExample'
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
    LocationList:
      type: array
      items:
        $ref: '#/components/schemas/Location_2'
    Error:
      type: object
      properties:
        code:
          type: string
    DateTime:
      description: A timestamp of last modification of the entry.
      example: '2020-07-21 17:32:28Z'
      format: date-time
      type: string
    TimeZone:
      enum:
      - US/Hawaii
      - US/Alaska
      - US/Pacific
      - US/Mountain
      - US/Central
      - US/Eastern
      - ''
      type: string
    CodeEnum:
      default: Success
      enum:
      - Success
      - Error
      - Exception
      type: string
    CustomField_2:
      type: array
      properties:
        name:
          type: string
          description: custom field name
        title:
          type: string
          description: custom field title
        type:
          type: string
          description: custom field type
        isRequired:
          type: boolean
          description: is this required
        options:
          type: array
          description: custom field options
        isShownInList:
          type: boolean
          description: is this custom field shown in the list
        isEditable:
          type: boolean
          description: can custom field be edited
    CustomFieldType:
      enum:
      - ''
      - unknown
      - input
      - phone
      - email
      - select
      - numeric
      type: string
    ProductList:
      type: array
      items:
        $ref: '#/components/schemas/Product'
    CustomField:
      additionalProperties: false
      properties:
        deletedAt:
          $ref: '#/components/schemas/DateTime'
        id:
          $ref: '#/components/schemas/HashedId'
        isRequired:
          type: boolean
        isShownInList:
          type: boolean
        name:
          maxLength: 256
          pattern: /^.*$/
          type: string
        options:
          additionalProperties: false
          type: object
        title:
          maxLength: 2048
          pattern: /^.*$/
          type: string
        type:
          $ref: '#/components/schemas/CustomFieldType'
      type: object
    LocationListResponse:
      allOf:
      - $ref: '#/components/schemas/CodeMessage'
      - properties:
          location_list:
            description: A list of locations
            items:
              $ref: '#/components/schemas/Location'
            maxItems: 128
            type: array
        type: object
    Location:
      additionalProperties: false
      properties:
        city:
          maxLength: 256
          pattern: /^.*$/
          type: string
        companyId:
          $ref: '#/components/schemas/HashedId'
        createdAt:
          $ref: '#/components/schemas/DateTime'
        customFields:
          items:
            $ref: '#/components/schemas/CustomField'
          maxItems: 64
          type: array
        departments:
          items:
            $ref: '#/components/schemas/Department'
          maxItems: 64
          type: array
        id:
          $ref: '#/components/schemas/HashedId'
        locationReference:
          maxLength: 2048
          pattern: /^.*$/
          type: string
        name:
          maxLength: 256
          pattern: /^.*$/
          type: string
        shifts:
          items:
            $ref: '#/components/schemas/Shift'
          maxItems: 128
          type: array
        state:
          $ref: '#/components/schemas/StateCode'
        street:
          maxLength: 2048
          pattern: /^.*$/
          type: string
        street2:
          maxLength: 2048
          pattern: /^.*$/
          type: string
        timezone:
          $ref: '#/components/schemas/TimeZone'
        updatedAt:
          $ref: '#/components/schemas/DateTime'
        zip:
          maxLength: 10
          pattern: ^[0-9]{5}(|-[0-9]{4})$
          type: string
      type: object
    Errors:
      type: array
      description: A list of errors that occurred during processing
      items:
        $ref: '#/components/schemas/Error'
    Shift:
      additionalProperties: false
      properties:
        id:
          $ref: '#/components/schemas/HashedId'
        locationId:
          $ref: '#/components/schemas/HashedId'
        name:
          maxLength: 256
          pattern: /^.*$/
          type: string
      type: object
    Message:
      maxLength: 2048
      pattern: /^[a-zA-Z0-9 ]*$/
      type: string
    StateCode:
      enum:
      - AL
      - AK
      - AZ
      - AR
      - CA
      - CO
      - CT
      - DE
      - DC
      - FL
      - GA
      - HI
      - ID
      - IL
      - IN
      - IA
      - KS
      - KY
      - LA
      - ME
      - MD
      - MA
      - MI
      - MN
      - MS
      - MO
      - MT
      - NE
      - NV
      - NH
      - NJ
      - NM
      - NY
      - NC
      - ND
      - OH
      - OK
      - OR
      - PA
      - RI
      - SC
      - SD
      - TN
      - TX
      - UT
      - VT
      - VA
      - WA
      - WV
      - WI
      - WY
      - MEX
      - CAN
      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
    Product:
      type: object
      additionalProperties: false
      properties:
        id:
          type: string
          description: The product id
        name:
          type: string
          description: The product name
    HashedId:
      maxLength: 128
      pattern: /^\w+$/
      type: string
    Location_2:
      type: object
      additionalProperties: false
      properties:
        id:
          type: string
          description: The location id
        name:
          type: string
          description: The location name
        customFields:
          type: array
          description: List of arrays that describe each custom field
          items:
            $ref: '#/components/schemas/CustomField_2'
    Department:
      additionalProperties: false
      properties:
        id:
          $ref: '#/components/schemas/HashedId'
        locationId:
          $ref: '#/components/schemas/HashedId'
        name:
          maxLength: 2048
          pattern: /^.*$/
          type: string
      type: object
  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
    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
    LocationListResponse:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/LocationListResponse'
      description: A location list response
    UnexpectedError:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
      description: unexpected error 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
  examples:
    LocationResponseExample:
      value:
        data:
          id: jX52DZVG8A0MB1b1bgrkoqwWlJpY6m
          name: Location 1
          custom_fields:
          - name: customField2
            title: customField2
            type: input
            isRequired: false
            options: {}
            isShownInList: false
            isEditable: true
          - name: customField1
            title: customFields1
            type: input
            isRequired: false
            options: {}
            isShownInList: false
            isEditable: true
    ErrorResponseExample:
      value:
        errors:
        - code: processing_error
    LocationListResponseExample:
      value:
        data:
        - id: jX52DZVG8A0MB1b1bgrkoqwWlJpY6m
          name: Location 1
        - id: HgTjnbkjbuyo786590KJBKjtfdGgjy
          name: Location 2
        - id: awefawef3wfaw3fh445hhsdrrsUHuy
          name: Location 3
    ProductListResponseExample:
      value:
        data:
        - id: jX52DZVG8A0MB1b1bgrkoqwWlJpY6m
          name: Product 1
        - id: HgTjnbkjbuyo786590KJBKjtfdGgjy
          name: Product 2
        - id: awefawef3wfaw3fh445hhsdrrsUHuy
          name: Product 3
  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