AGL

AGL OPEN API

Supplier-integration bridge API between AGL and golf-club suppliers. Version 0.0.1, OpenAPI 3.1.1, 7 operations in two directions: Supplier to AGL (register a golf club, retrieve golf club information, change tee-time availability, daily tee-time registration, retrieve tee time list) and AGL to Supplier (reservation request, cancel reservation). Authenticated with a bearer Authorization header carrying an SHA-256 signature plus an X-Supplier-Code or X-Client-Code identification header.

Operations 7

POST /api/golfclub Register a golf club
GET /api/golfclub/list Retrieve golf club information
PUT /api/teetime/availability Change tee time availability status
POST /api/teetime/daily Daily Tee Time Registration
GET /api/teetime/list Retrieve tee time list
POST /reservation Reservation request
POST /reservation/cancel Cancel reservation

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/agl-open"
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

agl-open-openapi-original.yml Raw ↑
components:
  parameters:
    X-Client-Code:
      description: Client code issued by supplier (required for AGLToSupplier APIs)
      in: header
      name: X-Client-Code
      required: true
      schema:
        type: string
    X-Supplier-Code:
      description: Supplier code issued by AGL (required for SupplierToAGL APIs)
      in: header
      name: X-Supplier-Code
      required: true
      schema:
        type: string
  schemas:
    CancelResponse:
      properties:
        data:
          properties:
            cancelDate:
              type: string
            cancelPenaltyAmount:
              type: integer
            currency:
              type: string
          type: object
        isSuccess:
          type: boolean
        rstCd:
          type: string
        rstMsg:
          type: string
        statusCode:
          type: integer
      required:
      - isSuccess
      - rstCd
      - rstMsg
      - statusCode
      type: object
    CommonResponse:
      properties:
        isSuccess:
          type: boolean
        rstCd:
          description: 'Response Code:

            - SUCCESS: Request was successful

            - INVALID_INPUT: Invalid input parameters

            - UNAUTHORIZED: Authentication failed

            - FORBIDDEN: Access is forbidden

            - NOT_FOUND: Resource not found

            - SERVER_ERROR: Internal server error'
          enum:
          - SUCCESS
          - INVALID_INPUT
          - UNAUTHORIZED
          - FORBIDDEN
          - NOT_FOUND
          - SERVER_ERROR
          type: string
        rstMsg:
          type: string
        statusCode:
          type: integer
      required:
      - isSuccess
      - rstCd
      - rstMsg
      - statusCode
      type: object
    SuccessResponse:
      properties:
        isSuccess:
          type: boolean
          examples:
          - true
        rstCd:
          type: string
          examples:
          - SUCCESS
        rstMsg:
          type: string
          examples:
          - Request was successful
        statusCode:
          type: integer
          examples:
          - 200
      required:
      - isSuccess
      - rstCd
      - rstMsg
      - statusCode
      type: object
    FailResponse:
      properties:
        isSuccess:
          type: boolean
          examples:
          - false
        rstCd:
          type: string
          examples:
          - INVALID_INPUT
        rstMsg:
          type: string
          examples:
          - Invalid input parameters
        statusCode:
          type: integer
          examples:
          - 400
      required:
      - isSuccess
      - rstCd
      - rstMsg
      - statusCode
      type: object
    Course:
      properties:
        courseCode:
          type: string
        courseHoleCount:
          type: integer
        courseName:
          type: string
        startHole:
          type: integer
      required:
      - courseCode
      - courseName
      type: object
    GolfClub:
      properties:
        address:
          type: string
        countryCode:
          type: string
        courses:
          items:
            $ref: '#/components/schemas/Course'
          type: array
        currency:
          type: string
        description:
          type: string
        email:
          type: string
        fax:
          type: string
        golfClubCode:
          type: string
        golfClubName:
          type: string
        holeInfo:
          items:
            $ref: '#/components/schemas/HoleInfo'
          type: array
        homepage:
          type: string
        images:
          items:
            properties:
              description:
                type: string
              id:
                type: integer
              title:
                type: string
              url:
                type: string
            type: object
          type: array
        isGuestInfoRequired:
          type: boolean
        language:
          type: string
        latitude:
          type: number
        longitude:
          type: number
        phone:
          type: string
        refundPolicy:
          items:
            $ref: '#/components/schemas/RefundPolicy'
          type: array
        totalCourseCount:
          type: integer
        totalHoleCount:
          type: integer
      required:
      - golfClubCode
      - golfClubName
      - countryCode
      - language
      - currency
      - latitude
      - longitude
      - isGuestInfoRequired
      - courses
      type: object
    HoleInfo:
      properties:
        distance:
          type: integer
        distanceUnit:
          type: integer
        holeName:
          type: string
        holeNumber:
          type: integer
        par:
          type: integer
      required:
      - holeNumber
      type: object
    Price:
      properties:
        additionalTax:
          type: number
        caddieFee:
          type: number
        cartFee:
          type: number
        greenFee:
          type: number
        playerCount:
          type: integer
        tax:
          type: number
        unitPrice:
          type: number
      required:
      - playerCount
      - greenFee
      - unitPrice
      type: object
    RefundPolicy:
      properties:
        refundDate:
          type: integer
        refundFee:
          type: integer
        refundUnit:
          type: integer
      required:
      - refundDate
      - refundFee
      - refundUnit
      type: object
    ReservationCancel:
      properties:
        reservationId:
          type: string
      required:
      - reservationId
      type: object
    ReservationRequest:
      properties:
        courseCode:
          type: string
        currency:
          type: string
        golfClubCode:
          type: string
        guestInfo:
          items:
            properties:
              guestCountry:
                type: string
              guestGender:
                type: string
              guestName:
                type: string
              guestPhone:
                type: string
            type: object
          type: array
        holderName:
          type: string
        reservationCountry:
          type: string
        reservationDate:
          type: string
        reservationEmail:
          type: string
        reservationMembers:
          type: integer
        reservationPhone:
          type: string
        reservationStartTime:
          type: string
        totalPrice:
          type: number
      required:
      - golfClubCode
      - courseCode
      - reservationDate
      - reservationStartTime
      - reservationMembers
      - currency
      - totalPrice
      - holderName
      - reservationPhone
      - reservationEmail
      - reservationCountry
      type: object
    ReservationResponse:
      properties:
        isSuccess:
          type: boolean
        reservationId:
          type: string
        rstCd:
          type: string
        rstMsg:
          type: string
        statusCode:
          type: integer
      required:
      - isSuccess
      - rstCd
      - rstMsg
      - statusCode
      - reservationId
      type: object
    TeeTimeDailyInfo:
      properties:
        courseCode:
          type: string
        includeCaddie:
          type: boolean
        includeCart:
          type: boolean
        maxPlayers:
          type: integer
        minPlayers:
          type: integer
        playDate:
          type: string
        price:
          items:
            $ref: '#/components/schemas/Price'
          type: array
        refundPolicy:
          items:
            $ref: '#/components/schemas/RefundPolicy'
          type: array
        reservationType:
          type: integer
        timeDaily:
          items:
            $ref: '#/components/schemas/Time'
          type: array
      required:
      - playDate
      - courseCode
      - minPlayers
      - maxPlayers
      - includeCart
      - includeCaddie
      - reservationType
      - timeDaily
      - price
      type: object
    Time:
      properties:
        startTime:
          type: string
        teeTimeCode:
          type: string
      required:
      - startTime
      type: object
    GolfClubListData:
      type: array
      items:
        $ref: '#/components/schemas/GolfClub'
    TeeTimeListData:
      type: array
      items:
        $ref: '#/components/schemas/TeeTimeDailyInfo'
    Availability:
      properties:
        available:
          type: boolean
        courseCode:
          items:
            type: string
        golfClubCode:
          type: string
        playDate:
          type: string
        time:
          items:
            $ref: '#/components/schemas/Time'
          type: array
      required:
      - golfClubCode
      - available
      type: object
  securitySchemes:
    bearerAuth:
      bearerFormat: SHA-256
      scheme: bearer
      type: http
info:
  description: 'This OpenAPI document defines the full set of interfaces used for integration between AGL and its suppliers.


    ### Supplier → AGL

    APIs for registering golf clubs, tee times, and availability.

    **Authentication Headers:**

    - `Authorization`: Bearer <SHA-256 hashed signature>

    - `X-Supplier-Code`: Supplier code issued by AGL


    ### AGL → Supplier

    APIs for sending reservation and cancellation requests.

    **Authentication Headers:**

    - `Authorization`: Bearer <SHA-256 hashed signature>

    - `X-Client-Code`: Client code issued by Supplier


    All APIs are secured using SHA-256-based Authorization and require proper identification headers.

    ### Important Note (Tee Time Update)

    - There is **no API for directly updating an existing tee time** (e.g., price, time, or policy).

    - If you need to change tee time information, you must:

    1. Change the status (availability) of the existing tee time to unavailable using `/api/teetime/availability`.

    2. Register the updated tee time as a new entry using `/api/teetime/daily`.

    - **You cannot update tee time details directly—only availability can be modified.**

    - This is the official workflow for updating tee time data.'
  title: AGL OPEN API
  version: 0.0.1
openapi: 3.1.1
paths:
  /api/golfclub:
    post:
      description: Registers a new golf club with full profile details including images, courses, refund policies, and hole
        information.
      parameters:
      - $ref: '#/components/parameters/X-Supplier-Code'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GolfClub'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FailResponse'
          description: Invalid input
      summary: Register a golf club
      tags:
      - SupplierToAGL
  /api/golfclub/list:
    get:
      description: Retrieves one or more golf clubs registered under the supplier. Supports optional filtering by golfClubCode.
      parameters:
      - in: query
        name: golfClubCode
        required: true
        schema:
          type: string
      - in: query
        name: startDate
        description: 'Filter from this registration date (format: yyyy-MM-dd)'
        required: true
        schema:
          type: string
          examples:
          - '2025-01-01'
      - in: query
        name: endDate
        description: 'Filter until this registration date (format: yyyy-MM-dd)'
        required: true
        schema:
          type: string
          examples:
          - '2025-12-31'
      - $ref: '#/components/parameters/X-Supplier-Code'
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  isSuccess:
                    type: boolean
                    examples:
                    - true
                  rstCd:
                    type: string
                    examples:
                    - SUCCESS
                  rstMsg:
                    type: string
                    examples:
                    - success
                  statusCode:
                    type: integer
                    examples:
                    - 200
                  data:
                    $ref: '#/components/schemas/GolfClubListData'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FailResponse'
          description: Invalid input
      summary: Retrieve golf club information
      tags:
      - SupplierToAGL
  /api/teetime/availability:
    put:
      description: Changes availability status of tee times by specifying playDate, courseCode, and time. Applies globally
        if filters are omitted.
      parameters:
      - $ref: '#/components/parameters/X-Supplier-Code'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                availability:
                  type: array
                  items:
                    $ref: '#/components/schemas/Availability'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FailResponse'
          description: Invalid input
      summary: Change tee time availability status
      tags:
      - SupplierToAGL
  /api/teetime/daily:
    post:
      description: Registers daily tee time schedules with associated pricing, plan, and cancellation policy information.
      parameters:
      - $ref: '#/components/parameters/X-Supplier-Code'
      requestBody:
        content:
          application/json:
            schema:
              properties:
                golfClubCode:
                  type: string
                teeTimeDailyInfo:
                  items:
                    $ref: '#/components/schemas/TeeTimeDailyInfo'
                  type: array
              required:
              - golfClubCode
              - teeTimeDailyInfo
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FailResponse'
          description: Invalid input
      summary: Daily Tee Time Registration
      tags:
      - SupplierToAGL
  /api/teetime/list:
    get:
      description: Retrieves tee time information for a specific date range and golf club.
      parameters:
      - in: query
        name: startDate
        required: true
        schema:
          type: string
      - in: query
        name: endDate
        required: true
        schema:
          type: string
      - in: query
        name: golfClubCode
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/X-Supplier-Code'
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  isSuccess:
                    type: boolean
                    examples:
                    - true
                  rstCd:
                    type: string
                    examples:
                    - SUCCESS
                  rstMsg:
                    type: string
                    examples:
                    - success
                  statusCode:
                    type: integer
                    examples:
                    - 200
                  data:
                    $ref: '#/components/schemas/TeeTimeListData'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FailResponse'
          description: Invalid input
      summary: Retrieve tee time list
      tags:
      - SupplierToAGL
  /reservation:
    post:
      description: AGL requests a reservation confirmation to the supplier. A successful call confirms the reservation.
      parameters:
      - $ref: '#/components/parameters/X-Client-Code'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReservationRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReservationResponse'
          description: Reservation success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FailResponse'
          description: Invalid input
      summary: Reservation request
      tags:
      - AGLToSupplier
  /reservation/cancel:
    post:
      description: AGL cancels a previously made reservation by sending the reservation ID.
      parameters:
      - $ref: '#/components/parameters/X-Client-Code'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReservationCancel'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelResponse'
          description: Reservation cancelled
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FailResponse'
          description: Invalid input
      summary: Cancel reservation
      tags:
      - AGLToSupplier
security:
- bearerAuth: []
servers:
- description: Sandbox Environment
  url: https://sandbox-agl-bridgeapi.tigergds.com
- description: Production Environment
  url: https://agl-bridgeapi.tigergds.com
tags:
- description: APIs where suppliers send data to AGL (e.g., golf club registration, tee times, etc.)
  name: SupplierToAGL
- description: APIs where AGL sends reservation and cancellation requests to suppliers
  name: AGLToSupplier