Green Check Verified · OpenAPI Overlay 1.0.0

API Evangelist enrichment overlay — Green Check Access

7 actions 7 updates documentation extends openapi/green-check-verified-access-openapi.yaml
Generated by API Evangelist Written by API Evangelist tooling for Green Check Verified's API. It is a proposal applied on top of the contract, not a document Green Check Verified publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

descriptioncontacttermsOfService

Targets 7

$.info
$.components.securitySchemes['access_auth']
$.servers
$.paths['/trace/*']
$.paths['/service-providers/{sp_id}/crbs'].post
$.paths['/service-providers/{sp_id}/crbs/{crb_id}/access'].post
$.tags

OpenAPI Overlay

Raw ↑
# OpenAPI Overlay 1.0.0 — API Evangelist enrichment of Green Check Access.
# generated: '2026-08-22'
# method: generated
# source: openapi/green-check-verified-access-openapi.yaml + https://developer.greencheckverified.com/ docs
# This overlay records API Evangelist's derived semantics (auth flow, pagination, error envelope,
# reversibility and consequence warnings). It is NOT published by Green Check and does not modify
# the original spec, which is stored verbatim.
overlay: 1.0.0
info:
  title: API Evangelist enrichment overlay — Green Check Access
  version: 1.0.0
extends: openapi/green-check-verified-access-openapi.yaml
actions:
- target: $.info
  update:
    description: 'Green Check Access is Green Check Verified''s public REST API suite for service providers
      serving cannabis-related businesses (CRBs). It normalizes compliance, company and transactional
      data across 20+ point-of-sale and seed-to-sale systems. Authentication is OAuth 2.0 client credentials:
      POST /auth/token returns a Bearer token valid 3600 seconds carrying a scope array. Collections are
      paginated with limit/offset and return {data:[], metadata:{total,limit,offset}}. Errors use a bespoke
      {message, details} envelope, not RFC 9457. Rate limiting is signalled with X-RateLimit-Limit/Remaining/Reset;
      no numeric limit is published. There is no idempotency key on any reachable write operation, and
      no webhook or event surface — poll due_diligence_status instead. Overlay authored by API Evangelist;
      not published by Green Check.'
    contact:
      name: Green Check Access developer portal
      url: https://developer.greencheckverified.com/
    termsOfService: https://greencheckverified.com/terms-of-use/
- target: $.components.securitySchemes['access_auth']
  update:
    description: 'Bearer token obtained from POST /auth/token via the OAuth 2.0 client-credentials grant.
      Modelled here as apiKey-in-header because that is how the served contract declares it, but the effective
      flow is oauth2 client_credentials with a 3600-second lifetime and the ten scopes enumerated per
      operation. Send as: Authorization: Bearer <access_token>.'
- target: $.servers
  update:
  - url: https://prod-api.greencheckverified.com
    description: Production server
  - url: https://sandbox-api.greencheckverified.com
    description: Sandbox server — every worked example in the Green Check docs targets this host. Publishes
      deterministic POS-connection simulation values (see sandbox/green-check-verified-sandbox.yml).
- target: $.paths['/trace/*']
  update:
    description: HIGH-CONSEQUENCE, UNTYPED SURFACE. Pass-through proxy to state contracted seed-to-sale
      track-and-trace systems (Metrc, BioTrack). Path is a wildcard, request bodies are unconstrained
      and the 200 response schema is empty, so nothing here is machine-checkable. Writes through this
      proxy are regulatory filings against a government system of record and Green Check documents no
      reversal path or window for them. Agents should treat every non-GET on /trace/* as requiring human
      confirmation.
- target: $.paths['/service-providers/{sp_id}/crbs'].post
  update:
    description: NOT REPLAY-SAFE. Creates a CRB organization and, on the invite path, emails a named individual
      at that business — an email that cannot be recalled. No idempotency key is accepted on this operation
      and no delete-CRB or cancel-invite operation exists in the contract. The only accidental-duplicate
      guard is the 409 Conflict returned on an exact organization-name collision. Call GET /service-providers/{sp_id}/ein-search
      first.
- target: $.paths['/service-providers/{sp_id}/crbs/{crb_id}/access'].post
  update:
    description: IRREVERSIBLE CREDENTIAL MINT. Generates Green Check Access credentials on behalf of the
      CRB. The contract publishes no revoke or rotate operation, so credentials issued in error cannot
      be invalidated through the API.
- target: $.tags
  update:
  - name: Trace
    description: Untyped pass-through proxy to state track-and-trace systems. Highest consequence, least
      specified.
  - name: Authentication
    description: OAuth 2.0 client-credentials token exchange. The only unauthenticated operation.