Casey's CasApi

Stores POS Activity Report documents from Casey's point-of-sale estate, implementing the Conexxus POS Back Office Interface / POS Activity Reporting API standard. Publishes report and journal documents and exposes a heartbeat health check and its own OpenAPI document.

Operations 5

GET /report get /report #
POST /report POST /report #
POST /journal POST /journal #
GET /heartbeat Gets the health of the API. #
GET /openapi/V3.json Get OpenApi Specification #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/caseys-casapi"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

caseys-general-stores-cas-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: CasApi
  description: "API enabling storage of POS Activity Report documents following the [Conexxus POS Back Office Interface](https://dev.azure.com/caseys01/Mirrors/_git/conexxus_pos-back-office-interface)\
    \ standard.    \n                        **Notes**: \n                        * API major version mirrors the\
    \ major version of the implemented [Conexxus POS Activity Reporting API standard](https://dev.azure.com/caseys01/Mirrors/_git/conexxus_pos-activity-reporting-apis)."
  version: '1.0'
servers:
- url: https://esl.caseys.io/casapi
paths:
  /report:
    get:
      tags:
      - pull
      summary: get /report
      description: "These functions will allow reading report information from the request body of the message.\n\
        \        The request parameter \"reportId\"  should contain the information necessary to identify the correct\
        \ report/document."
      operationId: get-reports
      parameters:
      - name: reportId
        in: query
        description: Unique Identifier of the report
        required: true
        schema:
          type: string
      - name: x-correlation-id
        in: header
        description: correlation identifier
        schema:
          type: string
      - name: openretailing-organization-id
        in: header
        description: organization identifier
        schema:
          type: string
      - name: openretailing-store-location-id
        in: header
        description: location identifier
        schema:
          type: string
      responses:
        '200':
          description: "Requests with valid payloads (parsable and containing all of the\n        mandatory fields)\
            \  must use the 200 response. Note that a request can be\n        successfully processed but still \
            \ produce a failure response. If all the\n        systems are operating correctly at a given time, \
            \ all replies will use a\n        response 200."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/movementReportStatusReturn'
              example:
                status:
                  timestamp: string
                  result: 0
                  error: 0
                posMovement:
                  version: string
                  release: string
                  transmissionHeader:
                    storeLocationId: string
                    vendorName: string
                    vendorModelVersion: string
                    organizationId: string
                  posMovementReport:
                    posMovementReportHeader:
                      reportSequenceNumber: 0
                      primaryReportPeriod:
                        interval: 0
                        value: string
                      secondaryReportPeriod:
                        interval: 0
                        value: string
                      beginDateTime: string
                      endDateTime: string
                      reportRange:
                        value: 0
                      businessDate: string
                    posMovementReportGroup:
                    - {}
        '400':
          description: "Requests with invalid payloads or invalid URLs (paths) must use the\n        response 400."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/statusReturn'
              example:
                timestamp: string
                result: 0
                message: string
        '403':
          description: Unauthorized requests must use response 403 (forbidden).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/statusReturn'
              example:
                timestamp: string
                result: 0
                message: string
    post:
      tags:
      - push
      summary: POST /report
      description: "Add events to a journal or add reports to a collection. These functions will allow sending report\
        \ information in the request body of the message.\n        Post a movement document. The requestBody \"\
        header\" fields will contain the information necessary to identify the correct activity period.        \n\
        \        ## **Notes:** \n        * Activity periods assigned to POS jounal entries (using /activityPeriods)\
        \ should mirror those in the movement report request body.\n        * May accept an \"ACCEPT\" header of\
        \ application/xml in order to post XML files.\n        * The \"/report\" path represents resources referred\
        \ to as \"Movement\" in POS Backoffice Interface XML Specification V3.7."
      operationId: post-reports
      parameters:
      - name: x-correlation-id
        in: header
        description: correlation identifier
        required: true
        schema:
          type: string
      - name: openretailing-organization-id
        in: header
        description: organization identifier
        required: true
        schema:
          type: string
      - name: openretailing-store-location-id
        in: header
        description: location identifier
        required: true
        schema:
          type: string
      requestBody:
        description: post reports
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/posMovement'
            example:
              version: string
              release: string
              transmissionHeader:
                storeLocationId: string
                vendorName: string
                vendorModelVersion: string
                organizationId: string
              posMovementReport:
                posMovementReportHeader:
                  reportSequenceNumber: 0
                  primaryReportPeriod:
                    interval: 0
                    value: string
                  secondaryReportPeriod:
                    interval: 0
                    value: string
                  beginDateTime: string
                  endDateTime: string
                  reportRange:
                    value: 0
                  businessDate: string
                posMovementReportGroup:
                - {}
      responses:
        '200':
          description: "Requests with valid payloads (parsable and containing all of the\n        mandatory fields)\
            \  must use the 200 response. Note that a request can be\n        successfully processed but still \
            \ produce a failure response. If all the\n        systems are operating correctly at a given time, \
            \ all replies will use a\n        response 200."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/statusReturn'
              example:
                timestamp: string
                result: 0
                message: string
        '400':
          description: "Requests with invalid payloads or invalid URLs (paths) must use the\n        response 400."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/statusReturn'
              example:
                timestamp: string
                result: 0
                message: string
        '403':
          description: Unauthorized requests must use response 403 (forbidden).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/statusReturn'
              example:
                timestamp: string
                result: 0
                message: string
  /journal:
    post:
      tags:
      - push
      summary: POST /journal
      description: " Add events to a journal or add reports to a collection.  These functions\n        will allow\
        \ sending report information in the request body of the message, or may (for some \n        resources) allow\
        \ retrieving a web socket URL for cases where the report information is too \n        large for a message\
        \ request body. \n\n        ## **Notes **\n        * The individual journal events will be processed without\
        \ regard to requestBody \"header\" properties - \n          these properties are there for legacy support.\
        \  The individual journal events, plus the organizationID and storeLocationID headers, \n          provide\
        \ all the information necessary to classify and store the journal events.  \n\n        * Activity periods\
        \ assigned to POS jounal entries (using /activityPeriods) should mirror those in the movement report request\
        \ body.\n        \n        * Some implementations may accept an \"ACCEPT\" header of application/xml in\
        \ order to post older XML POSJournal files.\n          Support for this feature is implementation dependent.\
        \  The default is Accept: application/json"
      operationId: post-journal
      parameters:
      - name: x-correlation-id
        in: header
        description: correlation identifier
        required: true
        schema:
          type: string
      - name: openretailing-organization-id
        in: header
        description: organization identifier
        required: true
        schema:
          type: string
      - name: openretailing-store-location-id
        in: header
        description: location identifier
        required: true
        schema:
          type: string
      responses:
        '200':
          description: "Requests with valid payloads (parsable and containing all of the\n        mandatory fields)\
            \  must use the 200 response. Note that a request can be\n        successfully processed but still \
            \ produce a failure response. If all the\n        systems are operating correctly at a given time, \
            \ all replies will use a\n        response 200."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/statusReturn'
              example:
                timestamp: string
                result: 0
                message: string
        '400':
          description: "Requests with invalid payloads or invalid URLs (paths) must use the\n        response 400."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/statusReturn'
              example:
                timestamp: string
                result: 0
                message: string
        '413':
          description: Use response 413 when payload is too large to return
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/statusReturn'
              example:
                timestamp: string
                result: 0
                message: string
        '500':
          description: "Requests that cause an internal server error (outside of the service\n        itself), such\
            \  as out of memory or corrupted file, etc. must use the\n        response 500."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/statusReturn'
              example:
                timestamp: string
                result: 0
                message: string
  /heartbeat:
    get:
      tags:
      - heartbeat
      summary: Gets the health of the API.
      description: Interrogates the state of the API and its dependencies to return the API health.
      operationId: getHeartbeat
      responses:
        '200':
          description: The status of the APIs health. Healthy if all dependency health checks pass. Unhealthy if
            any dependency's health check fails, or if an exception occurs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/heartbeatReport'
              example:
                status: string
  /openapi/V3.json:
    get:
      summary: Get OpenApi Specification
      description: Gets the OpenApi specification in V3.json format with the parameters .
      operationId: getOpenApiSpec
      responses:
        '200':
          description: ''
components:
  schemas:
    heartbeatReport:
      type: object
      properties:
        status:
          type: string
          description: Description of the current status of dependencies of the API.
    movementReport:
      type: object
    movementReportPeriod:
      type: object
      properties:
        interval:
          enum:
          - 0
          - 1
          - 2
          - 3
          - 4
          - 5
          - 6
          - 7
          - 8
          - 9
          - 10
          type: integer
          format: int32
          default: 0
          nullable: true
        value:
          type: string
    movementReportStatusReturn:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/reportResponseStatus'
        posMovement:
          $ref: '#/components/schemas/posMovement'
    posMovement:
      required:
      - transmissionHeader
      - posMovementReport
      type: object
      properties:
        version:
          type: string
        release:
          type: string
        transmissionHeader:
          $ref: '#/components/schemas/transmissionHeader'
        posMovementReport:
          $ref: '#/components/schemas/posMovementReport'
    posMovementReport:
      required:
      - posMovementReportHeader
      - posMovementReportGroup
      type: object
      properties:
        posMovementReportHeader:
          $ref: '#/components/schemas/posMovementReportHeader'
        posMovementReportGroup:
          type: array
          items:
            $ref: '#/components/schemas/movementReport'
    posMovementReportHeader:
      required:
      - reportSequenceNumber
      - primaryReportPeriod
      - beginDateTime
      - endDateTime
      type: object
      properties:
        reportSequenceNumber:
          maximum: 99999999
          minimum: 0
          type: integer
          format: int32
        primaryReportPeriod:
          $ref: '#/components/schemas/movementReportPeriod'
        secondaryReportPeriod:
          $ref: '#/components/schemas/movementReportPeriod'
        beginDateTime:
          minLength: 1
          type: string
          format: date-time
        endDateTime:
          minLength: 1
          type: string
          format: date-time
        reportRange:
          $ref: '#/components/schemas/reportRange'
        businessDate:
          type: string
          format: date-time
          nullable: true
    reportRange:
      type: object
      properties:
        value:
          enum:
          - 0
          - 1
          - 2
          - -1
          type: integer
          format: int32
          default: 0
    reportResponseStatus:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
        result:
          enum:
          - 0
          - 1
          - 2
          type: integer
          format: int32
          default: 0
        error:
          enum:
          - 0
          - 1
          - 2
          - 3
          - 4
          - 5
          - 6
          - 7
          type: integer
          format: int32
          default: 0
    statusReturn:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
        result:
          enum:
          - 0
          - 1
          - 2
          - 3
          - 4
          - 5
          - 6
          - 7
          - 8
          - 9
          - 10
          - 11
          - 12
          type: integer
          format: int32
          default: 0
        message:
          type: string
    transmissionHeader:
      required:
      - storeLocationId
      - vendorName
      - vendorModelVersion
      - organizationId
      type: object
      properties:
        storeLocationId:
          minLength: 1
          type: string
        vendorName:
          minLength: 1
          type: string
        vendorModelVersion:
          minLength: 1
          type: string
        organizationId:
          minLength: 1
          type: string
  securitySchemes:
    apiKeyHeader:
      type: apiKey
      name: Ocp-Apim-Subscription-Key
      in: header
    apiKeyQuery:
      type: apiKey
      name: subscription-key
      in: query
security:
- apiKeyHeader: []
- apiKeyQuery: []