openapi: 3.0.3
info:
title: 'HackGreenville API Documentation'
description: 'Documentation for the HackGreenville API. This API provides access to data stored in the HackGreenville database, such as events, organizations and more.'
version: 1.0.0
servers:
-
url: '{{ config("app.url") }}'
tags:
-
name: Endpoints
description: ''
paths:
/api/v0/events:
get:
summary: 'Events API v0'
operationId: eventsAPIV0
description: "This API provides access to event data stored in the HackGreenville database.\n\nPlease see the [Event API docs](https://github.com/hackgvl/hackgreenville-com/blob/develop/EVENTS_API.md) for more information about the event API."
parameters:
-
in: query
name: start_date
description: 'The start date for events filtering (inclusive). Must be a valid date in the format Y-m-d. Must be a date before or equal to end_date.'
example: '2026-01-01'
required: false
schema:
type: string
description: 'The start date for events filtering (inclusive). Must be a valid date in the format Y-m-d. Must be a date before or equal to end_date.'
example: '2026-01-01'
nullable: true
-
in: query
name: end_date
description: 'The end date for events filtering (inclusive). Must be a valid date. Must be a valid date in the format Y-m-d. Must be a date after or equal to start_date.'
example: '2100-12-31'
required: false
schema:
type: string
description: 'The end date for events filtering (inclusive). Must be a valid date. Must be a valid date in the format Y-m-d. Must be a date after or equal to start_date.'
example: '2100-12-31'
nullable: true
-
in: query
name: tags
description: 'Filter events by organization tag ID.'
example: null
required: false
schema:
type: integer
description: 'Filter events by organization tag ID.'
example: null
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: array
items:
type: object
properties:
event_name:
type: string
example: 'Eius et animi quos velit et.'
group_name:
type: string
example: 'Mrs. Justina Gaylord tech group!!!'
group_url:
type: string
example: quis
url:
type: string
example: 'https://kunde.net/est-quaerat-enim-accusantium-alias-magnam.html'
time:
type: string
example: '2025-01-01T17:00:00.000000Z'
tags:
type: string
example: ''
status:
type: string
example: past
rsvp_count:
type: integer
example: 28
description:
type: string
example: 'Aut ex quo iure eos explicabo accusamus. Et qui ipsa itaque autem mollitia.'
uuid:
type: string
example: 3f5d74c8-7495-3f45-bd67-0e0ddb6401b8
data_as_of:
type: string
example: '2026-01-01T12:00:00.000000Z'
service_id:
type: string
example: '3'
service:
type: string
example: eventbrite
venue:
type: object
properties:
name:
type: string
example: 'placeat rerum ad in quo'
address:
type: string
example: "39134 Heidenreich Shoal Apt. 942\nReubenland, WY 88137-3873"
city:
type: string
example: Ladariushaven
state:
type: string
example: MT
zip:
type: string
example: 30525-7075
country:
type: string
example: EH
lat:
type: string
example: '24.605096'
lon:
type: string
example: '153.784749'
created_at:
type: string
example: '2025-01-01T17:00:00.000000Z'
is_paid:
type: string
example: null
nullable: true
example:
-
event_name: 'Eius et animi quos velit et.'
group_name: 'Mrs. Justina Gaylord tech group!!!'
group_url: quis
url: 'https://kunde.net/est-quaerat-enim-accusantium-alias-magnam.html'
time: '2025-01-01T17:00:00.000000Z'
tags: ''
status: past
rsvp_count: 28
description: 'Aut ex quo iure eos explicabo accusamus. Et qui ipsa itaque autem mollitia.'
uuid: 3f5d74c8-7495-3f45-bd67-0e0ddb6401b8
data_as_of: '2026-01-01T12:00:00.000000Z'
service_id: '3'
service: eventbrite
venue:
name: 'placeat rerum ad in quo'
address: "39134 Heidenreich Shoal Apt. 942\nReubenland, WY 88137-3873"
city: Ladariushaven
state: MT
zip: 30525-7075
country: EH
lat: '24.605096'
lon: '153.784749'
created_at: '2025-01-01T17:00:00.000000Z'
is_paid: null
tags:
- Endpoints
security: []
/api/v0/orgs:
get:
summary: 'Organizations API v0'
operationId: organizationsAPIV0
description: "This API provides access to organization data stored in the HackGreenville database.\n\nPlease see the [Organization API docs](https://github.com/hackgvl/hackgreenville-com/blob/develop/ORGS_API.md) for more information about the organization API."
parameters:
-
in: query
name: tags
description: 'Filter organizations by organization tag ID.'
example: null
required: false
schema:
type: integer
description: 'Filter organizations by organization tag ID.'
example: null
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: array
items:
type: object
properties:
title:
type: string
example: sunt
path:
type: string
example: 'https://gaylord.com/modi-deserunt-aut-ab-provident-perspiciatis.html'
changed:
type: string
example: '2025-01-01T17:00:00.000000Z'
field_city:
type: string
example: Lyricberg
field_event_service:
type: string
example: null
nullable: true
field_events_api_key:
type: string
example: null
nullable: true
field_focus_area:
type: string
example: adipisci
field_homepage:
type: string
example: fugiat
field_event_calendar_homepage:
type: string
example: 'http://hauck.com/'
field_primary_contact_person:
type: string
example: quidem
field_org_status:
type: string
example: active
field_organization_type:
type: string
example: nostrum
field_year_established:
type: integer
example: 2025
field_org_tags:
type: string
example: ''
uuid:
type: integer
example: 123
example:
-
title: sunt
path: 'https://gaylord.com/modi-deserunt-aut-ab-provident-perspiciatis.html'
changed: '2025-01-01T17:00:00.000000Z'
field_city: Lyricberg
field_event_service: null
field_events_api_key: null
field_focus_area: adipisci
field_homepage: fugiat
field_event_calendar_homepage: 'http://hauck.com/'
field_primary_contact_person: quidem
field_org_status: active
field_organization_type: nostrum
field_year_established: 2025
field_org_tags: ''
uuid: 123
tags:
- Endpoints
security: []
/api/v1/events:
get:
summary: 'Events API v1'
operationId: eventsAPIV1
description: "This API provides access to event data stored in the HackGreenville database.\n\n* Please see the [Event API docs](https://github.com/hackgvl/hackgreenville-com/blob/develop/EVENTS_API.md) for more information about the event API."
parameters:
-
in: query
name: per_page
description: 'The number of items to show per page. Must be at least 1. Must not be greater than 100.'
example: 50
required: false
schema:
type: integer
description: 'The number of items to show per page. Must be at least 1. Must not be greater than 100.'
example: 50
nullable: true
-
in: query
name: page
description: 'The current page of items to display. Must be at least 1.'
example: 1
required: false
schema:
type: integer
description: 'The current page of items to display. Must be at least 1.'
example: 1
nullable: true
-
in: query
name: start_date
description: 'The start date for events filtering (inclusive). Future event data may be limited. Please see the [Event API docs](https://github.com/hackgvl/hackgreenville-com/blob/develop/EVENTS_API.md) for information about event data limitations. Must be a valid date in the format Y-m-d. Must be a date before or equal to end_date.'
example: '2026-01-01'
required: false
schema:
type: string
description: 'The start date for events filtering (inclusive). Future event data may be limited. Please see the [Event API docs](https://github.com/hackgvl/hackgreenville-com/blob/develop/EVENTS_API.md) for information about event data limitations. Must be a valid date in the format Y-m-d. Must be a date before or equal to end_date.'
example: '2026-01-01'
nullable: true
-
in: query
name: end_date
description: 'The end date for events filtering (inclusive). Future event data may be limited. Please see the [Event API docs](https://github.com/hackgvl/hackgreenville-com/blob/develop/EVENTS_API.md) for information about event data limitations. Must be a valid date in the format Y-m-d. Must be a date after or equal to start_date.'
example: '2100-12-31'
required: false
schema:
type: string
description: 'The end date for events filtering (inclusive). Future event data may be limited. Please see the [Event API docs](https://github.com/hackgvl/hackgreenville-com/blob/develop/EVENTS_API.md) for information about event data limitations. Must be a valid date in the format Y-m-d. Must be a date after or equal to start_date.'
example: '2100-12-31'
nullable: true
-
in: query
name: tags
description: 'The id of an existing record in the tags table.'
example:
- 16
required: false
schema:
type: array
description: 'The id of an existing record in the tags table.'
example:
- 16
items:
type: integer
-
in: query
name: name
description: 'Filter events by event name (the "event_name" property). Must not be greater than 255 characters.'
example: null
required: false
schema:
type: string
description: 'Filter events by event name (the "event_name" property). Must not be greater than 255 characters.'
example: null
nullable: true
-
in: query
name: org_name
description: 'The name of the organization associated with the event (the "group_name" property). Must not be greater than 255 characters.'
example: null
required: false
schema:
type: string
description: 'The name of the organization associated with the event (the "group_name" property). Must not be greater than 255 characters.'
example: null
nullable: true
-
in: query
name: service
description: 'The service that imported the event (meetup_graphql, eventbrite, etc.). Must not be greater than 255 characters.'
example: null
required: false
schema:
type: string
description: 'The service that imported the event (meetup_graphql, eventbrite, etc.). Must not be greater than 255 characters.'
example: null
nullable: true
-
in: query
name: min_rsvp
description: 'Must be at least 0.'
example: null
required: false
schema:
type: integer
description: 'Must be at least 0.'
example: null
nullable: true
-
in: query
name: max_rsvp
description: 'Must be at least 0.'
example: null
required: false
schema:
type: integer
description: 'Must be at least 0.'
example: null
nullable: true
-
in: query
name: venue_city
description: 'Must not be greater than 255 characters.'
example: null
required: false
schema:
type: string
description: 'Must not be greater than 255 characters.'
example: null
nullable: true
-
in: query
name: venue_state
description: 'Must be 2 characters.'
example: null
required: false
schema:
type: string
description: 'Must be 2 characters.'
example: null
nullable: true
-
in: query
name: is_paid
description: 'Filter events that require payment (null means we currently cannot determine if event is paid).'
example: null
required: false
schema:
type: string
description: 'Filter events that require payment (null means we currently cannot determine if event is paid).'
example: null
enum:
- 'null'
- 'true'
- 'false'
nullable: true
-
in: query
name: sort_by
description: ''
example: event_name
required: false
schema:
type: string
description: ''
example: event_name
enum:
- active_at
- event_name
- group_name
- rsvp_count
- created_at
nullable: true
-
in: query
name: sort_direction
description: ''
example: asc
required: false
schema:
type: string
description: ''
example: asc
enum:
- asc
- desc
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 3f5d74c8-7495-3f45-bd67-0e0ddb6401b8
name: 'Eius et animi quos velit et.'
description: 'Aut ex quo iure eos explicabo accusamus. Et qui ipsa itaque autem mollitia.'
url: 'https://kunde.net/est-quaerat-enim-accusantium-alias-magnam.html'
starts_at: '2025-01-01T17:00:00.000000Z'
ends_at: '2025-01-01T19:00:00.000000Z'
rsvp_count: 28
status: past
is_paid: null
organization:
id: 123
name: 'Mrs. Justina Gaylord tech group!!!'
url: quis
tags: []
venue:
name: 'placeat rerum ad in quo'
address: "39134 Heidenreich Shoal Apt. 942\nReubenland, WY 88137-3873"
city: Ladariushaven
state:
code: MT
name: MT
zipcode: 30525-7075
country: EH
location:
latitude: '24.605096'
longitude: '153.784749'
service:
name: eventbrite
id: '3'
created_at: '2025-01-01T17:00:00.000000Z'
updated_at: '2025-01-01T17:00:00.000000Z'
properties:
data:
type: array
example:
-
id: 3f5d74c8-7495-3f45-bd67-0e0ddb6401b8
name: 'Eius et animi quos velit et.'
description: 'Aut ex quo iure eos explicabo accusamus. Et qui ipsa itaque autem mollitia.'
url: 'https://kunde.net/est-quaerat-enim-accusantium-alias-magnam.html'
starts_at: '2025-01-01T17:00:00.000000Z'
ends_at: '2025-01-01T19:00:00.000000Z'
rsvp_count: 28
status: past
is_paid: null
organization:
id: 123
name: 'Mrs. Justina Gaylord tech group!!!'
url: quis
tags: []
venue:
name: 'placeat rerum ad in quo'
address: "39134 Heidenreich Shoal Apt. 942\nReubenland, WY 88137-3873"
city: Ladariushaven
state:
code: MT
name: MT
zipcode: 30525-7075
country: EH
location:
latitude: '24.605096'
longitude: '153.784749'
service:
name: eventbrite
id: '3'
created_at: '2025-01-01T17:00:00.000000Z'
updated_at: '2025-01-01T17:00:00.000000Z'
items:
type: object
properties:
id:
type: string
example: 3f5d74c8-7495-3f45-bd67-0e0ddb6401b8
name:
type: string
example: 'Eius et animi quos velit et.'
description:
type: string
example: 'Aut ex quo iure eos explicabo accusamus. Et qui ipsa itaque autem mollitia.'
url:
type: string
example: 'https://kunde.net/est-quaerat-enim-accusantium-alias-magnam.html'
starts_at:
type: string
example: '2025-01-01T17:00:00.000000Z'
ends_at:
type: string
example: '2025-01-01T19:00:00.000000Z'
rsvp_count:
type: integer
example: 28
status:
type: string
example: past
is_paid:
type: string
example: null
nullable: true
organization:
type: object
properties:
id:
type: integer
example: 123
name:
type: string
example: 'Mrs. Justina Gaylord tech group!!!'
url:
type: string
example: quis
tags:
type: array
example: []
venue:
type: object
properties:
name:
type: string
example: 'placeat rerum ad in quo'
address:
type: string
example: "39134 Heidenreich Shoal Apt. 942\nReubenland, WY 88137-3873"
city:
type: string
example: Ladariushaven
state:
type: object
properties:
code:
type: string
example: MT
name:
type: string
example: MT
zipcode:
type: string
example: 30525-7075
country:
type: string
example: EH
location:
type: object
properties:
latitude:
type: string
example: '24.605096'
longitude:
type: string
example: '153.784749'
service:
type: object
properties:
name:
type: string
example: eventbrite
id:
type: string
example: '3'
created_at:
type: string
example: '2025-01-01T17:00:00.000000Z'
updated_at:
type: string
example: '2025-01-01T17:00:00.000000Z'
tags:
- Endpoints
security: []
/api/v1/organizations:
get:
summary: 'Organizations API v1'
operationId: organizationsAPIV1
description: "This API provides access to organization data stored in the HackGreenville database.\n\n* Please see the [Organization API docs](https://github.com/hackgvl/hackgreenville-com/blob/develop/ORGS_API.md) for more information about the organization API."
parameters:
-
in: query
name: per_page
description: 'The number of items to show per page. Must be at least 1. Must not be greater than 100.'
example: 50
required: false
schema:
type: integer
description: 'The number of items to show per page. Must be at least 1. Must not be greater than 100.'
example: 50
nullable: true
-
in: query
name: page
description: 'The current page of items to display. Must be at least 1.'
example: 1
required: false
schema:
type: integer
description: 'The current page of items to display. Must be at least 1.'
example: 1
nullable: true
-
in: query
name: tags
description: 'Filter organizations by tag ID. The id of an existing record in the tags table.'
example: null
required: false
schema:
type: array
description: 'Filter organizations by tag ID. The id of an existing record in the tags table.'
example: null
items:
type: integer
-
in: query
name: title
description: 'Must not be greater than 255 characters.'
example: null
required: false
schema:
type: string
description: 'Must not be greater than 255 characters.'
example: null
nullable: true
-
in: query
name: city
description: 'Must not be greater than 255 characters.'
example: null
required: false
schema:
type: string
description: 'Must not be greater than 255 characters.'
example: null
nullable: true
-
in: query
name: focus_area
description: 'The organization category (Entrpreneurship, Security, etc.). Must not be greater than 255 characters.'
example: null
required: false
schema:
type: string
description: 'The organization category (Entrpreneurship, Security, etc.). Must not be greater than 255 characters.'
example: null
nullable: true
-
in: query
name: organization_type
description: 'The organization type (Meetup Groups, Code Schools, etc.). Must not be greater than 255 characters.'
example: null
required: false
schema:
type: string
description: 'The organization type (Meetup Groups, Code Schools, etc.). Must not be greater than 255 characters.'
example: null
nullable: true
-
in: query
name: status
description: 'The organization status (active, inactive, etc.). Must not be greater than 255 characters.'
example: null
required: false
schema:
type: string
description: 'The organization status (active, inactive, etc.). Must not be greater than 255 characters.'
example: null
nullable: true
-
in: query
name: established_from
description: 'The year the organization was established. Must be at least 1900. Must not be greater than current year.'
example: null
required: false
schema:
type: integer
description: 'The year the organization was established. Must be at least 1900. Must not be greater than current year.'
example: null
nullable: true
-
in: query
name: established_to
description: 'The year the organization was dissolved. Must be at least 1900. Must not be greater than current year.'
example: null
required: false
schema:
type: integer
description: 'The year the organization was dissolved. Must be at least 1900. Must not be greater than current year.'
example: null
nullable: true
-
in: query
name: sort_by
description: ''
example: title
required: false
schema:
type: string
description: ''
example: title
enum:
- title
- city
- established_at
- updated_at
- created_at
nullable: true
-
in: query
name: sort_direction
description: ''
example: asc
required: false
schema:
type: string
description: ''
example: asc
enum:
- asc
- desc
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 123
title: sunt
path: 'https://gaylord.com/modi-deserunt-aut-ab-provident-perspiciatis.html'
city: Lyricberg
service: null
service_api_key: null
focus_area: adipisci
website_url: fugiat
event_calendar_url: 'http://hauck.com/'
primary_contact: quidem
status: active
organization_type: nostrum
established_year: 2025
tags: []
created_at: '2025-01-01T17:00:00.000000Z'
updated_at: '2025-01-01T17:00:00.000000Z'
properties:
data:
type: array
example:
-
id: 123
title: sunt
path: 'https://gaylord.com/modi-deserunt-aut-ab-provident-perspiciatis.html'
city: Lyricberg
service: null
service_api_key: null
focus_area: adipisci
website_url: fugiat
event_calendar_url: 'http://hauck.com/'
primary_contact: quidem
status: active
organization_type: nostrum
established_year: 2025
tags: []
created_at: '2025-01-01T17:00:00.000000Z'
updated_at: '2025-01-01T17:00:00.000000Z'
items:
type: object
properties:
id:
type: integer
example: 123
title:
type: string
example: sunt
path:
type: string
example: 'https://gaylord.com/modi-deserunt-aut-ab-provident-perspiciatis.html'
city:
type: string
example: Lyricberg
service:
type: string
example: null
nullable: true
service_api_key:
type: string
example: null
nullable: true
focus_area:
type: string
example: adipisci
website_url:
type: string
example: fugiat
event_calendar_url:
type: string
example: 'http://hauck.com/'
primary_contact:
type: string
example: quidem
status:
type: string
example: active
organization_type:
type: string
example: nostrum
established_year:
type: integer
example: 2025
tags:
type: array
example: []
created_at:
type: string
example: '2025-01-01T17:00:00.000000Z'
updated_at:
type: string
example: '2025-01-01T17:00:00.000000Z'
tags:
- Endpoints
security: []