src/Services/Sns.php
protected function getApiDocPaths()
    {
        $base = parent::getApiDocPaths();
        $capitalized = camelize($this->name);

        $paths = [
            '/'                                => [
                'post' => [
                    'summary'     => 'Send a message to a topic or endpoint.',
                    'description' => 'Post data should be an array of topic publish properties.',
                    'operationId' => 'publish' . $capitalized,
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsPublishRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsPublishResponse']
                    ],
                ],
            ],
            '/topic'                           => [
                'get'  => [
                    'summary'     => 'Retrieve all topics available for the push service.',
                    'description' => 'This returns the topics as resources.',
                    'operationId' => 'get' . $capitalized . 'Topics',
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsTopicsResponse']
                    ],
                ],
                'post' => [
                    'summary'     => 'Create a topic.',
                    'description' => 'Post data should be an array of topic attributes including \'Name\'.',
                    'operationId' => 'create' . $capitalized . 'Topic',
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsTopicRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsTopicIdentifier']
                    ],
                ],
            ],
            '/topic/{topic_name}'              => [
                'parameters' => [
                    [
                        'name'        => 'topic_name',
                        'description' => 'Full ARN or simplified name of the topic to perform operations on.',
                        'schema'      => ['type' => 'string'],
                        'in'          => 'path',
                        'required'    => true,
                    ],
                ],
                'get'        => [
                    'summary'     => 'Retrieve topic definition for the given topic.',
                    'description' => 'This retrieves the topic, detailing its available properties.',
                    'operationId' => 'get' . $capitalized . 'TopicAttributes',
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsTopicAttributesResponse']
                    ],
                ],
                'post'       => [
                    'summary'     => 'Send a message to the given topic.',
                    'description' => 'Post data should be an array of topic publish properties.',
                    'operationId' => 'publish' . $capitalized . 'Topic',
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsPublishTopicRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsPublishResponse']
                    ],
                ],
                'put'        => [
                    'summary'     => 'Update a given topic\'s attributes.',
                    'description' => 'Post data should be an array of topic attributes including \'Name\'.',
                    'operationId' => 'set' . $capitalized . 'TopicAttributes',
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsTopicAttributesRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/Success']
                    ],
                ],
                'delete'     => [
                    'summary'     => 'Delete a given topic.',
                    'description' => 'Delete a given topic.',
                    'operationId' => 'delete' . $capitalized . 'Topic',
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/Success']
                    ],
                ],
            ],
            '/topic/{topic_name}/subscription' => [
                'parameters' => [
                    [
                        'name'        => 'topic_name',
                        'description' => 'Full ARN or simplified name of the topic to perform operations on.',
                        'schema'      => ['type' => 'string'],
                        'in'          => 'path',
                        'required'    => true,
                    ],
                ],
                'get'        => [
                    'summary'     => 'List subscriptions available for the given topic.',
                    'description' => 'Return only the names of the subscriptions in an array.',
                    'operationId' => 'list' . $capitalized . 'SubscriptionsByTopic',
                    'parameters'  => [
                        [
                            'name'        => 'names_only',
                            'description' => 'Return only the names of the subscriptions in an array.',
                            'schema'      => ['type' => 'boolean', 'default' => true],
                            'in'          => 'query',
                            'required'    => true,
                        ],
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsSubscriptionsResponse']
                    ],
                ],
                'post'       => [
                    'summary'     => 'Create a subscription for the given topic.',
                    'description' => 'Post data should be an array of subscription attributes including \'Name\'.',
                    'operationId' => 'subscribe' . $capitalized . 'Topic',
                    'parameters'  => [
                        [
                            'name'        => 'topic_name',
                            'description' => 'Full ARN or simplified name of the topic to perform operations on.',
                            'schema'      => ['type' => 'string'],
                            'in'          => 'path',
                            'required'    => true,
                        ],
                    ],
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsSubscriptionTopicRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsSubscriptionsResponse']
                    ],
                ],
            ],
            '/subscription'                    => [
                'get'  => [
                    'summary'     => 'Retrieve all subscriptions as resources.',
                    'description' => 'This describes the topic, detailing its available properties.',
                    'operationId' => 'get' . $capitalized . 'Subscriptions',
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsSubscriptionsResponse']
                    ],
                ],
                'post' => [
                    'summary'     => 'Create a subscription.',
                    'description' => 'Post data should be an array of subscription attributes including \'Name\'.',
                    'operationId' => 'subscribeTo' . $capitalized,
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsSubscriptionRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsSubscriptionsResponse']
                    ],
                ],
            ],
            '/subscription/{sub_name}'         => [
                'parameters' => [
                    [
                        'name'        => 'sub_name',
                        'description' => 'Full ARN or simplified name of the subscription to perform operations on.',
                        'schema'      => ['type' => 'string'],
                        'in'          => 'path',
                        'required'    => true,
                    ],
                ],
                'get'        => [
                    'summary'     => 'Retrieve attributes for the given subscription.',
                    'description' => 'This retrieves the subscription, detailing its available properties.',
                    'operationId' => 'get' . $capitalized . 'SubscriptionAttributes',
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsSubscriptionAttributesResponse']
                    ],
                ],
                'put'        => [
                    'summary'     => 'Update a given subscription.',
                    'description' => 'Post data should be an array of subscription attributes including \'Name\'.',
                    'operationId' => 'set' . $capitalized . 'SubscriptionAttributes',
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsSubscriptionAttributesRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/Success']
                    ],
                ],
                'delete'     => [
                    'summary'     => 'Delete a given subscription.',
                    'description' => 'Delete a given subscription.',
                    'operationId' => 'unsubscribe' . $capitalized,
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/Success']
                    ],
                ],
            ],
            '/app'                             => [
                'get'  => [
                    'summary'     => 'Retrieve app definition for the given app.',
                    'description' => 'This describes the app, detailing its available properties.',
                    'operationId' => 'get' . $capitalized . 'Apps',
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsApplicationsResponse']
                    ],
                ],
                'post' => [
                    'summary'     => 'Create a given app.',
                    'description' => 'Post data should be an array of app attributes including \'Name\'.',
                    'operationId' => 'create' . $capitalized . 'App',
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsAppRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsApplicationsResponse']
                    ],
                ],
            ],
            '/app/{app_name}'                  => [
                'parameters' => [
                    [
                        'name'        => 'app_name',
                        'description' => 'Full ARN or simplified name of the app to perform operations on.',
                        'schema'      => ['type' => 'string'],
                        'in'          => 'path',
                        'required'    => true,
                    ],
                ],
                'get'        => [
                    'summary'     => 'Retrieve app definition for the given app.',
                    'description' => 'This retrieves the app, detailing its available properties.',
                    'operationId' => 'get' . $capitalized . 'AppAttributes',
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsAppAttributesResponse']
                    ],
                ],
                'put'        => [
                    'summary'     => 'Update a given app.',
                    'description' => 'Post data should be an array of app attributes including \'Name\'.',
                    'operationId' => 'set' . $capitalized . 'AppAttributes',
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsAppAttributesRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/Success']
                    ],
                ],
                'delete'     => [
                    'summary'     => 'Delete a given app.',
                    'description' => 'Delete a given app.',
                    'operationId' => 'delete' . $capitalized . 'App',
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/Success']
                    ],
                ],
            ],
            '/app/{app_name}/endpoint'         => [
                'parameters' => [
                    [
                        'name'        => 'app_name',
                        'description' => 'Name of the application to get endpoints on.',
                        'schema'      => ['type' => 'string'],
                        'in'          => 'path',
                        'required'    => true,
                    ],
                ],
                'get'        => [
                    'summary'     => 'Retrieve endpoints for the given application.',
                    'description' => 'This describes the endpoints, detailing its available properties.',
                    'operationId' => 'get' . $capitalized . 'EndpointsByApp',
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsEndpointsResponse']
                    ],
                ],
                'post'       => [
                    'summary'     => 'Create a endpoint for a given application.',
                    'description' => 'Post data should be an array of endpoint attributes including \'Name\'.',
                    'operationId' => 'create' . $capitalized . 'AppEndpoint',
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsAppEndpointRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsEndpointsResponse']
                    ],
                ],
            ],
            '/endpoint'                        => [
                'get'  => [
                    'summary'     => 'Retrieve endpoint definition for the given endpoint.',
                    'description' => 'This describes the endpoint, detailing its available properties.',
                    'operationId' => 'get' . $capitalized . 'Endpoints',
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsEndpointsResponse']
                    ],
                ],
                'post' => [
                    'summary'     => 'Create a given endpoint.',
                    'description' => 'Post data should be an array of endpoint attributes including \'Name\'.',
                    'operationId' => 'create' . $capitalized . 'Endpoint',
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsEndpointRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsEndpointsResponse']
                    ],
                ],
            ],
            '/endpoint/{endpoint_name}'        => [
                'parameters' => [
                    [
                        'name'        => 'endpoint_name',
                        'description' => 'Full ARN or simplified name of the endpoint to perform operations on.',
                        'schema'      => ['type' => 'string'],
                        'in'          => 'path',
                        'required'    => true,
                    ],
                ],
                'get'        => [
                    'summary'     => 'Retrieve endpoint definition for the given endpoint.',
                    'description' => 'This retrieves the endpoint, detailing its available properties.',
                    'operationId' => 'get' . $capitalized . 'EndpointAttributes',
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsEndpointAttributesResponse']
                    ],
                ],
                'post'       => [
                    'summary'     => 'Send a message to the given endpoint.',
                    'description' => 'Post data should be an array of endpoint publish properties.',
                    'operationId' => 'publish' . $capitalized . 'Endpoint',
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsPublishEndpointRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsPublishResponse']
                    ],
                ],
                'put'        => [
                    'summary'     => 'Update a given endpoint.',
                    'description' => 'Post data should be an array of endpoint attributes including \'Name\'.',
                    'operationId' => 'set' . $capitalized . 'EndpointAttributes',
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsEndpointAttributesRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/Success']
                    ],
                ],
                'delete'     => [
                    'summary'     => 'Delete a given endpoint.',
                    'description' => 'Delete a given endpoint.',
                    'operationId' => 'delete' . $capitalized . 'Endpoint',
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/Success']
                    ],
                ],
            ],
        ];

        return array_merge($base, $paths);
    }
protected function getApiDocPaths()
    {
        $base = parent::getApiDocPaths();
        $capitalized = camelize($this->name);

        $paths = [
            '/'                                => [
                'post' => [
                    'summary'     => 'Send a message to a topic or endpoint.',
                    'description' => 'Post data should be an array of topic publish properties.',
                    'operationId' => 'publish' . $capitalized,
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsPublishRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsPublishResponse']
                    ],
                ],
            ],
            '/topic'                           => [
                'get'  => [
                    'summary'     => 'Retrieve all topics available for the push service.',
                    'description' => 'This returns the topics as resources.',
                    'operationId' => 'get' . $capitalized . 'Topics',
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsTopicsResponse']
                    ],
                ],
                'post' => [
                    'summary'     => 'Create a topic.',
                    'description' => 'Post data should be an array of topic attributes including \'Name\'.',
                    'operationId' => 'create' . $capitalized . 'Topic',
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsTopicRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsTopicIdentifier']
                    ],
                ],
            ],
            '/topic/{topic_name}'              => [
                'parameters' => [
                    [
                        'name'        => 'topic_name',
                        'description' => 'Full ARN or simplified name of the topic to perform operations on.',
                        'schema'      => ['type' => 'string'],
                        'in'          => 'path',
                        'required'    => true,
                    ],
                ],
                'get'        => [
                    'summary'     => 'Retrieve topic definition for the given topic.',
                    'description' => 'This retrieves the topic, detailing its available properties.',
                    'operationId' => 'get' . $capitalized . 'TopicAttributes',
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsTopicAttributesResponse']
                    ],
                ],
                'post'       => [
                    'summary'     => 'Send a message to the given topic.',
                    'description' => 'Post data should be an array of topic publish properties.',
                    'operationId' => 'publish' . $capitalized . 'Topic',
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsPublishTopicRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsPublishResponse']
                    ],
                ],
                'put'        => [
                    'summary'     => 'Update a given topic\'s attributes.',
                    'description' => 'Post data should be an array of topic attributes including \'Name\'.',
                    'operationId' => 'set' . $capitalized . 'TopicAttributes',
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsTopicAttributesRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/Success']
                    ],
                ],
                'delete'     => [
                    'summary'     => 'Delete a given topic.',
                    'description' => 'Delete a given topic.',
                    'operationId' => 'delete' . $capitalized . 'Topic',
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/Success']
                    ],
                ],
            ],
            '/topic/{topic_name}/subscription' => [
                'parameters' => [
                    [
                        'name'        => 'topic_name',
                        'description' => 'Full ARN or simplified name of the topic to perform operations on.',
                        'schema'      => ['type' => 'string'],
                        'in'          => 'path',
                        'required'    => true,
                    ],
                ],
                'get'        => [
                    'summary'     => 'List subscriptions available for the given topic.',
                    'description' => 'Return only the names of the subscriptions in an array.',
                    'operationId' => 'list' . $capitalized . 'SubscriptionsByTopic',
                    'parameters'  => [
                        [
                            'name'        => 'names_only',
                            'description' => 'Return only the names of the subscriptions in an array.',
                            'schema'      => ['type' => 'boolean', 'default' => true],
                            'in'          => 'query',
                            'required'    => true,
                        ],
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsSubscriptionsResponse']
                    ],
                ],
                'post'       => [
                    'summary'     => 'Create a subscription for the given topic.',
                    'description' => 'Post data should be an array of subscription attributes including \'Name\'.',
                    'operationId' => 'subscribe' . $capitalized . 'Topic',
                    'parameters'  => [
                        [
                            'name'        => 'topic_name',
                            'description' => 'Full ARN or simplified name of the topic to perform operations on.',
                            'schema'      => ['type' => 'string'],
                            'in'          => 'path',
                            'required'    => true,
                        ],
                    ],
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsSubscriptionTopicRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsSubscriptionsResponse']
                    ],
                ],
            ],
            '/subscription'                    => [
                'get'  => [
                    'summary'     => 'Retrieve all subscriptions as resources.',
                    'description' => 'This describes the topic, detailing its available properties.',
                    'operationId' => 'get' . $capitalized . 'Subscriptions',
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsSubscriptionsResponse']
                    ],
                ],
                'post' => [
                    'summary'     => 'Create a subscription.',
                    'description' => 'Post data should be an array of subscription attributes including \'Name\'.',
                    'operationId' => 'subscribeTo' . $capitalized,
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsSubscriptionRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsSubscriptionsResponse']
                    ],
                ],
            ],
            '/subscription/{sub_name}'         => [
                'parameters' => [
                    [
                        'name'        => 'sub_name',
                        'description' => 'Full ARN or simplified name of the subscription to perform operations on.',
                        'schema'      => ['type' => 'string'],
                        'in'          => 'path',
                        'required'    => true,
                    ],
                ],
                'get'        => [
                    'summary'     => 'Retrieve attributes for the given subscription.',
                    'description' => 'This retrieves the subscription, detailing its available properties.',
                    'operationId' => 'get' . $capitalized . 'SubscriptionAttributes',
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsSubscriptionAttributesResponse']
                    ],
                ],
                'put'        => [
                    'summary'     => 'Update a given subscription.',
                    'description' => 'Post data should be an array of subscription attributes including \'Name\'.',
                    'operationId' => 'set' . $capitalized . 'SubscriptionAttributes',
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsSubscriptionAttributesRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/Success']
                    ],
                ],
                'delete'     => [
                    'summary'     => 'Delete a given subscription.',
                    'description' => 'Delete a given subscription.',
                    'operationId' => 'unsubscribe' . $capitalized,
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/Success']
                    ],
                ],
            ],
            '/app'                             => [
                'get'  => [
                    'summary'     => 'Retrieve app definition for the given app.',
                    'description' => 'This describes the app, detailing its available properties.',
                    'operationId' => 'get' . $capitalized . 'Apps',
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsApplicationsResponse']
                    ],
                ],
                'post' => [
                    'summary'     => 'Create a given app.',
                    'description' => 'Post data should be an array of app attributes including \'Name\'.',
                    'operationId' => 'create' . $capitalized . 'App',
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsAppRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsApplicationsResponse']
                    ],
                ],
            ],
            '/app/{app_name}'                  => [
                'parameters' => [
                    [
                        'name'        => 'app_name',
                        'description' => 'Full ARN or simplified name of the app to perform operations on.',
                        'schema'      => ['type' => 'string'],
                        'in'          => 'path',
                        'required'    => true,
                    ],
                ],
                'get'        => [
                    'summary'     => 'Retrieve app definition for the given app.',
                    'description' => 'This retrieves the app, detailing its available properties.',
                    'operationId' => 'get' . $capitalized . 'AppAttributes',
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsAppAttributesResponse']
                    ],
                ],
                'put'        => [
                    'summary'     => 'Update a given app.',
                    'description' => 'Post data should be an array of app attributes including \'Name\'.',
                    'operationId' => 'set' . $capitalized . 'AppAttributes',
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsAppAttributesRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/Success']
                    ],
                ],
                'delete'     => [
                    'summary'     => 'Delete a given app.',
                    'description' => 'Delete a given app.',
                    'operationId' => 'delete' . $capitalized . 'App',
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/Success']
                    ],
                ],
            ],
            '/app/{app_name}/endpoint'         => [
                'parameters' => [
                    [
                        'name'        => 'app_name',
                        'description' => 'Name of the application to get endpoints on.',
                        'schema'      => ['type' => 'string'],
                        'in'          => 'path',
                        'required'    => true,
                    ],
                ],
                'get'        => [
                    'summary'     => 'Retrieve endpoints for the given application.',
                    'description' => 'This describes the endpoints, detailing its available properties.',
                    'operationId' => 'get' . $capitalized . 'EndpointsByApp',
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsEndpointsResponse']
                    ],
                ],
                'post'       => [
                    'summary'     => 'Create a endpoint for a given application.',
                    'description' => 'Post data should be an array of endpoint attributes including \'Name\'.',
                    'operationId' => 'create' . $capitalized . 'AppEndpoint',
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsAppEndpointRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsEndpointsResponse']
                    ],
                ],
            ],
            '/endpoint'                        => [
                'get'  => [
                    'summary'     => 'Retrieve endpoint definition for the given endpoint.',
                    'description' => 'This describes the endpoint, detailing its available properties.',
                    'operationId' => 'get' . $capitalized . 'Endpoints',
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsEndpointsResponse']
                    ],
                ],
                'post' => [
                    'summary'     => 'Create a given endpoint.',
                    'description' => 'Post data should be an array of endpoint attributes including \'Name\'.',
                    'operationId' => 'create' . $capitalized . 'Endpoint',
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsEndpointRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsEndpointsResponse']
                    ],
                ],
            ],
            '/endpoint/{endpoint_name}'        => [
                'parameters' => [
                    [
                        'name'        => 'endpoint_name',
                        'description' => 'Full ARN or simplified name of the endpoint to perform operations on.',
                        'schema'      => ['type' => 'string'],
                        'in'          => 'path',
                        'required'    => true,
                    ],
                ],
                'get'        => [
                    'summary'     => 'Retrieve endpoint definition for the given endpoint.',
                    'description' => 'This retrieves the endpoint, detailing its available properties.',
                    'operationId' => 'get' . $capitalized . 'EndpointAttributes',
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsEndpointAttributesResponse']
                    ],
                ],
                'post'       => [
                    'summary'     => 'Send a message to the given endpoint.',
                    'description' => 'Post data should be an array of endpoint publish properties.',
                    'operationId' => 'publish' . $capitalized . 'Endpoint',
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsPublishEndpointRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/SnsPublishResponse']
                    ],
                ],
                'put'        => [
                    'summary'     => 'Update a given endpoint.',
                    'description' => 'Post data should be an array of endpoint attributes including \'Name\'.',
                    'operationId' => 'set' . $capitalized . 'EndpointAttributes',
                    'requestBody' => [
                        '$ref' => '#/components/requestBodies/SnsEndpointAttributesRequest'
                    ],
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/Success']
                    ],
                ],
                'delete'     => [
                    'summary'     => 'Delete a given endpoint.',
                    'description' => 'Delete a given endpoint.',
                    'operationId' => 'delete' . $capitalized . 'Endpoint',
                    'responses'   => [
                        '200' => ['$ref' => '#/components/responses/Success']
                    ],
                ],
            ],
        ];

        return array_merge($base, $paths);
    }
{@inheritdoc}