Gemnote Shipments API

Orders that send a gift and optional greeting card to a recipient.

OpenAPI Specification

gemnote-shipments-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Gemnote Gifts Shipments API
  version: v1
  description: The Gemnote API lets partners send custom gifts and greeting cards programmatically and track their shipments. Responses follow a JSON:API-style envelope (data / type / attributes / relationships, with links + meta for pagination). Authentication is a token issued by your Gemnote account manager, passed in the AUTHORIZATION header. A sandbox environment (https://sandbox.gemnote.com/) mirrors production for safe testing; sandbox tokens begin with `t_` and production tokens begin with `p_`.
  contact:
    name: Gemnote
    url: https://www.gemnote.com/
  x-provenance:
    generated: '2026-07-19'
    method: generated
    source: https://github.com/gemnote/api (README.md, gift.md, greeting_card.md, shipment.md)
servers:
- url: https://api.gemnote.com
  description: Production
- url: https://sandbox.gemnote.com
  description: Sandbox
security:
- AuthorizationToken: []
tags:
- name: Shipments
  description: Orders that send a gift and optional greeting card to a recipient.
paths:
  /api/v1/shipments/:
    get:
      operationId: listShipments
      summary: List all shipments
      description: Retrieves a paginated collection of shipments, optionally sideloading the related gift and postcard.
      tags:
      - Shipments
      parameters:
      - $ref: '#/components/parameters/PageNumber'
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/Include'
      responses:
        '200':
          description: A paginated collection of shipments.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createShipment
      summary: Create a shipment
      description: Creates a shipment that sends a gift (and optional greeting card) to a recipient.
      tags:
      - Shipments
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShipmentCreateRequest'
      responses:
        '200':
          description: The created shipment.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /api/v1/shipments/{shipment_id}:
    get:
      operationId: getShipment
      summary: Retrieve a single shipment
      description: Retrieves a single shipment by its identifier, optionally sideloading the related gift and postcard.
      tags:
      - Shipments
      parameters:
      - name: shipment_id
        in: path
        required: true
        description: The identifier of the shipment.
        schema:
          type: string
      - $ref: '#/components/parameters/Include'
      responses:
        '200':
          description: The requested shipment.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  parameters:
    PageSize:
      name: page[size]
      in: query
      required: false
      description: The number of items to return per page.
      schema:
        type: integer
        minimum: 1
    PageNumber:
      name: page[number]
      in: query
      required: false
      description: The 1-based page number to retrieve.
      schema:
        type: integer
        minimum: 1
    Include:
      name: include
      in: query
      required: false
      description: Comma-separated list of related resources to sideload. Supported values are `gift` and `postcard`.
      schema:
        type: string
        example: gift,postcard
  schemas:
    Shipment:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
          example: shipments
        attributes:
          $ref: '#/components/schemas/ShipmentAttributes'
        relationships:
          type: object
          properties:
            gift:
              $ref: '#/components/schemas/RelationshipRef'
            greetingCard:
              $ref: '#/components/schemas/RelationshipRef'
            postcard:
              $ref: '#/components/schemas/RelationshipRef'
    ShipmentCreateRequest:
      type: object
      required:
      - data
      properties:
        data:
          type: object
          required:
          - attributes
          properties:
            attributes:
              type: object
              required:
              - giftId
              - qty
              - recipientName
              - email
              - addressOne
              - city
              - country
              properties:
                giftId:
                  type: integer
                postcardId:
                  type: integer
                greetingCardId:
                  type: integer
                qty:
                  type: integer
                recipientName:
                  type: string
                recipientCompany:
                  type: string
                phone:
                  type: string
                email:
                  type: string
                addressOne:
                  type: string
                addressTwo:
                  type: string
                city:
                  type: string
                state:
                  type: string
                zipcode:
                  type: string
                country:
                  type: string
                fromName:
                  type: string
                fromEmail:
                  type: string
                message:
                  type: string
                messageLanguage:
                  type: string
    ShipmentAttributes:
      type: object
      properties:
        companyId:
          type: integer
        giftId:
          type: integer
        greetingCardId:
          type: integer
        postcardId:
          type: integer
        qty:
          type: integer
        recipientName:
          type: string
        recipientCompany:
          type: string
        phone:
          type: string
        email:
          type: string
        addressOne:
          type: string
        addressTwo:
          type: string
        city:
          type: string
        state:
          type: string
        zipcode:
          type: string
        country:
          type: string
        fromName:
          type: string
        fromEmail:
          type: string
        message:
          type: string
        messageLanguage:
          type: string
        createdAt:
          type: string
          format: date-time
        stage:
          type: string
          description: Fulfillment stage of the shipment.
          example: pending
        errorReason:
          type: string
          nullable: true
    ShipmentListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Shipment'
        links:
          $ref: '#/components/schemas/PaginationLinks'
        meta:
          $ref: '#/components/schemas/PaginationMeta'
    RelationshipRef:
      type: object
      properties:
        data:
          type: object
          properties:
            id:
              type: string
            type:
              type: string
    PaginationMeta:
      type: object
      properties:
        totalPages:
          type: integer
        totalItems:
          type: integer
    PaginationLinks:
      type: object
      properties:
        self:
          type: string
          nullable: true
        first:
          type: string
          nullable: true
        prev:
          type: string
          nullable: true
        next:
          type: string
          nullable: true
        last:
          type: string
          nullable: true
    ShipmentResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Shipment'
        included:
          type: array
          items:
            type: object
  responses:
    NotFound:
      description: The requested resource does not exist.
    Unauthorized:
      description: The AUTHORIZATION token is missing or invalid.
    UnprocessableEntity:
      description: The request body failed validation (a required field is missing or invalid).
  securitySchemes:
    AuthorizationToken:
      type: apiKey
      in: header
      name: AUTHORIZATION
      description: A token issued by your Gemnote account manager. Sandbox tokens begin with `t_` and production tokens begin with `p_`.