openapi: 3.2.0 info: title: Relm CRM Registry API version: 0.17.1 summary: API-first CRM built for LLMs and AI agents. description: REST surface for Relm. contact: name: Relm url: https://relmcrm.com/ license: name: Proprietary servers: - url: https://api.relmcrm.com/v1 description: Production security: - bearerAuth: [] - oauth2: - crm tags: - name: Registry description: Custom fields, enums, object types. paths: /enums: get: tags: - Registry operationId: listEnums summary: All enum groups and their values responses: '200': description: Enum groups content: application/json: schema: type: object default: $ref: '#/components/responses/Problem' post: tags: - Registry operationId: createEnumValue summary: Add a value to an enum group (idempotent) requestBody: required: true content: application/json: schema: type: object required: - group - value properties: group: type: string example: contact.type value: type: string label: type: string responses: '201': description: Updated value set content: application/json: schema: type: object default: $ref: '#/components/responses/Problem' /fields: post: tags: - Registry operationId: createField summary: Register a custom field on an object requestBody: required: true content: application/json: schema: type: object required: - object - key properties: object: type: string enum: - contact - company - deal - activity key: type: string label: type: string data_type: type: string enum: - text - number - boolean - date - select - multiselect - currency - reference - email - url default: text enum_group: type: string required: type: boolean responses: '201': description: Field set content: application/json: schema: type: object default: $ref: '#/components/responses/Problem' /types: post: tags: - Registry operationId: createType summary: Register a custom object type (schema grouping only) requestBody: required: true content: application/json: schema: type: object required: - key properties: key: type: string label: type: string responses: '201': description: Type set content: application/json: schema: type: object default: $ref: '#/components/responses/Problem' components: responses: Problem: description: RFC-9457 problem+json error. content: application/problem+json: schema: $ref: '#/components/schemas/Problem' schemas: Problem: type: object description: RFC-9457 error. Closed-set rejections carry valid_options + suggestion so an agent self-corrects. properties: type: type: string format: uri example: https://relmcrm.com/errors/unknown_value title: type: string status: type: integer detail: type: string code: type: string example: unknown_value field: type: string valid_options: type: array items: type: string suggestion: type: string request_id: type: string securitySchemes: bearerAuth: type: http scheme: bearer description: Workspace-scoped API key. relm_live_... (live) or relm_test_... (free, isolated test mode). Mint at https://app.relmcrm.com/. oauth2: type: oauth2 description: 'OAuth 2.1 with PKCE (S256) and dynamic client registration (RFC 7591). Live mode only; test mode is API-key only. Discovery: /.well-known/oauth-authorization-server.' flows: authorizationCode: authorizationUrl: https://api.relmcrm.com/oauth/authorize tokenUrl: https://api.relmcrm.com/oauth/token refreshUrl: https://api.relmcrm.com/oauth/token scopes: crm: Read and write the connected Relm workspace