openapi: 3.0.0
info:
title: Common Room Core Activities Segments API
version: 1.0.0
description: "Common Room Core REST APIs for getting data in to Common Room.\n
\nFor SCIM APIs see the SCIM documentation.\n
\nFor New, V2 APIs see the V2 API documentation.\n
\nTo use the Common Room API, or get started with the Common Room Zapier integration, you will need to create an API token.\nTo create an API token:\n
\n - Navigate to Setting | API tokens\n
- Create a “New Token\"\n
\n\n# Authentication\n\n"
x-logo:
url: /common-room-api-logo.svg
servers:
- url: https://api.commonroom.io/community/v1
description: Common Room Core API v1
tags:
- name: Segments
paths:
/segments:
get:
description: 'Gets all segments in a room
'
summary: Get segments in a room
tags:
- Segments
operationId: getSegments
responses:
'200':
description: OK
headers:
X-RateLimit-Limit:
$ref: '#/components/headers/X-RateLimit-Limit'
X-RateLimit-Remaining:
$ref: '#/components/headers/X-RateLimit-Remaining'
content:
application/json:
schema:
type: array
items:
type: object
properties:
id:
type: number
description: Segment id
name:
type: string
description: Display name of segment
'429':
$ref: '#/components/responses/RateLimited'
post:
summary: Create a segment
description: Create a new segment in the community.
tags:
- Segments
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateSegmentRequest'
responses:
'201':
description: Created
headers:
X-RateLimit-Limit:
$ref: '#/components/headers/X-RateLimit-Limit'
X-RateLimit-Remaining:
$ref: '#/components/headers/X-RateLimit-Remaining'
content:
application/json:
schema:
$ref: '#/components/schemas/CreateSegmentResponse'
'400':
description: Bad Request (e.g. invalid parameters or missing required fields)
content:
application/json:
schema:
$ref: '#/components/schemas/ApiV2ErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Status'
'409':
description: Conflict (a segment with this name already exists)
content:
application/json:
schema:
$ref: '#/components/schemas/ApiV2ErrorResponse'
'429':
$ref: '#/components/responses/RateLimited'
/segments/{id}/status:
get:
description: 'Gets all status for a segment
'
summary: Gets all status for a segment
tags:
- Segments
operationId: getSegmentStatuses
responses:
'200':
description: OK
headers:
X-RateLimit-Limit:
$ref: '#/components/headers/X-RateLimit-Limit'
X-RateLimit-Remaining:
$ref: '#/components/headers/X-RateLimit-Remaining'
content:
application/json:
schema:
type: array
items:
type: object
properties:
id:
type: number
description: Status id
name:
type: string
description: Display text of status
'429':
$ref: '#/components/responses/RateLimited'
/segments/{id}:
post:
description: 'Add existing contacts to an existing segment
'
summary: Add Contact(s) to Segment
deprecated: true
tags:
- Segments
operationId: addContactsToSegment
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
socialType:
type: string
example: email
description: Must be email, twitter, github, or linkedin
value:
type: string
example: email@domail.com, email2@domain.org
description: Comma separated list of values corresponding to socialType
statusId:
type: number
example: 1234
required:
- socialType
- value
responses:
'200':
description: OK
headers:
X-RateLimit-Limit:
$ref: '#/components/headers/X-RateLimit-Limit'
X-RateLimit-Remaining:
$ref: '#/components/headers/X-RateLimit-Remaining'
'400':
$ref: '#/components/responses/InvalidRequest'
'404':
description: Not Found
headers:
X-RateLimit-Limit:
$ref: '#/components/headers/X-RateLimit-Limit'
X-RateLimit-Remaining:
$ref: '#/components/headers/X-RateLimit-Remaining'
'429':
$ref: '#/components/responses/RateLimited'
get:
summary: Get a segment by ID
description: Retrieve a specific segment by its unique identifier.
tags:
- Segments
parameters:
- name: id
in: path
required: true
schema:
type: string
description: The prefixed segment ID (format `s_`)
- name: cols
in: query
required: false
schema:
type: string
description: 'Comma-separated list of additional columns to include in the response.
Valid values: `entityCount`, `url`.
'
responses:
'200':
description: OK
headers:
X-RateLimit-Limit:
$ref: '#/components/headers/X-RateLimit-Limit'
X-RateLimit-Remaining:
$ref: '#/components/headers/X-RateLimit-Remaining'
content:
application/json:
schema:
$ref: '#/components/schemas/SegmentResponse'
'400':
description: Bad Request (e.g. invalid segment ID or invalid parameters)
content:
application/json:
schema:
$ref: '#/components/schemas/ApiV2ErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Status'
'404':
description: Segment not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiV2ErrorResponse'
'429':
$ref: '#/components/responses/RateLimited'
components:
headers:
X-RateLimit-Remaining:
description: The total amount of requests remaining within the interval
schema:
type: integer
X-RateLimit-Limit:
description: The total amount of requests permitted within the interval
schema:
type: integer
schemas:
ApiV2Error:
type: object
required:
- code
- message
properties:
code:
type: string
description: A machine-readable error code identifying the failure.
enum:
- invalid_parameters
- invalid_organization_id
- org_not_found
- invalid_contact_id
- contact_not_found
- invalid_object_id
- object_not_found
- invalid_object_type_id
- object_type_not_found
- invalid_segment_id
- segment_not_found
- invalid_activity_id
- activity_not_found
- conflict
- internal_server_error
- invalid_custom_field_id
- custom_field_not_found
- invalid_prospector_contact_id
- prospector_contact_not_found
- invalid_prospector_company_id
- prospector_company_not_found
message:
type: string
description: A human-readable description of the error.
ApiV2ErrorResponse:
type: object
required:
- success
- error
properties:
success:
type: boolean
enum:
- false
error:
$ref: '#/components/schemas/ApiV2Error'
SegmentResponse:
type: object
required:
- success
- data
properties:
success:
type: boolean
enum:
- true
data:
$ref: '#/components/schemas/ApiSegment'
CreateSegmentRequest:
type: object
required:
- name
properties:
name:
type: string
description: The name for the new segment (max 500 characters)
description:
type: string
description: Optional description for the segment (markdown supported)
entityType:
type: string
enum:
- contact
- object
- organization
default: contact
description: The type of entity this segment will contain
objectTypeId:
type: string
description: Required when entityType is `object`. Prefixed object type ID (format `cot_`)
CreateSegmentResponse:
type: object
required:
- success
- data
properties:
success:
type: boolean
enum:
- true
data:
type: object
required:
- id
- name
properties:
id:
type: string
description: Prefixed segment ID (format `s_`)
name:
type: string
ApiSegment:
type: object
required:
- id
- name
- entityType
properties:
id:
type: string
description: Prefixed segment ID (format `s_`)
name:
type: string
description: The segment's display name
entityType:
type: string
enum:
- contact
- object
- organization
description: The type of entity this segment contains
entityCount:
type: integer
description: Number of entities in this segment
url:
type: string
format: uri
description: Common Room URL for this segment
Status:
type: object
properties:
status:
type: string
enum:
- ok
- failure
- not-found
example: success
reason:
type: string
errors:
type: array
items:
type: string
required:
- status
example:
status: not created
errors:
- name is missing
responses:
InvalidRequest:
description: Invalid Request
headers:
X-RateLimit-Limit:
$ref: '#/components/headers/X-RateLimit-Limit'
X-RateLimit-Remaining:
$ref: '#/components/headers/X-RateLimit-Remaining'
content:
application/json:
schema:
type: object
properties:
reason:
type: string
description: A reason of `invalid-request-body` indicates that the request body did not match the schema required by our API docs. Please double-check that your request body matches the schema above, and contact us for help if you continue to experience issues.
docs:
type: string
description: A link to this API documentation
RateLimited:
description: Rate Limited
headers:
X-RateLimit-Limit:
$ref: '#/components/headers/X-RateLimit-Limit'
X-RateLimit-Remaining:
$ref: '#/components/headers/X-RateLimit-Remaining'
X-RateLimit-Reset:
description: The datetime in epoch seconds when the interval resets
schema:
type: integer
Retry-After:
description: The UTC datetime when the interval resets
schema:
type: string
format: date-time
content:
application/json:
schema:
type: object
properties:
reason:
type: string
rateLimit:
type: object
description: A summary of the rate limit encountered, additional information is available in the headers.
properties:
intervalLimit:
type: number
description: The total amount of requests permitted within the interval
intervalRemaining:
type: number
description: The amount of requests remaining within the interval
intervalResetSeconds:
type: number
description: The amount of time in seconds representing a single interval
waitMs:
type: number
description: The amount of time to wait until the next interval
securitySchemes:
BearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: "Use a Core API JWT as a Bearer token in the Authentication header.\n\nTokens can be created by room Admins through https://app.commonroom.io/\n\nExample:\n\n```\ncurl -H \"Authorization: Bearer abcd123.xzy\" \\\n https://api.commonroom.io/community/v1/api-token-status\n````\n"