{"openapi":"3.0.3","info":{"title":"Connecting Party Manager","description":"<div class=\"nhsd-m-emphasis-box nhsd-m-emphasis-box--emphasis nhsd-!t-margin-bottom-6\" aria-label=\"Highlighted Information\">\n    <div class=\"nhsd-a-box nhsd-a-box--border-blue\">\n        <div class=\"nhsd-m-emphasis-box__image-box\">\n            <figure class=\"nhsd-a-image\">\n                <picture class=\"nhsd-a-image__picture\">\n                    <img src=\"http://digital.nhs.uk/binaries/content/gallery/icons/info.svg?colour=231f20\" alt=\"\" style=\"object-fit:fill\">\n                </picture>\n            </figure>\n        </div>\n        <div class=\"nhsd-m-emphasis-box__content-box\">\n            <div data-uipath=\"website.contentblock.emphasis.content\" class=\"nhsd-t-word-break\"><p class=\"nhsd-t-body\">Product IDs created in non-production environments follow the same format as production, but are only valid in the environment in which they were created.</p></div>\n        </div>\n    </div>\n</div>\n<hr class=\"nhsd-a-horizontal-rule\">\n\n## Overview\n\nUse this API to access the Connecting Party Manager (CPM) service - an internal service for registering and managing details of IT systems and applications that connect to our APIs – sometimes known as ‘connecting parties’ and referred to herein as ‘products’.\n\nEach product is owned by a ‘product team’. Product teams are associated with software development or healthcare organisations, identified by an ODS code.\n\nYou can:\n* create (register) a product team\n* get product team details\n* delete a product team\n* create (register) a product\n* get details of a single product\n* get details of all products for a given product team or organisation\n* delete a product\n\n## Who can use this API\n\nCurrently this API is for [internal use only](https://digital.nhs.uk/developer/guides-and-documentation/reference-guide#statuses).\n\n## API status and roadmap\n\nThis API is in development, meaning:\n\n* it is available for testing in the integration environment\n* we expect to make breaking changes based on developer feedback\n\n## Service level\n\nThis API is a bronze service, meaning it is operational and supported only during business hours (8 am to 6 pm), Monday to Friday excluding bank holidays.\n\nFor more details, see [service levels](https://digital.nhs.uk/developer/guides-and-documentation/reference-guide#service-levels).\n\n## Technology\n\nThis API is [RESTful](https://digital.nhs.uk/developer/guides-and-documentation/our-api-technologies#basic-rest).\n\n## Network access\n\nThis API is available on the internet and, indirectly, on the [Health and Social Care Network (HSCN)](https://digital.nhs.uk/services/health-and-social-care-network).\n\nFor more details see [Network access for APIs](https://digital.nhs.uk/developer/guides-and-documentation/network-access-for-apis).\n\n## Security and authorisation\n\nThis API is application-restricted, meaning we authenticate the calling application but not the end user.\n\nTo use this API, use the following security pattern:\n\n* [Application-restricted RESTful API - signed JWT authentication](https://digital.nhs.uk/developer/guides-and-documentation/security-and-authorisation/application-restricted-restful-apis-signed-jwt-authentication)\n\n## Errors\n\nWe use standard HTTP status codes to show whether an API request succeeded or not. They are usually in the range:\n\n* 200 to 299 if it succeeded, including code 202 if it was accepted by an API that needs to wait for further action\n* 400 to 499 if it failed because of a client error by your application\n* 500 to 599 if it failed because of an error on our server\n\nErrors specific to each API are shown in the Endpoints section, under Response. See our [reference guide](https://digital.nhs.uk/developer/guides-and-documentation/reference-guide#http-status-codes) for more on errors.\n\n## Open source\n\nYou might find the following open source resources useful:\n\n| Resource                       | Description                                | Links                                                                    |\n|--------------------------------|--------------------------------------------|--------------------------------------------------------------------------|\n| Connecting Party Manager       | Source code for the core API and sandbox   | [GitHub repo](https://github.com/NHSDigital/connecting-party-manager)    |\n| Connecting Party Manager - CI  | Source code for the Github Actions runners | [GitHub repo](https://github.com/NHSDigital/connecting-party-manager-CI) |\n\nWe currently don't have any open source client libraries or sample code for this API. If you think this would be useful, you can [upvote the suggestion on our Interactive Product Backlog](https://nhs-digital-api-management.featureupvote.com/suggestions/107439/client-libraries-and-reference-implementations).\n\n## Environments and testing\n\n| Environment       | Base URL                                                                    |\n| ----------------- | --------------------------------------------------------------------------- |\n| Sandbox           | `https://sandbox.api.service.nhs.uk/connecting-party-manager/`      |\n| Integration       | `https://int.api.service.nhs.uk/connecting-party-manager/` |\n| Production        | `https://api.service.nhs.uk/connecting-party-manager/`     |\n\n### Sandbox and integration environments\n\nOur [sandbox environment](https://digital.nhs.uk/developer/guides-and-documentation/testing#sandbox-testing):\n\n* is for early developer testing\n* is open access, so does not allow you to test authorisation\n* includes ready-to-use test data - for details [contact us](https://digital.nhs.uk/developer/help-and-support)\n* underpins our `Try this API` feature; see the documentation for each endpoint for more details\n\nOur [integration test environment](https://digital.nhs.uk/developer/guides-and-documentation/testing#integration-testing):\n\n* is for formal integration testing\n* includes authorisation\n* includes ready-to-use test data - for details [contact us](https://digital.nhs.uk/developer/help-and-support)\n\nFor more details see [integration testing with our RESTful APIs](https://digital.nhs.uk/developer/guides-and-documentation/testing#integration-testing-with-our-restful-apis).\n\n## Onboarding\n\nThis API is not yet available for onboarding.\n\n## Related APIs\n\nThe following APIs are related to this API:\n\n### Organisation Data Service FHIR API\nUse [Organisation Data Service FHIR API](https://developer.nhs.uk/apis/ods/) to get organisation codes related to the product team.\n\nThis API is not yet available for onboarding.\n## Change log\n\nFor details of how this API has changed over time, see the [change log](https://github.com/NHSDigital/connecting-party-manager/blob/main/CHANGELOG.md).\n","contact":{"name":"NHS Digital API Management","url":"https://digital.nhs.uk/developer/help-and-support","email":"api.management@nhs.net"},"license":{"name":"MIT","url":"https://github.com/NHSDigital/connecting-party-manager/blob/main/LICENCE.md"},"version":"1.0.0"},"servers":[{"url":"https://sandbox.api.service.nhs.uk/connecting-party-manager","description":"Sandbox environment."},{"url":"https://int.api.service.nhs.uk/connecting-party-manager","description":"Integration test environment."},{"url":"https://api.service.nhs.uk/connecting-party-manager","description":"Production environment."}],"paths":{"/ProductTeam":{"post":{"tags":["Core product operations"],"summary":"Create a product team","description":"Create a product team. This is needed in order to create a product.\n","operationId":"createproductteam","parameters":[{"$ref":"#/components/parameters/HeaderVersion"},{"$ref":"#/components/parameters/HeaderAuthorization"},{"$ref":"#/components/parameters/HeaderApikey"},{"$ref":"#/components/parameters/HeaderRequestId"},{"$ref":"#/components/parameters/HeaderCorrelationId"}],"requestBody":{"$ref":"#/components/requestBodies/ProductTeamCreateRequestBody"},"responses":{"201":{"$ref":"#/components/responses/CPMProductTeamCreate"},"400":{"$ref":"#/components/responses/CreateProductTeamBadRequest"},"422":{"$ref":"#/components/responses/UnprocessableContent"}},"deprecated":false}},"/ProductTeam/{product_team_id}":{"get":{"tags":["Core product operations"],"summary":"Get a product team","description":"Get the details of a product team based on it's product team ID.\n","operationId":"readproductteam","parameters":[{"$ref":"#/components/parameters/ProductTeamId"},{"$ref":"#/components/parameters/HeaderVersion"},{"$ref":"#/components/parameters/HeaderAuthorization"},{"$ref":"#/components/parameters/HeaderApikey"},{"$ref":"#/components/parameters/HeaderRequestId"},{"$ref":"#/components/parameters/HeaderCorrelationId"}],"responses":{"200":{"$ref":"#/components/responses/CPMProductTeamRead"},"404":{"$ref":"#/components/responses/ProductTeamNotFound"}},"deprecated":false},"delete":{"tags":["Core product operations"],"summary":"Delete a product team","description":"Delete a product team based on it's product team ID.\n","operationId":"deleteproductteam","parameters":[{"$ref":"#/components/parameters/ProductTeamId"},{"$ref":"#/components/parameters/HeaderVersion"},{"$ref":"#/components/parameters/HeaderAuthorization"},{"$ref":"#/components/parameters/HeaderApikey"},{"$ref":"#/components/parameters/HeaderRequestId"},{"$ref":"#/components/parameters/HeaderCorrelationId"}],"responses":{"200":{"$ref":"#/components/responses/CpmProductTeamDelete"},"404":{"$ref":"#/components/responses/ProductTeamNotFound"},"409":{"$ref":"#/components/responses/Conflict"}},"deprecated":false}},"/ProductTeam/{product_team_id}/Product":{"post":{"tags":["Core product operations"],"summary":"Create a product","description":"Create or register a new product for a given product team.\n","operationId":"createproductendpoint","parameters":[{"$ref":"#/components/parameters/ProductTeamId"},{"$ref":"#/components/parameters/HeaderVersion"},{"$ref":"#/components/parameters/HeaderAuthorization"},{"$ref":"#/components/parameters/HeaderApikey"},{"$ref":"#/components/parameters/HeaderRequestId"},{"$ref":"#/components/parameters/HeaderCorrelationId"}],"requestBody":{"$ref":"#/components/requestBodies/ProductCreateRequestBody"},"responses":{"201":{"$ref":"#/components/responses/ProductCreate"},"400":{"$ref":"#/components/responses/CreateProductBadRequest"},"404":{"$ref":"#/components/responses/ProductTeamNotFound"}},"deprecated":false}},"/Product":{"get":{"tags":["Core product operations"],"summary":"Get all products for a product team or an organisation","operationId":"searchProduct","parameters":[{"$ref":"#/components/parameters/ProductTeamIdQuery"},{"$ref":"#/components/parameters/OrganisationCodeQuery"},{"$ref":"#/components/parameters/HeaderVersion"},{"$ref":"#/components/parameters/HeaderAuthorization"},{"$ref":"#/components/parameters/HeaderApikey"},{"$ref":"#/components/parameters/HeaderRequestId"},{"$ref":"#/components/parameters/HeaderCorrelationId"}],"responses":{"200":{"$ref":"#/components/responses/ProductSearch"},"400":{"$ref":"#/components/responses/SearchProductBadRequest"}},"deprecated":false}},"/Product/{product_id}":{"get":{"tags":["Core product operations"],"summary":"Get a product","description":"Get a product using a product ID.\n","operationId":"readproductendpoint","parameters":[{"$ref":"#/components/parameters/ProductId"},{"$ref":"#/components/parameters/HeaderVersion"},{"$ref":"#/components/parameters/HeaderAuthorization"},{"$ref":"#/components/parameters/HeaderApikey"},{"$ref":"#/components/parameters/HeaderRequestId"},{"$ref":"#/components/parameters/HeaderCorrelationId"}],"responses":{"200":{"$ref":"#/components/responses/ProductRead"},"404":{"$ref":"#/components/responses/ProductNotFound"}},"deprecated":false}},"/ProductTeam/{product_team_id}/Product/{product_id}":{"delete":{"tags":["Core product operations"],"summary":"Delete a product","description":"Delete a product using a product team ID and product ID.\n","operationId":"deleteproductendpoint","parameters":[{"$ref":"#/components/parameters/ProductTeamId"},{"$ref":"#/components/parameters/ProductId"},{"$ref":"#/components/parameters/HeaderVersion"},{"$ref":"#/components/parameters/HeaderAuthorization"},{"$ref":"#/components/parameters/HeaderApikey"},{"$ref":"#/components/parameters/HeaderRequestId"},{"$ref":"#/components/parameters/HeaderCorrelationId"}],"responses":{"200":{"$ref":"#/components/responses/ProductDelete"},"404":{"$ref":"#/components/responses/ProductDeleteNotFound"}},"deprecated":false}}},"components":{"schemas":{"ErrorResponse":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}},"CPMProductTeamResponse":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"ods_code":{"type":"string"},"status":{"type":"string"},"created_on":{"type":"string"},"updated_on":{"type":"string","nullable":true},"deleted_on":{"type":"string","nullable":true},"keys":{"type":"array","items":{"type":"object","properties":{"key_type":{"type":"string"},"key_value":{"type":"string"}}}}},"example":{"id":"a9a9694d-001b-45ce-9f2a-6c9bf80ae0d0","name":"Sample Product Team","ods_code":"F5H1R","status":"active","created_on":"2024-10-15T10:00:00Z","updated_on":"null","deleted_on":"null","keys":[{"key_type":"product_team_id","key_value":"55e86121-3826-468c-a6f0-dd0f1fbc0259"}]}},"CPMProductTeamDeleteResponse":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"example":{"code":"RESOURCE_DELETED","message":"a9a9694d-001b-45ce-9f2a-6c9bf80ae0d0 has been deleted."}},"CPMProductResponse":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"product_team_id":{"type":"string"},"cpm_product_team_id":{"type":"string"},"ods_code":{"type":"string"},"status":{"type":"string"},"keys":{"type":"array","items":{"type":"object","properties":{"key_type":{"type":"string"},"key_value":{"type":"string"}}}},"created_on":{"type":"string"},"updated_on":{"type":"string","nullable":true},"deleted_on":{"type":"string","nullable":true}},"example":{"id":"P.1X3-XXX","name":"Sample Product","product_team_id":"55e86121-3826-468c-a6f0-dd0f1fbc0259","cpm_product_team_id":"a9a9694d-001b-45ce-9f2a-6c9bf80ae0d0","ods_code":"F5H1R","keys":[],"status":"active","created_on":"2024-10-15T10:00:00Z","updated_on":"null","deleted_on":"null"}},"CPMProductDeleteResponse":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"example":{"code":"RESOURCE_DELETED","message":"P.XYZ-123 has been deleted."}},"ProductSearchResponse":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"org_code":{"type":"string"},"product_teams":{"type":"array","items":{"type":"object","properties":{"cpm_product_team_id":{"type":"string"},"product_team_id":{"type":"string"},"products":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"cpm_product_team_id":{"type":"string"},"product_team_id":{"type":"string"},"name":{"type":"string"},"ods_code":{"type":"string"},"status":{"type":"string"},"keys":{"type":"array","items":{"type":"object","properties":{"key_type":{"type":"string"},"key_value":{"type":"string"}}}},"created_on":{"type":"string"},"updated_on":{"type":"string","nullable":true},"deleted_on":{"type":"string","nullable":true}}}}}}}}}}},"example":{"results":[{"org_code":"F5H1R","product_teams":[{"product_team_id":"55e86121-3826-468c-a6f0-dd0f1fbc0259","cpm_product_team_id":"a9a9694d-001b-45ce-9f2a-6c9bf80ae0d0","products":[{"id":"P.1X3-XYZ","cpm_product_team_id":"a9a9694d-001b-45ce-9f2a-6c9bf80ae0d0","product_team_id":"55e86121-3826-468c-a6f0-dd0f1fbc0259","name":"My Great Product 1","ods_code":"F5H1R","status":"active","created_on":"2024-10-15T10:00:00Z","updated_on":"null","deleted_on":"null","keys":[]}]},{"product_team_id":"24ac1857-f718-4905-813f-52da930c3ea1","cpm_product_team_id":"152705aa-0342-487f-a654-64bba814a847","products":[{"id":"P.4Y6-ABC","cpm_product_team_id":"152705aa-0342-487f-a654-64bba814a847","product_team_id":"24ac1857-f718-4905-813f-52da930c3ea1","name":"My Great Product 3","ods_code":"F5H1R","status":"active","created_on":"2024-10-15T10:00:00Z","updated_on":"null","deleted_on":"null","keys":[]}]}]}]}},"HeaderVersion":{"pattern":"^[1-9][0-9]?(\\.[0-9])?$","type":"string","example":"1"},"HeaderRequestId":{"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$","type":"string","example":"60E0B220-8136-4CA5-AE46-1D97EF59D068"},"HeaderCorrelationId":{"type":"string","example":"11C46F5F-CDEF-4865-94B2-0EE0EDCC26DA"},"HeaderAuthorization":{"type":"string","example":"letmein"},"HeaderApikey":{"type":"string","example":"GEDT124JF9OP"}},"responses":{"ProductTeamNotFound":{"description":"Product team has not been found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"errors":[{"code":"RESOURCE_NOT_FOUND","message":"Could not find ProductTeam for key ('f9518c12-6c83-4544-97db-d9dd1d64da97')"}]}}}},"ProductNotFound":{"description":"Product has not been found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"errors":[{"code":"RESOURCE_NOT_FOUND","message":"Could not find CpmProduct for key ('P.XXX-YYY')"}]}}}},"ProductDeleteNotFound":{"description":"Product has not been found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"ProductTeamNotFound":{"value":{"errors":[{"code":"RESOURCE_NOT_FOUND","message":"Could not find ProductTeam for key ('f9518c12-6c83-4544-97db-d9dd1d64da97')"}]}},"ProductNotFound":{"value":{"errors":[{"code":"RESOURCE_NOT_FOUND","message":"Could not find CpmProduct for key ('f9518c12-6c83-4544-97db-d9dd1d64da97', 'P.XXX-YYY')"}]}}}}}},"Conflict":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"errors":[{"code":"CONFLICT","message":"Product Team cannot be deleted as it still has associated Product Ids ['P.1X3-XYZ', 'P.4Y6-ABC']"}]}}}},"SearchProductBadRequest":{"description":"Search product bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"MissingParamValidationError":{"value":{"errors":[{"code":"VALIDATION_ERROR","message":"SearchProductQueryParams.__root__: Please provide exactly one valid query parameter: {'product_team_id', 'organisation_code'}."}]}},"UnknownParamValidationError":{"value":{"errors":[{"code":"VALIDATION_ERROR","message":"SearchProductQueryParams.foo: extra fields not permitted"}]}}}}}},"CreateProductTeamBadRequest":{"description":"Create product team bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"NotPermittedValidationError":{"value":{"errors":[{"code":"VALIDATION_ERROR","message":"CreateProductTeamIncomingParams.keys.0.key_type: value is not a valid enumeration member; permitted: 'product_team_id'"}]}},"FormatValidationError":{"value":{"errors":[{"code":"VALIDATION_ERROR","message":"CreateProductTeamIncomingParams.keys.0.key_value: Key '' does not match the expected pattern '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$' associated with key type 'product_team_id'"}]}},"DuplicateKeyValidationError":{"value":{"errors":[{"code":"VALIDATION_ERROR","message":"CreateProductTeamIncomingParams.keys: Ensure that product_team_id only exists once within keys."}]}},"ItemExistsValidationError":{"value":{"errors":[{"code":"VALIDATION_ERROR","message":"Item already exists"}]}},"MissingValue":{"value":{"errors":[{"code":"MISSING_VALUE","message":"CreateProductTeamIncomingParams.ods_code: field required"}]}}}}}},"CreateProductBadRequest":{"description":"Create product bad request","headers":{"Access-Control-Allow-Origin":{"name":"","in":"header","required":false,"deprecated":false,"allowEmptyValue":false,"explode":false,"allowReserved":false,"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"MissingValue":{"value":{"errors":[{"code":"MISSING_VALUE","message":"CreateCpmProductIncomingParams.name: field required"}]}},"ExtraFieldsValidationError":{"value":{"errors":[{"code":"VALIDATION_ERROR","message":"CreateCpmProductIncomingParams.extra_name: extra fields not permitted"}]}},"EmptyValueValidationError":{"value":{"errors":[{"code":"VALIDATION_ERROR","message":"CreateCpmProductIncomingParams.name: ensure this value has at least 1 characters"}]}},"InvalidJSONValidationError":{"value":{"errors":[{"code":"VALIDATION_ERROR","message":"Invalid JSON body was provided: line 1 column 20 (char 19)"}]}}}}}},"UnprocessableContent":{"description":"Unprocessable content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"errors":[{"code":"UNPROCESSABLE_ENTITY","message":"Invalid ODS Code: could not resolve 'https://directory.spineservices.nhs.uk/ORD/2-0-0/organisations/invalid_ods_code'"}]}}}},"CPMProductTeamCreate":{"description":"Create product team operation successful","headers":{"Access-Control-Allow-Origin":{"name":"","in":"header","required":false,"deprecated":false,"allowEmptyValue":false,"explode":false,"allowReserved":false,"schema":{"type":"string"},"example":"*"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CPMProductTeamResponse"}}}},"CPMProductTeamRead":{"description":"Get product team operation successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CPMProductTeamResponse"}}}},"CpmProductTeamDelete":{"description":"Delete product team operation successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CPMProductTeamDeleteResponse"}}}},"ProductCreate":{"description":"Create product operation successful","headers":{"Access-Control-Allow-Origin":{"name":"","in":"header","required":false,"deprecated":false,"allowEmptyValue":false,"explode":false,"allowReserved":false,"schema":{"type":"string"},"example":"*"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CPMProductResponse"}}}},"ProductRead":{"description":"Get product operation successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CPMProductResponse"}}}},"ProductDelete":{"description":"Delete product operation successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CPMProductDeleteResponse"}}}},"ProductSearch":{"description":"Search product operation successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductSearchResponse"}}}}},"parameters":{"HeaderVersion":{"name":"version","in":"header","required":true,"deprecated":false,"allowEmptyValue":false,"explode":false,"allowReserved":false,"schema":{"$ref":"#/components/schemas/HeaderVersion"}},"HeaderRequestId":{"name":"x-request-id","in":"header","required":false,"deprecated":false,"allowEmptyValue":false,"explode":false,"allowReserved":false,"schema":{"$ref":"#/components/schemas/HeaderRequestId"}},"HeaderCorrelationId":{"name":"x-correlation-id","in":"header","required":false,"deprecated":false,"allowEmptyValue":false,"explode":false,"allowReserved":false,"schema":{"$ref":"#/components/schemas/HeaderCorrelationId"}},"HeaderAuthorization":{"name":"authorization","in":"header","required":true,"deprecated":false,"allowEmptyValue":false,"explode":false,"allowReserved":false,"schema":{"$ref":"#/components/schemas/HeaderAuthorization"}},"HeaderApikey":{"name":"apikey","in":"header","required":true,"deprecated":false,"allowEmptyValue":false,"explode":false,"allowReserved":false,"schema":{"$ref":"#/components/schemas/HeaderApikey"}},"ProductTeamId":{"name":"product_team_id","in":"path","description":"Product team identifier. Either the \"internally\" generated id (cpm_product_team_id) or the provided team id (product_team_id)","required":true,"deprecated":false,"allowEmptyValue":false,"explode":false,"allowReserved":false,"schema":{"type":"string"}},"ProductId":{"name":"product_id","in":"path","description":"The product identifier generated at time of creation.","required":true,"deprecated":false,"allowEmptyValue":false,"explode":false,"allowReserved":false,"schema":{"type":"string"}},"ProductTeamIdQuery":{"name":"product_team_id","in":"query","description":"Product team identifier to filter results by. Either the \"internally\" generated id (cpm_product_team_id) or the provided team id (product_team_id)","required":false,"deprecated":false,"allowEmptyValue":false,"explode":false,"allowReserved":false,"schema":{"type":"string"}},"OrganisationCodeQuery":{"name":"organisation_code","in":"query","description":"The organisation code to filter results by.","required":false,"deprecated":false,"allowEmptyValue":false,"explode":false,"allowReserved":false,"schema":{"type":"string"}}},"requestBodies":{"ProductTeamCreateRequestBody":{"content":{"application/json":{"schema":{"required":["name","ods_code","keys"],"type":"object","properties":{"name":{"type":"string","description":"Name of the product team"},"ods_code":{"type":"string","description":"ODS code associated with the product team"},"keys":{"type":"array","items":{"type":"object","properties":{"key_type":{"type":"string","description":"The type of the key (e.g., product_team_id)"},"key_value":{"type":"string","description":"The value of the key"}}},"description":"List of keys associated with the product team"}}},"example":{"name":"Sample Product Team","ods_code":"F5H1R","keys":[{"key_type":"product_team_id","key_value":"0a78ee8f-5bcf-4db1-9341-ef1d67248715"}]}}},"required":true},"ProductCreateRequestBody":{"content":{"application/json":{"schema":{"required":["name"],"type":"object","properties":{"name":{"type":"string","description":"Name of the product"}}},"example":{"name":"Sample Product"}}},"required":true}},"securitySchemes":{"app-level0":{"$ref":"https://proxygen.prod.api.platform.nhs.uk/components/securitySchemes/app-level0"}}},"tags":[{"name":"Core product operations","description":"Create, Read and Delete Product IDs"}]}