openapi: 3.2.0 info: title: Green Check Access CRB Inventory Locations API version: 1.0.0 description: Green Check Access contact: {} servers: - url: https://sandbox-api.greencheckverified.com description: Sandbox server - url: https://prod-api.greencheckverified.com description: Production server tags: - name: CRB Inventory Locations paths: /service-providers/{sp_id}/crbs/{crb_id}/inventory-locations: get: operationId: get-crb-inventory-locations responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/PagedLocations' examples: Example 1: value: data: - id: 92C42BDC-c220-9E65-c79D-0Be2D85276AB crb_id: 0992e7c5-9eaE-ad23-1b1C-A58Cbaa18Adf name: Delivery pos_type: Blaze pos_location_id: '4306' pos_location_type: Distribution pos_updated_date: null pos_updated_date_local: '2023-10-28T11:31:35.563Z' gc_created_date: '2023-10-31T15:18:22.650Z' gc_created_date_local: null metadata: count: 1 - 100 total: 36618859 '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' '422': description: Validation Failed content: application/json: schema: $ref: '#/components/schemas/ValidateError' summary: Get CRB Inventory Locations tags: - CRB Inventory Locations security: - access_auth: - point-of-sale:read - admin parameters: - description: Service Provider Id in: path name: sp_id required: true schema: type: string pattern: ^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$ - description: CRB Id in: path name: crb_id required: true schema: type: string pattern: ^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$ - description: The page size in: query name: limit required: false schema: default: 1000 format: int32 type: integer minimum: 1 maximum: 1000 - description: The page offset in: query name: offset required: false schema: default: 0 format: int32 type: integer minimum: 0 /service-providers/{sp_id}/crbs/{crb_id}/inventory-locations/{location_id}: get: operationId: get-crb-inventory-location-by-id responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/Location' examples: Example 1: value: id: Cdb4ffff-a2FA-Cce1-547F-b8CDebFf8FcE crb_id: F9Fc6Fa3-ac42-8E7c-5e1B-Dc1D325E9Ecd name: Warehouse pos_type: MJ Freeway pos_location_id: '4328' pos_location_type: Delivery pos_updated_date: null pos_updated_date_local: '2023-10-28T11:31:35.563Z' gc_created_date: null gc_created_date_local: '2023-02-28T14:00:33.603Z' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' '422': description: Validation Failed content: application/json: schema: $ref: '#/components/schemas/ValidateError' summary: Get CRB Inventory Location by ID tags: - CRB Inventory Locations security: - access_auth: - point-of-sale:read - admin parameters: - description: Service Provider Id in: path name: sp_id required: true schema: type: string pattern: ^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$ - description: CRB Id in: path name: crb_id required: true schema: type: string pattern: ^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$ - description: The ID of the location in: path name: location_id required: true schema: type: string pattern: ^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$ components: schemas: ValidateError: properties: name: type: string default: Validation Failed message: type: string stack: type: string status: type: number format: double default: 422 fields: $ref: '#/components/schemas/FieldErrors' data: {} required: - name - message - status - fields type: object additionalProperties: false UUID: type: string format: uuid pattern: ^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$ NullableLocalDateTime: type: - string - 'null' pattern: ^[2][0][0-9]{2}[-]([0][0-9]|[1][0-2])[-]([0-2][0-9]|[3][0-1])\s([0-1][0-9]|[2][0-3])[:][0-5][0-9][:][0-5][0-9][.][0-9]{3} NotFoundError: properties: name: type: string default: Not Found message: type: string stack: type: string status: type: number format: double default: 404 data: {} required: - name - message - status type: object additionalProperties: false Location: properties: id: $ref: '#/components/schemas/UUID' description: ID for the Location crb_id: $ref: '#/components/schemas/UUID' description: ID of the CRB name: type: string description: Name of the location pos_type: $ref: '#/components/schemas/FriendlyPosName' description: The POS type that the Location data was populated from pos_location_id: type: string description: POS location ID pos_location_type: type: - string - 'null' description: POS location type. May or may not be provided by the POS pos_updated_date: $ref: '#/components/schemas/NullableUtcDateTime' description: Timestamp reported by the pos for the last update to this record. May or may not be provided by the POS type: - string - 'null' format: date-time pos_updated_date_local: $ref: '#/components/schemas/NullableLocalDateTime' description: CRB local timestamp reported by the pos for the last update to this record. May or may not be provided by the POS type: - string - 'null' pattern: ^[2][0][0-9]{2}[-]([0][0-9]|[1][0-2])[-]([0-2][0-9]|[3][0-1]\s([0-1][0-9]|[2][0-3])[:][0-5][0-9][:][0-5][0-9]([.][0-9]{1,3})? gc_created_date: $ref: '#/components/schemas/NullableUtcDateTime' description: Timestamp for when this inventory record was processed by green check type: - string - 'null' format: date-time gc_created_date_local: $ref: '#/components/schemas/NullableLocalDateTime' description: CRB local timestamp for when this inventory record was processed by green check type: - string - 'null' pattern: ^[2][0][0-9]{2}[-]([0][0-9]|[1][0-2])[-]([0-2][0-9]|[3][0-1]\s([0-1][0-9]|[2][0-3])[:][0-5][0-9][:][0-5][0-9]([.][0-9]{1,3})? required: - id - crb_id - name - pos_type - pos_location_id - pos_location_type - pos_updated_date - pos_updated_date_local - gc_created_date - gc_created_date_local type: object additionalProperties: false ForbiddenError: properties: name: type: string default: Forbidden message: type: string stack: type: string status: type: number format: double default: 403 data: {} required: - name - message - status type: object additionalProperties: false PositiveInteger: type: integer format: int32 minimum: 0 PagedLocations: properties: metadata: properties: total: $ref: '#/components/schemas/PositiveInteger' count: type: string description: Range of items returned required: - total - count type: object data: items: $ref: '#/components/schemas/Location' type: array required: - metadata - data type: object additionalProperties: false FieldErrors: properties: {} type: object additionalProperties: properties: value: {} message: type: string required: - message type: object FriendlyPosName: type: string enum: - Alleaves - Dutchie - Dutchie Wholesale - Cova - Meadow - MJ Freeway - MJ Freeway Wholesale - Greenbits - GrowFlow - GrowFlow Wholesale - Portal42 - Metrc S2S - Metrc S2S Wholesale - Flourish - Flourish Wholesale - Flowhub - BioTrack - BioTrack Wholesale - Treez - Blaze - Quickbooks - Sage Intacct - Canix - Brytemap - POSaBIT - Proteus420 - IndicaOnline - Sweed - Weave - Jane - Manual Upload Wholesale - Cova Test Account - Leaf Logix Test Account - BioTrack Test Account - Mj Freeway Test Account - Treez IO Test Account - Green Bits Test Account - Manual Upload Retail - Not Configured - Unsupported - CRBMonitor - Plaid UnauthorizedError: properties: name: type: string default: Unauthorized message: type: string stack: type: string status: type: number format: double default: 401 data: {} required: - name - message - status type: object additionalProperties: false NullableUtcDateTime: type: - string - 'null' format: date-time securitySchemes: access_auth: type: apiKey name: Authorization in: header x-amazon-apigateway-authtype: custom x-amazon-apigateway-authorizer: type: request identitySource: method.request.header.Authorization authorizerUri: Fn::Sub: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${AccessAuthorizerLambda.Arn}/invocations authorizerCredentials: Fn::Sub: ${AccessApiGatewayRole.Arn} authorizerResultTtlInSeconds: 60 x-amazon-apigateway-request-validators: all: validateRequestBody: true validateRequestParameters: true params: validateRequestBody: true validateRequestParameters: true body: validateRequestBody: true validateRequestParameters: false x-amazon-apigateway-api-key-source: AUTHORIZER x-tagGroups: - name: '' tags: - Authentication - name: Service Provider tags: - Service Provider - CRB Info - CRB Customers - CRB Documents - CRB Inventory - CRB Inventory Locations - CRB Products - CRB Sales - CRB Templates - name: CRB tags: - CRB - Customers - Documents - Inventory - Inventory Locations - Products - Sales x-amazon-apigateway-gateway-responses: ACCESS_DENIED: statusCode: '403' responseTemplates: application/json: '{"message":"$context.authorizer.context.messageString"}' EXPIRED_TOKEN: statusCode: '403' responseTemplates: application/json: '{"message":"$context.error.message", "details":"EXPIRED_TOKEN"}' INVALID_API_KEY: statusCode: '403' responseTemplates: application/json: '{"message":"$context.error.message", "details":"INVALID_API_KEY"}' INVALID_SIGNATURE: statusCode: '403' responseTemplates: application/json: '{"message":"$context.error.message", "details":"INVALID_SIGNATURE"}' MISSING_AUTHENTICATION_TOKEN: statusCode: '403' responseTemplates: application/json: '{"message":"Missing Authentication Header", "details":"MISSING_AUTHENTICATION_TOKEN"}' QUOTA_EXCEEDED: statusCode: '429' responseTemplates: application/json: '{"message":"$context.error.message", "details":"QUOTA_EXCEEDED"}' REQUEST_TOO_LARGE: statusCode: '413' responseTemplates: application/json: '{"message":"$context.error.message", "details":"REQUEST_TOO_LARGE"}' RESOURCE_NOT_FOUND: statusCode: '404' responseTemplates: application/json: '{"message":"$context.error.message", "details":"RESOURCE_NOT_FOUND"}' THROTTLED: statusCode: '429' responseTemplates: application/json: '{"message":"$context.error.message", "details":"THROTTLED"}' UNAUTHORIZED: statusCode: '401' responseTemplates: application/json: '{"message":"$context.error.message", "details":"UNAUTHORIZED"}' UNSUPPORTED_MEDIA_TYPE: statusCode: '415' responseTemplates: application/json: '{"message":"$context.error.message", "details":"UNSUPPORTED_MEDIA_TYPE"}' DEFAULT_4XX: statusCode: '404' responseTemplates: application/json: '{"message":"The requested URL is invalid"}' INTEGRATION_FAILURE: statusCode: '404' responseTemplates: application/json: '{"message":"Request too long. Ensure any request body or file you are sending is less than 5MB"}' WAF_FILTERED: statusCode: '403' responseTemplates: application/json: '{"message":"$context.error.message", "details":"FORBIDDEN"}'