Genesys External Contacts API

External Organizations, contacts, notes and relationships

Operations 134

POST /api/v2/externalcontacts/bulk/contacts/remove Bulk remove contacts #
POST /api/v2/externalcontacts/bulk/contacts/add Bulk add contacts #
POST /api/v2/externalcontacts/bulk/contacts Bulk fetch contacts #
POST /api/v2/externalcontacts/bulk/contacts/update Bulk update contacts #
POST /api/v2/externalcontacts/bulk/contacts/unresolved Bulk fetch unresolved ancestor contacts #
POST /api/v2/externalcontacts/bulk/contacts/divisionviews Bulk fetch contacts across divisions #
POST /api/v2/externalcontacts/bulk/contacts/enrich Bulk Enrich Contacts - Run up to 10 Enrich operations per request #
POST /api/v2/externalcontacts/bulk/notes/remove Bulk remove notes #
POST /api/v2/externalcontacts/bulk/notes Bulk fetch notes #
POST /api/v2/externalcontacts/bulk/notes/update Bulk update notes #
POST /api/v2/externalcontacts/bulk/notes/add Bulk add notes #
POST /api/v2/externalcontacts/bulk/organizations/add Bulk add organizations #
POST /api/v2/externalcontacts/bulk/organizations/remove Bulk remove organizations #
POST /api/v2/externalcontacts/bulk/organizations Bulk fetch organizations #
POST /api/v2/externalcontacts/bulk/organizations/update Bulk update organizations #
POST /api/v2/externalcontacts/bulk/organizations/divisionviews Bulk fetch organizations across divisions #
POST /api/v2/externalcontacts/bulk/organizations/enrich Bulk enrich external organizations - Run up to 10 Enrich operations per request #
POST /api/v2/externalcontacts/bulk/relationships/remove Bulk remove relationships #
POST /api/v2/externalcontacts/bulk/relationships Bulk fetch relationships #
POST /api/v2/externalcontacts/bulk/relationships/update Bulk update relationships #
POST /api/v2/externalcontacts/bulk/relationships/add Bulk add relationships #
GET /api/v2/externalcontacts/contacts/{contactId}/notes/{noteId} Fetch a note for an external contact #
PUT /api/v2/externalcontacts/contacts/{contactId}/notes/{noteId} Update a note for an external contact #
DELETE /api/v2/externalcontacts/contacts/{contactId}/notes/{noteId} Delete a note for an external contact #
PATCH /api/v2/externalcontacts/contacts/{contactId}/notes/{noteId} Update a Contact Note #
GET /api/v2/externalcontacts/contacts/{contactId}/notes List notes for an external contact #
POST /api/v2/externalcontacts/contacts/{contactId}/notes Create a note for an external contact #
GET /api/v2/externalcontacts/contacts/{contactId} Fetch an external contact #
PUT /api/v2/externalcontacts/contacts/{contactId} Update an external contact #
DELETE /api/v2/externalcontacts/contacts/{contactId} Delete an external contact #
PATCH /api/v2/externalcontacts/contacts/{contactId} Update specific fields of an external contact #
POST /api/v2/externalcontacts/contacts/{contactId}/promotion Promote an observed contact (ephemeral or identified) to a curated contact #
GET /api/v2/externalcontacts/contacts/{contactId}/identifiers List the identifiers for a contact #
PATCH /api/v2/externalcontacts/contacts/{contactId}/identifiers Claim or release identifiers for a contact #
GET /api/v2/externalcontacts/contacts/schemas/{schemaId} Get a schema #
PUT /api/v2/externalcontacts/contacts/schemas/{schemaId} Update a schema #
DELETE /api/v2/externalcontacts/contacts/schemas/{schemaId} Delete a schema #
GET /api/v2/externalcontacts/contacts/schemas/{schemaId}/versions/{versionId} Get a specific version of a schema #
GET /api/v2/externalcontacts/contacts/schemas/{schemaId}/versions Get all versions of an external contact's schema #
GET /api/v2/externalcontacts/contacts/schemas Get a list of schemas. #
POST /api/v2/externalcontacts/contacts/schemas Create a schema #
POST /api/v2/externalcontacts/merge/contacts Merge two contacts into a new contact record #
POST /api/v2/externalcontacts/contacts/merge Merge up to 25 contacts into a new contact record #
GET /api/v2/externalcontacts/contacts Search for external contacts #
POST /api/v2/externalcontacts/contacts Create an external contact #
GET /api/v2/externalcontacts/scan/contacts/divisionviews/all Scan for external contacts using paging #
GET /api/v2/externalcontacts/scan/contacts Scan for external contacts using paging #
PUT /api/v2/externalcontacts/conversations/{conversationId} Associate/disassociate an external contact with a conversation #
POST /api/v2/externalcontacts/contacts/enrich Modify or create an External Contact, with powerful behaviors for finding and combining data with pre-existing Contacts. #
POST /api/v2/externalcontacts/organizations/enrich Modify or create an External Org, with powerful behaviors for finding and combining data with pre-existing External Orgs. #
GET /api/v2/externalcontacts/organizations/{externalOrganizationId}/contacts Search for external contacts in an external organization #
GET /api/v2/externalcontacts/organizations/{externalOrganizationId}/identifiers List the identifiers for an external organization #
PATCH /api/v2/externalcontacts/organizations/{externalOrganizationId}/identifiers Claim or release identifiers for an external organization #
GET /api/v2/externalcontacts/organizations/{externalOrganizationId}/notes/{noteId} Fetch a note for an external organization #
PUT /api/v2/externalcontacts/organizations/{externalOrganizationId}/notes/{noteId} Update a note for an external organization #
DELETE /api/v2/externalcontacts/organizations/{externalOrganizationId}/notes/{noteId} Delete a note for an external organization #
PATCH /api/v2/externalcontacts/organizations/{externalOrganizationId}/notes/{noteId} Update an External Organization Note #
GET /api/v2/externalcontacts/organizations/{externalOrganizationId}/notes List notes for an external organization #
POST /api/v2/externalcontacts/organizations/{externalOrganizationId}/notes Create a note for an external organization #
GET /api/v2/externalcontacts/organizations/{externalOrganizationId}/relationships Fetch a relationship for an external organization #
GET /api/v2/externalcontacts/organizations/{externalOrganizationId} Fetch an external organization #
PUT /api/v2/externalcontacts/organizations/{externalOrganizationId} Update an external organization #
DELETE /api/v2/externalcontacts/organizations/{externalOrganizationId} Delete an external organization #
PATCH /api/v2/externalcontacts/organizations/{externalOrganizationId} Update specific fields of an external organization #
GET /api/v2/externalcontacts/organizations/schemas/{schemaId} Get a schema #
PUT /api/v2/externalcontacts/organizations/schemas/{schemaId} Update a schema #
GET /api/v2/externalcontacts/organizations/schemas/{schemaId}/versions/{versionId} Get a specific version of a schema #
GET /api/v2/externalcontacts/organizations/schemas/{schemaId}/versions Get all versions of an external organization's schema #
GET /api/v2/externalcontacts/organizations/schemas Get a list of schemas. #
POST /api/v2/externalcontacts/organizations/schemas Create a schema #
PUT /api/v2/externalcontacts/organizations/{externalOrganizationId}/trustor/{trustorId} Links a Trustor with an External Organization #
DELETE /api/v2/externalcontacts/organizations/{externalOrganizationId}/trustor Unlink the Trustor for this External Organization #
GET /api/v2/externalcontacts/organizations Search for external organizations #
POST /api/v2/externalcontacts/organizations Create an external organization #
GET /api/v2/externalcontacts/scan/organizations/divisionviews/all Scan for external organizations using paging #
GET /api/v2/externalcontacts/scan/organizations Scan for external organizations using paging #
GET /api/v2/externalcontacts/externalsources/{externalSourceId} Fetch an External Source #
PUT /api/v2/externalcontacts/externalsources/{externalSourceId} Update an External Source #
DELETE /api/v2/externalcontacts/externalsources/{externalSourceId} Delete an External Source. WARNING: Any records that reference this External Source will not be automatically cleaned up. Those records will still be editable, but their External I #
GET /api/v2/externalcontacts/externalsources Fetch a list of External Sources #
POST /api/v2/externalcontacts/externalsources Create an External Source #
POST /api/v2/externalcontacts/identifierlookup/contacts Fetch a contact using an identifier type and value. #
POST /api/v2/externalcontacts/identifierlookup/organizations Fetch an external organization using an identifier type and value. #
POST /api/v2/externalcontacts/identifierlookup Fetch a contact using an identifier type and value. #
GET /api/v2/externalcontacts/contacts/{contactId}/journey/segments Retrieve segment assignments by external contact ID. #
POST /api/v2/externalcontacts/contacts/{contactId}/journey/segments Assign/Unassign up to 10 segments to/from an external contact or, if a segment is already assigned, update the expiry date of the segment assignment. Any unprocessed segment assign #
GET /api/v2/externalcontacts/contacts/{contactId}/journey/sessions Retrieve all sessions for a given external contact. #
GET /api/v2/externalcontacts/scan/notes/divisionviews/all Scan for notes using paging #
GET /api/v2/externalcontacts/scan/notes Scan for notes using paging #
GET /api/v2/externalcontacts/relationships/{relationshipId} Fetch a relationship #
PUT /api/v2/externalcontacts/relationships/{relationshipId} Update a relationship #
DELETE /api/v2/externalcontacts/relationships/{relationshipId} Delete a relationship #
PATCH /api/v2/externalcontacts/relationships/{relationshipId} Update specific fields of a relationship #
POST /api/v2/externalcontacts/relationships Create a relationship #
GET /api/v2/externalcontacts/scan/relationships/divisionviews/all Scan for relationships #
GET /api/v2/externalcontacts/scan/relationships Scan for relationships #
GET /api/v2/externalcontacts/reversewhitepageslookup Look up contacts based on an attribute. Maximum of 25 values returned. #
GET /api/v2/externalcontacts/contacts/{contactId}/unresolved Fetch an unresolved external contact #
GET /api/v2/externalcontacts/contacts/schemas/coretypes/{coreTypeName} Get a specific named core type. #
GET /api/v2/externalcontacts/contacts/schemas/coretypes Get the core types from which all schemas are built. #
GET /api/v2/externalcontacts/contacts/schemas/limits Get quantitative limits on schemas #
GET /api/v2/externalcontacts/organizations/schemas/coretypes/{coreTypeName} Get a specific named core type. #
GET /api/v2/externalcontacts/organizations/schemas/coretypes Get the core types from which all schemas are built. #
GET /api/v2/externalcontacts/organizations/schemas/limits Get quantitative limits on schemas #
GET /api/v2/externalcontacts/contacts/exports/{exportId} Get export for exportId #
GET /api/v2/externalcontacts/contacts/exports List contact exports for organization #
POST /api/v2/externalcontacts/contacts/exports Create bulk export #
GET /api/v2/externalcontacts/notes/exports/{exportId} Get notes export for exportId #
GET /api/v2/externalcontacts/notes/exports List note exports for organization #
POST /api/v2/externalcontacts/notes/exports Create notes export #
GET /api/v2/externalcontacts/organizations/exports/{exportId} Get organizations export for exportId #
GET /api/v2/externalcontacts/organizations/exports List organization exports for organization #
POST /api/v2/externalcontacts/organizations/exports Create organizations export #
GET /api/v2/externalcontacts/relationships/exports/{exportId} Get relationships export for exportId #
GET /api/v2/externalcontacts/relationships/exports List relationship exports for organization #
POST /api/v2/externalcontacts/relationships/exports Create relationships export #
GET /api/v2/externalcontacts/import/jobs/{jobId} Get job based on id #
PUT /api/v2/externalcontacts/import/jobs/{jobId} Update Job's workflow status #
GET /api/v2/externalcontacts/import/jobs List jobs for organization #
POST /api/v2/externalcontacts/import/jobs Create a new job #
GET /api/v2/externalcontacts/import/settings/{settingsId} Get setting based on id #
PUT /api/v2/externalcontacts/import/settings/{settingsId} Update settings #
DELETE /api/v2/externalcontacts/import/settings/{settingsId} Delete Settings #
GET /api/v2/externalcontacts/import/settings List settings for organization #
POST /api/v2/externalcontacts/import/settings Create a new settings #
POST /api/v2/externalcontacts/import/csv/jobs Create CSV import job #
GET /api/v2/externalcontacts/import/csv/settings/{settingsId} Get settings for CSV import #
PUT /api/v2/externalcontacts/import/csv/settings/{settingsId} Update settings for CSV import #
DELETE /api/v2/externalcontacts/import/csv/settings/{settingsId} Delete settings for CSV import #
GET /api/v2/externalcontacts/import/csv/settings Retrieve all settings for organization filtered by externalSettingsId if provided #
POST /api/v2/externalcontacts/import/csv/settings Create settings for CSV import #
GET /api/v2/externalcontacts/import/csv/uploads/{uploadId}/details Get details for CSV upload #
GET /api/v2/externalcontacts/import/csv/uploads/{uploadId}/preview Get preview for CSV upload #
POST /api/v2/externalcontacts/import/csv/uploads Get url for CSV upload #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/genesys-external-contacts-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

genesys-external-contacts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: With the PureCloud Platform API, you can control all aspects of your PureCloud environment. With the APIs you can access the system configuration, manage conversations and more.
  version: v2
  title: PureCloud Platform Agent Assistants External Contacts API
  termsOfService: https://help.genesys.cloud/articles/terms-and-conditions/
  contact:
    name: PureCloud Developer Evangelists
    url: https://developer.genesys.cloud/
    email: DeveloperEvangelists@genesys.com
  license:
    name: UNLICENSED
    url: https://help.genesys.cloud/articles/terms-and-conditions/
servers:
- url: https://api.mypurecloud.com
tags:
- name: External Contacts
  description: External Organizations, contacts, notes and relationships
  externalDocs:
    description: External Contacts
    url: https://developer.genesys.cloud/commdigital/externalcontacts/externalcontacts-apis
paths:
  /api/v2/externalcontacts/bulk/contacts/remove:
    post:
      tags:
      - External Contacts
      summary: Bulk remove contacts
      description: ''
      operationId: postExternalcontactsBulkContactsRemove
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkDeleteResponse'
        '422':
          description: Validation Failed
          x-inin-error-codes:
            validation.failed: The provided contact list was not valid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '400':
          description: The request could not be understood by the server due to malformed syntax.
          x-inin-error-codes:
            bad.request: Invalid query parameter or entity list too big
            response.entity.too.large: The response is over the size limit. Reduce pageSize or expand list to reduce response size if applicable
            invalid.date: 'Dates must be specified as ISO-8601 strings. For example: yyyy-MM-ddTHH:mm:ss.SSSZ'
            invalid.query.param.value: 'Value [%s] is not valid for parameter [%s]. Allowable values are: %s'
            client.failed.request: The client did not produce a request with valid end of stream signaling. This can be caused by poor network connection and/or client behavior.
            invalid.property: Value [%s] is not a valid property for object [%s]
            constraint.validation: '%s'
            invalid.value: 'Value [%s] is not valid for field type [%s]. Allowable values are: %s'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '401':
          description: No authentication bearer token specified in authorization header.
          x-inin-error-codes:
            authentication.required: No authentication bearer token specified in authorization header.
            ip.not.authorized: 'Requests originating from this IP address are not authorized: [%s]'
            bad.credentials: Invalid login credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '403':
          description: You are not authorized to perform the requested action.
          x-inin-error-codes:
            missing.division.permission: Unable to perform the requested action. You are missing the following permission '%s' in the provided division(s).
            app.not.authorized.for.scope: App not authorized to use scope %s
            missing.permissions: 'Unable to perform the requested action. You are missing the following permission(s): %s'
            not.authorized: You are not authorized to perform the requested action.
            missing.any.permissions: 'Unable to perform the requested action. You must have at least one of the following permissions assigned: %s'
            authz.policy.denied: 'Unable to perform the requested action. Your organization''s security policies have denied access. Policy ID(s): [%s]'
            missing.any.division.permissions: 'Unable to perform the requested action. You must have at least one of the following permissions assigned: %s in at least one of the following division(s): %s'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '404':
          description: The requested resource was not found.
          x-inin-error-codes:
            not.found: The requested resource was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '408':
          description: The client did not produce a request within the server timeout limit. This can be caused by a slow network connection and/or large payloads.
          x-inin-error-codes:
            client.timeout: The client did not produce a request within the server timeout limit. This can be caused by a slow network connection and/or large payloads.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '409':
          description: The request conflicts with the current state of the target resource.
          x-inin-error-codes:
            request.conflict: The request conflicts with the current state of the target resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '413':
          description: 'The request is over the size limit. Maximum bytes: %s'
          x-inin-error-codes:
            request.entity.too.large: 'The request is over the size limit. Maximum bytes: %s'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '415':
          description: Unsupported Media Type - Unsupported or incorrect media type, such as an incorrect Content-Type value in the header.
          x-inin-error-codes:
            unsupported.media.type: Unsupported Media Type - Unsupported or incorrect media type, such as an incorrect Content-Type value in the header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '429':
          description: Rate limit exceeded the maximum. Retry the request in [%s] seconds
          x-inin-error-codes:
            too.many.requests.retry.after: Rate limit exceeded the maximum. Retry the request in [%s] seconds
            too.many.requests: Rate limit exceeded the maximum [%s] requests within [%s] seconds
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '500':
          description: The server encountered an unexpected condition which prevented it from fulfilling the request.
          x-inin-error-codes:
            internal.server.error: The server encountered an unexpected condition which prevented it from fulfilling the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '503':
          description: Service Unavailable - The server is currently unavailable (because it is overloaded or down for maintenance).
          x-inin-error-codes:
            service.unavailable: Service Unavailable - The server is currently unavailable (because it is overloaded or down for maintenance).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '504':
          description: The request timed out.
          x-inin-error-codes:
            authentication.request.timeout: Authentication request timeout.
            request.timeout: The request timed out.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
      security:
      - PureCloud OAuth:
        - external-contacts
      x-inin-requires-permissions:
        type: ANY
        permissions:
        - externalContacts:contact:delete
      x-purecloud-method-name: postExternalcontactsBulkContactsRemove
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkIdsRequest'
        description: Contact ids
        required: true
  /api/v2/externalcontacts/bulk/contacts/add:
    post:
      tags:
      - External Contacts
      summary: Bulk add contacts
      description: ''
      operationId: postExternalcontactsBulkContactsAdd
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkContactsResponse'
        '422':
          description: Validation Failed
          x-inin-error-codes:
            custom.fields.validation.failed: The custom fields values failed validation
            validation.failed: The provided contact list was not valid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '400':
          description: The request could not be understood by the server due to malformed syntax.
          x-inin-error-codes:
            bad.request: Invalid query parameter or entity list too big
            response.entity.too.large: The response is over the size limit. Reduce pageSize or expand list to reduce response size if applicable
            invalid.date: 'Dates must be specified as ISO-8601 strings. For example: yyyy-MM-ddTHH:mm:ss.SSSZ'
            invalid.query.param.value: 'Value [%s] is not valid for parameter [%s]. Allowable values are: %s'
            client.failed.request: The client did not produce a request with valid end of stream signaling. This can be caused by poor network connection and/or client behavior.
            invalid.property: Value [%s] is not a valid property for object [%s]
            constraint.validation: '%s'
            invalid.value: 'Value [%s] is not valid for field type [%s]. Allowable values are: %s'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '401':
          description: No authentication bearer token specified in authorization header.
          x-inin-error-codes:
            authentication.required: No authentication bearer token specified in authorization header.
            ip.not.authorized: 'Requests originating from this IP address are not authorized: [%s]'
            bad.credentials: Invalid login credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '403':
          description: You are not authorized to perform the requested action.
          x-inin-error-codes:
            missing.division.permission: Unable to perform the requested action. You are missing the following permission '%s' in the provided division(s).
            app.not.authorized.for.scope: App not authorized to use scope %s
            missing.permissions: 'Unable to perform the requested action. You are missing the following permission(s): %s'
            not.authorized: You are not authorized to perform the requested action.
            missing.any.permissions: 'Unable to perform the requested action. You must have at least one of the following permissions assigned: %s'
            authz.policy.denied: 'Unable to perform the requested action. Your organization''s security policies have denied access. Policy ID(s): [%s]'
            missing.any.division.permissions: 'Unable to perform the requested action. You must have at least one of the following permissions assigned: %s in at least one of the following division(s): %s'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '404':
          description: The requested resource was not found.
          x-inin-error-codes:
            not.found: The requested resource was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '408':
          description: The client did not produce a request within the server timeout limit. This can be caused by a slow network connection and/or large payloads.
          x-inin-error-codes:
            client.timeout: The client did not produce a request within the server timeout limit. This can be caused by a slow network connection and/or large payloads.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '409':
          description: The request conflicts with the current state of the target resource.
          x-inin-error-codes:
            request.conflict: The request conflicts with the current state of the target resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '413':
          description: 'The request is over the size limit. Maximum bytes: %s'
          x-inin-error-codes:
            request.entity.too.large: 'The request is over the size limit. Maximum bytes: %s'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '415':
          description: Unsupported Media Type - Unsupported or incorrect media type, such as an incorrect Content-Type value in the header.
          x-inin-error-codes:
            unsupported.media.type: Unsupported Media Type - Unsupported or incorrect media type, such as an incorrect Content-Type value in the header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '429':
          description: Rate limit exceeded the maximum. Retry the request in [%s] seconds
          x-inin-error-codes:
            too.many.requests.retry.after: Rate limit exceeded the maximum. Retry the request in [%s] seconds
            too.many.requests: Rate limit exceeded the maximum [%s] requests within [%s] seconds
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '500':
          description: The server encountered an unexpected condition which prevented it from fulfilling the request.
          x-inin-error-codes:
            internal.server.error: The server encountered an unexpected condition which prevented it from fulfilling the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '503':
          description: Service Unavailable - The server is currently unavailable (because it is overloaded or down for maintenance).
          x-inin-error-codes:
            service.unavailable: Service Unavailable - The server is currently unavailable (because it is overloaded or down for maintenance).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '504':
          description: The request timed out.
          x-inin-error-codes:
            authentication.request.timeout: Authentication request timeout.
            request.timeout: The request timed out.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
      security:
      - PureCloud OAuth:
        - external-contacts
      x-inin-requires-permissions:
        type: ANY
        permissions:
        - externalContacts:contact:add
      x-purecloud-method-name: postExternalcontactsBulkContactsAdd
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkContactsRequest'
        description: Contacts
        required: true
  /api/v2/externalcontacts/bulk/contacts:
    post:
      tags:
      - External Contacts
      summary: Bulk fetch contacts
      description: ''
      operationId: postExternalcontactsBulkContacts
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkFetchContactsResponse'
        '422':
          description: Validation Failed
          x-inin-error-codes:
            validation.failed: The provided contact list was not valid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '400':
          description: The request could not be understood by the server due to malformed syntax.
          x-inin-error-codes:
            bad.request: Invalid query parameter or entity list too big
            response.entity.too.large: The response is over the size limit. Reduce pageSize or expand list to reduce response size if applicable
            invalid.date: 'Dates must be specified as ISO-8601 strings. For example: yyyy-MM-ddTHH:mm:ss.SSSZ'
            invalid.query.param.value: 'Value [%s] is not valid for parameter [%s]. Allowable values are: %s'
            client.failed.request: The client did not produce a request with valid end of stream signaling. This can be caused by poor network connection and/or client behavior.
            invalid.property: Value [%s] is not a valid property for object [%s]
            constraint.validation: '%s'
            invalid.value: 'Value [%s] is not valid for field type [%s]. Allowable values are: %s'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '401':
          description: No authentication bearer token specified in authorization header.
          x-inin-error-codes:
            authentication.required: No authentication bearer token specified in authorization header.
            ip.not.authorized: 'Requests originating from this IP address are not authorized: [%s]'
            bad.credentials: Invalid login credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '403':
          description: You are not authorized to perform the requested action.
          x-inin-error-codes:
            missing.division.permission: Unable to perform the requested action. You are missing the following permission '%s' in the provided division(s).
            app.not.authorized.for.scope: App not authorized to use scope %s
            missing.permissions: 'Unable to perform the requested action. You are missing the following permission(s): %s'
            not.authorized: You are not authorized to perform the requested action.
            missing.any.permissions: 'Unable to perform the requested action. You must have at least one of the following permissions assigned: %s'
            authz.policy.denied: 'Unable to perform the requested action. Your organization''s security policies have denied access. Policy ID(s): [%s]'
            missing.any.division.permissions: 'Unable to perform the requested action. You must have at least one of the following permissions assigned: %s in at least one of the following division(s): %s'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '404':
          description: The requested resource was not found.
          x-inin-error-codes:
            not.found: The requested resource was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '408':
          description: The client did not produce a request within the server timeout limit. This can be caused by a slow network connection and/or large payloads.
          x-inin-error-codes:
            client.timeout: The client did not produce a request within the server timeout limit. This can be caused by a slow network connection and/or large payloads.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '409':
          description: The request conflicts with the current state of the target resource.
          x-inin-error-codes:
            request.conflict: The request conflicts with the current state of the target resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '413':
          description: 'The request is over the size limit. Maximum bytes: %s'
          x-inin-error-codes:
            request.entity.too.large: 'The request is over the size limit. Maximum bytes: %s'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '415':
          description: Unsupported Media Type - Unsupported or incorrect media type, such as an incorrect Content-Type value in the header.
          x-inin-error-codes:
            unsupported.media.type: Unsupported Media Type - Unsupported or incorrect media type, such as an incorrect Content-Type value in the header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '429':
          description: Rate limit exceeded the maximum. Retry the request in [%s] seconds
          x-inin-error-codes:
            too.many.requests.retry.after: Rate limit exceeded the maximum. Retry the request in [%s] seconds
            too.many.requests: Rate limit exceeded the maximum [%s] requests within [%s] seconds
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '500':
          description: The server encountered an unexpected condition which prevented it from fulfilling the request.
          x-inin-error-codes:
            internal.server.error: The server encountered an unexpected condition which prevented it from fulfilling the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '503':
          description: Service Unavailable - The server is currently unavailable (because it is overloaded or down for maintenance).
          x-inin-error-codes:
            service.unavailable: Service Unavailable - The server is currently unavailable (because it is overloaded or down for maintenance).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '504':
          description: The request timed out.
          x-inin-error-codes:
            authentication.request.timeout: Authentication request timeout.
            request.timeout: The request timed out.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
      security:
      - PureCloud OAuth:
        - external-contacts
        - external-contacts:readonly
      x-inin-requires-permissions:
        type: ANY
        permissions:
        - externalContacts:contact:view
      x-purecloud-method-name: postExternalcontactsBulkContacts
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkIdsRequest'
        description: Contact ids
        required: true
  /api/v2/externalcontacts/bulk/contacts/update:
    post:
      tags:
      - External Contacts
      summary: Bulk update contacts
      description: ''
      operationId: postExternalcontactsBulkContactsUpdate
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkContactsResponse'
        '422':
          description: Validation Failed
          x-inin-error-codes:
            custom.fields.validation.failed: The custom fields values failed validation
            validation.failed: The provided contact list was not valid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '400':
          description: The request could not be understood by the server due to malformed syntax.
          x-inin-error-codes:
            bad.request: Invalid query parameter or entity list too big
            response.entity.too.large: The response is over the size limit. Reduce pageSize or expand list to reduce response size if applicable
            invalid.date: 'Dates must be specified as ISO-8601 strings. For example: yyyy-MM-ddTHH:mm:ss.SSSZ'
            invalid.query.param.value: 'Value [%s] is not valid for parameter [%s]. Allowable values are: %s'
            client.failed.request: The client did not produce a request with valid end of stream signaling. This can be caused by poor network connection and/or client behavior.
            invalid.property: Value [%s] is not a valid property for object [%s]
            constraint.validation: '%s'
            invalid.value: 'Value [%s] is not valid for field type [%s]. Allowable values are: %s'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '401':
          description: No authentication bearer token specified in authorization header.
          x-inin-error-codes:
            authentication.required: No authentication bearer token specified in authorization header.
            ip.not.authorized: 'Requests originating from this IP address are not authorized: [%s]'
            bad.credentials: Invalid login credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '403':
          description: You are not authorized to perform the requested action.
          x-inin-error-codes:
            missing.division.permission: Unable to perform the requested action. You are missing the following permission '%s' in the provided division(s).
            app.not.authorized.for.scope: App not authorized to use scope %s
            missing.permissions: 'Unable to perform the requested action. You are missing the following permission(s): %s'
            not.authorized: You are not authorized to perform the requested action.
            missing.any.permissions: 'Unable to perform the requested action. You must have at least one of the following permissions assigned: %s'
            authz.policy.denied: 'Unable to perform the requested action. Your organization''s security policies have denied access. Policy ID(s): [%s]'
            missing.any.division.permissions: 'Unable to perform the requested action. You must have at least one of the following permissions assigned: %s in at least one of the following division(s): %s'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '404':
          description: The requested resource was not found.
          x-inin-error-codes:
            not.found: The requested resource was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '408':
          description: The client did not produce a request within the server timeout limit. This can be caused by a slow network connection and/or large payloads.
          x-inin-error-codes:
            client.timeout: The client did not produce a request within the server timeout limit. This can be caused by a slow network connection and/or large payloads.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '409':
          description: The request conflicts with the current state of the target resource.
          x-inin-error-codes:
            request.conflict: The request conflicts with the current state of the target resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '413':
          description: 'The request is over the size limit. Maximum bytes: %s'
          x-inin-error-codes:
            request.entity.too.large: 'The request is over the size limit. Maximum bytes: %s'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '415':
          description: Unsupported Media Type - Unsupported or incorrect media type, such as an incorrect Content-Type value in the header.
          x-inin-error-codes:
            unsupported.media.type: Unsupported Media Type - Unsupported or incorrect media type, such as an incorrect Content-Type value in the header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '429':
          description: Rate limit exceeded the maximum. Retry the request in [%s] seconds
          x-inin-error-codes:
            too.many.requests.retry.after: Rate limit exceeded the maximum. Retry the request in [%s] seconds
            too.many.requests: Rate limit exceeded the maximum [%s] requests within [%s] seconds
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '500':
          description: The server encountered an unexpected condition which prevented it from fulfilling the request.
          x-inin-error-codes:
            internal.server.error: The server encountered an unexpected condition which prevented it from fulfilling the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '503':
          description: Service Unavailable - The server is currently unavailable (because it is overloaded or down for maintenance).
          x-inin-error-codes:
            service.unavailable: Service Unavailable - The server is currently unavailable (because it is overloaded or down for maintenance).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '504':
          description: The request timed out.
          x-inin-error-codes:
            authentication.request.timeout: Authentication request timeout.
            request.timeout: The request timed out.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
      security:
      - PureCloud OAuth:
        - external-contacts
      x-inin-requires-permissions:
        type: ANY
        permissions:
        - externalContacts:contact:edit
      x-purecloud-method-name: postExternalcontactsBulkContactsUpdate
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkContactsRequest'
        description: Contacts
        required: true
  /api/v2/externalcontacts/bulk/contacts/unresolved:
    post:
      tags:
      - External Contacts
      summary: Bulk fetch unresolved ancestor contacts
      description: ''
      operationId: postExternalcontactsBulkContactsUnresolved
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkFetchContactsResponse'
        '422':
          description: Validation Failed
          x-inin-error-codes:
            validation.failed: The provided contact list was not valid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '400':
          description: The request could not be understood by the server due to malformed syntax.
          x-inin-error-codes:
            bad.request: Invalid query parameter or entity list too big
            response.entity.too.large: The response is over the size limit. Reduce pageSize or expand list to reduce response size if applicable
            invalid.date: 'Dates must be specified as ISO-8601

# --- truncated at 32 KB (1204 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/genesys/refs/heads/main/openapi/genesys-external-contacts-api-openapi.yml