Outdoorsy Announcements API
The announcements API from Outdoorsy — 7 operation(s) for announcements.
The announcements API from Outdoorsy — 7 operation(s) for announcements.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/outdoorsy-announcements-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
description: 'The Outdoorsy API (or simply "API") is organized around REST. It uses
predictable, resource-oriented URLs and implements standard HTTP response
codes, verbs, authentication mechanisms, and a variety of request encodings.
## Versioning
The API implements semantic versioning.'
title: Outdoorsy API Documentation Announcements API
version: 0.0.1
servers:
- url: /v0
security:
- Bearer:
- '[]'
- API-Key:
- '[]'
tags:
- name: Announcements
paths:
/admin/announcement-groups:
get:
description: Lists all announcement groups (admin only)
tags:
- Announcements
operationId: readManyAnnouncementGroups
parameters:
- x-go-name: AnnouncementID
name: announcement_id
in: query
schema:
type: integer
format: int64
- x-go-name: UserID
name: user_id
in: query
schema:
type: integer
format: int64
responses:
'200':
$ref: '#/components/responses/readManyAnnouncementGroupsResponse'
'400':
$ref: '#/components/responses/badRequestError'
'401':
$ref: '#/components/responses/unauthorizedError'
default:
$ref: '#/components/responses/genericError'
summary: Read many announcement groups
x-summary-source: derived
post:
description: Creates a new announcement group (admin only)
tags:
- Announcements
operationId: createAnnouncementGroup
responses:
'201':
$ref: '#/components/responses/createAnnouncementGroupResponse'
'400':
$ref: '#/components/responses/badRequestError'
'401':
$ref: '#/components/responses/unauthorizedError'
default:
$ref: '#/components/responses/genericError'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUpdateAnnouncementGroupRequest'
summary: Create announcement group
x-summary-source: derived
/admin/announcement-groups/{announcement_group_id}:
get:
description: Gets a specific announcement group by ID (admin only)
tags:
- Announcements
operationId: readOneAnnouncementGroup
responses:
'200':
$ref: '#/components/responses/readOneAnnouncementGroupResponse'
'400':
$ref: '#/components/responses/badRequestError'
'401':
$ref: '#/components/responses/unauthorizedError'
default:
$ref: '#/components/responses/genericError'
summary: Read one announcement group
x-summary-source: derived
delete:
description: Deletes an announcement (admin only)
tags:
- Announcements
operationId: deleteAnnouncementGroup
responses:
'204':
$ref: '#/components/responses/noContentResponse'
'400':
$ref: '#/components/responses/badRequestError'
'401':
$ref: '#/components/responses/unauthorizedError'
default:
$ref: '#/components/responses/genericError'
summary: Delete announcement group
x-summary-source: derived
patch:
description: Updates an announcement (admin only)
tags:
- Announcements
operationId: updateAnnouncementGroup
responses:
'204':
$ref: '#/components/responses/noContentResponse'
'400':
$ref: '#/components/responses/badRequestError'
'401':
$ref: '#/components/responses/unauthorizedError'
default:
$ref: '#/components/responses/genericError'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUpdateAnnouncementGroupRequest'
summary: Update announcement group
x-summary-source: derived
/admin/announcements:
get:
description: Lists all announcements (admin only)
tags:
- Announcements
operationId: readManyAnnouncements
parameters:
- x-go-name: UserId
name: user_id
in: query
schema:
type: integer
format: int64
responses:
'200':
$ref: '#/components/responses/readManyAnnouncementsResponse'
'400':
$ref: '#/components/responses/badRequestError'
'401':
$ref: '#/components/responses/unauthorizedError'
default:
$ref: '#/components/responses/genericError'
summary: Read many announcements
x-summary-source: derived
post:
description: Creates a new announcement (admin only)
tags:
- Announcements
operationId: createAnnouncement
responses:
'201':
$ref: '#/components/responses/createAnnouncementResponse'
'400':
$ref: '#/components/responses/badRequestError'
'401':
$ref: '#/components/responses/unauthorizedError'
default:
$ref: '#/components/responses/genericError'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUpdateAnnouncementRequest'
summary: Create announcement
x-summary-source: derived
/admin/announcements/{announcement_id}:
get:
description: Gets a specific announcement by ID (admin only)
tags:
- Announcements
operationId: readOneAnnouncement
responses:
'200':
$ref: '#/components/responses/readOneAnnouncementResponse'
'400':
$ref: '#/components/responses/badRequestError'
'401':
$ref: '#/components/responses/unauthorizedError'
default:
$ref: '#/components/responses/genericError'
summary: Read one announcement
x-summary-source: derived
delete:
description: Deletes an announcement (admin only)
tags:
- Announcements
operationId: deleteAnnouncement
responses:
'204':
$ref: '#/components/responses/noContentResponse'
'400':
$ref: '#/components/responses/badRequestError'
'401':
$ref: '#/components/responses/unauthorizedError'
default:
$ref: '#/components/responses/genericError'
summary: Delete announcement
x-summary-source: derived
patch:
description: Updates an announcement (admin only)
tags:
- Announcements
operationId: updateAnnouncement
responses:
'204':
$ref: '#/components/responses/noContentResponse'
'400':
$ref: '#/components/responses/badRequestError'
'401':
$ref: '#/components/responses/unauthorizedError'
default:
$ref: '#/components/responses/genericError'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUpdateAnnouncementRequest'
summary: Update announcement
x-summary-source: derived
/announcements:
get:
description: Gets announcements for current user
tags:
- Announcements
operationId: getAnnouncementsForUser
responses:
'200':
$ref: '#/components/responses/getAnnouncementsForUserResponse'
'401':
$ref: '#/components/responses/unauthorizedError'
default:
$ref: '#/components/responses/genericError'
summary: Get announcements for user
x-summary-source: derived
/announcements/{announcement_id}:
get:
description: Gets a specific announcement by ID
tags:
- Announcements
operationId: getAnnouncementForID
responses:
'200':
$ref: '#/components/responses/getAnnouncementForUserResponse'
'400':
$ref: '#/components/responses/badRequestError'
'401':
$ref: '#/components/responses/unauthorizedError'
'404':
$ref: '#/components/responses/notFoundError'
default:
$ref: '#/components/responses/genericError'
summary: Get announcement for ID
x-summary-source: derived
/announcements/{announcement_id}/read:
post:
description: Marks an announcement as read for the current user
tags:
- Announcements
operationId: markAnnouncementAsRead
responses:
'204':
$ref: '#/components/responses/noContentResponse'
'400':
$ref: '#/components/responses/badRequestError'
'401':
$ref: '#/components/responses/unauthorizedError'
default:
$ref: '#/components/responses/genericError'
summary: Mark announcement as read
x-summary-source: derived
components:
schemas:
CreateUpdateAnnouncementRequest:
description: 'Admin
Announcements'
type: object
properties:
content:
type: string
x-go-name: Content
description:
type: string
x-go-name: Description
group_ids:
type: array
items:
type: integer
format: int64
x-go-name: GroupIDs
published:
type: boolean
x-go-name: Published
published_at:
type: string
x-go-name: PublishedAt
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
title:
type: string
x-go-name: Title
user_ids:
type: array
items:
type: integer
format: int64
x-go-name: UserIDs
x-go-package: github.com/outdoorsy/api/internal/announcements
ReadManyAdminAnnouncementGroups:
type: object
properties:
announcement_count:
type: integer
format: int64
x-go-name: AnnouncementCount
created:
type: string
x-go-name: Created
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
created_by:
type: integer
format: int64
x-go-name: CreatedBy
deleted:
type: boolean
x-go-name: Deleted
deleted_at:
type: string
x-go-name: DeletedAt
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
deleted_by:
type: integer
format: int64
x-go-name: DeletedBy
id:
type: integer
format: int64
x-go-name: ID
name:
type: string
x-go-name: Name
updated:
type: string
x-go-name: Updated
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
updated_by:
type: integer
format: int64
x-go-name: UpdatedBy
user_count:
type: integer
format: int64
x-go-name: UserCount
x-go-package: github.com/outdoorsy/api/internal/announcements
UserAnnouncement:
description: 'Request & Responses
Any User'
type: object
properties:
content:
type: string
x-go-name: Content
created:
type: string
x-go-name: Created
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
id:
type: integer
format: int64
x-go-name: ID
published_at:
type: string
x-go-name: PublishedAt
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
read:
type: boolean
x-go-name: Read
read_at:
type: string
x-go-name: ReadAt
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
title:
type: string
x-go-name: Title
updated:
type: string
x-go-name: Updated
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
x-go-package: github.com/outdoorsy/api/internal/announcements
AnnouncementGroup:
type: object
properties:
created:
type: string
x-go-name: Created
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
created_by:
type: integer
format: int64
x-go-name: CreatedBy
deleted:
type: boolean
x-go-name: Deleted
deleted_at:
type: string
x-go-name: DeletedAt
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
deleted_by:
type: integer
format: int64
x-go-name: DeletedBy
id:
type: integer
format: int64
x-go-name: ID
name:
type: string
x-go-name: Name
updated:
type: string
x-go-name: Updated
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
updated_by:
type: integer
format: int64
x-go-name: UpdatedBy
x-go-package: github.com/outdoorsy/api/internal/announcements
ReadOneAdminAnnouncement:
type: object
properties:
content:
type: string
x-go-name: Content
created:
type: string
x-go-name: Created
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
created_by:
type: integer
format: int64
x-go-name: CreatedBy
deleted:
type: boolean
x-go-name: Deleted
deleted_at:
type: string
x-go-name: DeletedAt
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
deleted_by:
type: integer
format: int64
x-go-name: DeletedBy
description:
type: string
x-go-name: Description
groups:
$ref: '#/components/schemas/DBAnnouncementGroupSlice'
historic_user_ids:
$ref: '#/components/schemas/DBIntSlice'
id:
type: integer
format: int64
x-go-name: ID
individual_user_ids:
$ref: '#/components/schemas/DBIntSlice'
published_at:
type: string
x-go-name: PublishedAt
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
published_by:
type: integer
format: int64
x-go-name: PublishedBy
title:
type: string
x-go-name: Title
total_read:
type: integer
format: int64
x-go-name: TotalRead
total_users:
type: integer
format: int64
x-go-name: TotalUsers
updated:
type: string
x-go-name: Updated
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
updated_by:
type: integer
format: int64
x-go-name: UpdatedBy
x-go-package: github.com/outdoorsy/api/internal/announcements
DBIntSlice:
description: DBIntSlice is a []int with database conversion methods
type: array
items:
type: integer
format: int64
x-go-package: github.com/outdoorsy/api/utils
Announcement:
type: object
properties:
content:
type: string
x-go-name: Content
created:
type: string
x-go-name: Created
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
created_by:
type: integer
format: int64
x-go-name: CreatedBy
deleted:
type: boolean
x-go-name: Deleted
deleted_at:
type: string
x-go-name: DeletedAt
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
deleted_by:
type: integer
format: int64
x-go-name: DeletedBy
description:
type: string
x-go-name: Description
id:
type: integer
format: int64
x-go-name: ID
published_at:
type: string
x-go-name: PublishedAt
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
published_by:
type: integer
format: int64
x-go-name: PublishedBy
title:
type: string
x-go-name: Title
updated:
type: string
x-go-name: Updated
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
updated_by:
type: integer
format: int64
x-go-name: UpdatedBy
x-go-package: github.com/outdoorsy/api/internal/announcements
CreateUpdateAnnouncementGroupRequest:
description: Announcement Groups
type: object
properties:
incremental_removal_user_ids:
type: array
items:
type: integer
format: int64
x-go-name: IncrementalRemovalUserIDs
name:
type: string
x-go-name: Name
user_ids:
type: array
items:
type: integer
format: int64
x-go-name: UserIDs
x-go-package: github.com/outdoorsy/api/internal/announcements
ReadOneAdminAnnouncementGroup:
type: object
properties:
announcement_ids:
$ref: '#/components/schemas/DBIntSlice'
created:
type: string
x-go-name: Created
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
created_by:
type: integer
format: int64
x-go-name: CreatedBy
deleted:
type: boolean
x-go-name: Deleted
deleted_at:
type: string
x-go-name: DeletedAt
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
deleted_by:
type: integer
format: int64
x-go-name: DeletedBy
id:
type: integer
format: int64
x-go-name: ID
name:
type: string
x-go-name: Name
updated:
type: string
x-go-name: Updated
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
updated_by:
type: integer
format: int64
x-go-name: UpdatedBy
user_ids:
$ref: '#/components/schemas/DBIntSlice'
x-go-package: github.com/outdoorsy/api/internal/announcements
DBAnnouncementGroupSlice:
type: array
items:
$ref: '#/components/schemas/AnnouncementGroup'
x-go-package: github.com/outdoorsy/api/internal/announcements
ReadManyAdminAnnouncements:
type: object
properties:
content:
type: string
x-go-name: Content
created:
type: string
x-go-name: Created
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
created_by:
type: integer
format: int64
x-go-name: CreatedBy
deleted:
type: boolean
x-go-name: Deleted
deleted_at:
type: string
x-go-name: DeletedAt
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
deleted_by:
type: integer
format: int64
x-go-name: DeletedBy
description:
type: string
x-go-name: Description
group_count:
type: integer
format: int64
x-go-name: GroupCount
id:
type: integer
format: int64
x-go-name: ID
individual_user_count:
type: integer
format: int64
x-go-name: IndividualUserCount
published_at:
type: string
x-go-name: PublishedAt
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
published_by:
type: integer
format: int64
x-go-name: PublishedBy
title:
type: string
x-go-name: Title
total_read:
type: integer
format: int64
x-go-name: TotalRead
total_users:
type: integer
format: int64
x-go-name: TotalUsers
updated:
type: string
x-go-name: Updated
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
updated_by:
type: integer
format: int64
x-go-name: UpdatedBy
x-go-package: github.com/outdoorsy/api/internal/announcements
responses:
getAnnouncementsForUserResponse:
description: ''
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/UserAnnouncement'
readManyAnnouncementGroupsResponse:
description: ''
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ReadManyAdminAnnouncementGroups'
createAnnouncementGroupResponse:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/AnnouncementGroup'
noContentResponse:
description: Everything went as planned
createAnnouncementResponse:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Announcement'
badRequestError:
description: Invalid input or state means you're bad
headers:
Error:
schema:
type: string
genericError:
description: An unknown, unexpected error.
getAnnouncementForUserResponse:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UserAnnouncement'
readOneAnnouncementGroupResponse:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ReadOneAdminAnnouncementGroup'
readManyAnnouncementsResponse:
description: ''
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ReadManyAdminAnnouncements'
notFoundError:
description: Not found error
unauthorizedError:
description: Unauthorized error
readOneAnnouncementResponse:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ReadOneAdminAnnouncement'
securitySchemes:
API-Key:
type: apiKey
name: API-Key
in: header
Bearer:
type: apiKey
name: Authorization
in: header