> ## Documentation Index
> Fetch the complete documentation index at: https://developers.gojoe.de/llms.txt
> Use this file to discover all available pages before exploring further.

# List pushed articles

> Returns every article that you have pushed for a pharmacy. Each entry
contains the values of your last push, whether GO JOE has mapped the
article number, and what the shop sells now.

The list is sorted by `pharmacy_sku`. Request the next page with
`next_cursor` until `has_more` is `false`. Requires the
`inventory:write` scope.




## OpenAPI

````yaml /openapi.yaml get /inventory
openapi: 3.1.0
info:
  title: GO JOE Pharmacy API
  version: 1.0.0-prototype
  summary: >-
    Receive GO JOE orders in your ERP, report their status, and send stock and
    prices to GO JOE.
  description: |
    With the GO JOE Pharmacy API, a pharmacy or the ERP of a pharmacy group
    receives paid, doctor-approved GO JOE orders and reports their status.

    **Order flow**

    1. GO JOE sends a signed **webhook** (`order.created`) to your endpoint.
    2. Your ERP fetches the order with `GET /orders/{id}` and downloads the
       prescription with `GET /orders/{id}/prescription`.
    3. Your ERP accepts the order with its own order number
       (`POST /orders/{id}/accept`).
    4. Your ERP reports the status: `packed`, `ready_for_pickup`,
       `out_for_delivery` or `completed` (`POST /orders/{id}/status`).

    The **event feed** (`GET /events`) contains every event for 30 days. Use it
    to process events whose webhook you did not receive.

    Send **stock and prices** with `PUT /pharmacies/{pharmacy_id}/inventory`
    (several articles) or `PATCH …/inventory/{pharmacy_sku}` (one article).

    **Prescription stages**

    An order is available as soon as the *Vorab-Rezept* exists
    (`prescription.stage` is `vorab`). This is the prescription before the
    doctor has applied the qualified electronic signature (QES). When the
    doctor has signed, you receive `order.prescription_signed`. Download the
    document again and replace the Vorab-Rezept with the signed version.

    **Conventions**

    - Requests and responses are JSON in UTF-8.
    - Timestamps are ISO 8601 in UTC.
    - Amounts are integers in euro cents, including VAT.
    - Quantities are in grams (flower) or millilitres (extracts).
    - GO JOE can add response fields and event types without a new API
      version. Ignore fields and types that your ERP does not know.
    - Errors are `application/problem+json` with a `code` that does not change.
      The [error reference](https://developers.gojoe.de/guides/errors) lists
      all codes.
  contact:
    name: GO JOE Integrations
    email: support@gojoe.de
servers:
  - url: https://gojoe.de/api/pharm/v1
    description: Production (live keys, gj_live_…).
  - url: https://sandbox-api.gojoe.de/api/pharm/v1
    description: >-
      Sandbox (test keys, gj_test_…). Contains test orders and MUSTER
      prescriptions only.
security:
  - apiKey: []
tags:
  - name: Account
  - name: Orders
  - name: Events
  - name: Inventory
  - name: Webhooks
    description: The request that GO JOE sends to your webhook URL.
  - name: Sandbox
    description: >-
      Simulator endpoints. They exist in the sandbox only. In production they
      return 404.
paths:
  /inventory:
    get:
      tags:
        - Inventory
      summary: List pushed articles
      description: |
        Returns every article that you have pushed for a pharmacy. Each entry
        contains the values of your last push, whether GO JOE has mapped the
        article number, and what the shop sells now.

        The list is sorted by `pharmacy_sku`. Request the next page with
        `next_cursor` until `has_more` is `false`. Requires the
        `inventory:write` scope.
      operationId: listInventory
      parameters:
        - name: pharmacy_id
          in: query
          required: true
          schema:
            type: string
            format: uuid
        - name: cursor
          in: query
          schema:
            type: string
        - name: limit
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 200
      responses:
        '200':
          description: A page of the pharmacy's articles
          content:
            application/json:
              schema:
                type: object
                required:
                  - pharmacy_id
                  - data
                  - next_cursor
                  - has_more
                properties:
                  pharmacy_id:
                    type: string
                    format: uuid
                  next_cursor:
                    type:
                      - string
                      - 'null'
                    description: >-
                      Send this value as `cursor` to request the next page.
                      `null` on the last page.
                  has_more:
                    type: boolean
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/InventoryListRow'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/PharmacyNotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  schemas:
    InventoryListRow:
      type: object
      properties:
        pharmacy_sku:
          type: string
        name:
          type: string
        last_pushed_at:
          type: string
          format: date-time
        pushed:
          type: object
          properties:
            available:
              type: boolean
            stock_grams:
              type:
                - number
                - 'null'
            price_cents:
              type:
                - integer
                - 'null'
            min_order_grams:
              type:
                - integer
                - 'null'
            order_increment:
              type:
                - integer
                - 'null'
        mapping:
          type: string
          enum:
            - mapped
            - unmapped
        in_shop:
          type:
            - object
            - 'null'
          description: >-
            What the shop sells now. `null` until GO JOE has mapped the article
            number.
          properties:
            product_id:
              type: string
              format: uuid
            available:
              type: boolean
            stock_grams:
              type: number
            price_cents:
              type: integer
            min_order_grams:
              type: integer
            order_increment:
              type: integer
            updated_at:
              type: string
              format: date-time
        price_warning:
          type:
            - object
            - 'null'
          properties:
            old_price_cents:
              type: integer
            new_price_cents:
              type: integer
            at:
              type: string
              format: date-time
    Problem:
      type: object
      required:
        - status
        - code
        - detail
        - request_id
      properties:
        type:
          type: string
          format: uri
          description: >-
            A link to this code in the error reference:
            `https://developers.gojoe.de/guides/errors#<code>`.
        title:
          type: string
        status:
          type: integer
        code:
          type: string
          example: invalid_transition
          description: >
            The error code, for example `unauthorized`, `not_accepted` or

            `invalid_transition`. Codes do not change. The

            [error reference](https://developers.gojoe.de/guides/errors) lists
            all codes.
        detail:
          type: string
        request_id:
          type: string
          description: Identifies the request. Include it when you contact GO JOE.
  responses:
    BadRequest:
      description: Invalid query
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    Unauthorized:
      description: >-
        The key is missing, unknown or revoked, or it belongs to the other
        environment
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    Forbidden:
      description: >-
        The key does not have the scope this endpoint requires
        (`insufficient_scope`)
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    PharmacyNotFound:
      description: >-
        This key cannot access a pharmacy with this ID. The response is the same
        for pharmacies of other accounts.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    RateLimited:
      description: >-
        The account sent more requests than its limit allows. The default is 120
        requests per minute.
      headers:
        Retry-After:
          schema:
            type: integer
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: >-
        Send your key in the `Authorization` header: `Bearer gj_live_…` in
        production, `Bearer gj_test_…` in the sandbox.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.