openapi: 3.0.3 info: title: GoSpotCheck External AsyncJobs Places API version: '1.0' x-generated: '2026-07-19' x-method: searched x-source: https://gsc.docs.apiary.io/ description: The GoSpotCheck (by FORM) External API lets developers build custom applications and integrations against a GoSpotCheck company account. It supports ongoing creates/updates to people, places, place groups, teams, catalogs and items, and pulling MissionResponse / TaskResponse data out of GoSpotCheck to build custom reports. All requests are RESTful over HTTPS, authenticated with an OAuth2 bearer token in the Authorization header. Responses use a standard envelope with `request`, `paging`, `data`, and `errors` hashes. Faithfully transcribed from the provider's published Apiary API Blueprint; not every field-level schema is modeled. contact: name: GoSpotCheck Support email: support@gospotcheck.com url: https://support.gospotcheck.com servers: - url: https://api.gospotcheck.com description: Production security: - oauth2Bearer: [] tags: - name: Places paths: /external/v1/places: get: operationId: listPlaces summary: List all places for the company tags: - Places parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/perPage' - $ref: '#/components/parameters/sortBy' - $ref: '#/components/parameters/sortDirection' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/async' responses: '200': $ref: '#/components/responses/Success' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' post: operationId: createPlaces summary: Create one place or multiple places tags: - Places requestBody: content: application/json: schema: oneOf: - $ref: '#/components/schemas/Place' - type: array items: $ref: '#/components/schemas/Place' responses: '200': $ref: '#/components/responses/Success' '422': $ref: '#/components/responses/Unprocessable' /external/v1/places/{id}: parameters: - name: id in: path required: true schema: type: integer get: operationId: getPlace summary: Get a single place tags: - Places responses: '200': $ref: '#/components/responses/Success' '404': $ref: '#/components/responses/NotFound' put: operationId: updatePlace summary: Update an existing place tags: - Places requestBody: content: application/json: schema: $ref: '#/components/schemas/Place' responses: '200': $ref: '#/components/responses/Success' '422': $ref: '#/components/responses/Unprocessable' delete: operationId: disablePlace summary: Disable an existing place tags: - Places responses: '200': $ref: '#/components/responses/Success' '404': $ref: '#/components/responses/NotFound' components: responses: Unprocessable: description: Unprocessable entity (model validation failed). content: application/json: schema: $ref: '#/components/schemas/Envelope' Success: description: Standard success envelope. content: application/json: schema: $ref: '#/components/schemas/Envelope' Unauthorized: description: Missing or invalid OAuth2 bearer token. content: application/json: schema: $ref: '#/components/schemas/Envelope' NotFound: description: Resource not found. content: application/json: schema: $ref: '#/components/schemas/Envelope' Forbidden: description: Forbidden. Also returned as `403 Forbidden (Rate Limit Exceeded)` when the 10 req/s or 100,000 req/day limit is exceeded. content: application/json: schema: $ref: '#/components/schemas/Envelope' parameters: sortDirection: name: sort_direction in: query schema: type: string enum: - asc - desc perPage: name: per_page in: query description: Records per page (defaults to 25, max 200). schema: type: integer default: 25 maximum: 200 page: name: page in: query description: Page number of results (defaults to 1). schema: type: integer default: 1 sortBy: name: sort_by in: query description: Field to sort the index by. schema: type: string include: name: include in: query description: Comma-separated related resources to embed (e.g. teams,place_groups). schema: type: string async: name: _async in: query description: When true, run the index as an asynchronous CSV export job. schema: type: boolean default: false schemas: Envelope: type: object properties: request: $ref: '#/components/schemas/RequestHash' paging: $ref: '#/components/schemas/PagingHash' data: {} errors: $ref: '#/components/schemas/ErrorsHash' PagingHash: type: object properties: current_page: type: integer previous_page: type: integer nullable: true next_page: type: integer nullable: true per_page: type: integer total_records: type: integer first_timestamp: type: string last_timestamp: type: string ErrorsHash: type: object description: Present only when status_code is in the 400 or 500 range. Place: type: object properties: id: type: integer description: Unique GSC id name: type: string address: type: string city: type: string state: type: string postal_code: type: string country: type: string description: ISO3166-1 alpha-2 custom_place_id: type: string nullable: true status: type: string nullable: true description: null when enabled; 'disabled' when disabled disabled_at: type: string nullable: true geocoding_disabled: type: boolean created_at: type: string updated_at: type: string RequestHash: type: object properties: status_code: type: integer status_message: type: string path: type: string method: type: string params: type: object securitySchemes: oauth2Bearer: type: http scheme: bearer description: 'OAuth2 access token supplied as `Authorization: Bearer `. Tokens are issued by GoSpotCheck; contact your Customer Success Manager or support@gospotcheck.com to obtain one.'