Gingr Owners API

Owner/client ("parent") records.

OpenAPI Specification

gingr-owners-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Gingr Partner Invoices Owners API
  description: 'Gingr''s Partner API for pet-care business management software (dog daycare, boarding, training, and grooming). The API is JSON:API-flavored - request and response bodies wrap resource attributes under a `data` object - and every request must send a `subdomain` header identifying the facility''s Gingr account plus an `Accept: application/vnd.api+json` header. Endpoints below are a curated subset (owners/parents, pets, bookings/reservations, services and configuration, invoices/payments, immunizations, report cards, and waitlist) drawn from Gingr''s official public OpenAPI document at https://docs.gingr.io/documentation/swagger.json (Gingr API v1.8.0), which documents 158 operations in total. This document is a representative subset, not a full mirror; consult the live swagger.json for every operation, filter, and field.'
  version: 1.8.0
  contact:
    name: Gingr
    url: https://www.gingrapp.com
servers:
- url: https://api.gingr.io
  description: Gingr Partner API (production)
security:
- ApiKeyAuth: []
tags:
- name: Owners
  description: Owner/client ("parent") records.
paths:
  /v1/parents:
    get:
      operationId: v1ParentsList
      tags:
      - Owners
      summary: Parents - List
      description: Lists owner ("parent") records, filterable by name, email, phone, home location, or created date range.
      parameters:
      - $ref: '#/components/parameters/Subdomain'
      - $ref: '#/components/parameters/Accept'
      - name: filter[firstName]
        in: query
        required: false
        schema:
          type: string
          minLength: 3
          maxLength: 255
      - name: filter[lastName]
        in: query
        required: false
        schema:
          type: string
          minLength: 3
          maxLength: 255
      - name: filter[contact][email]
        in: query
        required: false
        schema:
          type: string
          format: email
      - name: filter[homeLocationIds]
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
      - name: page[size]
        in: query
        required: false
        schema:
          type: integer
          enum:
          - 10
          - 25
          - 50
          - 100
      - name: page[number]
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
      responses:
        '200':
          description: A page of parent resources.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ParentListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: v1ParentsCreate
      tags:
      - Owners
      summary: Parents - Create
      description: Creates a new owner ("parent") record with required contact and address information.
      parameters:
      - $ref: '#/components/parameters/Subdomain'
      - $ref: '#/components/parameters/Accept'
      - $ref: '#/components/parameters/ContentType'
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/ParentCreateRequest'
      responses:
        '200':
          description: The created parent resource.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ParentResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/ValidationError'
  /v1/parents/{parentId}:
    parameters:
    - $ref: '#/components/parameters/Subdomain'
    - $ref: '#/components/parameters/Accept'
    - name: parentId
      in: path
      required: true
      schema:
        type: integer
    get:
      operationId: v1ParentsDetails
      tags:
      - Owners
      summary: Parents - Details
      description: Retrieves a single owner ("parent") record by ID.
      responses:
        '200':
          description: The requested parent resource.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ParentResponse'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: v1ParentsUpdate
      tags:
      - Owners
      summary: Parents - Update
      description: Updates an existing owner ("parent") record.
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/ParentCreateRequest'
      responses:
        '200':
          description: The updated parent resource.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ParentResponse'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: v1ParentsDelete
      tags:
      - Owners
      summary: Parents - Delete
      description: Deletes an owner ("parent") record.
      responses:
        '200':
          description: Deletion confirmation.
        '404':
          $ref: '#/components/responses/NotFound'
  /v1/parents/validate-email:
    get:
      operationId: v1ParentsValidateEmail
      tags:
      - Owners
      summary: Validate if an email address is already registered
      parameters:
      - $ref: '#/components/parameters/Subdomain'
      - $ref: '#/components/parameters/Accept'
      - name: email
        in: query
        required: true
        schema:
          type: string
          format: email
      responses:
        '200':
          description: Whether the email address already belongs to an owner record.
  /v1/parents/validate-phone:
    get:
      operationId: v1ParentsValidatePhone
      tags:
      - Owners
      summary: Validate if a phone number is already registered
      parameters:
      - $ref: '#/components/parameters/Subdomain'
      - $ref: '#/components/parameters/Accept'
      - name: phone
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Whether the phone number already belongs to an owner record.
  /v1/parents/merge:
    post:
      operationId: v1ParentsMerge
      tags:
      - Owners
      summary: Merge two parent accounts
      description: Merges a duplicate owner ("parent") record into a surviving record.
      parameters:
      - $ref: '#/components/parameters/Subdomain'
      - $ref: '#/components/parameters/Accept'
      - $ref: '#/components/parameters/ContentType'
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    attributes:
                      type: object
                      properties:
                        sourceParentId:
                          type: integer
                        targetParentId:
                          type: integer
      responses:
        '200':
          description: Merge confirmation.
components:
  schemas:
    ParentCreateRequest:
      type: object
      properties:
        data:
          type: object
          properties:
            type:
              type: string
              example: parents
            attributes:
              $ref: '#/components/schemas/ParentAttributes'
    ParentResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            type:
              type: string
              example: parents
            id:
              type: integer
            attributes:
              $ref: '#/components/schemas/ParentAttributes'
    ParentAttributes:
      type: object
      properties:
        firstName:
          type: string
          maxLength: 255
          example: TestFirstGAPI
        lastName:
          type: string
          maxLength: 255
          example: TestLastGAPI
        address1:
          type: string
          maxLength: 255
        address2:
          type: string
          maxLength: 255
        city:
          type: string
          maxLength: 255
        region:
          type: string
          maxLength: 255
        zip:
          type: string
          maxLength: 20
        contact:
          type: object
          properties:
            email:
              type: string
              format: email
            homePhone:
              type: string
            cellPhone:
              type: string
    ParentListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ParentResponse'
  responses:
    Unauthorized:
      description: Missing or invalid X-Api-Key or subdomain header.
    ValidationError:
      description: The request payload failed validation.
    NotFound:
      description: The requested resource was not found.
  parameters:
    Accept:
      name: Accept
      in: header
      required: true
      schema:
        type: string
        example: application/vnd.api+json
    Subdomain:
      name: subdomain
      in: header
      required: true
      description: The facility's Gingr account subdomain identifier.
      schema:
        type: string
        example: donny
    ContentType:
      name: Content-Type
      in: header
      required: true
      schema:
        type: string
        example: application/vnd.api+json
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-Api-Key
      description: 'API key issued per Gingr account from the "Manage Account" > API area of the Gingr console. Every request additionally requires a `subdomain` header identifying the Gingr account, and an `Accept: application/vnd.api+json` header.'
Where this information came from

This is an independent, third-party profile of Gingr Owners API, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.