Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: placement Contract API
description: "This API collection provides the capability to manage aspects of the Placement structure. \nThis includes that overall management of Placements, Programmes, Contracts as well as any Sections within a Contract. This also includes the ability to set up carrier/underwriter participants for insurance placement purposes."
version: '1'
servers:
- url: https://sand-api.londonmarketgroup.co.uk/ppl/nextgen/placements
description: Joint Integration testing (JIT2) environment
tags:
- name: contract
description: Enables the creation and management of Contract structured data.
paths:
/contracts:
get:
tags:
- contract
description: Returns a list of Contract records, based upon various query parameters. Pagination functionality is supported on this operation.
operationId: Contract_GetAll_v1
parameters:
- name: X-Auth-Impersonated-User
in: header
description: The email address of the Requesting User or the Impersonated User.
schema:
type: string
pattern: ^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$
- name: X-Auth-Team
in: header
description: A list of system-generated unique identifiers for each Broker Team, with a format and structure defined by the technology used.
required: true
schema:
pattern: ^(?:[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12})(?:,[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12})*$
type: array
items:
type: string
- name: clientName
in: query
description: "The name by which the Broker User knows the client for the purposes of seeking insurance. \nSearch using contains method, e.g. clientName=contains(astring)."
schema:
type: string
pattern: ^contains\(.{1,40}\)$
- name: brokerEmail
in: query
description: 'The User email of the Broker User responsible for the Contract.
Search using multiple exact match method, e.g. brokerEmail=email1,email2,email3.'
schema:
type: string
pattern: ^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+(,[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)*$
- name: brokerFirstName
in: query
description: 'The First Name of the Broker User responsible for the Contract.
Search using contains method, e.g. brokerFirstName=contains(astring).'
schema:
type: string
pattern: ^contains\(.{1,30}\)$
- name: brokerLastName
in: query
description: 'The Last Name of the Broker User responsible for the Contract.
Search using contains method, e.g. brokerLastName=contains(astring).'
schema:
type: string
pattern: ^contains\(.{1,30}\)$
- name: description
in: query
description: 'A description of the Contract supplied by the Broker.
Search using contains method, e.g. description=contains(astring).'
schema:
type: string
pattern: ^contains\(.{1,256}\)$
- name: uniqueMarketReference
in: query
description: 'The reference allocated by the broker to identify the Contract for use within the placement process, as a concatenation of the Broker Code and Broker Contract Reference.
Search using multiple exact match method, e.g. uniqueMarketReference=umr1,umr2,umr3.'
schema:
type: string
pattern: ^(B\d{4}[A-Z0-9]{1,12})(,B\d{4}[A-Z0-9]{1,12})*$
- name: status
in: query
description: 'The code that represents the Contract status.
Search using multiple exact match method, e.g. status=code1,code2,code3.'
schema:
type: string
pattern: ^(.*)(,.*)*$
- name: inceptionDate
in: query
description: 'The date on which the (re)insurance contract/section comes into force.
Search using range method, e.g. inceptionDate=range(date1,date2).'
schema:
type: string
pattern: ^range\(\d{4}-\d{2}-\d{2},\d{4}-\d{2}-\d{2}\)$
- name: createdDate
in: query
description: 'The date timestamp when the entity was created.
Search using range method, e.g. createdDate=range(date1,date2).'
schema:
type: string
pattern: ^range\(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z,\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z\)$
- name: modifiedDate
in: query
description: 'The date timestamp when the entity was modified.
Search using range method, e.g. modifiedDate=range(date1,date2).'
schema:
type: string
pattern: ^range\(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z,\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z\)$
- name: placementId
in: query
description: 'A system-generated unique identifier for a Placement, with a format and structure defined by the technology used.
Search using multiple exact match method, e.g. placementId=id1,id2,id3.'
schema:
type: string
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})(,[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})*$
- name: companyName
in: query
description: 'Name of the Company the User belongs to.
Search using contains method, e.g. companyName=contains(astring).'
schema:
type: string
pattern: ^contains\(.{1,256}\)$
- name: brokerTeamId
in: query
description: "A system-generated unique identifier for a Broker Team, with a format and structure defined by the technology used. \nSearch using multiple exact match method, e.g. brokerTeamId=id1,id2,id3."
schema:
type: string
pattern: ^(?:[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12})(?:,[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12})*$
- name: brokerTeamName
in: query
description: "The name of the Broker Team, as defined by the broker organisation. \nSearch using contains method, e.g. brokerTeamName=contains(astring)."
schema:
type: string
pattern: ^contains\(.{1,256}\)$
- name: contractType
in: query
description: 'The code that represents the contract type.
Search using multiple exact match method, e.g. contractType=code1,code2,code3.'
schema:
type: string
pattern: ^(.*)(,.*)*$
- name: coverType
in: query
description: 'The code that represents the cover type.
Search using multiple exact match method, e.g. coverType=code1,code2,code3.'
schema:
type: string
pattern: ^(.*)(,.*)*$
- name: firstSignAndCloseDate
in: query
description: 'The date and timestamp of when a contract was first signed and closed.
Search using range method, e.g. firstSignAndCloseDate=range(date1,date2).'
schema:
type: string
pattern: ^range\(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z,\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z\)$
- name: productCode
in: query
description: 'The code that represents the insurance product under this Contract or Section.
Search using multiple exact match method, e.g. productCode=code1,code2,code3.'
schema:
type: string
pattern: ^(.*)(,.*)*$
- name: sort
in: query
description: 'Sorting field and order (unique field only).
Use + before the field name for ascending order, use - for descending order.'
schema:
type: string
pattern: ^[+-]?\w+$
- name: pageNumber
in: query
description: Number of the page to be retrieved.
schema:
type: integer
format: int32
minimum: 1
example: 1
- name: pageSize
in: query
description: Size of the page to be retrieved.
schema:
type: integer
format: int32
minimum: 1
maximum: 200
example: 200
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/response_contracts_getall'
'400':
description: Mandatory header parameter is missing from the request.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'401':
description: Authentication error.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'404':
description: Invalid team or user.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'414':
description: The maximum field length of the URI provided for the request has been exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'429':
description: Too many requests.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
post:
tags:
- contract
description: Creates a Contract record under the Placement structure. This will also create the "default" Section of information, which is necessary for adding Underwriters and Facility markets for underwriting purposes.
operationId: Contract_Post_v1
parameters:
- name: X-Auth-Impersonated-User
in: header
description: The email address of the Requesting User or the Impersonated User.
schema:
type: string
pattern: ^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$
- name: X-Auth-Team
in: header
description: A system-generated unique identifier for a Broker Team, with a format and structure defined by the technology used.
required: true
schema:
type: string
pattern: ^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$
requestBody:
description: Contract structure for creation.
content:
application/json:
schema:
$ref: '#/components/schemas/contract_post'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/contract_getbyid'
'400':
description: Mandatory header parameter is missing from the request.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'401':
description: Authentication error.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'404':
description: Invalid team or user.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'414':
description: The maximum field length of the URI provided for the request has been exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'429':
description: Too many requests.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
x-codegen-request-body-name: contract
/contracts/{contractId}:
get:
tags:
- contract
description: Returns a single Contract record. This record will contain core Contract information, that includes data attributes that summarise information about the risk to be insured, as well as a summarised list of any Contract Sections that exist within the Contract.
operationId: Contract_GetById_v1
parameters:
- name: X-Auth-Impersonated-User
in: header
description: The email address of the Requesting User or the Impersonated User.
schema:
type: string
pattern: ^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$
- name: X-Auth-Team
in: header
description: A system-generated unique identifier for a Broker Team, with a format and structure defined by the technology used.
required: true
schema:
type: string
pattern: ^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$
- name: contractId
in: path
description: A system-generated unique identifier for a Contract, with a format and structure defined by the technology used.
required: true
schema:
type: string
pattern: ^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/contract_getbyid'
'400':
description: Mandatory header parameter is missing from the request.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'401':
description: Authentication error.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'404':
description: Invalid team or user.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'414':
description: The maximum field length of the URI provided for the request has been exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'429':
description: Too many requests.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
put:
tags:
- contract
description: Updates the Contract record. This will also update the "default" Section of information.
operationId: Contract_Put_v1
parameters:
- name: X-Auth-Impersonated-User
in: header
description: The email address of the Requesting User or the Impersonated User.
schema:
type: string
pattern: ^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$
- name: X-Auth-Team
in: header
description: A system-generated unique identifier for a Broker Team, with a format and structure defined by the technology used.
required: true
schema:
type: string
pattern: ^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$
- name: X-Last-Modified
in: header
description: The date timestamp to be used to validate an update operation.
required: true
schema:
type: string
format: date-time
example: '2014-12-31T23:59:59.938Z'
- name: contractId
in: path
description: A system-generated unique identifier for a Contract, with a format and structure defined by the technology used.
required: true
schema:
type: string
pattern: ^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$
requestBody:
description: Contract structure for updates.
content:
application/json:
schema:
$ref: '#/components/schemas/contract_put'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/contract_getbyid'
'400':
description: Mandatory header parameter is missing from the request.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'401':
description: Authentication error.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'404':
description: Invalid team or user.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'414':
description: The maximum field length of the URI provided for the request has been exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'429':
description: Too many requests.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
x-codegen-request-body-name: contract
delete:
tags:
- contract
description: Deletes a Contract record, where the record is in a state that enables its deletion.
operationId: Contract_Delete_v1
parameters:
- name: X-Auth-Impersonated-User
in: header
description: The email address of the Requesting User or the Impersonated User.
schema:
type: string
pattern: ^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$
- name: X-Auth-Team
in: header
description: A system-generated unique identifier for a Broker Team, with a format and structure defined by the technology used.
required: true
schema:
type: string
pattern: ^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$
- name: contractId
in: path
description: A system-generated unique identifier for a Contract, with a format and structure defined by the technology used.
required: true
schema:
type: string
pattern: ^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$
responses:
'200':
description: ''
content: {}
'400':
description: Mandatory header parameter is missing from the request.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'401':
description: Authentication error.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'404':
description: Invalid team or user.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'414':
description: The maximum field length of the URI provided for the request has been exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'429':
description: Too many requests.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
/contracts/{contractId}/assignRoles:
post:
tags:
- contract
description: Initiates the asynchronous operation to assign the contractual roles to Participations and their Stamps on the Contract. Where a specific Slip Leader has been identified, the process will take this into consideration during the assignment process.
operationId: Contract_AssignRoles_v1
parameters:
- name: X-Auth-Impersonated-User
in: header
description: The email address of the Requesting User or the Impersonated User.
schema:
type: string
pattern: ^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$
- name: X-Auth-Team
in: header
description: A system-generated unique identifier for a Broker Team, with a format and structure defined by the technology used. For most operations, one and only one UUID is expected. Where collection-based operations are involved, comma-separated UUID values may be supplied.
required: true
schema:
type: string
pattern: ^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$
- name: contractId
in: path
description: A system-generated unique identifier for a Contract, with a format and structure defined by the technology used.
required: true
schema:
type: string
pattern: ^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$
requestBody:
description: Contract input structure for assign roles.
content:
application/json:
schema:
$ref: '#/components/schemas/contract_assignroles'
required: false
responses:
'200':
description: Contract output structure for assign roles.
content:
application/json:
schema:
$ref: '#/components/schemas/contract_assignroles_output'
'400':
description: Mandatory header parameter is missing from the request.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'401':
description: Authentication error.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'404':
description: Invalid team or user.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'414':
description: The maximum field length of the URI provided for the request has been exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'429':
description: Too many requests.
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/error_document'
x-codegen-request-body-name: contract
components:
schemas:
section_excess:
required:
- amount
- basis_type
- currency_code
- type
type: object
properties:
type:
type: string
description: The code that represents the type of excess.
default: ''
currency_code:
type: string
description: The 3-character code that represents the currency in ISO 4217 standard.
default: ''
pattern: ^[A-Z]{3}$
amount:
type: number
description: The excess amount applicable prior to any liability the insurer has agreed to cover under the terms of the insurance Contract or Section.
example: 0.1
basis_type:
type: string
description: The code that represents the basis of the excess.
default: ''
type_description:
type: string
description: A bespoke description of the excess type, where not provisioned under the existing reference data type codes.
default: ''
pattern: ^.{1,512}$
basis_description:
type: string
description: A bespoke description of the excess basis type, where not provisioned under the existing reference data basis type codes.
default: ''
pattern: ^.{1,512}$
additionalProperties: false
description: A collection of data items that represents the Excess(es) applicable prior to any liability the insurer has agreed to cover under the terms of the insurance Contract or Section.
contract_default_section_getbyid:
required:
- default_section_id
- period
- stamp_permission_type
type: object
properties:
default_section_id:
type: string
description: A system-generated unique identifier for a Section, with a format and structure defined by the technology used.
default: ''
period:
$ref: '#/components/schemas/period'
geographic_coverage:
$ref: '#/components/schemas/geographic_coverage'
conveyance_description:
type: string
description: A description of the subject matter insured or nature of liability.
default: ''
interest_description:
type: string
description: A description of the interest insured or nature of liability.
default: ''
order_type:
type: string
description: The code that represents the written line type, either a percentage or an amount.
default: ''
order_currency_code:
type: string
description: The 3-character code that represents the currency in ISO 4217 standard.
default: ''
order_percentage:
type: number
description: The amount or percentage of the insured's risk that is covered by this Contract or Section.
example: 0.1
written_line_basis:
type: string
description: The basis upon which all written lines are applied to the Order of a Contract or Section.
default: ''
product_code:
type: string
description: The code that represents the insurance product under this Contract or Section.
default: ''
line_of_business:
type: string
description: The code that represents the line of business of the insurance product under this Contract or Section.
default: ''
class_of_business:
type: string
description: The code that represents the class of business of the insurance product under this Contract or Section.
default: ''
settlement_due_date:
type: string
description: The date and timestamp by when any instalment or payment of premium on this Contract or Section is expected to be paid to insurers.
format: date
example: '2014-12-31'
installment_period_of_credit_days:
type: integer
description: The number of days of credit applied to when any instalment or payment of premium is due.
format: int32
example: 0
adjustment_period_of_credit_days:
type: integer
description: The number of days after the date(s) specified for the provision of adjustments that insurers expect the final adjustment(s) of premium (if any) to be paid.
format: int32
example: 0
stamp_permission_type:
type: string
description: The code that represents the permitted territory type for the Contract or Section.
default: ''
year_of_account:
type: integer
description: The year of account to which any premium payment for this Contract or Section is allocated to. This is usually required on risks where the contract period exceeds 18 months.
format: int32
example: 0
risk_classification:
type: array
description: A collection of data items to represent the regulatory risk classification for a Contract or Section. Only supports Lloyds Agency Type Risk Codes.
items:
$ref: '#/components/schemas/section_risk'
limits:
type: array
description: A collection of data items that represents the Limit(s) of any liability the insurer has agreed to cover under the terms of the insurance Contract or Section.
items:
$ref: '#/components/schemas/section_limit'
excesses:
type: array
description: A collection of data items that represents the Excess(es) applicable prior to any liability the insurer has agreed to cover under the terms of the insurance Contract or Section.
items:
$ref: '#/components/schemas/section_excess'
deductibles:
type: array
description: A collection of data items that represent the deductible(s) that are applied against the payment of a claim, within a Contract or Section.
items:
$ref: '#/components/schemas/section_deductible'
premiums:
type: array
description: A collection of data items that represents the financial amount to cover the risk(s) under the terms of the insurance Contract or Section.
items:
$ref: '#/components/schemas/section_premium'
binding_information:
$ref: '#/components/schemas/section_binding_information'
additionalProperties: false
description: The default section of the contract represents the summary of the overall risk to be insured under the Contract.
contract_post:
required:
- broker_code
- broker_contract_reference
- default_section
- description
- placement_id
- user_email
type: object
properties:
placement_id:
type: string
description: A system-generated unique identifier for a Placement, with a format and structure defined by the technology used.
default: ''
pattern: ^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$
programme_id:
type: string
description: A system-generated unique identifier for a Programme, with a format and structure defined by the technology used.
default: ''
pattern: ^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$
description:
type: string
description: A description of the Contract supplied by the Broker.
default: ''
pattern: ^.{1,256}$
user_email:
type: string
description: The User information of the Broker User responsible for the Contract. The email address of the User.
default: ''
pattern: ^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$
broker_code:
type: string
description: A 4-digit Broker code that represents a broker organisation.
default: ''
pattern: ^\d{4}$
broker_contract_reference:
type: string
description: The reference allocated by the broker to identify the Contract.
default: ''
pattern: ^[A-Z0-9]{1,12}$
contract_type:
type: string
description: The code that represents the contract type.
default: ''
cover_type:
type: string
description: The code that represents the cover type.
default: ''
insureds:
type: array
description: A collection of individuals or organisations, and their relationship within a contract of insurance.
items:
$ref: '#/components/schemas/contract_insured'
default_section:
$ref: '#/components/schemas/contract_default_section_postput'
additionalProperties: false
description: Contract structure for creates
period_date:
required:
- expiry_date
- inception_date
type: object
properties:
inception_date:
type: string
description: The date on which the (re
# --- truncated at 32 KB (65 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/ppl-london-market/refs/heads/main/openapi/ppl-london-market-contract-api-openapi.yml